<html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>3. Outils de développement de logiciels</title><link href="style.css" rel="stylesheet" type="text/css"><meta content="DocBook XSL Stylesheets V1.68.1" name="generator"><link rel="start" href="index.html" title="Guide pratique de l'informatique scientifique avec des logiciels libres sous GNU/Linux"><link rel="up" href="index.html" title="Guide pratique de l'informatique scientifique avec des logiciels libres sous GNU/Linux"><link rel="prev" href="ar01s02.html" title="2. Introduction"><link rel="next" href="ar01s04.html" title="4. Outils mathématiques"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">3. Outils de développement de logiciels</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ar01s02.html">Précédent</a> </td><th align="center" width="60%"> </th><td align="right" width="20%"> <a accesskey="n" href="ar01s04.html">Suivant</a></td></tr></table><hr></div><div class="sect1" lang="fr"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="devtools"></a>3. Outils de développement de logiciels</h2></div></div></div><p> Le développement de codes nécessite principalement des langages de programmation, des outils de débogage, des outils de contrôle de version, des outils de compilation et des environnements de développement intégré où tout ce qui précède est regroupé dans une seule application. </p><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="ProgLang"></a>3.1. Langages de programmation</h3></div></div></div><p> Les liens fournis ici pointent vers différents compilateurs utilisés dans le calcul scientifique tels que le FORTRAN, le C, le C++, Java et plus récemment Python. </p><div class="itemizedlist"><ul type="disc"><li><p> <a href="http://gcc.gnu.org/" target="_top">Les compilateurs GNU</a> (<span class="foreignphrase"><em class="foreignphrase">GNU Compiler Collection</em></span>), aussi appelés GCC : partie du projet GNU pour produire un compilateur hautement optimisé Il fonctionne sur de multiples architectures et environnements. Actuellement, GCC comporte des interfaces utilisateur pour les langages C, C++, Objective C, GNU Fortran-95, Java et Ada, ainsi que les bibliothèques correspondantes (libstdc++, libgcj, …). </p><p> Les manuels des compilateurs GCC sont disponibles sur le <a href="http://www.gnu.org/software/gcc/onlinedocs/" target="_top">site de GNU</a>. </p></li><li><p> <a href="ftp://ftp.gnu.org/gnu/g77/index.html" target="_top">g77</a> : le compilateur FORTRAN 77 de GCC. C'est un très bon compilateur FORTRAN77. Cependant, il n'a pas l'option -r8 qui compile un programme en double précision. Ce peut être une bonne politique de conception mais qui pose souvent des problèmes lors du portage d'applications de stations de travail SUN / DEC / HP vers des systèmes Linux. Le manuel de g77 est disponible sur le <a href="http://gcc.gnu.org/onlinedocs/g77/" target="_top">site de documentation de GCC</a>. </p></li><li><p> <a href="http://gcc.gnu.org/fortran/" target="_top">gfortran</a> : J'ai été heureux de recevoir ce lien par email. Cela faisait 3 ans que j'utilisais le compilateur C de GNU pour faire du développement scientifique car il n'y avait pas de "vrai" compilateur FORTRAN-95 libre jusque là. Je remercie Paul Thomas pour cette information. </p></li><li><p> <a href="http://g95.sourceforge.net" target="_top">g95</a> : gfortran (voir ci-dessus) et g95 sont tous les deux des rejetons du même arbre CVS. Ce compilateur possède une liste impressionnante de programmes qui se compilent et fonctionnent avec lui. </p></li><li><p> <a href="http://www.llnl.gov/casc/Overture/henshaw/install/node6.html" target="_top"> fort77 and f2c</a> : fort77 est un programme en langage perl qui invoque la commande f2c (un traducteur de C vers Fortran) de manière transparente. Il peut donc être utilisé exactement comme un compilateur Fortran. Fort77 peut être utilisé pour compiler du code Fortran, C et assembleur et peut lier le code avec les bibliothèques f2c. Si vous voulez installer fort77, vous devrez aussi installer f2c. fort77 ne pose pas le problème de l'option "-r8", contrairement à g77. Vous pouvez télécharger fort77 et f2c à partir du lien ci-dessus. </p></li><li><p> <a href="http://lush.sourceforge.net" target="_top">lush</a> : un langage de programmation orienté objets qui combine la flexibilité d'un langage interprété avec l'efficacité d'un langage compilé. Il possède des interfaces complètes pour les bibliothèques numériques (GSL, LAPACK, BLAS) et graphiques (OpenGL), permettant la création de graphiques et d'animations 3D et de beaucoup d'autres caractéristiques qui sont presque trop belles pour être vraies. Je ne l'ai pas encore essayé, mais il a l'air très prometteur. </p></li><li><p><a href="http://www.python.org/topics/scicomp/" target="_top">Python pour les scientifiques</a> : <a href="http://www.python.org" target="_top">Python</a> est une piste que vous pouvez vouloir explorer pour vos besoins en calcul scientifique. Python est un langage de programmation interprété, interactif et orienté objet. Il possède de nombreuses extensions pour le calcul, le traçage, le stockage de données et combiné avec Tk permet de développer de bonnes interfaces graphiques pour vos codes. Son aspect le plus intéressant est qu'il simplifie la programmation car des modules pour pratiquement tout (vecteurs, tenseurs, transformations, dérivées, algèbre linéaire, transformées de Fourier, statistiques, etc…) sont disponibles. Vous pouvez aussi utiliser des bibliothèques C et Fortran à partir de Python. Finalement, si vous voulez écrire votre propre programme numérique, vous pourriez découvrir que c'est plus simple de le faire en Python. Il existe également des interfaces vers netCDF (fichiers binaires portables), MPI et BSPlib (programmation parallèle). </p><p> Vous trouverez d'autres informations sur l'usage de Python en calcul scientifique ici : </p><div class="itemizedlist"><ul type="circle"><li><p> <a href="http://starship.python.net/crew/hinsen/scientific.html" target="_top">Science et Python</a> : un ensemble de modules pour le calcul scientifique sous Python. Ils peuvent tous être téléchargés soit comme fichiers au format tar, soit comme fichiers au format RPM. Le responsable, Konrad Hinsen, propose aussi un bon didacticiel intitulé <a href="http://starship.python.net/crew/hinsen/tutorial.ps" target="_top">Scientific Computing in Python (Calcul scientifique avec Python)</a>. </p></li><li><p> <a href="http://www.scipy.org" target="_top">SciPy</a> Une bibliothèque d'outils scientifiques libres pour Python. Elle inclut des modules pour créer des graphiques et faire du traçage, des modules d'optimisation, d'intégration, de fonctions spéciales, de manipulation de signaux et d'images, d'algorithmes génétiques, de solveurs d'équations différentielles ordinaires, etc. </p></li></ul></div></li></ul></div></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="DebugTool"></a>3.2. Outils de débogage</h3></div></div></div><p> Dans cette section, je donne principalement des liens vers des outils de débogage pour GCC et le langage FORTRAN. Je sais que Python possède un module interne de débogage mais je ne m'en suis jamais servi. L'utilité d'un débogueur est de vous permettre de voir ce qui se passe à l'intérieur d'un programme lorsqu'il s'exécute ou de savoir ce qu'il faisait lorsque celui-ci s'est planté. </p><div class="itemizedlist"><ul type="disc"><li><p><a href="http://www.dsm.fordham.edu/~ftnchek" target="_top">Ftnchek</a> : c'est un vérificateur pour FORTRAN conçu pour détecter des erreurs dans un programme Fortran qu'un compilateur n'aurait probablement pas vues. Il est donc conseillé d'utiliser ftnchek dans vos programmes FORTRAN une fois qu'ils compilent sans erreur. Son but est d'assister l'utilisateur à trouver des erreurs sémantiques. Ces erreurs sont autorisées dans le langage Fortran mais sont du gaspillage ou peuvent causer un fonctionnement incorrect. Un <a href="http://www.dsm.fordham.edu/~ftnchek/html/" target="_top">manuel</a> en ligne est disponible. Ce projet cherche des volontaires pour ajouter le standard Fortran 90 à ftnchek. </p></li><li><p> <a href="http://www.gnu.org/software/gdb/gdb.html" target="_top">gdb</a> : Tous les programmes écrits dans les langages supportés par GCC peuvent être débogués avec <span class="emphasis"><em>gdb</em></span>, qui est un excellent débogueur interactif en ligne de commande. Vous pouvez compiler vos programmes avec l'option -g pour insérer des informations de débogage dans l'exécutable. Gdb peut démarrer, arrêter vos logiciels lorsque des conditions ou des endroits spécifiques sont atteints et examiner ce qui s'est passé lorsque votre programme s'arrête. Dans un code de taille importante avec de multiples appels en cascade vers diverses fonctions, il peut retrouver la séquence d'appel des fonctions. Vous pouvez aussi télécharger le document <a href="http://sources.redhat.com/gdb/current/onlinedocs/" target="_top">Comment déboguer avec GDB</a>, ainsi qu'une fiche reprenant les commandes principales. </p></li><li><p> <a href="ftp://ftp.x.org/contrib/utilities/" target="_top">xxgdb</a> : c'est une interface graphique pour le débogueur gdb. Elle est utile pour les débutants car elle présente la liste de toutes les commandes de gdb sous forme de boutons, une zone de visualisation du code source dans laquelle on peut ajouter des points d'arrêts par un simple clic de souris, et une zone pour visualiser les résultats du débogage. </p></li><li><p> <a href="http://www.gnu.org/software/ddd/ddd.html" target="_top">DDD</a> : Le <span class="foreignphrase"><em class="foreignphrase">GNU Data Display Debugger</em></span>, GNU DDD, est une interface graphique pour des débogueurs en ligne de commande tels que GDB, DBX, WDB, Ladebug, JDB, XDB, le débogueur de Perl ou le débogueur de Python. En plus des caractéristiques "classiques" des interfaces graphiques telles que la possibilité de visualiser le code source, il permet aussi un affichage interactif et graphique des données dans lequel les structures de données sont représentées sous formes de diagrammes. Vous trouverez le manuel de DDD aux formats PostScript, HTML ou PDF en suivant ce <a href="http://www.gnu.org/manual/ddd/" target="_top">lien</a>. </p></li></ul></div></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="VCT"></a>3.3. Outils de contrôle de version</h3></div></div></div><p> Si vous voulez faire sérieusement du développement de logiciels, il pourrait être utile de passer un peu de temps à apprendre à utiliser un des outils de contrôle de version décrit ci-dessous (j'utilise CVS). </p><div class="itemizedlist"><ul type="disc"><li><p> <a href="http://www.cvshome.org/dev/codelinux.html" target="_top">CVS (Concurrent Versions System)</a> : CVS est un des systèmes de contrôle de version les plus populaires fonctionnant sous Linux. Des projets Linux populaires comme Apache, EGCS, GIMP et d'autres utilisent CVS pour coordonner leurs efforts. C'est ainsi que l'adresse donnée ci-dessus décrit leur effort. </p><p> Un didacticiel sur CVS est disponible dans la <a href="http://www.gentoo.org/doc/cvs-tutorial.html" target="_top">documentation de Gentoo Linux</a> et un livre gratuit sur CVS <a href="http://cvsbook.red-bean.com/" target="_top">ici</a> </p></li><li><p> <a href="http://www.xcf.berkeley.edu/~jmacd/prcs.html" target="_top">Project Revision Control System</a> : PRCS est une interface vers un ensemble d'outils qui, comme CVS, fournissent un moyen de traiter un ensemble de fichiers et de répertoires comme une entité en préservant des versions cohérentes de l'ensemble. PRCS a été conçu à l'origine par Paul N. Hilfinger avec la contribution et les modifications de Luigi Semenzato et Josh MacDonald. PRCS est écrit et maintenu par Josh MacDonald. Son but est similaire à celui de SCCS, RCS et CVS mais (selon ses auteurs en tout cas) il est bien plus simple que tous ces programmes. Les informations sur les développements les plus récents de PRCS peuvent être trouvés en cliquant sur le lien ci-dessus. </p></li><li><p><a href="http://www.cryon.com/gbuild/" target="_top">Gbuild</a> : gbuild est un script écrit en langage Bourne shell dont le but est de simplifier la maintenance de vos logiciels en vous permettant d'automatiser leurs mises à jour à partir de CVS, leur compilation et la construction des tar/rpms/srpms de ceux-ci. Certains scripts externes dont dépendent certaines fonctions de gbuild sont écrits en Perl. gbuild est sous licence GPL. </p></li></ul></div></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="IDE"></a>3.4. Environnements intégrés de développement</h3></div></div></div><p> Les environnements de développement intégré (EDI) peuvent être très utiles pour développer du code. Ils viennent idéalement avec tous les outils cités précédemment (c-à-d un compilateur, un débogueur et un outil de contrôle de version). En plus de cela, les EDI fournissent généralement un générateur de makefile, de la documentation, des manuels d'aide en ligne, etc. </p><div class="itemizedlist"><ul type="disc"><li><p> <a href="http://www.kdevelop.org/" target="_top">Kdevelop</a> : un EDI facile à utiliser pour Linux et supportant les langages C et C++. Il supporte les projets KDE/Qt, GNOME, C et C++. Le site présente une documentation détaillée ; c'est un très bon site pour les développeurs de logiciels. Spécifiquement, KDevelop gère ou fournit : </p><p> Tous les outils de développement utiles pour la programmation en C++ comme un compilateur, un éditeur de liens, automake et autoconf ; KAppWizard qui génère des exemples d'applications complètes et fonctionnelles ; Class generator pour créer de nouvelles classes et les intégrer dans le projet en cours ; un gestionnaire de fichiers pour les fichiers sources, en-têtes, la documentation, etc devant être inclus dans le projet ; la création de manuels utilisateur écrits en SGML et la génération de sorties en HTML avec le style KDE ; ; la génération automatique en HTML de la documentation des classes de votre projet avec les références croisées vers les bibliothèques utilisées ; le support pour l'internationalisation de votre application permettant aux traducteurs d'ajouter facilement une langue au projet ; KDevelop inclut aussi la création WYSIWYG (<span class="foreignphrase"><em class="foreignphrase">What You See Is What You Get</em></span>, ce que vous voyez est ce que vous obtenez) d'interfaces utilisateur grâce à un éditeur interne de dialogues ; le débogage de votre application grâce à l'intégration de KDbg ; l'édition d'icônes relatives au projet avec KIconEdit ; l'inclusion de n'importe quel autre programme dont vous avez besoin pour le développement en l'ajoutant au menu "outils". </p></li><li><p> <a href="http://vdkbuilder.sourceforge.net/" target="_top">VDKbuilder</a> : VDKbuilder est un outil qui aide les programmeurs à construire des interfaces graphiques, à éditer, compiler, éditer les liens et déboguer dans un environnement intégré. L'utilisation de VDKBuilder réduit fortement le temps de développement puisque tout le code lié à la construction de l'interface graphique et à la gestion des signaux est automatiquement généré, géré et mis à jour. Il est distribué sous la licence publique générale GNU. Visitez son site pour le télécharger. </p></li></ul></div></div></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ar01s02.html">Précédent</a> </td><td align="center" width="20%"> </td><td align="right" width="40%"> <a accesskey="n" href="ar01s04.html">Suivant</a></td></tr><tr><td valign="top" align="left" width="40%">2. Introduction </td><td align="center" width="20%"><a accesskey="h" href="index.html">Sommaire</a></td><td valign="top" align="right" width="40%"> 4. Outils mathématiques</td></tr></table></div></body></html>