2. Introduction à la programmation

Un programme est une série d'instructions qui dit à l'ordinateur de faire des choses diverses; l'instruction qu'il doit exécuter dépend parfois de ce qui s'est passé lorsqu'il a exécuté une instruction précédente. Cette section vous donne un aperçu des deux principales méthodes pour transmettre ces instructions, ou ``commandes'' comme on les appellent. L'une est d'utiliser un interpréteur, l'autre de se servir d'un compilateur. Comme les langues humaines sont trop compliquées pour être comprises sans ambiguïté par un ordinateur, les commandes sont généralement écrites dans l'un ou l'autre des languages spécialement conçus à cet effet.

2.1. Interpréteurs

Dans le cas d'un interpréteur, le langage s'accompagne d'un environnement, sous lequel vous tapez des commandes à son invite et qui les exécute pour vous. Pour des programmes plus compliqués, vous pouvez saisir les commandes dans un fichier et le faire charger et exécuter les commandes qu'il contient par l'interpréteur. Si quelque chose se passe mal, la plupart des interpréteurs passeront le contrôle à un débogueur pour vous aider à trouver l'origine du problème.

Cela a l'avantage de vous permettre de voir immédiatement le résultat de vos commandes et de corriger sur le champ vos erreurs. Le principal inconvénient survient lorsque vous voulez partager vos programmes avec d'autres. Il faut qu'ils aient le même interpréteur que vous ou que vous ayez le moyen de leur fournir cet interpréteur; il faut aussi qu'ils comprennent comment s'en servir. Les utilisateurs peuvent aussi ne pas apprécier de se retrouver sous un débogueur s'ils appuient sur la mauvaise touche! Du point de vue de la performance, les interpréteurs utilisent parfois beaucoup de mémoire et ne génèrent habituellement pas le code aussi efficacement que les compilateurs.

A mon avis, les langages interprétés sont le meilleur moyen de débuter si vous n'avez jamais programmé auparavant. On trouve typiquement ce genre d'environnement avec des langages tels que Lisp, Smalltalk, Perl et Basic. On peut aussi avancer que le shell Unix est lui-même un interpréteur, beaucoup écrivent en fait avec des procédures - scripts - pour se faciliter le travail d'administration de leur machine. De fait, une partie de la philosophie d'origine d'Unix était de fournir nombre de petits programmes utilitaires qui puissent être utilisés de concert dans des procédures pour effectuer des tâches utiles.

2.2. Interpréteurs disponibles pour FreeBSD

Voici une liste des interpréteurs disponibles sous forme de ``paquetages'' FreeBSD, accompagnée d'une brève description des langages interprétés les plus répandus.

Pour vous procurer l'un de ces ``paquetages'', il vous suffit de cliquer sur le lien correspondant et d'exécuter ensuite:

# pkg_add nom_du_paquetage

sous le compte super-utilisateur root. Il faut bien évidemment que vous ayez un système FreeBSD 2.1.0 ou ultérieur en état de marche pour que le logiciel fonctionne.

BASIC

Abréviation pour ``Beginner's All-purpose Symbolic Instruction Code'' - code d'instructions symbolique universel pour les débutants. Développé dans les années 50 pour apprendre la programmation aux étudiants des Universités et fourni avec tout ordinateur personnel qui se respectait dans les années 80, BASIC a été le premier langage pour de nombreux programmeurs. C'est aussi la base de Visual Basic™.

L'interpréteur Basic Bywater et l'interpréteur Basic de Phil Cockroft (appelé auparavant ``Rabbit Basic'') sont disponibles sous forme de ``paquetages'' FreeBSD.

Lisp

Un langage développé à la fin des années 1950 comme alternative aux langages ``dévoreurs de nombres'' qui e´taient populaires à l'époque. Au lieu d'être basé sur les nombres, Lisp repose sur les listes; de fait, son nom est une abréviation pour ``List Processing'' - traitement de listes. Très répandu dans les milieux de l'IA (Intelligence Artificielle).

Lisp est un langage très puissant et sophistiqué, mais peut être assez lourd et bavard.

FreeBSD dispose de GNU Common Lisp sous forme de ``paquetage''.

Perl

Très employé par les administrateurs système pour écrire des procédures; et souvent aussi sur les serveurs World Wide Web pour écrire des procédures CGI.

La Version 4, qui est probablement encore la version la plus largement répandue est fournie avec FreeBSD; le plus récent Perl Version 5 est disponible sous forme de ``paquetage''.

Scheme

Un dialecte de Lisp qui est plutôt plus compact et plus propre que Common Lisp. Courant dans les Universités parce qu'il est assez facile à enseigner en premier cycle comme langage d'initiation et présente un niveau d'abstraction suffisant pour être utilisé pour du travail de recherche.

FreeBSD offre en ``paquetages'' l'Interpréteur Scheme Elk, l'Interpréteur Scheme du MIT et l'Interpréteur Scheme SCM.

Icon

Le langage de programmation Icon.

Logo

L'interpréteur LOGO de Brian Harvey.

Python

Le langage de programmation orienté objet Python.

2.3. Compilateurs

Les compilateurs sont assez différents. Vous écrivez d'abord votre code dans un(des) fichiers(s) à l'aide d'un éditeur. Vous exécutez ensuite le compilateur et voyez s'il valide votre programme. S'il ne le compile pas, serrez les dents et retournez sous l'éditeur. S'il le compile et vous en fait un programme, vous pouvez l'utiliser soit à l'invite de l'interpréteur de commande, soit en vous servant d'un débogueur pour voir s'il fonctionne correctement[1].

Ce n'est évidemment pas aussi immédiat que de se servir d'un interpréteur. Cela vous permet cependant de faire beaucoup de choses qui sont très difficiles ou même irréalisables avec un interpréteur, comme écrire du code qui interagisse étroitement avec le système d'exploitation -  ou même écrire votre propre système d'exploitation! C'est aussi utile si vous avez besoin d'écrire du code très efficace, parce que le compilateur peut prendre son temps et optimiser le code, ce qui ne serait pas acceptable d'un interpréteur. Distribuer un programme écrit pour un compilateur est généralement plus facile - il suffit de livrer une copie de l'exécutable, en supposant que les destinataires aient le même système d'exploitation que vous.

Les langages compilés incluent Pascal, C et C++. C et C++ sont des langages qui pardonnent assez peu, et plus adaptés aux programmeurs plus expérimentés. Pascal, d'un autre côté, a été conçu pour l'enseignement, et est un assez bon langage avec lequel commencer. Malheureusement, FreeBSD n'a aucun support pour Pascal, à l'exception d'un convertisseur de Pascal en C, au catalogue des logiciels portés.

Comme le cycle ``édition-compilation-exécution-débogage'' est assez fastidieux, de nombreux fournisseurs de compilateurs commerciaux ont produit des Environnements de Développement Intégrés (EDI en abrégé). FreeBSD ne dispose pas d'EDI en tant que tel; il est cependant possible d'utiliser Emacs à cet effet. C'est expliqué à la section Utiliser Emacs comme environnement de développement.

Notes

[1]

Dans le cas contraire, si vous l'exécutez sur la ligne de commande, il peut éventuellement planter - ``core dump''.

Ce document, ainsi que d'autres peut être téléchargé sur ftp.FreeBSD.org/pub/FreeBSD/doc/.

Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.