next up previous contents
Next: 3. Les réseaux Up: 2. Premières courses Previous: 2.6 Commandes <<avancées>>

Sous-sections

  
2.7 Un peu de programmation [YB]

Linux est un excellent outil de développement. De plus, la connaissance même succinte d'un ou deux langages de programmation interprétés (on parle alors de langages <<scripts>>) du type Shell, Perl ou Tcl, permet de réaliser nombres d'opérations complexes en quelques lignes de code.

Notez bien, toutefois, que cet ouvrage ne prétend pas être un manuel de programmation : ne sont évoquées ici que quelques notions essentielles, dans leurs grandes lignes, pour vous permettre de débuter sur de bonnes bases. Mais en aucun cas ce qui suit n'est suffisant pour vous permettre de rédiger vos propres programmes, si vous ne possédez pas déjà une certaine expérience du domaine. Simplement serez-vous mieux à même de comprendre comment sont réalisés des programmes existants : nous vous recommandons vivement d'aller jeter un coup d'\oeil aux contenus des scripts de démarrage.

2.7.1 Les langages disponibles

Les langages disponibles sous Linux sont très nombreux : il est presque impossible d'en donner une liste exhaustive. Nous ne citerons ici que les plus connus, ceux bénéficiant du meilleur support.

Langage C
Le langage de programmation le plus utilisé actuellement... C'est le langage qui est utilisé pour programmer la plupart des outils pour Linux, et Linux lui-même. Pratiquement toute distribution de Linux vient avec ce langage disponible, prêt à l'emploi et avec une documentation massive par les pages man. D'un abord peut-être un peu difficile, le langage C est sans doute l'un des plus souples qui soit, et bénéficie de l'existence d'un très grand nombre de librairies très diverses.
C++
Il s'agit d'une extension du C, dont il respecte la syntaxe, avec en plus l'application des principes de la Programmation Objet. Sans doute encore plus pénible à apprendre que le langage C, il offre d'excellents atouts pour développer des logiciels à plusieurs et réutiliser des éléments déjà réalisés et testés.2.41

Pascal
Très populaire parmis les débutants en programmation, le langage Pascal est disponible pour Linux. Tous les aspects standards de ce langage sont respectés, mais la programmation graphique n'est pas aussi aisée que son homologue TurboPascal pour systèmes MS-DOS ou Windows.
Ada
Du nom de Lady Augusta Ada Byron, comtesse de Lovelace (1815-1852), fille du grand Lord Byron, qui est parfois considérée comme la première informaticienne de l'Histoire. Langage développé dans les laboratoire de CII Honeywell Bull en France, il est actuellement utilisé pour un grand nombre d'applications critiques, telles que l'informatique dans la fusée Ariane ou les avions Airbus. Sa principale caractéristique est d'être particulièrement robuste et exigeant : il est pratiquement impossible de <<mal programmer>> en Ada, tellement les contraintes qu'il impose sont fortes.
Basic
 
SmallTalk
 
Python
 
Perl
 
Tcl/Tk
 

2.7.2 Principes élémentaires de la programmation [YB]

Dans le domaine de l'art de la programmation (car il s'agit d'une forme d'art, selon certains), on retrouve toujours quelques notions fondamentales, quel que soit le langage utilisé. Ces notions, fort simples en elle-mêmes, permettent de créer des programmes extrèmement complexes, tels qu'un système d'exploitation comme Linux...

2.7.2.1 Les variables [YB]

Une variable est un outil de stockage d'informations lors de l'exécution du programme. Les régles régissant son utilisation peuvent varier grandement d'un langage à l'autre, mais l'idée reste la même : une variable est une boîte, avec une étiquette pour la reconnaître, utilisée pour stocker quelque chose (on dit <<lui effecter une valeur>>) en vue d'une utilisation ultérieure ; le contenu de la variable peut évoluer au cours de l'exécution du programme et il est irrémédiablement perdu lorsqu'elle se termine.

Il est fréquent que les variables soient <<typées>>, c'est-à-dire qu'on ne peut pas leur affecter n'importe quel genre de valeur. Par exemple, une variable de type <<nombre entier>> ne pourra recevoir de valeur du genre 3.14 (\( \pi \)), sauf à utiliser des outils de conversion d'un genre vers l'autre. Cet aspect, qui peut paraître contraignant, apporte beaucoup à la qualité de la programmation en facilitant la détection des erreurs. Il est toutefois généralement absent des langages de type scripts, tels que les langages shell, Perl, etc.

2.7.2.2 L'alternative, ou structure de choix [YB]

Une alternative est une structure qui prend la forme générale :



  si <une certaine condition>  
  alors <faire quelque chose>  
  sinon <faire autre chose>  



Cette structure permet d'adapter les actions du programme selon différentes situations. On la désigne parfois par <<structure if...then...else>>2.42 ou simplement <<if...then>>, si la partie commençant par sinon (on dit aussi la clause sinon, ou la clause else) est absente (il arrive en effet qu'elle soit sans objet).

Encore une fois, chaque langage possède ses propres règles d'écriture de l'alternative.

2.7.2.3 La répétitive, ou structure de boucle [YB]

Cette structure prend l'une des deux formes suivantes :



  tant que <une certaine condition>  
  faire <quelque chose>  





  faire <quelque chose>  
  tant que <une certaine condition>  



Ceci permet d'exécuter plusieurs fois une séquence d'instructions, la répétition étant conditionnée par généralement un test sur la valeur d'une variable. Il semble évident qu'à chaque exécution (on dit aussi <<à chaque tour de boucle>> ou <<à chaque itération>>) les termes de la condition soient modifiés, pour que celle-ci ait une chance de ne pas être vérifiée après un certain nombre d'itérations. Sinon, la boucle ne se terminera jamais et répètera sa séquence d'instructions à l'infinie, ce qui peut avoir des conséquences fort désagréables.

Une petite subtilité : les deux formes ne sont pas exactement équivalentes. Dans la première (à gauche), la condition est vérifiée avant l'exécution de la séquence d'instructions : il peut donc arriver que celle-ci ne soit jamais exécutée, si la condition est fausse dès le départ. La seconde forme, par contre, ne vérifie la condition qu'à la fin de la séquence d'instructions : celle-ci sera donc toujours exécutée au moins une fois - mais peut-être qu'une seule fois...

Boucle infinie et ordre d'évaluation de la condition sont deux pièges très communs pour les programmeurs, même les plus expérimentés : méfiez-vous donc.

2.7.2.4 Le choix multiple [YB]

Voici une structure qui n'est pas offerte par tous les langages, bien que très répandue. Elle permet d'écrire simplement l'imbrication de plusieurs alternatives. Sa forme générale est :



  selon <valeur d'une variable>  
    si <valeur 1> faire <action 1>  
    si <valeur 2> faire <action 2>  



  \( \vdots \)  



    si <valeur n> faire <action n>  
  sinon faire <action par défaut>  



Il existe pratiquement autant de comportements du choix multiple qu'il y a de langages le proposant. En gros, à chaque valeur possible de la variable on associe une action (ce peut être d'ailleurs une séquence d'instructions), l'action par défaut (si elle est présente) n'étant exécutée que si aucune des valeurs proposées ne correspond à celle de la variable.

2.7.2.5 Les sous-programmes : procédures et fonctions [YB]

Si nous ne disposions que des structures évoquées plus haut, l'écriture de programmes complexes serait particulièrement fastidieuse : comment faire si l'on a besoin d'une même séquence d'instructions en différents points éloignés du programme ? Une solution consiste à recopier cette séquence à chaque fois : le résultat serait des programmes d'une longueur colossale, pratiquement impossible à entretenir (on dit plutôt <<maintenir>>) ou à modifier.

La solution retenue est infiniment plus élégante et pratique : celle des sous-programmes. Vous écrivez votre séquence une seule fois, vous l'enfermer dans une boîte avec une étiquette, et lorsque vous en avez besoin il suffit d'indiquer le nom qui figure sur l'étiquette pour que tout se passe (presque) comme si vous aviez recopié la séquence.

Dans le vocabulaire des programmeurs, les sous-programmes sont désignés par les termes procédure et fonction. La distinction entre les deux n'est pas toujours très nette. Pour fixer les idées, disont qu'en gros une fonction renvoie une valeur unique, résultant d'un certain calcul (au sens large, pas nécessairement numérique), tandis qu'une procédure effectue diverses actions mais sans renvoyer une valeur unique (soit aucune, soit plusieurs).

Comme il est rare que les sous-programmes doivent toujours travailler sur les mêmes données, il est possible de leur passer des paramètres pour que le grain qui leur est donné à moudre ne soit pas toujours le même. Imagniez une fonction qui calcule la moyenne de plusieurs valeurs : une telle fonction aurait au moins un paramètre, un tableau de valeurs (et probablement leur nombre), pour faire son travail.

La technique des sous-programmes est à la base de ce que l'on appelle la programmation structurée. Leur utilité est telle que les langages qui n'offrent pas cette facilité sont très rares, ou alors très anciens...

  
2.7.3 Programmation Shell : un résumé

2.7.4 Perl : un aperçu

2.7.5 Tcl : une approche



Footnotes

...
Soyons honnête : le langage C++ est le langage préféré de l'auteur, juste après le langage Ada.
... testés.2.41
... if...then...else>>2.42
if, then, else signifiant respectivement si, alors, sinon en français.

next up previous contents
Next: 3. Les réseaux Up: 2. Premières courses Previous: 2.6 Commandes <<avancées>>
kafka.fr@linux-france.org