Re: HS: C++
On Tue, Nov 09, 2004 at 02:44:04PM +0000, Jean-Luc Coulon (f5ibh) wrote:
> Le 09.11.2004 14:01:46, Gabriel Paubert a écrit :
> >On Tue, Nov 09, 2004 at 12:45:20PM +0100, Laurent Martelli wrote:
>
> [ ... ]
> >
> >- messages d'erreur complètement (abs)cons et déroutants de g++
> >sur des choses aussi simples qu'une parenthèse oubliée avant un
> >point virgule et autres bêtises d'édition aussi triviales.
>
> La plupart des compilateurs gébèrent des messages aussi (abc)cons (sic)
> que g++ sur des erreurs aussi [@~##~{] que ça.
Pourquoi le (sic)? Pour l'autre d'accord, mais celui-là?
> Mais lorsqu'on utilise ce genre d'outils pour développer (c'est-à-dire
> pas seulement pour compiler le travaild es autres), l'indication de
> l'emplacement de l'erreur est suffisant pour retreouver la "bêtise
> aussi triviale" (sic).
Je ne treouve(sic) pas ça si facile. Surtout quand tu te bats pour
la première fois avec à la fois C++ et libsigc++ (l'un des summums
des templates) et que la ligne qui indique l'erreur dans ton source
est perdue au milieu de plusieurs écrans (de 50 lignes) de messages
concernant les instantiations embriquées de templates. J'ai fini par
trouver le truc: c'est en général la ligne la plus courte! Mais ça
impressionne le novice en C++ comme moi qui n'a guère que 25 ans de
programmation derrière lui (et non, programmer n'est pas mon job,
du moins pas officiellement et certainement pas uniquement).
> Un compilateur n'est pas un programme trivial mais celui-ci à
> l'avantage d'être open source, je pense qu'un patch pour résoudre de
> problème serait apprécié de la communauté toute entière.
Je ne peux pas juger pour le moment avec 3.4 ou 4.0, puisque le
code ne compile pas. Le problème est justement libsigc++, et
toutes les erreurs concernent des templates, mais ça ne devrait
pas durer puisque dans sid:
libsigc++-2.0 (2.0.6-1) unstable; urgency=low
* New upstream release.
- Fixes compilation problems with g++-3.4. (Closes: #278985)
-- Daniel Burrows <dburrows@debian.org> Sat, 30 Oct 2004
16:37:25 -0400
Il est fort possible que les diagnostics soient devenus bien
meilleurs, puisqu'il a bien fallu se rendre à l'évidence: les
générateurs automatiques d'analyseurs lexicaux ne marchent que
pour les cas simples (personnellement je les hais et n'ai jamais
réussi à les comprendre), pas pour quelque chose d'aussi compliqué
que C++.
L'analyseur d'Ada, écrit depuis le début à la main, donne des
diagnostics autrement plus compréhensibles, et a nettement moins
tendance à produire des centaines de lignes de messages d'erreur
pour un seul point-virgule manquant.
Enfin, je pense bientôt pouvoir parler des diagnostics de 3.4 ou
4.0 en connaissance de cause.
Gabriel.
Reply to: