précédent  index  suivant

4. Outils, environnement de développement et autres gadgets


Note :

Cette section a du mal à vivre sans l'aide des lecteurs. Par soucis d'équité et pour limiter un peu le volume d'informations, on s'en tient aux logiciels, programmes, codes, etc. libres, gratuits ou du domaine public.

4.1 Environnements de développement intégrés

Apple Classic:

Sur Mac OS, MPW combiné avec le terrible MacsBug vous donneront entière satisfaction.

Unix :

Sur Unix-like, vi[m] et [x]emacs, combinés avec make, GNU CC et GNU DB forment un environnement de développement intégré.

Pour Mac OS X, Xcode est l'IDE de choix utilisant LLVM-GCC et GCC. http://developer.apple.com/xcode/

Wintel :

Borland fournit l'environnement Turbo complet avec éditeur, débogueur, etc. Mais c'est passablement vieux : la version 2.0 distribuée sur les sites de Borland date de 1988, il s'agit donc d'un compilateur pré-ANSI (cf. 3.7). Si l'on tient à utiliser du matériel Borland, Turbo C++ 1.01 sera plus confortable et plus conforme à la norme (en ayant récupéré l'archive BC20P2.ZIP qui traîne un peu partout).

Mieux vaut se rabattre sur le couple djgpp-RHIDE (tentez votre chance ici : www.rhide.com), qui d'ailleurs existe sous Linux. Il y a aussi Source Navigator disponible ici : sources.redhat.com/sourcenav/.

On pourra aussi utiliser NTemacs (cf. www.linux-france.org/article/appli/emacs/Gnus+Emacs/Windows/emacs.html).

Signalons enfin l'existence d'un IDE assez complet, gratuit et open-source : Dev-C++ ; il est basé sur MinGW (mais peut aussi utiliser Cygwin) pour la compilation et le debugger. On le retrouvera à l'adresse : www.bloodshed.net/devcpp.html.

(voir aussi 4.2).

4.2 Compilateurs

Le choix dépend du système d'exploitation et du processeur cible.

Apple Classic:

Pour les machines sous Mac OS, le compilateur d'Apple est MPW.

Unix :

Pour Unix-like, le GNU C Compiler (alias GNU CC ou gcc) est fourni avec toute distribution *BSD ou GNU/Linux.

Le compilateur de Mac OS X était GCC par défaut et est en train d'être remplacé par LLVM-GCC. FreeBSD est aussi en train de passer à LLVM/Clang. Voir llvm.org: "The LLVM Compiler Infrastructure".

Wintel :

Pour machines Wintel, il existe un portage du célèbre GNU C Compiler : www.delorie.com/djgpp/.

Un autre portage existe pour Windows : sources.redhat.com/cygwin/.

MinGW (Minimalist-GnuWin32), encore un portage Win32 de gcc. Frustre mais puissant, optimise bien, adapté si l'on connaît bien l'environnement de programmation UNIX : mingw.sourceforge.net/

Borland a aussi mis en téléchargement gratuit certains de ses compilateurs là : www.borland.com/bcppbuilder/freecompiler/ ou là : www.borland.fr/download/compilateurs/.

Il y a aussi lcc-win32, qui est un dérivé du lcc originel de Chris Fraser et David Hanson. lcc-win32 vient avec un éditeur intégré, et contient ce qu'il faut comme documentation et bibliothèques pour ouvrir des fenêtres sous Windows. Il est plus léger en termes de consommation mémoire et de CPU que GNU CC; il produit un code décent (mais néanmoins pas optimal) : www.cs.virginia.edu/~lcc-win32/

4.3 Débogueurs

Unix :

GNU DB (alias gdb) est fourni avec les distributions *BSD et GNU/Linux.

Pour Mac OS X et FreeBSD, les déboggeurs fournis avec le système sont LLDB et GNU DB.

Wintel :

À part celui de l'environnement Turbo (cf. 4.1), regardez du côté de sources.redhat.com/insight/.

4.4 Graphisme

Apple Classic:

Pour Mac OS, il vous faut récupérer QuickDraw, fournie par Apple : devworld.apple.com/macos/quickdraw.html

Unix :

Pour environnement Unix, il existe un environnement graphique libre, reproduisant le système X11 (dit aussi X-Window). Il est fourni avec toute distribution *BSD ou GNU/Linux. Allez le voir sur www.xfree86.org/.

Pour Mac OS X, l'environnement graphique s'appelle Quartz et il utilise en particulier OpenGL pour la partie 3D: http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Conceptual/OpenGL-MacProgGuide/opengl_intro/opengl_intro.html

Wintel :

Pour du graphisme sous DOS avec djgpp, il y a Allegro qui se trouve là : www.talula.demon.co.uk/allegro

4.5 Bibliothèques

Calcul scientifique :

Pour du calcul scientifique, ici : www.netlib.org/ (mis à jour très régulièrement).

Ajay Shah maintenait un index de codes libres et/ou du domaine public implémentant diverses routines de calcul. On le trouve par exemple là : ftp.math.psu.edu/pub/FAQ/numcomp-free-c mais ça date.

Numerical Recipes in C :

Là : www.ulib.org/webRoot/Books/Numerical_Recipes/bookcpdf.html. Les sources ont été incluses dans la distribution Linux pour les plateformes à base de PowerPC : « LinuxPPC 1999 ». Les sources ont disparu des miroirs et « LinuxPPC 2000 » ne l'intègre plus mais les miroirs ont encore (en septembre 2000) le package de binaires (pour PPC uniquement) et certains sont prêts à envoyer les sources.

Générateurs de nombres pseudo-aléatoires :

(Les anglo-saxons disent Pseudo-Random Numbers Generators et abrègent en PRNG)

Par exemple là : www.io.com/~ritter/NETLINKS.HTM#RandomnessLinks, burtleburtle.net/bob/rand/isaacafa.html ou random.mat.sbg.ac.at/. Voir aussi www.netlib.org/ et cherchez enfin r250, RANLIB et FSULTRA.

Calcul multi-précision :

On trouve le code des fonctions quad() de BSD quelque part là : ftp.uu.net/systems/unix/bsd-sources/ dans un répertoire src/lib/libc/quad/.

Il y a aussi la bibliothèque GNU MP (GNU Multiple Precision ou GMP) que l'on trouve ici : http://gmplib.org.

Les sources de la bibliothèque standard :

Le livre Plauger P.J. (1994), La bibliothèque C standard chez Masson, réimplémente la plupart des fonctions. Attention, les sources ne sont pas libres. On peut aussi consulter les sources des Unix-based libres *BSD ou encore celles du projet GNU.

(informations bienvenues à pascal.cabaud@wanadoo.fr).

4.6 Outils divers

Notez que la majorité des outils cités ici ont initialement été écrits pour des plateformes Unix. Il existe assez souvent des portages sur d'autres OS, que l'on cite parfois. Il arrive fréquemment que je ne donne pas d'URL ; une recherche par exemple avec le merveilleux www.google.com/ vous donnera des liens à ne plus savoir qu'en faire ...

Certains sont là : gatekeeper.dec.com/pub/usenet/comp.sources.unix/ ou sur le mirroir : ftp.uu.net/usenet/comp.sources.unix/.

Pour les outils GNU, voir sur le site du projet : www.gnu.org/.

Indentation et mise en forme :

Cherchez cb, enscript, indent, lgrind, vgrind.

Vérification de sources :

Cherchez lint et regardez www.elirion.com/lintpage.html. On trouve splint(anciennement LCLint) là : www.splint.org.

Génération de références croisées :

Cherchez cflow, cxref, calls, cscope, xscope, ou ixfw. C'est pratique pour voir les graphes de dépendances des fonctions.

Dégénération de code C :

Cherchez obfus, shroud, ou opqcp. Ce gadget sert à rendre un source parfaitement illisible.

Interprétation des déclarations :

Cherchez cdecl dans le volume 14, à www.uu.net/usenet/comp.sources.unix/. Ça sert essentiellement à comprendre des déclarations ou à en générer.

Génération de dépendances :

Cherchez makedepend ou tentez cc -M ou cpp -M.

Gestion de projets :

Cherchez GNU make. Voir aussi 3.10.

Contrôle de versions :

Cherchez CVS, RCS et SCCS. Voir aussi 3.10.

Traducteurs Fortran/C et Pascal/C :

Cherchez ftoc et f2c pour le Fortran. On trouve f2c sur www.netlib.org/. Il existe une version pour MacOS : www.alumni.caltech.edu/~igormt/Mac_F2C.html. Pour le Pascal, ça se trouve là : csvax.cs.caltech.edu/pub/p2c-1.20.tar.Z. Cherchez aussi ptoc.

Calcul d'unités :

Cherchez ccount, Metre, lcount, csize, www.qucis.queensu.ca/.

Calcul du nombre de lignes d'un fichier source :

Utilisez les commandes wc ou grep -c ";".

Génération de prototypes :

Cherchez cproto (www.vex.net/~cthuang/cproto/) et cextract.

Gestion correcte des appels à malloc :

Cherchez dbmalloc, MallocDebug, JMalloc.c et JMalloc.h, zieutez la page www.cs.colorado.edu/homes/zorn/public_html/MallocDebug.html et regardez : ftp.crpht.lu/pub/sources/memdebug. Ceci fait, il vous reste à compiler et installer dmalloc provenant de là : dmalloc.com/.

Génération de documentation à partir de code commenté :

Il existe divers outils dont doc++ et doxygen. Le dernier gère le format LaTeX2e, HTML et nroff et se trouve ici : www.stack.nl/~dimitri/doxygen/.

Voir aussi 4.7.

Préprocesseur sélectif :

Cherchez unifdef, rmifdef et scpp. Ils suppriment les directives #ifdef inutiles, rendant ainsi un code plus lisible.

Gestion des expressions régulières :

Le projet GNU propose rx. Il y a aussi regexp sur ftp.cs.toronto.edu/pub/regexp.shar.Z.

Profileur :

Le projet GNU développe gprof ( cf. 16.1). Il existe aussi FunctionCheck : www710.univ-lyon1.fr/~yperret/fnccheck/profiler.html

4.7 Où trouver du code ?

Là : www.gnu.org par exemple. Les logiciels GNU, les Unix-like *BSD et GNU/Linux sont distribués (ils sont libres) avec les sources. La pluparts d'entre eux étant écrits en C, cela en fait une très grande collection de code.

On trouvera du code (du domaine public) là : ftp.cdrom.com. Il y a aussi ftp.brokersys.com/pub/snippets et sur le web à www.brokersys.com/snippets/ ou www.ping.de/sites/systemcodes/ ou encore par ftp par exemple à ftp.funet.fi/pub/languages/C/Publib/.

Les serveurs ftp.uu.net/, archive.umich.edu/, oak.oakland.edu/, sumex-aim.stanford.edu/, et wuarchive.wustl.edu/, hébergent une grande quantité de logiciels, code et documentation libres et/ou gratuits. le serveur princicpal du projet GNU est prep.ai.mit.edu/.

Voir aussi 4.6 et 4.5.

(informations bienvenues à pascal.cabaud@wanadoo.fr)


précédent  index  suivant