summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/fr/stallman-kth.html
diff options
context:
space:
mode:
Diffstat (limited to 'talermerchantdemos/blog/articles/fr/stallman-kth.html')
-rw-r--r--talermerchantdemos/blog/articles/fr/stallman-kth.html371
1 files changed, 183 insertions, 188 deletions
diff --git a/talermerchantdemos/blog/articles/fr/stallman-kth.html b/talermerchantdemos/blog/articles/fr/stallman-kth.html
index a0f3d78..2a82ffa 100644
--- a/talermerchantdemos/blog/articles/fr/stallman-kth.html
+++ b/talermerchantdemos/blog/articles/fr/stallman-kth.html
@@ -39,8 +39,8 @@ pourrais éventuellement diviser la conférence en trois parties. Comme ça les
gens pourraient sortir quand ça ne les intéresse pas. Une fois arrivé à la
fin d'un sujet, je peux signaler que c'est fini, les gens peuvent sortir et
je peux envoyer Jan Rynning dehors pour appeler les
-autres. <br/><br/>Quelqu'un : <cite>Janne, han trenger ingen mike</cite>
-(Janne, il n'a pas besoin de micro).<br/><br/>RMS : Jan, tu es prêt à courir
+autres. <br/><br/>Quelqu'un : <i>Janne, han trenger ingen mike</i> (Janne,
+il n'a pas besoin de micro).<br/><br/>RMS : Jan, tu es prêt à courir
chercher les autres ?<br/><br/>JMR : Je suis à la recherche d'un micro et
quelqu'un me dit qu'il est dans ce casier fermé à clé.<br/><br/>RMS :
Autrefois au labo d'IA, on l'aurait ouvert à coup de masse et la porte
@@ -188,17 +188,17 @@ ramenez-nous-en des neufs. »</p>
<p>À la belle époque, nos hackers avaient également l'habitude de modifier les
machines qui venaient de Digital. Par exemple, ils ont construit des boîtes
-de radiomessagerie <cite>[paging]</cite> pour les PDP-10. De nos jours, je
-pense qu'il y en a certains ici [à Stockholm] qui le font aussi. Mais ce
-n'était pas courant en ce temps-là. Et encore avant, au début des années 60,
-les gens modifiaient les ordinateurs en ajoutant toutes sortes de nouvelles
+de radiomessagerie <i>[paging]</i> pour les PDP-10. De nos jours, je pense
+qu'il y en a certains ici [à Stockholm] qui le font aussi. Mais ce n'était
+pas courant en ce temps-là. Et encore avant, au début des années 60, les
+gens modifiaient les ordinateurs en ajoutant toutes sortes de nouvelles
instructions et de nouvelles fonctionnalités sophistiquées en temps
partagé. De sorte que le PDP-1 du MIT, avant qu'il ne parte à la retraite
dans les années 70, avait quelque chose comme deux fois plus d'instructions
qu'il n'en avait lors de sa livraison par Digital au début des années 60. Il
avait des fonctionnalités spéciales complétant l'ordonnanceur
-<cite>[scheduler]</cite> matériel, d'étranges fonctionnalités de mappage de
-la mémoire qui permettaient d'affecter individuellement chaque périphérique
+<i>[scheduler]</i> matériel, d'étranges fonctionnalités de mappage de la
+mémoire qui permettaient d'affecter individuellement chaque périphérique
matériel à une tâche en temps partagé, et des tas d'autres trucs dont j'ai à
peine entendu parler. Je pense qu'ils ont également rajouté une sorte de
mode d'adressage étendu, des registres d'indexation ainsi que l'adressage
@@ -212,13 +212,12 @@ n'est plus vraiment pratique d'ajouter des instructions sur vos machines.</p>
<p>Le PDP-1 avait une caractéristique très intéressante : il était possible
d'écrire des programmes intéressants avec un très petit nombre
d'instructions, moins qu'aucune autre machine construite depuis. Je crois
-par exemple que le célèbre hack d'affichage <cite>munching squares</cite>
-(lit. : grignotage de carrés) – qui traçait des carrés qui grandissaient
-puis se brisaient en une multitude de petits carrés qui devenaient plus
-grands et se brisaient en petits carrés – cela a été écrit en quelque chose
-comme cinq instructions sur le PDP-1. Et beaucoup d'autres beaux programmes
-d'affichage ont pu être écrits ainsi avec un très petit nombre
-d'instructions.</p>
+par exemple que le célèbre hack d'affichage <i>munching squares</i> (lit. :
+grignotage de carrés) – qui traçait des carrés qui grandissaient puis se
+brisaient en une multitude de petits carrés qui devenaient plus grands et se
+brisaient en petits carrés – cela a été écrit en quelque chose comme cinq
+instructions sur le PDP-1. Et beaucoup d'autres beaux programmes d'affichage
+ont pu être écrits ainsi avec un très petit nombre d'instructions.</p>
<p>Voilà donc ce qu'était le labo d'IA. Mais c'était quoi la culture des
hackers, hormis leur anarchisme ? Au temps du PDP-1, la machine ne pouvait
@@ -317,11 +316,10 @@ l'introduction de ces autres mécanismes. Aussi les gens ont-ils été obligés
de travailler avec la sécurité. Et la machine était là depuis six mois à peu
près, quand il a commencé à y avoir quelques « coups d'État ». Au début nous
avons supposé que tous ceux qui travaillaient pour le labo allaient avoir le
-<cite>wheel bit</cite><a id="TransNote3-rev"
-href="#TransNote3"><sup>3</sup></a> qui leur donnerait les pleins pouvoirs
-pour désactiver la sécurité, mais certains jours vous veniez dans
-l'après-midi pour découvrir que les <cite>wheel bits</cite> d'à peu près
-tout le monde avaient été supprimés.</p>
+<i>wheel bit</i><a id="TransNote3-rev" href="#TransNote3"><sup>3</sup></a>
+qui leur donnerait les pleins pouvoirs pour désactiver la sécurité, mais
+certains jours vous veniez dans l'après-midi pour découvrir que les <i>wheel
+bits</i> d'à peu près tout le monde avaient été supprimés.</p>
<p>Quand je m'en suis rendu compte, j'ai rectifié la situation. La première
fois, il se trouve que je connaissais le mot de passe d'un des membres de
@@ -333,13 +331,13 @@ href="#TransNote4"><sup>4</sup></a> en temps non partagé pour fouiller un
peu partout. J'ai fouillé dans le moniteur pendant un moment et j'ai compris
à la fin comment faire pour qu'il se charge et que je puisse le patcher. De
sorte que j'ai pu bloquer le contrôle des mots de passe et ainsi redonner
-leur <cite>wheel bit</cite> à plein de gens. Puis j'ai laissé un message
+leur <i>wheel bit</i> à plein de gens. Puis j'ai laissé un message
système. Le nom de cette machine était OZ et le message disait : « Il y a eu
une nouvelle tentative de prise du pouvoir, jusqu'ici les forces
-aristocratiques sont battues – <cite>Radio Free OZ</cite> (la radio libre
-d'Oz). » Plus tard j'ai découvert que <cite>Radio Free OZ</cite> est l'une
-des expressions utilisées par le <cite>Firesign Theater</cite>. Je ne le
-savais pas à ce moment-là.</p>
+aristocratiques sont battues – <i>Radio Free OZ</i> (la radio libre d'Oz). »
+Plus tard j'ai découvert que <i>Radio Free OZ</i> est l'une des expressions
+utilisées par le <i>Firesign Theater</i>. Je ne le savais pas à ce
+moment-là.</p>
<p>Mais petit à petit les choses ont empiré – c'est juste la façon dont le
système avait été construit qui forçait les gens à exiger de plus en plus de
@@ -497,22 +495,22 @@ plus le Lisp, et juste un système d'exploitation ; donc je devais faire le
système d'exploitation d'abord et le rendre compatible avec Unix. Enfin,
quand j'ai réalisé que je pouvais utiliser le plus drôle des mots anglais
pour nommer ce système, le choix était clair. Et ce mot est bien sûr GNU,
-qui signifie <cite>GNU's Not Unix</cite> (GNU N'est pas Unix). L'acronyme
-récursif est une très vieille tradition dans la communauté de hackers qui
-gravite autour du MIT. Il a commencé je crois, avec un éditeur appelé TINT,
-ce qui signifie <cite>Tint Is Not <abbr title="Text Editor and
-COrrector">Teco</abbr></cite>, et plus tard c'est passé par des noms comme
-SINE pour <cite>Sine Is Not Emacs</cite>, et FINE pour <cite>Fine Is Not
-Emacs</cite>, et EINE pour <cite>Eine Is Not Emacs</cite>, et ZWEI pour
-<cite>Zwei Was Eine Initially</cite>, et finalement on est arrivé à GNU.</p>
+qui signifie <i>GNU's Not Unix</i> (GNU N'est pas Unix). L'acronyme récursif
+est une très vieille tradition dans la communauté de hackers qui gravite
+autour du MIT. Il a commencé je crois, avec un éditeur appelé TINT, ce qui
+signifie <i>Tint Is Not <abbr title="Text Editor and
+COrrector">Teco</abbr></i>, et plus tard c'est passé par des noms comme SINE
+pour <i>Sine Is Not Emacs</i>, et FINE pour <i>Fine Is Not Emacs</i>, et
+EINE pour <i>Eine Is Not Emacs</i>, et ZWEI pour <i>Zwei Was Eine
+Initially</i>, et finalement on est arrivé à GNU.</p>
<p>Je dirais que depuis le moment, il y a environ deux ans et demi, où j'ai
commencé à travailler vraiment sur GNU, j'ai déjà fait plus de la moitié du
travail. Au moment où j'étais prêt à démarrer le projet, j'ai d'abord
regardé autour de moi ce qu'il y avait de libre déjà disponible. J'ai
-découvert un système de compilation portable appelé <cite>the Free
-University Compiler Kit</cite>, qui était intéressant, et j'ai pensé qu'avec
-un nom pareil je pourrais peut-être l'avoir.<a id="TransNote5-rev"
+découvert un système de compilation portable appelé <i>the Free University
+Compiler Kit</i>, qui était intéressant, et j'ai pensé qu'avec un nom pareil
+je pourrais peut-être l'avoir.<a id="TransNote5-rev"
href="#TransNote5"><sup>5</sup></a> Alors j'ai envoyé un message à son
développeur en lui demandant s'il acceptait de le donner au projet GNU. Et
il a dit « Non, l'université est peut-être libre, mais le logiciel qu'elle
@@ -533,18 +531,18 @@ que c'était du « Pascal mal fichu ».</p>
des types paramétrés et des paramètres de types explicites et beaucoup de
choses compliquées. Le compilateur naturellement était écrit dans ce langage
et comportait nombre de fonctionnalités compliquées pour optimiser
-l'utilisation de ces éléments. Par exemple : le type <cite>string</cite>
-dans ce langage était un type paramétré ; vous pouviez dire
-<code>string(n)</code> si vous vouliez une chaîne d'une longueur
-particulière ; vous pouviez également juste dire <code>string</code>, et le
-paramètre était déterminé à partir du contexte. Cela dit, les chaînes sont
-très importantes et sont nécessaires à beaucoup de constructions qui les
-utilisent pour fonctionner rapidement. Et ça veut dire qu'on avait besoin de
-beaucoup de fonctionnalités pour détecter des choses comme : lorsque la
-longueur déclarée d'une chaîne est un argument dont on sait qu'il est
-constant dans toute la fonction, sauvegarder la valeur et optimiser le code
-qu'elle va produire ; beaucoup de choses compliquées. Mais j'ai pu voir dans
-ce compilateur comment procéder à l'allocation automatique de registre et
+l'utilisation de ces éléments. Par exemple : le type <i>string</i> dans ce
+langage était un type paramétré ; vous pouviez dire <code>string(n)</code>
+si vous vouliez une chaîne d'une longueur particulière ; vous pouviez
+également juste dire <code>string</code>, et le paramètre était déterminé à
+partir du contexte. Cela dit, les chaînes sont très importantes et sont
+nécessaires à beaucoup de constructions qui les utilisent pour fonctionner
+rapidement. Et ça veut dire qu'on avait besoin de beaucoup de
+fonctionnalités pour détecter des choses comme : lorsque la longueur
+déclarée d'une chaîne est un argument dont on sait qu'il est constant dans
+toute la fonction, sauvegarder la valeur et optimiser le code qu'elle va
+produire ; beaucoup de choses compliquées. Mais j'ai pu voir dans ce
+compilateur comment procéder à l'allocation automatique de registre et
glaner quelques idées sur la façon de gérer différents types de machines.</p>
<p>Bon, puisque ce compilateur avait déjà compilé Pastel, tout ce que j'avais à
@@ -556,7 +554,7 @@ l'utiliser, la déclaration d'une variable et son usage pouvaient se faire
dans n'importe quel ordre ; en d'autres termes, la déclaration
<code>forward</code> du Pascal était obsolète. Pour cette raison il fallait
lire le programme dans son intégralité, le garder en mémoire centrale
-<cite>[core]</cite> et le compiler d'une traite. Le résultat, c'était que le
+<i>[core]</i> et le compiler d'une traite. Le résultat, c'était que le
stockage intermédiaire utilisé par le compilateur, ou plutôt la taille de la
mémoire requise, était proportionnel à la taille de votre fichier. Et il
fallait aussi compter avec l'espace de pile ; vous aviez besoin d'une
@@ -612,10 +610,10 @@ suffisait pas à la tâche. J'ai compris que je devais le remplacer
immédiatement pour pouvoir réaliser mon projet. J'avais déjà pensé
auparavant à remplacer éventuellement Mocklisp par le vrai Lisp, mais ce que
j'ai découvert, c'est qu'il fallait le faire dès le début. Maintenant, la
-raison pour laquelle Mocklisp s'appelle <cite>mock</cite> (faux), c'est
-qu'il n'a aucune sorte de structure pour les types de données : il n'y a pas
-les listes Lisp ; il n'y a aucune sorte de tableau ; il n'y a pas non plus
-les symboles Lisp, qui sont des objets nommés (à chaque nom particulier
+raison pour laquelle Mocklisp s'appelle <i>mock</i> (faux), c'est qu'il n'a
+aucune sorte de structure pour les types de données : il n'y a pas les
+listes Lisp ; il n'y a aucune sorte de tableau ; il n'y a pas non plus les
+symboles Lisp, qui sont des objets nommés (à chaque nom particulier
correspond un seul objet de manière que la saisie du nom se rapporte
toujours au même objet, sinon ça entrave considérablement l'écriture de pas
mal de sortes de programmes en vous obligeant à passer par des manipulations
@@ -698,24 +696,24 @@ symbolique. Par exemple, vous pouvez vous référer à n'importe quel type de
donnée C à n'importe quelle adresse de mémoire pour en examiner la valeur ou
pour lui affecter une valeur. Supposons que vous vouliez stocker un nombre
en virgule flottante dans un mot à une certaine adresse. Vous devez juste
-dire : « Donne-moi l'objet de type <cite>float</cite> ou <cite>double</cite>
-à cette adresse et ensuite affecte-lui cette valeur. » Une autre chose que
-vous pouvez faire est d'examiner toutes les valeurs qui ont été examinées
+dire : « Donne-moi l'objet de type <i>float</i> ou <i>double</i> à cette
+adresse et ensuite affecte-lui cette valeur. » Une autre chose que vous
+pouvez faire est d'examiner toutes les valeurs qui ont été examinées
auparavant. Chaque valeur examinée se place sur la pile de l'« historique
des valeurs ». Vous pouvez vous référer à n'importe quel élément par sa
position dans l'historique, ou bien vous pouvez facilement vous référer au
dernier élément, juste avec le signe dollar. Ça facilite le suivi de la
structure des listes. Si une structure C quelconque contient un pointeur
vers une autre structure, vous pouvez faire quelque chose comme
-<code>print*$.next</code> qui veut dire : « Prends le 'champ suivant' dans
-la dernière chose que tu m'as montrée, puis affiche la structure sur
-laquelle il pointe ». En répétant cette commande, on voit l'une après
-l'autre les structures sur lesquelles pointe la liste, alors qu'avec chacun
-des autres débogueurs C que j'ai vus, la seule manière de faire ça est de
-taper une commande de plus en plus longue. Et quand c'est combiné à une
-fonctionnalité qui fait qu'« Entrée » rappelle la dernière commande, ça
-devient très pratique. Vous avez juste à taper « Entrée » pour chaque
-élément de la liste que vous voulez voir.</p>
+<code>print*$.next</code> qui veut dire : « Prends le champ suivant dans la
+dernière chose que tu m'as montrée, puis affiche la structure sur laquelle
+il pointe ». En répétant cette commande, on voit l'une après l'autre les
+structures sur lesquelles pointe la liste, alors qu'avec chacun des autres
+débogueurs C que j'ai vus, la seule manière de faire ça est de taper une
+commande de plus en plus longue. Et quand c'est combiné à une fonctionnalité
+qui fait qu'« Entrée » rappelle la dernière commande, ça devient très
+pratique. Vous avez juste à taper « Entrée » pour chaque élément de la liste
+que vous voulez voir.</p>
<p>Vous pouvez aussi définir des variables de façon explicite dans le
débogueur, en nombre illimité. Vous posez le signe dollar suivi d'un nom et
@@ -725,7 +723,7 @@ lesquelles c'est utile, s'il y a une valeur particulière que vous voulez
examiner, sachant que vous allez vous y référer souvent, plutôt que de vous
souvenir de son numéro dans l'historique vous pouvez lui donner un nom. Vous
pouvez aussi utiliser ces variables quand vous placez des paliers
-<cite>[breakpoints]</cite> conditionnels. Les paliers conditionnels sont une
+<i>[breakpoints]</i> conditionnels. Les paliers conditionnels sont une
fonctionnalité qui existe dans beaucoup de débogueurs symboliques. Vous
dites : « Fais une pause quand tu seras arrivé à cet endroit du programme,
mais seulement si une certaine expression est vraie. » Les variables du
@@ -738,7 +736,7 @@ de 5, ou juste <code>$foo++</code>. Vous pouvez également le faire lors d'un
palier conditionnel. Une manière économe de faire une pause dans le
programme la dixième fois que le palier est atteint, serait de faire
<code>$foo--==0</code>. Est-ce que tout le monde suit ? Faire décroître
-<cite>foo</cite> et une fois qu'il est à zéro, pause. Vous faites démarrer
+<code>foo</code> et une fois qu'il est à zéro, pause. Vous faites démarrer
<code>$foo</code> au nombre de boucles que vous voulez qu'il saute et vous
le lâchez. Vous pouvez aussi utiliser ça pour examiner les éléments d'un
tableau. Supposez que vous ayez un tableau de pointeurs, vous pouvez faire :</p>
@@ -770,10 +768,10 @@ soient traitées par la fonction <code>help</code> comme des commandes
intégrées.</p>
<p>Une autre chose peu habituelle dans ce débogueur, c'est la capacité
-d'écarter des cadres <cite>[frames]</cite> de la pile ; parce que je crois
-que c'est important, non seulement pour pouvoir examiner ce qui se produit
-dans le programme que vous déboguez, mais aussi pour le modifier de toutes
-les façons possibles. De sorte qu'après avoir trouvé un problème et avoir
+d'écarter des cadres <i>[frames]</i> de la pile ; parce que je crois que
+c'est important, non seulement pour pouvoir examiner ce qui se produit dans
+le programme que vous déboguez, mais aussi pour le modifier de toutes les
+façons possibles. De sorte qu'après avoir trouvé un problème et avoir
compris ce qui n'allait pas, vous pouvez faire comme si le code était
correct et trouver le prochain bogue sans avoir d'abord à recompiler le
programme. Cela signifie non seulement pouvoir changer en souplesse les
@@ -783,9 +781,9 @@ directement en disant :</p>
<pre>set $PC=&lt;un certain nombre&gt;</pre>
-<p>Ainsi vous pouvez positionner le compteur ordinal <cite>[program
-counter]</cite>. Vous pouvez également positionner le pointeur de pile
-<cite>[stack pointer]</cite>, ou bien vous pouvez dire</p>
+<p>Ainsi vous pouvez positionner le compteur ordinal <i>[program
+counter]</i>. Vous pouvez également positionner le pointeur de pile
+<i>[stack pointer]</i>, ou bien vous pouvez dire</p>
<pre>set $SP+=&lt;quelque_chose&gt;</pre>
@@ -809,9 +807,9 @@ modifier autre chose.</p>
passe dans un programme.</p>
<p>Une autre chose assez amusante : C a des constantes qui sont des chaînes de
-caractères <cite>[string constants]</cite> ; que se passe-t-il si vous
-utilisez une constante de ce type dans une expression que vous calculez dans
-le débogueur ? Il faut qu'il crée une chaîne dans le programme que vous
+caractères <i>[string constants]</i> ; que se passe-t-il si vous utilisez
+une constante de ce type dans une expression que vous calculez dans le
+débogueur ? Il faut qu'il crée une chaîne dans le programme que vous
déboguez. Eh bien, c'est ce qu'il fait. Il crée un appel à
<code>malloc</code> dans le programme débogué, laisse tourner
<code>malloc</code>, puis reprend la main. Ainsi il trouve de façon
@@ -827,8 +825,8 @@ ce débogueur, à la différence des débogueurs sous Unix, garde l'état du
terminal du débogueur et celui du programme que vous déboguez complètement
séparés. De sorte que ça marche avec les programmes qui tournent en mode
brut et avec ceux qui font des interruptions d'entrées dynamiques
-<cite>[interrupt driven input]</cite> ; et il y a également une commande qui
-vous permet d'apprendre quelque chose sur les réglages des terminaux que le
+<i>[interrupt driven input]</i> ; et il y a également une commande qui vous
+permet d'apprendre quelque chose sur les réglages des terminaux que le
programme que vous déboguez utilise réellement. Je crois qu'en général un
débogueur doit vous permettre de découvrir tout qui se passe dans le
processus inférieur.</p>
@@ -839,13 +837,13 @@ nouveau compilateur C et l'autre le noyau Trix.</p>
<p>J'ai commencé à écrire le nouveau compilateur C cette année, au printemps
dernier. J'ai finalement décidé que je devais me passer de Pastel. Ce
compilateur utilise quelques idées de Pastel et quelques idées de
-« l'optimiseur portable de l'université d'Arizona » <cite>[University of
-Arizona Portable Optimizer]</cite>. Ce que ce dernier a d'intéressant, c'est
-de gérer plusieurs types différents de machines par des instructions simples
-et d'ensuite combiner plusieurs instructions simples dans une seule
-instruction compliquée quand la machine cible le permet. Pour que cela reste
-uniforme, ils représentent les instructions en notation algébrique. Par
-exemple, l'instruction <code>add</code> peut être représentée comme ceci :</p>
+« l'optimiseur portable de l'université d'Arizona » <i>[University of
+Arizona Portable Optimizer]</i>. Ce que ce dernier a d'intéressant, c'est de
+gérer plusieurs types différents de machines par des instructions simples et
+d'ensuite combiner plusieurs instructions simples dans une seule instruction
+compliquée quand la machine cible le permet. Pour que cela reste uniforme,
+ils représentent les instructions en notation algébrique. Par exemple,
+l'instruction <code>add</code> peut être représentée comme ceci :</p>
<pre>
r[3]=r[2]+4
@@ -861,22 +859,22 @@ donne pour l'instruction combinée une expression algébrique plus compliquée.<
<p>Quelquefois, suivant que le résultat de la première instruction est utile
par la suite, ou pas, il peut être nécessaire de faire une instruction
-combinée avec deux opérateurs d'affectation <cite>[assignment]</cite> : un
-pour cette valeur [il montre ???] et un autre pour cette valeur [il
-montre ???] à l'intérieur de laquelle est substitué ce qui provient de la
-deuxième instruction. Si cette valeur n'est utilisée qu'une fois, vous
-pouvez l'éliminer après l'avoir substituée ; elle n'a pas à entrer dans
-d'autres calculs. Donc c'est vraiment assez compliqué de faire ces
-substitutions correctement, en vérifiant bien que les instructions
-intermédiaires ne vont changer aucune de ces valeurs, ni rien d'autre du
-même genre. Quand vous gérez des choses comme l'adressage auto-incrémenté et
-auto-décrémenté, ce que je fais maintenant, vous avez aussi diverses
-vérifications à faire pour détecter les situations où l'objectif n'est pas
-de conserver la valeur de la variable.</p>
+combinée avec deux opérateurs d'affectation <i>[assignment]</i> : un pour
+cette valeur [il montre ???] et un autre pour cette valeur [il montre ???] à
+l'intérieur de laquelle est substitué ce qui provient de la deuxième
+instruction. Si cette valeur n'est utilisée qu'une fois, vous pouvez
+l'éliminer après l'avoir substituée ; elle n'a pas à entrer dans d'autres
+calculs. Donc c'est vraiment assez compliqué de faire ces substitutions
+correctement, en vérifiant bien que les instructions intermédiaires ne vont
+changer aucune de ces valeurs, ni rien d'autre du même genre. Quand vous
+gérez des choses comme l'adressage auto-incrémenté et auto-décrémenté, ce
+que je fais maintenant, vous avez aussi diverses vérifications à faire pour
+détecter les situations où l'objectif n'est pas de conserver la valeur de la
+variable.</p>
<p>Mais après avoir vérifié tout ça, vous prenez l'expression combinée
-substituée et vous la passez à travers un filtre de motif <cite>[pattern
-matcher]</cite>, qui reconnaît toutes les instructions valides de la machine
+substituée et vous la passez à travers un filtre de motif <i>[pattern
+matcher]</i>, qui reconnaît toutes les instructions valides de la machine
cible que vous avez choisie. Si le motif est reconnu, vous remplacez les
deux instructions par leur instruction combinée, sinon vous les laissez
tranquilles. Leur technique est de combiner de cette manière deux ou trois
@@ -923,15 +921,15 @@ rangeant par ordre d'importance.</p>
<p>Et à la fin, il doit corriger le code pour différents problèmes, tels qu'il
peut s'en produire si des pseudo-registres ne trouvent pas place dans les
-vrais registres et doivent être mis à la place dans des <cite>slots</cite>
-de la pile. Sur certaines machines, des instructions peuvent devenir
-invalides quand ça arrive. Par exemple sur le 68000, on peut ajouter depuis
-un registre dans la mémoire et ajouter depuis la mémoire dans un registre
-mais pas ajouter depuis une adresse mémoire vers une autre. Par exemple, si
-lors d'une instruction <code>add</code> vous sortez vers un 68000 et que les
-deux éléments se retrouvent dans la mémoire, ce n'est pas valide. Donc ce
-dernier passage examine le tout et copie au besoin des éléments dans les
-registres ou en dehors des registres, pour corriger ce genre de problème.</p>
+vrais registres et doivent être mis à la place dans des <i>slots</i> de la
+pile. Sur certaines machines, des instructions peuvent devenir invalides
+quand ça arrive. Par exemple sur le 68000, on peut ajouter depuis un
+registre dans la mémoire et ajouter depuis la mémoire dans un registre mais
+pas ajouter depuis une adresse mémoire vers une autre. Par exemple, si lors
+d'une instruction <code>add</code> vous sortez vers un 68000 et que les deux
+éléments se retrouvent dans la mémoire, ce n'est pas valide. Donc ce dernier
+passage examine le tout et copie au besoin des éléments dans les registres
+ou en dehors des registres, pour corriger ce genre de problème.</p>
<p>Des problèmes peuvent également survenir avec les registres d'index. Si vous
essayez d'indexer par quelque chose, la plupart du temps le code deviendra
@@ -939,8 +937,8 @@ invalide si cette quantité est en mémoire, sauf dans quelques cas, sur
certaines machines où vous pouvez le faire avec un adressage
indirect. Lorsque vous procédez à une autoincrémentation sur un registre
d'index, vous pouvez avoir à copier la valeur dans un registre, effectuer
-l'instruction et ensuite recopier la valeur incrémentée dans le
-<cite>slot</cite> de mémoire où elle vit vraiment.</p>
+l'instruction et ensuite recopier la valeur incrémentée dans le <i>slot</i>
+de mémoire où elle vit vraiment.</p>
<p>Il y a encore de la marge pour pas mal de prises de tête, et je n'ai pas
fini d'implémenter tout ce qui est nécessaire pour le rendre vraiment
@@ -997,12 +995,12 @@ ultérieure va faire, donc je dois retravailler certaines choses.</p>
<p>Parfois ça lui fait libérer des registres inutilement : quand des choses
atterrissent dans la mémoire et qu'il a besoin de les copier dans des
registres, il faut qu'il trouve des registres. Cela veut dire prendre des
-registres déjà alloués et virer les données temporaires des
-<cite>slots</cite> de la pile. Évidemment, maintenant que ces choses sont
-dans la mémoire plutôt que dans les registres, ça peut invalider certaines
-instructions, donc il lui faut tout le temps vérifier. Parfois il pense à
-tort qu'il devrait copier des choses dans les registres, alors il arrive
-qu'il en libère trop et n'utilise pas tous les registres qu'il pourrait.</p>
+registres déjà alloués et virer les données temporaires des <i>slots</i> de
+la pile. Évidemment, maintenant que ces choses sont dans la mémoire plutôt
+que dans les registres, ça peut invalider certaines instructions, donc il
+lui faut tout le temps vérifier. Parfois il pense à tort qu'il devrait
+copier des choses dans les registres, alors il arrive qu'il en libère trop
+et n'utilise pas tous les registres qu'il pourrait.</p>
<p>(Question : Avez-vous un générateur de code pour le 32000 ?)<br/><br/>
Pas encore, mais je le répète, ce n'est pas un générateur de code dont vous
@@ -1034,22 +1032,21 @@ une coupure.</p>
<p>Donc, pour le noyau je projette d'utiliser un système appelé TRIX (cela ne
signifie rien de spécial, que je sache) qui a été développé comme projet de
recherche au MIT. Ce système est basé sur l'appel de procédure à distance
-<cite>[Remote Procedure Call]</cite>. Les programmes sont appelés
-domaines. Chaque domaine est un espace d'adressage et a diverses capacités,
-une capacité n'étant rien d'autre que l'aptitude à appeler un domaine. Tout
-domaine peut créer des « ports de capacité » <cite>[capability ports]</cite>
-pour l'appeler et peut passer ces ports aux autres domaines. Et il n'y a
-aucune différence entre appeler le système et appeler un autre domaine
-utilisateur. En fait vous ne pouvez pas dire lequel vous avez. Ainsi il est
-très facile de faire implémenter des dispositifs par d'autres programmes
-utilisateur. Un système de fichiers pourrait être implémenté de façon
-transparente par ce moyen. Il est également transparent de communiquer à
-travers des réseaux. Vous pensez que vous appelez directement un autre
-domaine, mais en réalité vous appelez le domaine du serveur réseau. Il prend
-l'information que vous avez donnée dans l'appel et la passe par le réseau à
-un autre programme serveur qui appelle alors le domaine auquel vous essayez
-de parler. Mais pour vous et cet autre domaine, cela se passe de manière
-transparente.</p>
+<i>[Remote Procedure Call]</i>. Les programmes sont appelés domaines. Chaque
+domaine est un espace d'adressage et a diverses capacités, une capacité
+n'étant rien d'autre que l'aptitude à appeler un domaine. Tout domaine peut
+créer des « ports de capacité » <i>[capability ports]</i> pour l'appeler et
+peut passer ces ports aux autres domaines. Et il n'y a aucune différence
+entre appeler le système et appeler un autre domaine utilisateur. En fait
+vous ne pouvez pas dire lequel vous avez. Ainsi il est très facile de faire
+implémenter des dispositifs par d'autres programmes utilisateur. Un système
+de fichiers pourrait être implémenté de façon transparente par ce moyen. Il
+est également transparent de communiquer à travers des réseaux. Vous pensez
+que vous appelez directement un autre domaine, mais en réalité vous appelez
+le domaine du serveur réseau. Il prend l'information que vous avez donnée
+dans l'appel et la passe par le réseau à un autre programme serveur qui
+appelle alors le domaine auquel vous essayez de parler. Mais pour vous et
+cet autre domaine, cela se passe de manière transparente.</p>
<p>Le noyau TRIX fonctionne et il a une compatibilité limitée avec Unix, mais
il lui en faut beaucoup plus. Actuellement son système de fichiers utilise
@@ -1107,9 +1104,9 @@ parce que la tâche a échoué ou à cause du plantage du système ou de
n'importe quoi du genre, il doit être sous un nom différent.</p>
<p>Et cette idée peut être rapprochée de l'utilisation de l'astérisque comme
-joker <cite>[star matching]</cite> : un nom qui ne finit pas par un point
-équivaut à tous les noms sans leur numéro de version. Supposons qu'un
-certain répertoire ait des fichiers comme ceci :</p>
+joker <i>[star matching]</i> : un nom qui ne finit pas par un point équivaut
+à tous les noms sans leur numéro de version. Supposons qu'un certain
+répertoire ait des fichiers comme ceci :</p>
<pre>
foo.1 foo.2 bar.8
@@ -1152,17 +1149,17 @@ anciennes. Je crois que je peux faire ça, sans même de verrouillage.</p>
TCP/IP pour ce système. Je pense également qu'il est possible d'utiliser
Kermit pour obtenir quelque chose de pratiquement équivalent à UUCP.</p>
-<p>Un <cite>shell</cite> a déjà été écrit, je crois. Il a deux modes, l'un
-imitant le <cite>Bourne shell</cite> et l'autre imitant le
-<cite>C-shell</cite>,<a id="TransNote6-rev"
-href="#TransNote6"><sup>6</sup></a> dans le même programme. Je n'en ai pas
-reçu de copie et je ne sais pas combien de travail j'aurai à faire
-dessus. Il y a encore beaucoup d'autres utilitaires. Un <cite>make</cite>
-existe, <cite>ls</cite> également ; il y a Bison qui remplace YACC et qui
-est déjà distribué. Il existe quelque chose d'assez proche de Lex, mais qui
-n'est pas totalement compatible et a besoin d'être retravaillé. Et en
-général, ce qui reste à faire est beaucoup moins important que ce qui a été
-fait mais on a toujours besoin de beaucoup de gens pour aider.</p>
+<p>Un <i>shell</i> a déjà été écrit, je crois. Il a deux modes, l'un imitant le
+<i>Bourne shell</i> et l'autre imitant le <i>C-shell</i>,<a
+id="TransNote6-rev" href="#TransNote6"><sup>6</sup></a> dans le même
+programme. Je n'en ai pas reçu de copie et je ne sais pas combien de travail
+j'aurai à faire dessus. Il y a encore beaucoup d'autres utilitaires. Un
+<code>make</code> existe, <code>ls</code> également ; il y a Bison qui
+remplace YACC et qui est déjà distribué. Il existe quelque chose d'assez
+proche de Lex, mais qui n'est pas totalement compatible et a besoin d'être
+retravaillé. Et en général, ce qui reste à faire est beaucoup moins
+important que ce qui a été fait mais on a toujours besoin de beaucoup de
+gens pour aider.</p>
<p>Les gens me demandent toujours « Quand est-ce que ça sera fini ? »
Naturellement je ne peux pas le savoir, mais c'est une mauvaise question. Si
@@ -1185,21 +1182,21 @@ vous allez rater le clou de la conférence.</p>
logiciels GNU. Eh bien, un des moyens est évidemment de connaître un ami qui
en a un exemplaire. Mais si ce n'est pas le cas et que vous n'êtes pas sur
Internet pour le télécharger, alors vous pouvez toujours commander une
-distribution sur bande et envoyer une certaine somme à la <cite>Free
-Software Foundation</cite> (Fondation pour le logiciel libre). Naturellement
-les programmes libres <cite>[free programs]</cite>, ce n'est pas la même
-chose que la distribution gratuite <cite>[free distribution]</cite>. Je
-l'expliquerai en détail plus tard.</p>
+distribution sur bande et envoyer une certaine somme à la <i>Free Software
+Foundation</i> (Fondation pour le logiciel libre). Naturellement les
+programmes libres <i>[free programs]</i>, ce n'est pas la même chose que la
+distribution gratuite <i>[free distribution]</i>. Je l'expliquerai en détail
+plus tard.</p>
<p>J'ai ici un manuel d'Emacs, du genre bien imprimé. Il a été phototypé puis
imprimé en offset. Bien que vous puissiez également l'imprimer vous-même à
partir des sources de la distribution d'Emacs, vous pouvez en obtenir des
-copies de la <cite>Free Software Foundation</cite>. Vous pouvez venir après
-pour le regarder. Il contient également un bulletin de commande dont vous
-pouvez copier les renseignements, de même que ce dessin [de la page de
-garde] qui a quelquefois du succès : [montrant du doigt un personnage chassé
-par RMS à cheval sur un gnou] c'est un accapareur de logiciel effrayé, je
-parlerai de lui dans un moment.</p>
+copies de la <i>Free Software Foundation</i>. Vous pouvez venir après pour
+le regarder. Il contient également un bulletin de commande dont vous pouvez
+copier les renseignements, de même que ce dessin [de la page de garde] qui a
+quelquefois du succès : [montrant du doigt un personnage chassé par RMS à
+cheval sur un gnou] c'est un accapareur de logiciel effrayé, je parlerai de
+lui dans un moment.</p>
<p>Le logiciel est un phénomène relativement nouveau. Les gens ont commencé à
distribuer du logiciel il y a peut-être trente ans. Il y a seulement vingt
@@ -1305,7 +1302,7 @@ de vous asseoir tranquillement et de laisser les gens faire ce qu'ils
veulent. Mais ce n'est pas ce qu'il se passe. Au lieu de ça, quelqu'un
essaye délibérément d'entraver le partage du programme. Mais il ne tente pas
simplement de l'entraver, il essaie de pousser les autres à l'aider. Toutes
-les fois qu'un utilisateur signe un accord de non-divulgation, c'est comme
+les fois qu'un utilisateur signe un accord de confidentialité, c'est comme
s'il trahissait ses camarades utilisateurs. Au lieu de suivre la règle d'or
et de dire « J'apprécie ce programme, mon voisin le voudrait aussi, je veux
que nous l'ayons tous les deux », il dit « Ouais, donnez-le-moi. Au diable
@@ -1764,41 +1761,39 @@ nous devons toujours en encourager la copie.</p>
<!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.-->
<hr /><b>Notes de relecture</b><ol>
-<li id="TransNote1">ITS <cite>(Incompatible Timesharing System)</cite> :
-« Système à temps partagé incompatible », conçu par les hackers du
-laboratoire d'intelligence artificielle et nommé en opposition avec CTSS
-<cite>(Compatible Time Sharing System)</cite>, utilisé précédemment au
-MIT. <a href="#TransNote1-rev" class="nounderline">&#8593;</a></li>
-<li id="TransNote2">Nous traduisons maintenant <cite>proprietary</cite> par
+<li id="TransNote1">ITS <i>(Incompatible Timesharing System)</i> : « Système
+à temps partagé incompatible », conçu par les hackers du laboratoire
+d'intelligence artificielle et nommé en opposition avec CTSS <i>(Compatible
+Time Sharing System)</i>, utilisé précédemment au MIT. <a
+href="#TransNote1-rev" class="nounderline">&#8593;</a></li>
+<li id="TransNote2">Nous traduisons maintenant <i>proprietary</i> par
« privateur ». <a href="#TransNote2-rev"
class="nounderline">&#8593;</a></li>
-<li id="TransNote3"><cite>Wheel bit</cite> (litt. bit de gouvernail) : il
-s'agit d'un bit particulier du nombre binaire définissant un utilisateur
-sous Twenex (ou certains autres systèmes à temps partagé des années 80), qui
+<li id="TransNote3"><i>Wheel bit</i> (litt. bit de gouvernail) : il s'agit
+d'un bit particulier du nombre binaire définissant un utilisateur sous
+Twenex (ou certains autres systèmes à temps partagé des années 80), qui
permet à cet utilisateur de faire certaines opérations interdites à
-l'utilisateur normal. Les privilèges du mode <cite>wheel</cite> sont
-analogues à ceux de <cite>root</cite> sous Unix. <a href="#TransNote3-rev"
+l'utilisateur normal. Les privilèges du mode <i>wheel</i> sont analogues à
+ceux de <i>root</i> sous Unix. <a href="#TransNote3-rev"
class="nounderline">&#8593;</a></li>
-<li id="TransNote4">DDT signifiait à l'origine <cite><abbr title="Digital
-Equipment Corporation">DEC</abbr> Debugging Tape</cite> (bande de débogage
-de DEC). C'était un ensemble de programmes, développé en 1961, permettant de
+<li id="TransNote4">DDT signifiait à l'origine <i><abbr title="Digital
+Equipment Corporation">DEC</abbr> Debugging Tape</i> (bande de débogage de
+DEC). C'était un ensemble de programmes, développé en 1961, permettant de
déboguer le système d'exploitation du PDP-1 (les bandes dont il s'agissait
étaient des bandes perforées). Des systèmes similaires existent pour des
-machines plus récentes, ils ont pour nom <cite>Dynamic Debugging
-Technique</cite>, de manière à garder le même sigle. DDT fait allusion à
-l'insecticide <cite>[bug killer]</cite> de l'époque. <a
-href="#TransNote4-rev" class="nounderline">&#8593;</a></li>
-<li id="TransNote5"><cite>Free University Compiler Kit</cite> peut
-s'interpréter de deux manières différentes, car on ne sait pas si l'adjectif
-<cite>free</cite> qualifie <cite>compiler kit</cite> ou
-<cite>university</cite>. En fait, il s'agit du « kit de compilation de
-l'Université Libre (d'Amsterdam) ». <a href="#TransNote5-rev"
+machines plus récentes, ils ont pour nom <i>Dynamic Debugging Technique</i>,
+de manière à garder le même sigle. DDT fait allusion à l'insecticide <i>[bug
+killer]</i> de l'époque. <a href="#TransNote4-rev"
class="nounderline">&#8593;</a></li>
-<li id="TransNote6"><cite>C-shell</cite> se prononce de la même façon que
-<cite>seashell</cite> (coquillage). Il n'est pas impossible que ce jeu de
-mots soit voulu. <a href="#TransNote6-rev"
-class="nounderline">&#8593;</a></li>
-<li id="TransNote7"><cite>Bouncing ball</cite> : peut-être une allusion à la
+<li id="TransNote5"><i>Free University Compiler Kit</i> peut s'interpréter
+de deux manières différentes, car on ne sait pas si l'adjectif <i>free</i>
+qualifie <i>compiler kit</i> ou <i>university</i>. En fait, il s'agit du
+« kit de compilation de l'Université Libre (d'Amsterdam) ». <a
+href="#TransNote5-rev" class="nounderline">&#8593;</a></li>
+<li id="TransNote6"><i>C-shell</i> se prononce de la même façon que
+<i>seashell</i> (coquillage). Il n'est pas impossible que ce jeu de mots
+soit voulu. <a href="#TransNote6-rev" class="nounderline">&#8593;</a></li>
+<li id="TransNote7"><i>Bouncing ball</i> : peut-être une allusion à la
« balle bondissante » du karaoke qui rebondit sur les paroles affichées à
l'écran au moment où il faut les chanter. <a
href="#TransNote7-rev">&#8593;</a></li>
@@ -1877,7 +1872,7 @@ href="mailto:trad-gnu&#64;april.org">trad-gnu&#64;april.org</a></div>
<p class="unprintable"><!-- timestamp start -->
Dernière mise à jour :
-$Date: 2020/07/01 16:32:17 $
+$Date: 2021/01/26 13:03:21 $
<!-- timestamp end -->
</p>