|
Les outils de développement libres GNU
Last modified:
01/28/2014 04:14 PM
Les outils de développement libres GNU
1. Introduction
Le projet GNU, initié par Richard Stallman en 1984, vise à créer un système d'exploitation complet qui réponde aux principes du logiciel libre: chacun des programmes qui le composent est disponible sous forme de code source et peut être librement modifié voire incorporé dans un autre logiciel libre.
Une partie importante de ces programmes est réalisée au sein de la Free Software Foundation (FSF), une organisation à but non lucratif basée à Boston aux Etats-Unis qui finance une partie du développement du projet GNU. La société américaine Cygnus Software(Cygnus: Your GNU Support) joue également un rôle important dans le projet GNU.
Tous les logiciels développés par la FSF sont placés sous la licence GPL qui impose une restriction sévère à l'usage qui peut être fait de leurs sources: on ne peut y apporter de modifications ou les intégrer dans d'autres programmes qu'en divulguant les sources de ces modifications ou de ces programmes. Une exception notable est la librairie C, qui est placée sous licence LGPL: elle peut être utilisée sans restriction particulière pour réaliser des logiciels propriétaires.
D'autres logiciels développés indépendamment de la FSF font officiellement partie du projet GNU. Certains sont sous licence GPL et d'autres non. Enfin plusieurs projets font référence dans leur nom au projet GNU, sans avoir été officiellement approuvés par la FSF.
La plupart des outils du projet GNU se trouvent dans les différentes variantes du système Linux (que certains baptisent GNU/Linux), mais aussi, pour certains cas, dans l'offre commerciale de vendeurs de systèmes Unix.
2. La philosophie générale des outils GNU
Le projet GNU reprend un élément essentiel de la ``philosophie Unix'': utiliser des programmes qui réalisent chacun une tâche précise, qui sont hautement configurables, et qui peuvent être combinés entre eux pour réaliser des opérations complexes.
Parmi les qualités premières des logiciels GNU, on peut noter:
- La portabilité: les programmes du projet GNU sont disponibles pour la majorité des système Unix et souvent aussi pour d'autres systèmes d'exploitation.
- Le respect des standards: le projet GNU vise à réaliser une implémentation d'Unix conforme au standard international POSIX. Les différents outils de programmation GNU sont toujours respectueux (mais avec parfois des extensions spécifiques) des spécifications publiques des langages de programmation.
- Les performances: les outils GNU égalent le plus souvent en qualité, et parfois dépassent, les outils commerciaux correspondants.
A l'usage, il s'avère que les outils GNU sont d'une approche sensiblement plus difficile que les environnements de programmation intégrés commerciaux, mais qu'ils se révèlent avec l'expérience incomparablement plus satisfaisants.
3. Les différents types d'outils de développement
- Les compilateurs sont des logiciels qui servent à convertir le code source d'un programme (la suite d'instructions telle qu'elle a été écrite par le programmeur) en un code machinequi peut s'exécuter sur le processeur d'un ordinateur. Les langages compilés les plus courants actuellement sont:
- C, le langage le plus couramment employé à l'heure actuelle, notamment pour la programmation système. Le noyau Linux et la plupart des logiciels du projet GNU sont écrit en langage C.
- C++ et Objective-C, deux extensions orientées objets du langage C.
- Fortran, un langage très ancien mais encore souvent utilisé pour les calculs numériques.
- Pascal, un langage utilisé principalement dans l'enseignement.
- Eiffel, un langage à objets purs créé par le français Bertrand Meyer, qui met l'accent sur la qualité des programmes.
- Ada, le langage du TGV, de la navette spatiale américaine, des centrale nucléaires, de Boeing, d'Airbus, du contrôle aérien nord-américain...
- Java, langage à objet portable pour le Web et les applications commerciales.
- Les interpréteurs permettent d'exécuter directement un programme. Les principaux langages interprétés sont des langages de scripts comme Perl, Python, Tcl/Tk. Il permettent de combiner les outils Unix afin de réaliser des tâches complexes.
- Les outils de contrôle de source servent à gérer les différentes versions d'un logiciel et à coordonner le travail des équipes de programmeurs.
- Les débogueurs aident à corriger les fautes de programmations (``bogues'') en permettant au programmeur d'inspecter les valeurs des variables d'un programme de façon interactive au cours de son exécution.
- Les éditeurs de textes permettent aux programmeurs d'écrire et de modifier le code source de leurs programmes.
4. Les principaux outils de développement GNU
- Le compilateur gcc est la pièce maîtresse du projet GNU. C'est un compilateur C, C++ et Objective-C de très grande qualité. Ses performances dépassent souvent celles des meilleurs compilateurs commerciaux. Il est développé, notamment par Richard Stallman, au sein de la FSF. EGCS est une variante de gcc actuellement développée par une équipe de programmeurs animée par la société Cygnus Software. DJGPP est un portage de gcc sous MS-DOS réalisé par D.J. Delorie.
- Glibc est la version GNU de la librairie standard C. Le projet GNU propose également une implémentation de la librairie standard C++. D'autres librairies, comme gdb (gestion des données persistantes) ncurses (gestion des terminaux textes) ou nana (assertions étendues, pour la ``programmation par contrats'') viennent compléter la librairie C standard.
- GNU Fortran, aussi connus sous le nom g77, est un compilateur Fortran 77.
- GNAT est le compilateur ADA 95 du projet GNU. Il est développé par la société Ada Core Technologies et placé sous licence GPL.
- Gpc, compilateur Pascal du projet GNU, est développé par l'université d'Essen en Allemagne.
- SmallEiffel est le compilateur Eiffel du projet GNU. Il est développé en France à Nancy par le LORIA.
- Japhar est la machine virtuelle Java (JVM) officielle du projet GNU. Kaffe est une autre machine virtuelle Java réalisée par Kaffe et placée sous licence GPL.
- Guavac est un compilateur Java.
- Emacs est un éditeur de textes multifonctions, configurable à volonté pour s'adapter aux idiosyncrasies de chaque langage de programmation et qui peut faire aussi office d'environnement intégré de programmation (IDE). C'est le premier programme majeur réalisé depuis 1981 par Richard Stallman. Xemacs est une variante d'Emacs développée indépendamment de la FSF.
- Make permet d'automatiser l'ordonnancement des différentes étapes de compilation qui mènent du code source (qui se trouve le plus souvent sous forme de nombreux fichiers différents) au code exécutable.
- Automake et Autoconf sont deux compléments de Make qui permettent de s'affranchir en grande partie des problèmes de portabilité entre les plateformes.
- Gdb est un débogueur pour les langages C, C++ et Fortran. Plusieurs programmes aditionnels, et notamment l'excellent DDD, apportent une interface graphique au-dessus de gdb qui rend cette activité un peu moins pénible pour le programmeur.
- DejaGnu est un système qui permet d'automatiser le test des programmes, une étape importante si l'on souhaite maintenir un haut niveau de qualité au cours de la vie d'un logiciel.
- RCS et CVS sont deux logiciels de contrôle de versions de sources. CVS, qui permet à des programmeurs situés à distance les uns des autres de coordonner leur travail, a notamment été adopté par les principaux projets de logiciels libres comme Mozilla, le navigateur Web libre de Netscape. CVS est principalement développé et supporté par la société Cyclic Software.
- GNUStep est un projet d'implémentation des spécifications OpenStep, l'environnement graphique développé par le français Jean-Marie Hulot pour la société NeXT, et repris par Apple pour son système d'exploitation Rhapsody.
- GNOME est un modèle d'objets distribués qui vise à réaliser un environnement de travail complet et qui repose sur le standard international CORBA et la librairie graphique Gtk. Le projet GOME bénéficie du soutien affirmé de la société Red Hat Software.
- GNU indent est un embellisseur de code source C.
- Guile est un implémentation du langage scheme qui est considérée comme le langage de scripts officiel du projet GNU.
- Gawk est l'implémentation GNU du langage AWK, l'un des ancêtres des langages de scripts actuels.
- Perl est un autre langage de scripts officialisé par le projet GNU. Il est développé par Larry Wall et n'est pas placé sous licence GPL. Deux autres langages de scripts, Python et Tcl/tk, sont également omniprésents sur les différentes variantes du système Linux. L'un comme l'autre ne font pas partie officiellement du projet GNU, bien que Tcl/Tk soit utilisé par DejaGNU.
- Gettext est un ensemble d'outils qui aide à l'internationalisation (traduction en langues étrangères) des logiciels.
- Bison et Flex sont des implémentations des outils Unix d'aide à la réalisation de compilateurs Yacc et Lex.
5. Conclusion
Les outils de développement GNU ont fait leurs preuves depuis bientôt dix ans dans les milieux les plus exigeants (industrie du logiciel et instituts de recherche). Ils constituent la fondation des systèmes d'exploitation libres actuels, comme le système Linux.
|
|