Introduction¶
Outre des compétences théoriques qui sont abordées dans d’autres parties de ce document, la maîtrise d’une système informatique implique également une excellente connaissance des outils informatiques qui sont inclus dans ce système. Cette connaissance se construit bien entendu en utilisant activement ces logiciels. Cette section comprend les informations de bases sur quelques logiciels importants qui sont utilisés dans le cadre du cours. Elle est volontairement réduite car de nombreux logiciels pourraient faire l’objet de livres complets. Les étudiants sont invités à proposer des améliorations à cette section sous la forme de pull-requests via https://github.com/UCL-INGI/SyllabusC_Systeme.
Editeurs¶
De nombreux éditeurs sont utilisables pour manipuler efficacement du code source en langage C. Chaque étudiant doit choisir l’éditeur qui lui convient le mieux. En voici quelques uns :
- vi(1) est un des premiers éditeurs à avoir été écrit pour Unix. Il a fortement évolué, et reste un outil de choix pour de nombreux administrateurs systèmes. De nombreux tutoriels permettent d’apprendre rapidement vi(1), dont http://www.ibm.com/developerworks/linux/tutorials/l-vi/
- emacs est un autre éditeur fréquemment utilisé sous Unix. Il existe de très nombreuses extensions à emacs qui lui permettent de faire tout ou presque, y compris de jouer à des jeux comme Tetris. Son extensibilité peut rebuter certains utilisateurs. De nombreux tutoriels sont disponibles sur Internet, dont http://www.gnu.org/software/emacs/tour/
- gedit est l’éditeur de base dans l’environnement graphique GNOME utilisé dans les distributions Linux.
- eclipse est un environnement complet de développement écrit en Java pour supporter initialement ce langage. De nombreuses extensions à eclipse existent, dont CDT qui permet la manipulation efficace de code source en langages C et C++.
Gestionnaires de code partagé¶
Dans de nombreux projets informatiques, il est nécessaire d’utiliser des outils qui permettent d’organiser efficacement le partage du code source entre plusieurs développeurs. Les plus anciens gestionnaires de code sont cvs ou rcs. Ces logiciels ont été créés lorsque Unix était utilisé sur des mini-ordinateurs qui servaient tout un département. Aujourd’hui, les logiciels de gestion de code source s’utilisent en combinaison avec des serveurs Internet pour permettre un partage large du code source. Les plus connus sont :
- Git qui est décrit ci-dessous Il est aussi décrit dans plein d’autres ressources comme git-scm contenant le livre Pro Git, git-ref mais aussi une vidéo faite par le créateur de ces deux sites et Try Git qui permet de découvrir Git en 15 minutes de façon interactive à travers le site.
- subversion qui est décrit ci-dessous également
- mercurial
- bazaar
Compilateurs¶
Le compilateur C utilisé dans de nombreuses distributions Linux est gcc(1). C’est un compilateur open-source développé activement dans le cadre du projet GNU par la Free Software Foundation. Nous utiliserons principalement gcc(1) dans le cadre de ce cours.
Il existe des alternatives à gcc(1) comme llvm que nous utiliserons lorsque nous analyserons le code assembleur généré par un compilateur C. Les variantes commerciales de Unix utilisent généralement des compilateurs propriétaires, dont par exemple Oracle Studio ou la suite de compilateurs développée par intel.