[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
www/gnu rms-lisp.html rms-lisp.fr.html
From: |
Cédric CORAZZA |
Subject: |
www/gnu rms-lisp.html rms-lisp.fr.html |
Date: |
Sun, 02 Mar 2008 11:46:20 +0000 |
CVSROOT: /webcvs/www
Module name: www
Changes by: Cédric CORAZZA <ccorazza> 08/03/02 11:46:20
Modified files:
gnu : rms-lisp.html
Added files:
gnu : rms-lisp.fr.html
Log message:
Adding French document
CVSWeb URLs:
http://web.cvs.savannah.gnu.org/viewcvs/www/gnu/rms-lisp.html?cvsroot=www&r1=1.19&r2=1.20
http://web.cvs.savannah.gnu.org/viewcvs/www/gnu/rms-lisp.fr.html?cvsroot=www&rev=1.1
Patches:
Index: rms-lisp.html
===================================================================
RCS file: /webcvs/www/www/gnu/rms-lisp.html,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- rms-lisp.html 2 Dec 2007 18:56:23 -0000 1.19
+++ rms-lisp.html 2 Mar 2008 11:45:56 -0000 1.20
@@ -551,7 +551,7 @@
<p>
Updated:
<!-- timestamp start -->
-$Date: 2007/12/02 18:56:23 $
+$Date: 2008/03/02 11:45:56 $
<!-- timestamp end -->
</p>
</div>
@@ -575,6 +575,8 @@
<ul class="translations-list">
<!-- English -->
<li><a href="/gnu/rms-lisp.html">English</a> [en]</li>
+<!-- French -->
+<li><a href="/gnu/rms-lisp.fr.html">Français</a> [fr]</li>
</ul>
</div>
Index: rms-lisp.fr.html
===================================================================
RCS file: rms-lisp.fr.html
diff -N rms-lisp.fr.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ rms-lisp.fr.html 2 Mar 2008 11:45:56 -0000 1.1
@@ -0,0 +1,592 @@
+<!--#include virtual="/server/header.fr.html" -->
+
+<title>Mes expériences avec Lisp et le développement de GNU
Emacs</title>
+
+<!--#include virtual="/server/banner.fr.html" -->
+
+<h2>Mes expériences avec Lisp et le développement de GNU
Emacs</h2>
+
+<!-- This document uses XHTML 1.0 Strict, but may be served as -->
+<!-- text/html. Please ensure that markup style considers -->
+<!-- appendex C of the XHTML 1.0 standard. See validator.w3.org. -->
+
+<!-- Please ensure links are consistent with Apache's MultiView. -->
+<!-- Change include statements to be consistent with the relevant -->
+<!-- language, where necessary. -->
+
+<h3>(Transcription du discours de Richard Stallman, 28 Octobre 2002, à
la conférence
+internationale Lisp)</h3>
+
+<p>Comme aucun de mes discours habituels n'a à voir avec Lisp, aucun ne
serait
+approprié pour aujourd'hui. Donc je vais improviser. Comme j'ai fait
suffisamment
+de choses dans ma carrière en relation avec Lisp, je devrais être
capable de
+raconter quelque chose d'intéressant.</p>
+
+<p>Ma première expérience avec Lisp a été de lire
le manuel Lisp 1.5 au lycée.
+C'est à ce moment là que l'idée m'a frappé de
plein fouet : qu'il puisse y avoir un
+langage informatique comme cela. La première fois que j'ai eu la chance
de faire
+quelque chose avec Lisp fut quand je suis arrivé à Harvard et
que j'ai écrit un
+interpréteur Lisp pour le PDP-11. C'était une toute petite
machine, avec
+quelque chose comme 8 Ko de mémoire, et j'ai réussi à
écrire l'interpréteur en un
+millier de lignes. Cela m'a laissé un peu de place pour quelques
données. Tout cela
+était avant que je ne vois ce qu'est du vrai logiciel, qui
exécute un vrai travail
+système.</p>
+
+<p>J'ai commencé à travailler sur une vraie
implémentation de Lisp avec JonL White
+après avoir débuté au <acronym title="Massachusetts
Institute of Technology">M.I.T.</acronym>
+J'ai été engagé au laboratoire d'intelligence
+artificielle non pas par JonL, mais par Russ Noftsker, ce qui est plutôt
ironique
+vu ce qui s'est passé par la suite : il a vraiment dû
regretter ce jour-là.</p>
+
+<p>Pendant les années 70, avant que ma vie ne soit politisée par
des événements
+horribles, je me contentais de faire une extension après l'autre pour
des
+programmes variés, et la plupart d'entre eux n'avaient rien à
voir avec Lisp. Mais,
+au fur et à mesure, j'ai écrit un éditeur de texte,
Emacs. L'idée intéressante à
+propos d'Emacs était qu'il possédait un langage de
programmation, et que les
+commandes d'édition de l'utilisateur seraient écrites dans ce
langage de
+programmation interprété, de telle sorte que vous pouviez
charger de nouvelles
+commandes dans votre éditeur pendant que vous éditiez. Vous
pouviez éditer les
+programmes que vous utilisiez et continuer à éditer avec eux.
Donc, nous avions un
+système qui était utile à autre chose qu'à
programmer, et que vous pouviez
+programmer pendant que vous l'utilisiez. Je ne sais pas si c'était le
premier
+programme à le faire, mais c'était certainement le premier
éditeur comme ça.</p>
+
+<p>L'idée de construire des programmes gigantesques et
compliqués, à utiliser dans
+notre propre édition, et ensuite de les échanger avec d'autres
personnes, a alimenté
+l'esprit de coopération sans contrainte que nous avions
+au labo d'<acronym title="Intelligence Artificielle">I.A.</acronym> à
ce moment-là. L'idée était que vous pouviez donner une
copie de
+n'importe quel programme que vous aviez à celui qui en voulait une
copie. Nous
+partagions les programmes avec qui que soit voulant les utiliser, ils
étaient de
+la connaissance, du savoir humain. Donc même s'il n'y avait pas de
pensée politique
+organisée liée à la manière dont nous partagions
du logiciel pour concevoir Emacs,
+je suis convaincu qu'il y avait une connexion entre eux, peut-être une
connexion
+inconsciente. Je pense que c'est la nature de notre façon de vivre au
labo d'I.A. qui
+à mené à Emacs et l'a fait devenir ce qu'il
était.</p>
+
+<p>L'Emacs original ne contenait pas de Lisp. Le langage de bas-niveau, le
langage
+non interprété, était de l'assembleur PDP-10.
L'interpréteur dans lequel nous
+écrivions n'était en fait pas écrit pour Emacs, il
était écrit pour TECO. C'était
+notre éditeur de texte, et était un langage de programmation
extrêmement laid, le
+plus laid qu'il puisse exister. La raison en était qu'il n'était
pas conçu pour
+être un langage de programmation, mais pour être un langage
d'édition et de
+commande. Il y avait des commandes comme « 5l »,
signifiant « avance de 5 lignes », ou
+bien « i » puis une chaîne de caractère et
Échap pour insérer cette chaîne. Vous
+pouviez taper une chaîne de caractères qui était une
série de commandes, ce qui
+s'appelait une chaîne de commande. Vous la terminiez par Échap
Échap, et elle était
+exécutée.</p>
+
+<p>Eh bien, certaines personnes voulaient étendre ce langage avec des
méthodes de
+programmation, donc ils en ont ajouté quelques-unes. Par exemple, l'une
des
+premières fut une structure de boucle, qui était < >. Vous
pouviez les placer
+autour de quelque chose, et cette chose s'exécutait en boucle. Il y
avait d'autres
+commandes cryptiques qui pouvaient être utilisées pour sortir de
la boucle en
+fonction de conditions. Pour faire Emacs, nous <a href="#foot-7">(7)</a> avons
+ajouté des méthodes pour avoir des sous-routines avec des noms.
Avant cela, c'était
+une sorte de Basic, et les sous-routines pouvaient uniquement avoir une seule
+lettre pour nom. Il était difficile de faire des gros programmes avec,
donc
+nous avons ajouté du code pour qu'elles puissent avoir des noms plus
long. En fait,
+il y avait des méthodes plutôt sophistiquées : je
pense que Lisp a hérité sa
+méthode unwind-protect de TECO.</p>
+
+<p>Nous avons commencé à intégrer des méthodes
plutôt sophistiquées, toutes avec la
+syntaxe la plus horrible que vous pouviez vous représenter, et cela
marchait : les
+gens étaient capables d'écrire des programmes avec en tout cas.
La leçon évidente
+était qu'un langage comme TECO, qui n'était pas conçu
pour programmer, était la
+mauvaise direction. Le langage sur lequel vous construisez vos extensions ne
+devrait pas être vu en tant que langage de programmation après
coup, il devrait être
+conçu en tant que langage de programmation. En fait, nous avons
découvert que le
+meilleur langage de programmation pour faire cela était Lisp.</p>
+
+<p>C'est Bernie Greenberg, qui a découvert qu'il l'était <a
href="#foot-5">(5)</a>.
+Il a écrit une version d'Emacs en Multics MacLisp, et il
écrivait ses commandes en
+MacLisp de façon très directe. L'éditeur lui-même
était entièrement écrit en Lisp.
+Emacs Multics fut un grand succès : programmer de nouvelles
commandes d'édition
+était si pratique que même les secrétaires dans son bureau
ont commencé à apprendre
+à s'en servir. Elles utilisaient un manuel que quelqu'un avait
écrit qui montrait
+comment étendre Emacs, mais qui ne disait pas qu'il s'agissait de
programmation.
+Donc les secrétaires, qui croyaient qu'elles ne pouvaient pas
programmer, n'ont pas
+été effrayées. Elles ont lu le manuel, découvert
qu'elles pouvaient faire des
+choses utiles, et ont appris à programmer.</p>
+
+<p>Donc Bernie à vu qu'une application (un programme qui fait quelque
chose d'utile
+pour vous) qui avait Lisp à l'intérieur et que vous pouviez
étendre en réécrivant
+les programmes Lisp, était réellement une très bonne
manière pour les gens
+d'apprendre à programmer. Cela leur donnait la chance d'écrire
de petits programmes
+qui leur étaient utiles, ce qui est impossible dans la plupart des
situations. Ils
+peuvent ainsi s'encourager (au stade le plus difficile) quand ils ne croient
pas
+qu'ils puissent programmer, jusqu'à ce qu'ils arrivent au point
où ils sont devenus
+programmeurs.</p>
+
+<p>À ce moment-là, les gens ont commencé à se
demander comment ils pouvaient obtenir
+quelque chose de ce genre sur une plateforme sur laquelle ils ne disposaient
pas de
+l'implémentation des services complets de Lisp. Multics MacLisp avait
un compilateur
+aussi bien qu'un interpréteur (c'était un système Lisp
complet) mais les gens
+voulaient implémenter quelque chose comme ça sur d'autres
systèmes où ils n'avaient
+pas encore de compilateur Lisp. Car sans avoir le compilateur Lisp vous ne
pouviez
+écrire l'éditeur entier en Lisp : ce serait trop lent,
spécialement l'affichage,
+s'il fallait faire tourner du Lisp interprété. Donc nous avons
développé une
+technique hybride. L'idée était d'écrire un
interpréteur Lisp et les parties
+bas-niveau de l'éditeur ensemble, de telle sorte que des morceaux de
l'éditeur étaient
+des méthodes intégrées Lisp. C'était toutes les
parties dont nous avions le
+sentiment qu'il fallait les optimiser. C'est une technique que nous avions
déjà
+consciemment pratiqué dans l'Emacs original, puisqu'il y avait certaines
+fonctionnalités de relativement haut-niveau que nous
ré-implémentions en langage
+machine, les transformant en primitives TECO. Par exemple, il y avait une
primitive
+TECO pour remplir un paragraphe (en fait, pour faire le gros du travail de
remplir
+un paragraphe, parce que certaines des parties du travail les moins exigentes
en
+temps étaient faites à un niveau supérieur par un
programme TECO). Vous pouviez
+faire tout le travail en écrivant un programme TECO, mais
c'était trop lent, donc
+nous l'avons optimisé en en mettant une partie en langage machine. Nous
avons
+utilisé la même idée ici (dans la technique hybride), que
la grosse partie de
+l'éditeur serait écrite en Lisp, mais que certaines parties
ayant besoin de
+fonctionner particulièrement rapidement seraient écrites
à un niveau
+inférieur.</p>
+
+<p>C'est pourquoi, quand j'ai écrit ma deuxième
implémentation d'Emacs, j'ai suivi
+le même concept.Le langage de bas niveau n'était plus du langage
machine mais du
+C. C était un bon langage, efficace pour des programmes portables
fonctionnant
+dans un système d'exploitation de type Unix. Il y avait un
interpréteur Lisp, mais
+j'ai implémenté des méthodes pour des travaux
d'édition spéciale directement en C
+- manipuler les piles de l'éditeur, insérer du
« leading text », lire et écrire des
+fichiers, réafficher la pile à l'écran, gérer les
fenêtres de l'éditeur.</p>
+
+<p>Maintenant, ce n'était pas le premier Emacs écrit en C et
fonctionnant sous
+Unix. Le premier a été écrit par James Gosling, et
était appelé GosMac. Une chose
+étrange lui est arrivée. Au début, il semblait être
influencé par le même esprit
+de partage et de coopération que celui de l'Emacs original. J'ai
d'abord distribué
+l'Emacs original aux gens du M.I.T. Quelqu'un voulait le porter pour le faire
+fonctionner sur Twenex : il fonctionnait à l'origine sur
l'Incompatible
+Timesharing System que nous utilisions au M.I.T. Ils l'ont porté sur
Twenex, ce qui
+signifiait qu'il y avait quelques centaines d'installations dans le monde qui
+pouvaient potentiellement l'utiliser. Nous avons commencé à le
leur distribuer, avec
+la règle que « vous aviez à renvoyer toutes vos
améliorations » pour que tout le
+monde en bénéficie. Personne n'a jamais essayé de
surveiller son application, mais
+à ce que j'en sais les gens ont coopéré.</p>
+
+<p>Gosling avait l'air, au début, de participer à cet esprit. Il
a écrit dans un
+manuel qu'il appelait le programme Emacs espérant que d'autres dans la
communauté
+l'améliore jusqu'à ce qu'il soit digne de ce nom. C'est la bonne
approche pour
+créer une communauté : leur demander de se joindre et de
participer à améliorer le
+programme. Mais après cela il a apparemment changé d'esprit, et
a vendu le
+programme à une entreprise.</p>
+
+<p>À ce moment-là je travaillais sur le système GNU (un
système d'exploitation
+libre de type Unix que beaucoup de personnes nomment par erreur
« Linux »). Il n'y
+avait pas d'éditeur Emacs libre qui fonctionnait sur Unix. J'avais par
contre un
+ami qui avait participé au développement de l'Emacs de Gosling.
Gosling lui avait
+donné, par courriel, la permission de distribuer sa propre version. Il
a proposé
+que j'utilise cette version. Puis j'ai découvert que l'Emacs de Gosling
n'avait
+pas réellement de Lisp. Il avait un langage de programmation connu sous
le nom de
+« mocklisp », qui ressemblait pour la syntaxe à
Lisp, mais n'avait pas les
+structures de données de Lisp. Donc les programmes n'étaient pas
des données,
+et des éléments vitaux de Lisp manquaient. Ses structures de
données
+étaient les chaînes de caractères, les nombres et quelques
autres choses
+spécialisées.</p>
+
+<p>J'ai conclu que je ne pouvais pas l'utiliser et que j'avais à tout
remplacer,
+en commençant par écrire un vrai interpréteur Lisp. J'ai
progressivement adapté
+toutes les parties de l'éditeur aux structures de données du
vrai Lisp, plutôt
+qu'à des structures de données ad hoc, rendant les structures de
données des
+parties internes de l'éditeur exposables et manipulables par les
programmes Lisp
+des utilisateurs.</p>
+
+<p>L'unique exception était l'affichage. Pendant longtemps, le
réaffichage était
+une sorte d'autre planète. L'éditeur entrait le mot pour
réaffichage, et les
+choses continuaient avec des structures de données très
spéciales qui n'étaient
+pas sûres pour l'interception des messages d'erreurs, pas sûres
pour les
+interruptions, et vous ne pouviez lancer aucun programme Lisp pendant ce
temps-là.
+Nous avons changé ça depuis : il est maintenant possible de
lancer du code Lisp
+pendant le réaffichage. C'est quelque chose d'assez pratique.</p>
+
+<p>Ce second programme Emacs était du « logiciel
libre » dans le sens moderne du
+terme : il faisait partie d'une campagne politique explicite pour
libérer le
+logiciel. L'essence de cette campagne était que n'importe qui devrait
être libre
+de faire les choses que nous faisions au temps du M.I.T., travailler ensemble
sur du
+logiciel et travailler avec qui que ce soit voulant travailler avec nous.
+C'est la base pour le mouvement du logiciel libre : l'expérience
que j'ai eue, la
+vie que nous avions au Labo d'I.A. du M.I.T., de travailler sur du savoir, et
ne
+pas être en travers du chemin de qui que ce soit, et de
disséminer de plus en plus
+le savoir.</p>
+
+<p>À cette époque, vous pouviez faire un ordinateur dans le
même ordre de prix
+que d'autres non conçus pour Lisp, sauf qu'il ferait fonctionner Lisp
beaucoup
+plus rapidement qu'ils ne le feraient, et avec en plus vérification
complète de
+type. Les ordinateurs ordinaires vous forçaient typiquement
+à choisir entre vitesse d'exécution et bonne vérification
de type.
+Donc oui, vous pouviez avoir un compilateur Lisp et faire fonctionner vos
+programmes rapidement, mais quand ils essayaient de prendre le
« car » d'un nombre,
+il sortaient des résultats insensés et finalement plantaient au
bout d'un
+moment.<p>
+
+<p>La machine Lisp était capable d'exécuter des instructions
presque aussi vite
+que ces autres machines, mais pour toutes les instructions (une instruction
+<tt>car</tt> fait de la vérification de type), donc quand vous
+essayiez d'obtenir le « car » d'un nombre dans un
programme compilé, vous obteniez
+immédiatement l'erreur. Nous construisions la machine et avions un
système
+d'exploitation Lisp pour elle. Il était presque entièrement
écrit en Lisp, les
+seules exceptions étant certaines parties écrites dans le micro
code. Des gens ont
+porté de l'intérêt à leur fabrication, ce qui
signifie qu'ils allaient lancer
+une entreprise.</p>
+
+<p>Il y avait deux idées différentes à propos de comment
cette société devrait
+être. Greenblatt voulait lancer ce qu'il appelait une entreprise de
« hacker ».
+Cela signifie qu'il voulait une entreprise dirigée par des hackers et
qui
+fonctionnerait d'une manière favorable aux hackers. Un autre but
était de
+maintenir la culture du labo d'I.A. <a href="#foot-1">(1)</a>. Malheureusement,
+Greenblatt n'avait aucune expérience des affaires, donc d'autres
personnes dans
+le groupe de la machine Lisp ont dit qu'ils doutaient qu'il puisse
réussir. Ils
+pensaient que son plan pour éviter les investissements
extérieurs ne marcherait
+pas.</p>
+
+<p>Pourquoi voulait-il éviter les investissements
extérieurs ? Parce que quand une
+entreprise a des investisseurs extérieurs, ils prennent le
contrôle, et ne vous
+laissent pas avoir le moindre scrupule. Et finalement, si vous avez des
+scrupules, ils vous remplacent également en tant que directeur.</p>
+
+<p>Donc Greenblatt avait l'idée qu'il trouverait un client prêt
à payer en avance
+pour acheter les composants. Ils construiraient les machines et les
livreraient :
+avec le bénéfice réalisé, ils seraient en mesure
d'acheter les composants pour
+quelques machines de plus, de les vendre, d'acheter des composants pour plus de
+machines, et caetera et caetera. Les autres personnes dans le groupe ne
pensaient
+pas que cela puisse fonctionner.</p>
+
+<p>Greenblatt a ensuite recruté Russel Noftsker, la personne qui
m'avait engagé,
+et qui avait entre temps quitté le Labo d'I.A. et monté une
entreprise florissante.
+Russel passait pour avoir des capacité pour les affaires. Il a
démontré cette
+capacité pour les affaires en disant aux autres membres du
groupe : « jetons
+Greenblatt, oublions son idée, et faisons une autre
entreprise ». Poignarder dans
+le dos, clairement un vrai homme d'affaires. Ces personnes
décidèrent qu'elles
+formeraient une société nommée Symbolics. Ils
chercheraient des investissements
+extérieurs, n'auraient aucun scrupule, et feraient tout leur possible
pour
+gagner.</p>
+
+<p>Mais Greenblatt n'a pas abandonné. Lui et les quelques personnes qui
lui
+étaient restées loyales décidèrent de lancer tout
de même Lisp Machines Inc. et
+de continuer sur leur plan original. Et devinez quoi, ils ont
réussi ! Ils ont
+trouvé leur premier client et ont été payés en
avance. Ils ont construit leurs
+machines et les ont vendues, construit plus de machines et encore plus. Ils ont
+effectivement réussi alors même qu'ils n'avaient pas l'aide de la
plupart des
+personnes du groupe. Symbolics a aussi eu un départ réussi, donc
vous aviez deux
+entreprises concurrentes de machines Lisp. Quand Symbolics a vu que LMI
n'allait
+pas s'écrouler, ils ont commencé à chercher des moyens de
le détruire.</p>
+
+<p>Donc, l'abandon de notre labo fut suivi par une
« guerre » dans notre labo.
+L'abandon s'est fait quand Symbolics a débauché tous les
hackers, à l'exception de
+moi et des quelques-uns qui travaillaient à LMI à temps partiel.
Puis ils ont
+invoqué une règle et éliminé les gens travaillant
à temps partiel pour le M.I.T.,
+les forçant à le quitter entièrement, ce qui m'a
laissé seul. Le Labo d'I.A. était
+maintenant impuissant. Et le M.I.T. a passé un arrangement absurde avec
ces deux
+entreprises. C'était un contrat entre eux trois dans lequel chaque
entreprise
+licenciait l'utilisation des sources des systèmes de machine Lisp. Ces
+entreprises étaient forcées de laisser le M.I.T. utiliser leurs
modifications. Mais
+le contrat ne contenait rien disant que le M.I.T. avait le droit de les
utiliser
+dans les systèmes de machine Lisp que les deux entreprises avaient
licenciées.
+Personne ne s'était rendu compte que le groupe de hacker du Labo d'I.A.
avait
+disparu, mais c'était le cas.</p>
+
+<p>Donc Symbolics à eu une idée <a href="#foot-4">(4)</a>. Ils
ont dit au labo :
+« Nous continuerons à mettre à votre disposition nos
modifications du système pour
+votre utilisation, mais vous ne pouvez les utiliser dans le système de
machine
+Lisp du M.I.T. À la place, nous vous donnerons accès au
système de machine Lisp de
+Symbolics, et vous pourrez l'utiliser, mais c'est tout ce que vous pourrez
+faire ».</p>
+
+<p>Ceci, en pratique, voulait dire qu'ils demandaient que nous choisissions un
+camp, et utilisions soit la version du système du M.I.T., soit la
version de
+Symbolics. Quel que soit notre choix cela déterminait à quel
système iraient nos
+améliorations. Si nous travaillions et améliorions la version de
Symbolics, nous
+soutiendrions uniquement Symbolics. Si nous utilisions et améliorions
la version
+M.I.T. du système, nous réaliserions du travail disponible pour
les deux
+entreprises, mais Symbolics verrait que nous soutiendrions LMI puisque nous les
+aiderions à exister. Donc nous ne pouvions plus rester neutres.</p>
+
+<p>Jusqu'à ce moment, je n'avais pris parti pour aucune des deux
entreprises,
+bien que cela me rendait malheureux de voir ce qui était arrivé
à notre
+communauté et au logiciel. Mais maintenant, Symbolics avait
forcé le problème.
+Donc, dans un effort pour aider à faire continuer Lisp Machines Inc.
+<a href="#foot-2">(2)</a>, j'ai commencé à dupliquer toutes les
améliorations que
+Symbolics avait fait au système machine Lisp. J'ai écrit les
améliorations
+équivalentes à neuf moi-même (c'est-à-dire avec mon
propre code).</p>
+
+<p>Au bout d'un moment <a href="#foot-3">(3)</a>, je suis arrivé
à la conclusion
+que cela irait mieux si je ne regardais même pas leur code. Quand ils
annonçaient
+une version bêta qui donnait les notes de versions, je pouvais voir
quelles
+allaient être les fonctionnalités et les implémenter
moi-même. Au moment où ils
+avaient une vraie version, j'avais la mienne également.</p>
+
+<p>De cette façon, et pendant deux ans, je les ai empêchés
d'écraser Lisp
+Machines Incorporated, et les deux entreprises ont continué d'exister.
Mais je ne
+voulais pas passer des années et des années à punir
quelqu'un, uniquement à
+contrer une entreprise maléfique. J'imagine qu'ils ont
été punis assez sévèrement
+parce qu'ils étaient bloqués avec de la concurrence qui n'avait
ni l'intention de
+laisser tomber ni ne risquait de disparaître <a href="#foot-6">(6)</a>.
+Entre temps, il était temps de commencer à bâtir une
nouvelle communauté pour
+remplacer l'autre que leurs actions et d'autres avait rayé de la
carte.</p>
+
+<p>La communauté Lisp des années 70 n'était pas
limitée au Labo d'I.A. du M.I.T., et
+les hackers ne venaient pas tous du M.I.T.. La guerre que Symbolics a
lancée fut ce
+qui anéanti (la communauté au) M.I.T., mais il y avait d'autres
événements en cours
+au même moment. Il y avait des gens qui abandonnaient la
coopération, et tout
+cela détruisait la communauté, et il n'en restait pas grand
chose.</p>
+
+<p>Après avoir arrêté de punir Symbolics, il a fallu
réfléchir à quoi faire
+ensuite. Il fallait que je fasse un système d'exploitation libre,
c'était
+clair : la seule façon de faire travailler des gens ensemble et de
les faire
+partager était avec un système d'exploitation libre.</p>
+
+<p>Au début, j'ai pensé faire un système basé sur
Lisp, mais j'ai réalisé que
+techniquement ce n'était pas une très bonne idée. Pour
avoir quelque chose comme
+le système machine Lisp, vous aviez besoin de micro code à but
spécifique. C'est
+ce qui rendait possible de faire fonctionner des programmes aussi rapidement
que
+les autres ordinateurs faisaient fonctionner les leurs, en ayant tout de
même le
+bénéfice de la vérification de type. Sans cela, vous
seriez
+réduit à quelque chose comme les compilateurs Lisp pour les
autres machines. Les
+programmes seraient plus rapides, mais instables. Maintenant c'est bon si vous
+faites fonctionner un programme sur un système à partage de
temps :
+si un programme plante, ce n'est pas un désastre, c'est quelque chose
+que les programmes font occasionnellement. Mais cela ne le rendait pas bon pour
+écrire le système d'exploitation de cette façon, donc
j'ai rejeté l'idée de
+faire un système comme la machine Lisp. </p>
+
+<p>J'ai décidé de faire un système d'exploitation de type
Unix qui aurait des
+implémentations Lisp qui fonctionneraient en tant que programmes
utilisateurs.
+Le noyau ne serait pas écrit en Lisp, mais nous aurions Lisp. Donc le
+développement de ce système d'exploitation, le système
d'exploitation GNU, est
+ce qui m'a amené à écrire GNU Emacs. En faisant cela,
j'ai cherché à faire le
+minimum d'implémentation Lisp possible. La taille des programmes
était un
+souci énorme.</p>
+
+<p>Il y avait des gens à cette époque, en 1985, qui avaient des
machines d'un
+megaoctet sans mémoire virtuelle. Ils voulaient pouvoir utiliser GNU
Emacs. Ce
+qui signifie qu'il fallait que je garde le programme aussi petit que possible.
+<p>
+
+<p>Par exemple, à ce moment-là, la seule construction de boucle
était « while »,
+qui était extrêmement simple. Il n'y avait pas de moyen de sortir
de cette boucle
+« while », vous ne pouviez faire qu'un
« catch » et un
+« throw », ou tester une variable dans la boucle. Cela
montre à quel point je poussais
+les choses pour les garder le plus petites possibles. Nous n'avions pas de
+<tt>caar</tt>, de <tt>cadr</tt> et caetera : simplifier au maximum
était l'esprit de GNU
+Emacs, l'esprit de Emacs Lisp, depuis le début.</p>
+
+<p>Évidemment les machines sont plus grosses maintenant, et nous ne le
faisons
+plus de cette façon. Nous utilisons <tt>caar</tt> et <tt>cadr</tt> et
caetera, et nous
+pourrions intégrer une autre construction de boucle un de ces jours.
Nous
+sommes favorables à l'étendre un peu maintenant, mais nous ne
voulons pas
+l'étendre au niveau du Common Lisp. Une chose que je n'aime pas
énormément sont
+les arguments mot-clefs. Il ne me semblent pas très Lisp : je le
fais de temps
+à autre mais je minimise les fois où je le fais.</p>
+
+<p>Ce n'était pas la fin de l'implication du projet GNU avec Lisp. Plus
tard
+vers 1995, nous pensions à lancer un projet de bureau graphique. Il
était clair
+que pour les programmes du bureau, nous voulions un langage de programmation
+afin d'en écrire une grande partie et de le rendre facilement
extensible, comme
+l'éditeur. La question était lequel choisir.</p>
+
+<p>À ce moment, TCL était largement mis en avant pour ce genre
d'applications.
+J'avais une très mauvaise opinion de TCL, avant tout parce que ce
n'était pas du
+Lisp. Cela ressemblait un peu à Lisp, mais pas au niveau
sémantique, et ce
+n'est pas aussi propre. Puis quelqu'un m'a montré une publicité
dans laquelle
+Sun essayait de recruter quelqu'un pour travailler sur TCL afin de le rendre
+« de facto langage d'extension standard » mondial. Et
j'ai pensé : « Nous devons
+empêcher cela ». Donc nous avons commencé à
rendre Scheme le langage d'extension
+standard pour GNU. Pas Common Lisp parce qu'il était trop gros.
L'idée était
+d'avoir un interpréteur Scheme conçu pour être lié
à des applications de la
+même manière que TCL était lié à d'autres
applications. Nous allions donc
+recommander qu'il soit le paquet pour extension préféré
pour tous les
+programmes GNU.</p>
+
+<p>Il y a un bénéfice intéressant à utiliser un
langage si puissant en tant que
+version de Lisp pour votre langage d'extension primaire. Vous pouvez
+implémenter d'autres langages en les traduisant dans votre langage
primaire. Si
+votre langage primaire était TCL, vous ne pourriez implémenter
facilement Lisp
+en le traduisant en TCL. Mais si votre langage primaire est Lisp, il n'est pas
+difficile d'implémenter d'autres choses en les traduisant. Notre
idée était que
+si chaque application extensible acceptait Scheme, vous pourriez écrire
une
+implémentation de TCL ou de Python ou de Perl en Scheme qui traduirait
ce
+programme en Scheme. Puis vous pourriez charger cela dans n'importe quelle
+application et la configurer dans votre langage favori, et cela marcherait
+également avec d'autres configurations.</p>
+
+<p>Tant que l'extensibilité des langages est faible, les utilisateurs
doivent
+uniquement utiliser le langage que vous leur fournissez. Ce qui signifie que
+les gens qui adorent n'importe quel langage ont besoin de concourir pour le
+choix des développeurs d'application : « S'il vous
plaît Monsieur le développeur
+d'applications, incluez mon langage dans votre application, pas le
sien ». Puis
+les autres utilisateurs n'ont plus le choix : quelle que soit
l'application
+qu'ils utilisent, elle arrive avec un langage et ils sont limités
à ce langage.
+Mais quand vous avez un langage puissant qui peux implémenter les
autres en les
+traduisant, alors vous donnez aux utilisateurs le choix du langage et vous
+n'avez plus de guerre des langages du tout. Nous espérons que c'est ce
que fera
+« Guile », notre interpréteur Scheme. Nous avions
une personne travaillant l'été
+dernier à finir un traducteur de Python vers Scheme. Je ne sais pas
s'il est
+entièrement fini maintenant, mais si quelqu'un est
intéressé par ce projet,
+contactez-moi. Donc c'est notre plan pour le futur.</p>
+
+<p>Je n'ai pas parlé de logiciel libre, mais laissez-moi vous dire
rapidement
+un petit peu ce que cela veut dire. Le logiciel libre ne se
réfère
+pas à un prix, cela ne veut pas dire que vous l'obtiendrez
gratuitement. (Vous
+pouvez avoir à payer pour une copie, ou bien vous pouvez l'obtenir
+gratuitement.) Cela signifie que vous êtes libre en tant qu'utilisateur.
La
+chose capitale est que vous êtes libre d'utilisez le programme, libre
d'étudier
+ce qu'il fait, libre de le modifier pour s'adapter à vos besoins, libre
de
+redistribuer des copies aux autres et libre de publier des versions
améliorées
+ou étendues. C'est ce que signifie logiciel libre. Si vous utilisez des
+logiciels non-libres, vous perdez cette liberté capitale, donc ne le
faites
+jamais.</p>
+
+<p>Le but du projet GNU est de rendre facile pour les gens de rejeter les
+logiciels dominateurs d'utilisateurs, piétineurs de liberté,
non-libres, en
+mettant à disposition des logiciels libres pour les remplacer. Pour
ceux qui
+n'ont pas le courage moral de rejeter les logiciels non-libres, quand cela
+signifie quelque inconvénient pratique, nous essayons de donner une
alternative
+libre pour que vous puissiez vous libérer avec
+moins de complications et un sacrifice moindre en termes pratiques. Plus le
+sacrifice est petit, mieux c'est. Nous voulons vous faciliter la vie libre, la
+coopération.</p>
+
+<p>C'est un problème de faire coopérer pour la liberté.
Nous avons l'habitude
+pour la société de penser à la liberté et à
la coopération en tant qu'opposés.
+Mais elles sont dans le même camp. Avec le logiciel libre vous
êtes libres de
+coopérer avec d'autres personnes et êtes libre de vous aider
vous-même. Avec le
+logiciel non-libre, quelqu'un vous domine et tient les gens divisés.
Vous
+n'êtes pas autorisés à partager avec eux, vous
n'êtes pas libres de coopérer
+avec ou d'aider la société, pas plus que vous n'êtes
autorisés à vous aider
+vous-même. Divisés et impuissants, voilà l'état des
utilisateurs de logiciel non
+libre.</p>
+
+<p>Nous avons produit une variété énorme de logiciels
libres. Nous avons fait
+ce que les gens disaient que nous n'arriverions jamais, nous avons deux
+systèmes d'exploitation en logiciels libres. Nous avons de nombreuses
+applications et évidemment avons encore beaucoup à faire. Donc
nous avons
+besoin de votre aide. J'aimerais vous demander d'être volontaire pour le
projet
+GNU, aidez-nous à développer le logiciel libre pour plus de
travail. Allez
+voir sur <a href="/help/">http://www.gnu.org/help</a> pour trouver des
+suggestions sur la manière de nous aider. Si vous voulez commander des
choses,
+il y a un lien pour cela sur cette page. Si vous voulez lire à propos
des
+questions philosophiques, allez voir dans /philosophy. Si vous cherchez des
+logiciels libres à utiliser, allez voir dans /directory, qui liste
environ 1900
+paquets maintenant (ce qui représente une fraction de tout le logiciel
libre
+existant). S'il vous plaît, écrivez-en plus et contribuez. Mon
livre d'essais,
+« Free Software and Free Society » (Logiciel libre et
société libre), est en
+vente et peut être acheté sur <a
href="http://www.gnu.org/">www.gnu.org</a>.
+Happy hacking! (Codez joyeusement !)</p>
+
+<p>Notes :</p>
+
+<p> <a name="foot-1">(1)</a> Le plan de Greenblatt, à ce que j'en ai
compris,
+était d'engager les gens du laboratoire à temps partiel, afin
qu'ils puissent
+continuer à travailler au Labo d'I.A.. Symbolics les a engagé
à temps plein à la
+place, donc ils ont arrêté de travailler au M.I.T.</p>
+
+<p> <a name="foot-2">(2)</a> Ce n'était pas que le sort de LMI
m'intéresse
+particulièrement, mais plutôt je ne voulais pas laisser Symbolics
gagner par
+son aggression contre le labo d'I.A.</p>
+
+<p> <a name="foot-3">(3)</a> Cette phrase a été mal
interprétée, selon quoi je
+n'aurais jamais, jamais jeté un œil sur le code de Symbolics. En
réalité, je l'ai
+fait.</p>
+
+<p>Le code source de Symbolics était disponible au M.I.T., où
j'étais en droit de
+le lire, et au début c'est ainsi que je me suis rendu compte de leurs
+changements. Mais cela signifie que j'avais l'effort supplémentaire de
résoudre
+chaque problème différemment, pour éviter de copier le
code Symbolics. Après un
+moment, j'ai conclu que c'était mieux de ne pas le regarder du tout. De
cette
+façon, je pouvais écrire le code de la meilleure façon,
sans me soucier de ce
+qui était dans le code Symbolics.</p>
+
+<p> <a name="foot-4">(4)</a> L'arrière pensée de ce plan, que je
n'ai pas
+explicité dans le discours, est que durant cette période
initiale les ex
+hackers du labo d'I.A., que ce soit chez Symbolics ou chez LMI, ont
continué à
+faire contribuer leurs modifications au système machine Lisp du M.I.T.,
bien que
+le contrat ne l'exigeait pas. Le plan de Symbolics était de briser cette
+coopération unilatéralement.</p>
+
+<p> <a name="foot-5">(5)</a> Bernie Greenberg dit que l'implémentation
de Dan
+Weinberg d'Emacs pour la machine Lisp est arrivée avant
l'implémentation de
+Greenberg pour Multics. Je m'excuse pour cette erreur.</p>
+
+<p> <a name="foot-6">(6)</a> Symbolics a à un moment protesté au
M.I.T. que mon
+travail, en contrant leur plan, avait couté à Symbolics un
million de dollars.
+</p>
+
+<p> <a name="foot-7">(7)</a> Guy Steele a conçu la bibliothèque
de commande de
+l'Emacs symétrique original, puis lui et moi avons commencé
à implémenter
+Emacs (par dessus TECO), mais après une longue session de
développement
+conjointe, Steele a commencé à s'éloigner, donc j'ai fini
Emacs. D'autres
+incluant particulièrement Eugene C. Cicciarelli et Mike McMahon ont par
la
+suite contribué de manière substantielle.</p>
+
+</div>
+
+<!-- If needed, change the copyright block at the bottom. In general, -->
+<!-- all pages on the GNU web server should have the section about -->
+<!-- verbatim copying. Please do NOT remove this without talking -->
+<!-- with the webmasters first. -->
+<!-- Please make sure the copyright date is consistent with the document -->
+<!-- and that it is like this "2001, 2002" not this "2001-2002." -->
+<!-- for id="content", starts in the include above -->
+
+<!--#include virtual="/server/footer.fr.html" -->
+
+<div id="footer">
+
+<p>Pour les questions et requêtes relatives à la FSF &
+GNU : <a href="mailto:gnu@gnu.org"><em>gnu@gnu.org</em></a>.
+Autres <a href="/home.fr.html#ContactInfo">moyens pour contacter</a> la FSF.
+
+Merci d'envoyer des commentaires sur cette page web à <a
href="mailto:webmasters@gnu.org"><em>webmasters@gnu.org</em></a>,
+envoyer une autre question à <a
href="mailto:gnu@gnu.org"><em>gnu@gnu.org</em></a>.
+</p>
+
+<p>Copyright © 2003, 2007 Free Software Foundation, Inc.,</p>
+<address>51 Franklin St - Fifth Floor, Boston, MA 02110, USA</address>
+
+<p>Verbatim copying and distribution of this entire article is
+permitted in any medium, provided this notice is preserved.
+</p>
+
+<p>La reproduction exacte et la distribution intégrale de cet
+article est permise sur n'importe quel support d'archivage, pourvu que
+cette notice soit préservée.</p>
+
+<p>
+Dernière mise-à-jour :
+<!-- timestamp start -->
+$Date: 2008/03/02 11:45:56 $
+<!-- timestamp end -->
+</p>
+
+<p>
+Traduction : Marc de Maillard.<br />
+Révision : <a
href="mailto:trad-gnu@april.org">trad-gnu@april.org</a>
+</p>
+
+</div>
+
+<div id="translations">
+<h3>Traductions de cette page</h3>
+
+<!-- Please keep this list alphabetical, and in the original -->
+<!-- language if possible, otherwise default to English -->
+<!-- If you do not have it English, please comment what the -->
+<!-- English is. If you add a new language here, please -->
+<!-- advise web-translators@gnu.org and add it to -->
+<!-- - in /home/www/bin/nightly-vars either TAGSLANG or WEBLANG -->
+<!-- - in /home/www/html/server/standards/README.translations.html -->
+<!-- one of the lists under the section "Translations Underway" -->
+<!-- - if there is a translation team, you also have to add an alias -->
+<!-- to mail.gnu.org:/com/mailer/aliases -->
+
+<!-- Please also check you have the 2 letter language code right versus -->
+<!-- http://www.w3.org/WAI/ER/IG/ert/iso639.htm -->
+
+<ul class="translations-list">
+<li><a href="/gnu/rms-lisp.html" title="English">English</a> [en]</li>
+<li><a href="/gnu/rms-lisp.fr.html"
title="French">Français</a> [fr]</li>
+</ul>
+</div>
+
+</div>
+</body>
+</html>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- www/gnu rms-lisp.html rms-lisp.fr.html,
Cédric CORAZZA <=