forked from pandark/eloquent-javascript-translation
-
Notifications
You must be signed in to change notification settings - Fork 0
/
chapter1.html
151 lines (151 loc) · 25.3 KB
/
chapter1.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/book.css"/>
<link rel="stylesheet" type="text/css" href="css/highlight.css"/>
<link rel="stylesheet" type="text/css" href="css/console.css"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Introduction -- JavaScript Éloquent</title>
</head>
<body>
<script type="text/javascript" src="js/before.js"> </script>
<div class="content">
<script type="text/javascript">var chapterTag = 'intro';</script>
<div class="navigation">
<< Chapitre précédent |
<a href="contents.html">Table des matières</a> |
<a href="index.html">Couverture</a> |
<a href="chapter2.html">Chapitre suivant >></a>
</div>
<h1><span class="number">Chapitre 1 : </span>Introduction</h1>
<div class="block">
<p>Lorsque les premiers ordinateurs personnels sont apparus, la plupart d'entre eux étaient fournis avec un langage de programmation simple, généralement une variante de <a name="key1"></a>BASIC. Les interactions avec l'ordinateur étaient fortement liées à ce langage, et dès lors tout utilisateur d'un ordinateur, qu'il le veuille ou non, devait y goûter. À présent que les ordinateurs sont devenus nombreux et bon marché, la plupart des utilisateurs n'iront pas beaucoup plus loin que ce qu'ils peuvent cliquer à la souris. Pour nombre d'entre eux, cela fonctionne très bien. Mais pour ceux d'entre nous qui ont une inclination naturelle au bricolage technique, la disparition de la programmation pour l'usage quotidien d'un ordinateur représente une forme de barrière.</p>
<p>Heureusement, avec l'évolution du World Wide Web, il se trouve que chaque ordinateur équipé d'un navigateur web moderne a également un environnement pour programmer en JavaScript. Dans l'esprit actuel de ne pas ennuyer l'utilisateur avec des détails techniques, il est gardé bien caché, mais une page web peut le rendre accessible, et l'utiliser comme une plateforme pour apprendre à programmer.</p>
<p>C'est ce que ce livre (ou hyper-livre) essaie de faire.</p>
</div><hr/><div class="block">
<blockquote>Je n'ai pas à éclairer ceux qui ne sont pas désireux d'apprendre, ni éveiller ceux qui ne sont pas soucieux de donner une explication eux-mêmes. Si je leur ai montré un angle du carré et qu'ils ne peuvent pas revenir à moi avec les trois autres, je ne devrais pas revenir sur le premier angle.
<br/><br/>
― Confucius</blockquote>
<p>Au-delà des explications qu'il donne sur le JavaScript, ce livre s'efforce d'initier aux principes fondamentaux de la programmation. Programmer s'avère un exercice difficile. Les règles de base sont la plupart du temps simples et claires. Mais les programmes, bien qu'élaborés avec ces règles de base, tendent à devenir suffisamment compliqués pour générer leurs propres règles, et leur complexité propre. Voilà pourquoi la programmation est rarement simple et prévisible. Comme le dit Donald Knuth, que l'on peut considérer comme un des pères fondateurs dans ce domaine, c'est un <em>art</em>.</p>
<p>Vous allez devoir tirer quelque chose de tangible de la lecture de ce livre, au lieu de vous contenter de le lire passivement. Essayez de suivre scrupuleusement, faites un effort pour pratiquer les exercices, et n'allez plus loin que lorsque vous êtes certain d'avoir bien assimilé l'étape précédente.</p>
</div><hr/><div class="block">
<blockquote>Le programmeur en informatique est un créateur d'univers dont il est seul responsable. Des univers d'une complexité potentiellement illimitée peuvent être créés sous forme de programmes informatiques.
<br/><br/>
― Joseph Weizenbaum, <em>La puissance de l'ordinateur et la raison humaine</em></blockquote>
<p>Un programme c'est beaucoup de choses. C'est un bout de texte tapé par un programmeur, c'est la force dynamique qui dit à l'ordinateur ce qu'il doit faire, c'est un ensemble de données dans la mémoire de l'ordinateur, qui contrôlent pourtant les actions accomplies dans cette même mémoire. Les analogies qui comparent des programmes à des objets avec lesquels nous sommes familiers tournent court en général, mais celle qui fonctionne le mieux superficiellement est celle de la machine. Les roues et engrenages d'une montre mécanique sont ingénieusement agencés et coordonnés, et si l'horloger connaît son affaire, la montre donnera l'heure pendant des années. Les parties d'un programme sont de même étroitement solidaires et si le programmeur sait ce qu'il fait, son programme fonctionnera sans plantage.</p>
<p>Un ordinateur est une machine conçue pour héberger ce genre de machines immatérielles. Les ordinateurs eux-mêmes ne peuvent qu'exécuter stupidement des choses simples. S'ils sont très utiles, c'est parce qu'ils peuvent faire ces choses à une vitesse incroyable. Un programme peut, en combinant un grand nombre de ces actions simples, accomplir des tâches très complexes.</p>
<p>Pour beaucoup d'entre nous, écrire des programmes informatiques est un jeu fascinant. Un programme est une construction de l'esprit. Il ne coûte rien à élaborer, il ne pèse rien et se développe facilement sous nos mains. Si nous nous laissons aller, sa taille et sa complexité vont prendre des proportions démesurées, au point d'échapper au contrôle même de celui qui l'a créé. C'est le principal problème de la programmation. C'est la raison pour laquelle beaucoup de logiciels aujourd'hui finissent par buguer, échouer, et tout planter.</p>
<p>Quand un programme fonctionne, il est beau. L'art de la programmation est l'art de contrôler la complexité. Un programme de grande classe est discret et il apparaît simple malgré sa complexité.</p>
</div><hr/><div class="block">
<p>Aujourd'hui, beaucoup de programmeurs croient que cette complexité est plus facile à gérer en utilisant seulement un petit jeu de techniques bien comprises dans leurs programmes. Ils ont élaboré des règles strictes concernant la forme que devraient adopter les programmes, et les plus zélés d'entre eux dénonceront ceux qui enfreignent ces règles comme <em>mauvais</em> programmeurs.</p>
<p>Quelle hostilité à la richesse de la programmation ! Pour essayer de la réduire à quelque chose de direct et de prévisible, pour jeter l'opprobre sur tous les programmes bizarres et magnifiques. le champ des techniques de programmation est gigantesque, fascinant par sa diversité et largement inexploré encore. Il est certainement bourré de chausse-trappes et de pièges à loups, et mène l'apprenti-programmeur dans d'affreuses impasses, mais cela signifie seulement que vous devez procéder avec prudence et garder votre sang-froid. En apprenant, vous rencontrerez toujours de nouveaux défis, de nouveaux territoires à explorer. le programmeur qui refuse l'exploration va sûrement végéter, ne plus trouver ça drôle et perdre le désir de programmer (et il va devenir chef de projet).</p>
<p>En ce qui me concerne, le critère décisif pour évaluer un programme est : est-ce qu'il est correct ? L'efficacité, la clarté et la taille sont également importants, mais pouvoir peser avec exactitude le poids de l'un et le poids de l'autre est toujours une question d'opinion, une opinion que doit se faire chaque programmeur. Les règles générales sont utiles, mais on ne devrait jamais avoir peur de les transgresser.</p>
</div><hr/><div class="block">
<p>Au début de l'informatique, lorsqu'elle venait de naître, il n'existait pas de langage de programmation. Les programmes ressemblaient à ceci : </p>
<pre class="preformatted">00110001 00000000 00000000
00110001 00000001 00000001
00110011 00000001 00000010
01010001 00001011 00000010
00100010 00000010 00001000
01000011 00000001 00000000
01000001 00000001 00000001
00010000 00000010 00000000
01100010 00000000 00000000</pre>
<p>Il s'agit d'un programme qui fait la somme des nombres de 1 à 10 et donne le résultat (1 + 2 + … + 10 = 55). Il pourrait tourner sur l'ordinateur le plus simple. Pour programmer les premiers ordinateurs, il était nécessaire de disposer de grandes séries d'interrupteurs dans la bonne position, ou de perforer des trous dans des cartes et les faire avaler à la machine. Vous imaginez facilement à quel point la procédure était fastidieuse et sujette à erreurs. Écrire ne serait-ce qu'un programme simple exigeait beaucoup d'intelligence et de discipline, les programmes complexes étaient carrément hors d'atteinte.</p>
<p>Bien entendu, saisir à la main des séquences cabalistiques d'octets (c'est ainsi qu'on appelle en général les suites de 1 et de 0 ci-dessus) donnait au programmeur l'impression d'être un puissant sorcier. Et il fallait que ça en vaille la peine, en termes de satisfaction professionnelle.</p>
<p>Chaque ligne de programme contient une seul instruction unique. On pourrait l'exprimer en français sous cette forme :</p>
<ol><li>
Stocker le nombre 0 à l'adresse mémoire 0
</li><li>
Stocker le nombre 1 à l'adresse mémoire 1
</li><li>
Stocker la valeur de l'adresse mémoire 1 dans l'adresse mémoire 2
</li><li>
Soustraire 11 de la valeur stockée à l'adresse mémoire 2
</li><li>
Si la valeur stockée à l'adresse mémoire 2 est le nombre 0, alors continuer avec l'instruction 9
</li><li>
Ajouter la valeur de l'adresse mémoire 1 à l'adresse mémoire 0
</li><li>
Ajouter le nombre 1 à la valeur de l'adresse mémoire 1
</li><li>
Continuer avec l'instruction 3
</li><li>
Donner la valeur de l'adresse mémoire 0
</li></ol>
<p>C'est déjà plus lisible que la soupe binaire, mais cela reste relativement désagréable. Il pourrait être utile d'utiliser des noms au lieu de nombres pour les instructions et les adresses mémoire :</p>
<pre class="preformatted"> Set 'total' to 0
Set 'count' to 1
[loop]
Set 'compare' to 'count'
Subtract 11 from 'compare'
If 'compare' is zero, continue at [end]
Add 'count' to 'total'
Add 1 to 'count'
Continue at [loop]
[end]
Output 'total'</pre>
<p>À partir de là il n'est pas trop difficile de deviner comment fonctionne le programme. Qu'en dites-vous ? Les deux premières lignes donnent leur valeur initiale aux adresses mémoire : <code>total</code> sera utilisé pour calculer le résultat du programme et <code>count</code> conserve le nombre courant. Les lignes qui utilisent <code>compare</code> sont probablement les plus bizarres. Ce que le programme cherche à savoir c'est si <code>count</code> est égal à 11, de manière à savoir s'il doit interrompre le calcul. Comme la machine est très rudimentaire, il peut seulement tester si un nombre est zéro, et prend une décision (jump) basée sur ce critère. il utilise donc l'adresse mémoire nommée <code>compare </code> pour calculer la valeur de <code>count - 11</code>, et décide suivant la valeur obtenue. Les deux lignes suivantes ajoutent la valeur de <code>count</code> au résultat, et l'incrémentent <code>count</code> d'une unité à chaque fois que le programme a décidé qu'il n'avait pas encore atteint 11.</p>
<p>Voici maintenant le même programme en JavaScript :</p>
<pre class="code"><span class="keyword">var</span> <span class="variable">total</span> = <span class="atom">0</span>, <span class="variable">count</span> = <span class="atom">1</span>;
<span class="keyword">while</span> (<span class="variable">count</span> <= <span class="atom">10</span>) {
<span class="variable">total</span> += <span class="variable">count</span>;
<span class="variable">count</span> += <span class="atom">1</span>;
}
<span class="variable">print</span>(<span class="variable">total</span>);</pre>
<p>C'est encore un peu mieux pour nous. Le plus important c'est qu'il n'y a plus besoin de préciser la façon dont nous voulons que le programme fasse un bond par-ci par-là. Le mot magique <code>while</code> s'en occupe. Le programme continue à exécuter les lignes ci-dessous tant que la condition qu'on lui a donnée est satisfaite : <code>count <= 10</code>, ce qui veut dire tant que " <code>count</code> est inférieur ou égal à <code>10</code>". Apparemment, il n'y a plus besoin de créer une valeur temporaire et de la comparer à zéro. C'était un stupide petit détail, justement le pouvoir des langages de programmation c'est qu'ils règlent pour nous les stupides petits détails.</p>
<p>Finalement, voici à quoi pourrait ressembler le programme si nous nous étions arrangés pour que les opérations <code>range</code> et <code>sum</code> soient disponibles, la première créant une collection de nombres dans une série tandis que la seconde calcule la somme d'une série de nombres :</p>
<pre class="code"><span class="variable">print</span>(<span class="variable">sum</span>(<span class="variable">range</span>(<span class="atom">1</span>, <span class="atom">10</span>)));</pre>
<p>La morale de cette histoire est donc que le même programme peut être exprimé de façon brève ou longue, lisible ou illisible. La première version du programme était extrêmement obscure, tandis que la dernière est quasiment de l'anglais : <code>print</code> the <code>sum</code> of the <code>range</code> of numbers from <code>1</code> to <code>10</code> (<acronym title="note des traducteurs">NDT</acronym> : affiche la somme de la série de nombres de 1 à 10). (Nous verrons par la suite dans d'autres chapitres comment construire des choses telles que <code>sum</code> et <code>range</code>.)</p>
<p>Un bon langage de programmation aide le programmeur en lui fournissant une manière plus abstraite de s'exprimer. Il masque les détails inintéressants, procure des composants de base pratiques (comme la construction <code>while</code>) et, la plupart du temps, permet au programmeur d'ajouter lui-même de telles briques (comme les opérations <code>sum</code> et <code>range</code>).</p>
</div><hr/><div class="block">
<p>JavaScript est actuellement le langage le plus utilisé, particulièrement pour faire toutes sortes de choses géniales et horribles avec des pages du World Wide Web. <a href="http://steve-yegge.blogspot.com/2007/02/next-big-language.html">Certains</a> prétendent que la prochaine version de JavaScript en fera un langage de référence pour d'autres tâches également. J'ignore si cela va se produire, mais si vous êtes intéressé par la programmation, JavaScript est sans aucun doute un langage utile à apprendre. Même si en fin de compte vous ne faites pas tellement de programmation web, les programmes hallucinants que je vais vous montrer dans cet ouvrage resteront toujours en vous, à vous hanter et à influencer les programmes que vous écrirez dans d'autres langages.</p>
<p>Certains vous diront les <em>pires choses</em> à propos de JavaScript. Beaucoup de ces reproches sont fondés. La première fois que j'ai dû écrire quelque chose en JavaScript, j'ai rapidement méprisé ce langage. Il acceptait à peu près tout ce que je tapais, mais l'interprétait d'une façon complètement différente de celle que je voulais. Cela venait surtout du fait que je n'avais aucune idée de ce que je faisais, mais il y a aussi un véritable problème ici : JavaScript est absurdement laxiste dans ce qu'il permet. L'idée derrière cette conception était de rendre la programmation en JavaScript plus facile pour les débutants. En réalité, il rend surtout plus difficile la recherche des problèmes dans vos programmes, parce que le système ne vous les montrera pas.</p>
<p>Toutefois, la souplesse de ce langage est aussi un avantage. Elle laisse la place pour de nombreuses techniques que les langages de programmation plus rigides ne permettent pas, et on peut l'utiliser pour compenser certains défauts de JavaScript. Après l'avoir étudié correctement et avoir travaillé avec un certain temps, j'ai vraiment appris à <em>aimer</em> ce langage.</p>
</div><hr/><div class="block">
<p>Contrairement à ce que son nom suggère, JavaScript a très peu à voir avec le langage de programmation nommé Java. Le nom similaire a été inspiré par des considérations commerciales plutôt que rationnelles. En 1995, quand le JavaScript a été lancé par Netscape, le langage Java était promu partout et gagnait en popularité. Apparemment, quelqu'un a dû penser que c'était une bonne idée d'essayer de surfer sur la mode du moment. Nous voilà aujourd'hui coincé avec ce nom.</p>
<p>Il existe un langage associé au JavaScript et qui s'appelle ECMAScript. Quand les navigateurs autres que Netscape ont commencé à prendre en charge le JavaScript, ou quelque chose du même genre, on a écrit une documentation pour décrire avec précision comment le langage en question devait fonctionner. On l'a appelé ECMAScript, d'après le nom de l'organisation qui l'a standardisé.</p>
<p>ECMAScript décrit un langage de programmation à usage général, mais ne dit rien sur l'intégration de ce langage dans un navigateur internet. Le JavaScript c'est ECMAScript plus des outils supplémentaires pour gérer les pages web et les fenêtres de navigation.</p>
<p>Quelques autres logiciels utilisent le langage décrit dans le document ECMAScript. Plus important, le langage ActionScript utilisé par Flash est basé sur ECMAScript (bien qu'il ne suive pas précisément le standard). Flash est un système utilisé pour ajouter des trucs qui bougent et font du bruit sur les pages Web. Ça ne vous fera pas de mal de connaître JavaScript si vous devez un jour apprendre à faire des animations en Flash.</p>
<p>JavaScript continue d'évoluer. Depuis la sortie de cet ouvrage, ECMAScript 5 est sorti, qui est compatible avec la version décrite ici, mais y ajoute en tant que méthodes natives quelques fonctionnalités que nous écrirons nous-même. La dernière génération de navigateurs fournit cette version augmentée de JavaScript. En 2011, « ECMAScript harmony », une extension plus radicale du langage, est en cours de standardisation. Vous ne devriez pas trop craindre de ces nouvelles versions qu'elles rendent obsolètes ce que vous apprenez dans ce livre. Il ne s'agira que d'une extension du langage dont nous disposons actuellement, donc pratiquement tout ce qui est écrit dans ce livre restera valide.</p>
</div><hr/><div class="block">
<p>La plupart des chapitres de ce livre contiennent une quantité non négligeable de code<a class="footref" href="#footnote1">1</a>. D'après mon expérience, lire et écrire du code est une part importante de l'apprentissage de la programmation. Essayez de ne pas seulement jeter un œil sur ces exemples mais de vraiment les lire attentivement et de les comprendre. Cela peut être long et déroutant au début, mais but vous prendrez rapidement le coup. Il en va de même concernant les exercices. N'estimez pas les comprendre avant d'avoir effectivement écrit une solution qui fonctionne.</p>
<p>Le fonctionnement même du Web fait qu'il est toujours possible d'examiner les programmes JavaScript que les gens utilisent dans leurs pages web. Cela peut être un bon moyen d'apprendre comment certaines choses sont réalisées. Étant donné que la plupart des programmeurs web ne sont pas des programmeurs « professionnels », ou qu'ils ne considèrent pas la programmation JavaScript comme suffisamment intéressante pour en faire convenablement l'apprentissage, beaucoup du code que vous pourrez trouver ainsi sera de <em>très</em> mauvaise qualité. Quand vous apprenez à partir de code laid et incorrect, la laideur et la confusion se propagent dans votre propre code ; faites donc très attention de qui vous prenez vos leçons.</p>
</div><hr/><div class="block">
<p>Pour vous permettre d'essayer les programmes, aussi bien les exemples que le code que vous écrirez vous-même, ce livre utilise ce que l'on appelle une <a name="key2"></a>console. Si vous utilisez un navigateur graphique moderne (Internet Explorer version 6 ou supérieur, Firefox 1.5 ou supérieur, Opera 9 ou supérieur, Safari 3 ou supérieur), les pages de ce livre vont afficher une barre en bas de votre écran. Vous pouvez ouvrir la console en cliquant sur la petite flèche à l'extrémité droite de cette barre.</p>
<p>La console contient trois éléments importants. Il y a une fenêtre de sortie, qui est utilisée pour montrer les messages d'erreurs et les choses qu'affichent les programmes. Sous celle-ci se trouve une ligne où vous pouvez saisir un bout de JavaScript. Essayez de saisir un nombre et appuyez sur la touche entrée pour faire tourner ce que vous avez tapé. Si le texte que vous avez saisi a produit quelque chose de sensé, cela sera affiché dans la fenêtre de sortie. Maintenant, essayez de taper <code>mauvais!</code>, et appuyez à nouveau sur Entrée. La fenêtre de sortie va afficher un message d'erreur. Vous pouvez utiliser les touches flèche vers le haut et flèche vers le bas pour revenir aux commandes que vous avez saisies précédemment.</p>
<p>Pour les bouts de code plus importants, ceux qui s'étendent sur plusieurs lignes et que vous voulez conserver un peu,le champ à droite peut être utilisé. Le bouton « Lancer » est utilisé pour exécuter les programmes écrits dans ce champ. Il est possible d'avoir plusieurs programmes ouverts en même temps. Utilisez les boutons « Nouveau » et « Charger » pour ajouter un nouveau programme (vide ou depuis un fichier sur le web). Quand il y a plus d'un programme ouvert, le menu après le bouton « Lancer » peut être utilisé pour choisir lequel est affiché. Le bouton « Close », comme vous pouvez vous en douter, ferme un programme.</p>
<p>Il y a toujours un petit bouton avec une flèche dans le coin en haut à droite des programmes d'exemple de ce livre, qui peut être utilisé pour les lancer. L'exemple que nous avons vu auparavant ressemblait à ceci :</p>
<pre class="code"><span class="keyword">var</span> <span class="variable">total</span> = <span class="atom">0</span>, <span class="variable">count</span> = <span class="atom">1</span>;
<span class="keyword">while</span> (<span class="variable">count</span> <= <span class="atom">10</span>) {
<span class="variable">total</span> += <span class="variable">count</span>;
<span class="variable">count</span> += <span class="atom">1</span>;
}
<span class="variable">print</span>(<span class="variable">total</span>);</pre>
<p>Lancez-le en cliquant sur la flèche. Il y a aussi un autre bouton qui sert à charger le programme dans la console. N'hésitez pas à le modifier et à essayer le résultat. Le pire qu'il puisse arriver est que vous créiez une boucle sans fin. Une boucle infinie est ce que vous obtenez lorsque la condition d'un <code>while</code> ne devient jamais fausse, par exemple si vous choisissez d'ajouter <code>0</code> au lieu de <code>1</code> à la variable count. Maintenant le programme va tourner pour toujours.</p>
<p>Heureusement, les navigateurs gardent un œil sur les programmes qu'ils font tourner. Lorsque l'un d'eux prend un délai démesuré pour se terminer, ils vous demandent si vous voulez l'interrompre carrément.</p>
</div><hr/><div class="block">
<p>Dans certains chapitres à venir, nous créerons des programmes d'exemple qui seront constitués de multiples blocs de code. Souvent, vous devrez lancer chacun d'eux pour faire fonctionner le programme. Comme vous l'avez peut-être remarqué, la flèche d'un bloc de code devient violette lorsque le bloc a été exécuté. Lorsque vous lisez un chapitre, essayez de lancer chaque bloc de code que vous rencontrez, particulièrement ceux qui « définissent » quelque chose de nouveau (vous verrez ce que cela signifie dans le prochain chapitre).</p>
<p>Il est évidemment possible que vous ne puissiez pas lire un chapitre d'une seule traite. Ça veut dire que vous devrez commencer à mi-chemin quand vous reprendrez votre lecture, mais si vous ne lancez pas tout le code en commençant du haut du chapitre, certaines choses peuvent ne pas fonctionner. En maintenant la touche majuscule pendant que vous appuyez sur la flèche « Lancer » d'un bloc de code, tous les blocs précédents celui-ci seront également exécutés, ainsi lorsque vous commencez au milieu d'un chapitre, maintenez la touche majuscule enfoncée la première fois que vous faites tourner un morceau de code, et tout devrait fonctionner comme prévu.</p>
</div><hr/><div class="block">
<!-- TODO: Adapter le paragraphe (et peut-être le widget en question) à la version française, éventuellement la déplacer partiellement dans une préface. -->
<p>Enfin, le petit visage dans le coin en haut à gauche de votre écran peut être utilisé pour m'envoyer, à moi l'auteur, un message. Si vous avez un commentaire, ou que vous trouvez un passage incroyablement confus, ou simplement que vous repérer une faute d'orthographe, faites-le moi savoir. Il est possible d'envoyer un message sans quitter la page, ainsi vous ne serez pas interrompu dans votre lecture.</p>
</div>
<ol class="footnotes"><li>
<a name="footnote1"></a>
Le « Code » est la substance dont sont composés les programmes. Chaque morceau de programme, que ce soit une ligne unique ou tout un ensemble, peut être appelé « code ».
</li></ol>
<div class="navigation">
<< Chapitre précédent |
<a href="contents.html">Table des matières</a> |
<a href="index.html">Couverture</a> |
<a href="chapter2.html">Chapitre suivant >></a>
</div>
<div class="footer">
© <a href="mailto:[email protected]">Marijn Haverbeke</a>
(<a href="http://creativecommons.org/licenses/by/3.0/deed.fr">licence</a>),
écrit entre mars et juillet 2007, dernière modification le 11 juillet 2011.
</div>
</div>
<script type="text/javascript" src="js/ejs.js"> </script>
</body>
</html>