Sophie

Sophie

distrib > * > 2010.0 > * > by-pkgid > a412ceb851151854794ced2a242192bb > files > 3091

howto-html-fr-20080722-1mdv2010.0.noarch.rpm

<html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>3.&nbsp;Outils de d&eacute;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.&nbsp;Introduction"><link rel="next" href="ar01s04.html" title="4.&nbsp;Outils math&eacute;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.&nbsp;Outils de d&eacute;veloppement de logiciels</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ar01s02.html">Pr&eacute;c&eacute;dent</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<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.&nbsp;Outils de d&eacute;veloppement de logiciels</h2></div></div></div><p>
   Le d&eacute;veloppement de codes n&eacute;cessite principalement des langages de programmation, des outils de d&eacute;bogage, des outils de contr&ocirc;le de version, des outils de compilation et des environnements de d&eacute;veloppement int&eacute;gr&eacute; o&ugrave; tout ce qui pr&eacute;c&egrave;de est regroup&eacute; dans une seule application.
  </p><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="ProgLang"></a>3.1.&nbsp;Langages de programmation</h3></div></div></div><p>
    Les liens fournis ici pointent vers diff&eacute;rents compilateurs utilis&eacute;s dans le calcul scientifique tels que le FORTRAN, le C, le C++, Java et plus r&eacute;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&eacute;s GCC&nbsp;:
     partie du projet GNU pour produire un compilateur hautement optimis&eacute;
     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&egrave;ques correspondantes (libstdc++, libgcj, &hellip;).
    </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>&nbsp;:
     le compilateur FORTRAN 77 de GCC. C'est un tr&egrave;s bon compilateur FORTRAN77. Cependant, il n'a pas l'option -r8 qui compile un programme en double pr&eacute;cision. Ce peut &ecirc;tre une bonne politique de conception mais qui pose souvent des probl&egrave;mes lors du portage d'applications de stations de travail SUN / DEC / HP vers des syst&egrave;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>&nbsp;:
     J'ai &eacute;t&eacute; heureux de recevoir ce lien par email. Cela faisait 3 ans que j'utilisais le compilateur C de GNU pour faire du d&eacute;veloppement scientifique car il n'y avait pas de "vrai" compilateur FORTRAN-95 libre jusque l&agrave;. Je remercie Paul Thomas pour cette information.
    </p></li><li><p>
     <a href="http://g95.sourceforge.net" target="_top">g95</a>&nbsp;:
     gfortran (voir ci-dessus) et g95 sont tous les deux des rejetons du m&ecirc;me arbre CVS.
     Ce compilateur poss&egrave;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>&nbsp;:
     fort77 est un programme en langage perl qui invoque la commande f2c (un traducteur de C vers Fortran) de mani&egrave;re transparente. Il peut donc &ecirc;tre utilis&eacute; exactement comme un compilateur Fortran. Fort77 peut &ecirc;tre utilis&eacute; pour compiler du code Fortran, C et assembleur et peut lier le code avec les biblioth&egrave;ques f2c. Si vous voulez installer fort77, vous devrez aussi installer f2c.
     fort77 ne pose pas le probl&egrave;me de l'option "-r8", contrairement &agrave; g77. Vous pouvez t&eacute;l&eacute;charger fort77 et f2c &agrave; partir du lien ci-dessus.
    </p></li><li><p>
    <a href="http://lush.sourceforge.net" target="_top">lush</a>&nbsp;:
     un langage de programmation orient&eacute; objets qui combine la flexibilit&eacute; d'un langage interpr&eacute;t&eacute; avec l'efficacit&eacute; d'un langage compil&eacute;.
     Il poss&egrave;de des interfaces compl&egrave;tes pour les biblioth&egrave;ques num&eacute;riques (GSL, LAPACK, BLAS) et graphiques (OpenGL), permettant la cr&eacute;ation de graphiques et d'animations 3D et de beaucoup d'autres caract&eacute;ristiques qui sont presque trop belles pour &ecirc;tre vraies. Je ne l'ai pas encore essay&eacute;, mais il a l'air tr&egrave;s prometteur.
    </p></li><li><p><a href="http://www.python.org/topics/scicomp/" target="_top">Python pour les scientifiques</a>&nbsp;:
     <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&eacute;t&eacute;, interactif et orient&eacute; objet.

     Il poss&egrave;de de nombreuses extensions pour le calcul, le tra&ccedil;age, le stockage de donn&eacute;es et combin&eacute; avec Tk permet de d&eacute;velopper de bonnes interfaces graphiques pour vos codes.
     Son aspect le plus int&eacute;ressant est qu'il simplifie la programmation car des modules pour pratiquement tout (vecteurs, tenseurs, transformations, d&eacute;riv&eacute;es, alg&egrave;bre lin&eacute;aire, transform&eacute;es de Fourier, statistiques, etc&hellip;) sont disponibles.
     Vous pouvez aussi utiliser des biblioth&egrave;ques C et Fortran &agrave; partir de Python.
     Finalement, si vous voulez &eacute;crire votre propre programme num&eacute;rique, vous pourriez d&eacute;couvrir que c'est plus simple de le faire en Python.
     Il existe &eacute;galement des interfaces vers netCDF (fichiers binaires portables), MPI et BSPlib (programmation parall&egrave;le).
    </p><p>
     Vous trouverez d'autres informations sur l'usage de Python en calcul scientifique ici&nbsp;:
    </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>&nbsp;:
        un ensemble de modules pour le calcul scientifique sous Python.
        Ils peuvent tous &ecirc;tre t&eacute;l&eacute;charg&eacute;s soit comme fichiers au format tar, soit comme fichiers au format RPM.
        Le responsable, Konrad Hinsen, propose aussi un bon didacticiel intitul&eacute; <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>&nbsp;
        Une biblioth&egrave;que d'outils scientifiques libres pour Python. Elle inclut des modules pour cr&eacute;er des graphiques et faire du tra&ccedil;age, des modules d'optimisation, d'int&eacute;gration, de fonctions sp&eacute;ciales, de manipulation de signaux et d'images, d'algorithmes g&eacute;n&eacute;tiques, de solveurs d'&eacute;quations diff&eacute;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.&nbsp;Outils de d&eacute;bogage</h3></div></div></div><p>
    Dans cette section, je donne principalement des liens vers des outils de d&eacute;bogage pour GCC et le langage FORTRAN. Je sais que Python poss&egrave;de un module interne de d&eacute;bogage mais je ne m'en suis jamais servi.
    L'utilit&eacute; d'un d&eacute;bogueur est de vous permettre de voir ce qui se passe &agrave; l'int&eacute;rieur d'un programme lorsqu'il s'ex&eacute;cute ou de savoir ce qu'il faisait lorsque celui-ci s'est plant&eacute;.
   </p><div class="itemizedlist"><ul type="disc"><li><p><a href="http://www.dsm.fordham.edu/~ftnchek" target="_top">Ftnchek</a>&nbsp;:
     c'est un v&eacute;rificateur pour FORTRAN con&ccedil;u pour d&eacute;tecter des erreurs dans un programme Fortran qu'un compilateur n'aurait probablement pas vues.
     Il est donc conseill&eacute; d'utiliser ftnchek dans vos programmes FORTRAN une fois qu'ils compilent sans erreur. Son but est d'assister l'utilisateur &agrave; trouver des erreurs s&eacute;mantiques. Ces erreurs sont autoris&eacute;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 &agrave; ftnchek.
    </p></li><li><p> <a href="http://www.gnu.org/software/gdb/gdb.html" target="_top">gdb</a>&nbsp;:
     Tous les programmes &eacute;crits dans les langages support&eacute;s par GCC peuvent &ecirc;tre d&eacute;bogu&eacute;s avec <span class="emphasis"><em>gdb</em></span>, qui est un excellent d&eacute;bogueur interactif en ligne de commande.
     Vous pouvez compiler vos programmes avec l'option -g pour ins&eacute;rer des informations de d&eacute;bogage dans l'ex&eacute;cutable. Gdb peut d&eacute;marrer, arr&ecirc;ter vos logiciels lorsque des conditions ou des endroits sp&eacute;cifiques sont atteints et examiner ce qui s'est pass&eacute; lorsque votre programme s'arr&ecirc;te.
     Dans un code de taille importante avec de multiples appels en cascade vers diverses fonctions, il peut retrouver la s&eacute;quence d'appel des fonctions.
     Vous pouvez aussi t&eacute;l&eacute;charger le document <a href="http://sources.redhat.com/gdb/current/onlinedocs/" target="_top">Comment d&eacute;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>&nbsp;:
     c'est une interface graphique pour le d&eacute;bogueur gdb. Elle est utile pour les d&eacute;butants car elle pr&eacute;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&ecirc;ts par un simple clic de souris, et une zone pour visualiser les r&eacute;sultats du d&eacute;bogage.
    </p></li><li><p> <a href="http://www.gnu.org/software/ddd/ddd.html" target="_top">DDD</a>&nbsp;:
     Le <span class="foreignphrase"><em class="foreignphrase">GNU Data Display Debugger</em></span>, GNU DDD, est une interface graphique pour des d&eacute;bogueurs en ligne de commande tels que GDB, DBX, WDB, Ladebug, JDB, XDB, le d&eacute;bogueur de Perl ou le d&eacute;bogueur de Python. En plus des caract&eacute;ristiques "classiques" des interfaces graphiques telles que la possibilit&eacute; de visualiser le code source, il permet aussi un affichage interactif et graphique des donn&eacute;es dans lequel les structures de donn&eacute;es sont repr&eacute;sent&eacute;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.&nbsp;Outils de contr&ocirc;le de version</h3></div></div></div><p>
   Si vous voulez faire s&eacute;rieusement du d&eacute;veloppement de logiciels, il pourrait &ecirc;tre utile de passer un peu de temps &agrave; apprendre &agrave; utiliser un des outils de contr&ocirc;le de version d&eacute;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>&nbsp;:
     CVS est un des syst&egrave;mes de contr&ocirc;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&eacute;e ci-dessus d&eacute;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>&nbsp;:
     PRCS est une interface vers un ensemble d'outils qui, comme CVS, fournissent un moyen de traiter un ensemble de fichiers et de r&eacute;pertoires comme une entit&eacute; en pr&eacute;servant des versions coh&eacute;rentes de l'ensemble.
     PRCS a &eacute;t&eacute; con&ccedil;u &agrave; l'origine par Paul N. Hilfinger avec la contribution et les modifications de Luigi Semenzato et Josh MacDonald. PRCS est &eacute;crit et maintenu par Josh MacDonald. Son but est similaire &agrave; 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&eacute;veloppements les plus r&eacute;cents de PRCS peuvent &ecirc;tre trouv&eacute;s en cliquant sur le lien ci-dessus.
    </p></li><li><p><a href="http://www.cryon.com/gbuild/" target="_top">Gbuild</a>&nbsp;:
     gbuild est un script &eacute;crit en langage Bourne shell dont le but est de simplifier la maintenance de vos logiciels en vous permettant d'automatiser leurs mises &agrave; jour &agrave; partir de CVS, leur compilation et la construction des tar/rpms/srpms de ceux-ci. Certains scripts externes dont d&eacute;pendent certaines fonctions de gbuild sont &eacute;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.&nbsp;Environnements int&eacute;gr&eacute;s de d&eacute;veloppement</h3></div></div></div><p>
    Les environnements de d&eacute;veloppement int&eacute;gr&eacute; (EDI) peuvent &ecirc;tre tr&egrave;s utiles pour d&eacute;velopper du code. Ils viennent id&eacute;alement avec tous les outils cit&eacute;s pr&eacute;c&eacute;demment (c-&agrave;-d un compilateur, un d&eacute;bogueur et un outil de contr&ocirc;le de version). En plus de cela, les EDI fournissent g&eacute;n&eacute;ralement un g&eacute;n&eacute;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>&nbsp;:
     un EDI facile &agrave; utiliser pour Linux et supportant les langages C et C++.
     Il supporte les projets KDE/Qt, GNOME, C et C++. Le site pr&eacute;sente une documentation d&eacute;taill&eacute;e&thinsp;; c'est un tr&egrave;s bon site pour les d&eacute;veloppeurs de logiciels.
     Sp&eacute;cifiquement, KDevelop g&egrave;re ou fournit&nbsp;:
    </p><p>
     Tous les outils de d&eacute;veloppement utiles pour la programmation en C++ comme un compilateur, un &eacute;diteur de liens, automake et autoconf&thinsp;; KAppWizard qui g&eacute;n&egrave;re des exemples d'applications compl&egrave;tes et fonctionnelles&thinsp;; Class generator pour cr&eacute;er de nouvelles classes et les int&eacute;grer dans le projet en cours&thinsp;; un gestionnaire de fichiers pour les fichiers sources, en-t&ecirc;tes, la documentation, etc devant &ecirc;tre inclus dans le projet&thinsp;; la cr&eacute;ation de manuels utilisateur &eacute;crits en SGML et la g&eacute;n&eacute;ration de sorties en HTML avec le style KDE ;&thinsp;; la g&eacute;n&eacute;ration automatique en HTML de la documentation des classes de votre projet avec les r&eacute;f&eacute;rences crois&eacute;es vers les biblioth&egrave;ques utilis&eacute;es&thinsp;; le support pour l'internationalisation de votre application permettant aux traducteurs d'ajouter facilement une langue au projet&thinsp;; KDevelop inclut aussi la cr&eacute;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&acirc;ce &agrave; un &eacute;diteur interne de dialogues&thinsp;; le d&eacute;bogage de votre application gr&acirc;ce &agrave; l'int&eacute;gration de KDbg&thinsp;; l'&eacute;dition d'ic&ocirc;nes relatives au projet avec KIconEdit&thinsp;; l'inclusion de n'importe quel autre programme dont vous avez besoin pour le d&eacute;veloppement en l'ajoutant au menu "outils".
    </p></li><li><p> <a href="http://vdkbuilder.sourceforge.net/" target="_top">VDKbuilder</a>&nbsp;:
     VDKbuilder est un outil qui aide les programmeurs &agrave; construire des interfaces graphiques, &agrave; &eacute;diter, compiler, &eacute;diter les liens et d&eacute;boguer dans un environnement int&eacute;gr&eacute;.
     L'utilisation de VDKBuilder r&eacute;duit fortement le temps de d&eacute;veloppement puisque tout le code li&eacute; &agrave; la construction de l'interface graphique et &agrave; la gestion des signaux est automatiquement g&eacute;n&eacute;r&eacute;, g&eacute;r&eacute; et mis &agrave; jour. Il est distribu&eacute; sous la licence publique g&eacute;n&eacute;rale GNU. Visitez son site pour le t&eacute;l&eacute;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&eacute;c&eacute;dent</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="ar01s04.html">Suivant</a></td></tr><tr><td valign="top" align="left" width="40%">2.&nbsp;Introduction&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Sommaire</a></td><td valign="top" align="right" width="40%">&nbsp;4.&nbsp;Outils math&eacute;matiques</td></tr></table></div></body></html>