|
Publicité ' | ||||||||||||||||||||||||
|
|
#41 | ||
|
Nouveau Membre du Club
![]() Inscription : mars 2003 Messages : 41 ![]() |
Citation:
Citation:
Je garde ton exemple de code pour rendre lisible les exceptions non gérées avec Gnat. Effectivement, il y avait deux options à passer à la chaîne de compilation. Merci. |
||
|
|
00
|
|
|
#42 |
|
Membre régulier
![]() Mathématicien Inscription : mars 2012 Messages : 58 ![]() |
|
|
00
|
|
|
#43 | |
|
Nouveau Membre du Club
![]() Inscription : mars 2003 Messages : 41 ![]() |
Citation:
Du coup, comme l'un ne va pas sans l'autre... |
|
|
|
00
|
|
|
#44 | |||||||||||||
|
Membre confirmé
![]() |
Citation:
Le premier exemple qui me vient à l'esprit est celui des contraintes de valeur d'un type. C, C++, Java ou C# laissent l'entière responsabilité de la validité des plages de valeur au développeur. Cela a pour conséquence de voir, dans certains sources, une quantité non négligeable de commentaires et de tests traitant de ce point... Quand c'est fait Citation:
On est ici dans le cas d'un langage compilé et natif comme le C/C++, pas d'un langage tournant dans une machine virtuelle. En C/C++, il se passe la même chose avec, habituellement, un magnifique segmentation fault suivi d'un core dump. Dans ce cas, il faut aussi activer les informations de debug et lancer un outil dédié style gdb ou ddd. D'ailleurs, la situation est identique quelque soit l'OS. Certes en Java, cela aurait provoqué une exception de type ArrayOutOfBounds, NullPointerException, OutOfMemory ou autre et le programme aurait continué à faire semblant de fonctionner... Est-ce vraiment ce que l'on veut ? A fortiori, dans un équipement embarqué ? Qui plus est, la stacktrace de 25000 lignes (si si, j'en ai vu grâce à Spring et autres joyeusetés) n'est pas toujours non plus des plus évidentes à utiliser et nécessite l'inclusion dans le code généré de tous les symboles de debogage, ce que fait Java par défaut contrairement au C/C++ et Ada. C'est utile mais cela a un coup non négligeable en termes de performance. Mais bon, c'est quand même bien parce que ça permet le désassemblage (avec JD gui (http://java.decompiler.free.fr/?q=jdgui) sans douleur dans une grande majorité des cas Pour revenir au compilateur et à sa verbosité, il n'y a que très peu de temps que les compilateurs C/C++ sont capables de fournir des messages d'un niveau équivalent à celui d'Ada. Exemple : Code :
Code :
Code :
Je parle bien ici du compilateur, pas d'un IDE comme Eclipse qui est censé empêcher ces problèmes-là en amont. Allez on continue. En Ada, il existe un package standard permettant d'obtenir plus d'informations sur l'exception, Ada.Exceptions. Si on modifie le programme précédent commme suit : Code :
Code :
Alors oui, la solution fournie par Zerte correspond bien au comportement Java qui est de lancer une pile mais Ada.exceptions est un mécanisme standard que les compilateurs adhérents à la norme doivent implémenter. Pour être totalement honnête, il y a quand même un bémol. La norme ne précise pas que la ligne de code fautive doit être fournie. Citation:
D'ailleurs, si les bibliothèques liées au Web ne sont pas dans la norme, il y a toujours moyen de se débrouiller. Il suffit d'aller regarder le site V2P dont le code source est disponible sur Google code . Alors oui, c'est vrai, Ada n'est pas populaire, on ne trouve pas autant de développeurs que pour Java (ou Javascript, mon Dieu !!) mais ceux que l'on trouve sont extrèmement compétents, il suffit d'aller faire un tour sur le newsgroup comp.lang.ada pour s'en rendre compte. A chacun de voir s'il veut résister aux sirènes de la mode et faire un programme qui fonctionne ou s'il préfère s'attirer la sympathie du public avec une technologie hype. Dans le dernier cas, je recommande chaudement Ruby on Rails et la lecture de l'excellente suite d'articles sur la création de pages statiques sur Linuxfr |
|||||||||||||
|
00
|
|
|
#45 | |
|
Nouveau Membre du Club
![]() Inscription : mars 2003 Messages : 41 ![]() |
Bonjour Blackknight et merci beaucoup pour cette réponse argumentée !
Je me permettrai seulement de préciser le point suivant : Citation:
Ceci est donc plus aisé quand on connaît le lieu de genèse du problème. Enfin, et encore une fois, merci pour le nouvel exemple de logiciel Ada "grand public". |
|
|
|
00
|
|
|
#46 |
|
Membre régulier
![]() Mathématicien Inscription : mars 2012 Messages : 58 ![]() |
Encore un point à préciser: l'aspect auto-documentation ne concerne pas seulement le "code" (moins besoin de commenter, pas besoin de décrire les algos avec du pseudo-code), mais aussi la spécification. J'ai eu un cas concret il y a qqes jours, lors d'une séance de travail: qqn a dit "Il faudrait encore que Zerte couche sur papier une spécification", et Zerte a envoyé illico la spécification (package ZZZ is ...) par mail: voilà, vous l'avez les amis
|
|
00
|
|
|
#47 |
|
Nouveau Membre du Club
![]() Inscription : mars 2003 Messages : 41 ![]() |
Bonjour !
C'est que les spécifications Ada, comme les ".h" du C sont très intéressant de ce point de vue. |
|
|
00
|
|
|
#48 |
|
Membre régulier
![]() Mathématicien Inscription : mars 2012 Messages : 58 ![]() |
Evidemment on peut avoir de tout dans une spécification, et tout n'est pas forcément bon à être envoyé comme document de spécification. Avec un ".h" il peut y avoir quelques difficultés de lecture supplémentaires de la part de personnes non-spécialistes s'il y a trop de contenu style "macro-assembleur" (des #ifdef etc.).
|
|
00
|
|
|
#49 |
|
Nouveau Membre du Club
![]() Inscription : mars 2003 Messages : 41 ![]() |
C'est juste.
En fait, je verrais bien la chose dans l'autre sens, ce qui aurait beaucoup plus d'intérêt selon moi : document écrit pratiquement en anglais naturel, avec quelques mots clés bien placés, devrait pouvoir permettre de générer une spécification Ada d'une manière ridiculement aisée. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com