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.
Sur Mac OS, MPW combiné avec le terrible MacsBug vous donneront entière satisfaction.
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/
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).
Le choix dépend du système d'exploitation et du processeur cible.
Pour les machines sous Mac OS, le compilateur d'Apple est MPW.
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".
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/
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.
À part celui de l'environnement Turbo (cf. 4.1), regardez du côté de sources.redhat.com/insight/.
Pour Mac OS, il vous faut récupérer QuickDraw, fournie par Apple : devworld.apple.com/macos/quickdraw.html
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
Pour du graphisme sous DOS avec djgpp, il y a Allegro qui se trouve là : www.talula.demon.co.uk/allegro
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.
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.
(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.
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.
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).
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/.
Cherchez cb, enscript, indent, lgrind, vgrind.
Cherchez lint et regardez www.elirion.com/lintpage.html. On trouve splint(anciennement LCLint) là : www.splint.org.
Cherchez cflow, cxref, calls, cscope, xscope, ou ixfw. C'est pratique pour voir les graphes de dépendances des fonctions.
Cherchez obfus, shroud, ou opqcp. Ce gadget sert à rendre un source parfaitement illisible.
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.
Cherchez makedepend ou tentez cc -M ou cpp -M.
Cherchez GNU make. Voir aussi 3.10.
Cherchez CVS, RCS et SCCS. Voir aussi 3.10.
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.
Cherchez ccount, Metre, lcount, csize, www.qucis.queensu.ca/.
Utilisez les commandes wc ou grep -c ";"
.
Cherchez cproto (www.vex.net/~cthuang/cproto/) et cextract.
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/.
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.
Cherchez unifdef, rmifdef et
scpp. Ils suppriment les directives
#ifdef
inutiles, rendant ainsi un code plus lisible.
Le projet GNU propose rx. Il y a aussi regexp sur ftp.cs.toronto.edu/pub/regexp.shar.Z.
Le projet GNU développe gprof ( cf. 16.1). Il existe aussi FunctionCheck : www710.univ-lyon1.fr/~yperret/fnccheck/profiler.html
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/.
(informations bienvenues à pascal.cabaud@wanadoo.fr)