rms-lisp.html - en to fr translation catalogue (66 entries)

note: type: Content of: <title>
en: My Lisp Experiences and the Development of GNU Emacs - GNU Project - Free Software Foundation
fr: Mes expériences avec Lisp et le développement de GNU Emacs - Projet GNU - Free Software Foundation

note: type: Content of: <div><h2>
en: My Lisp Experiences and the Development of GNU Emacs
fr: Mes expériences avec Lisp et le développement de GNU Emacs

note: type: Content of: <div><div><p>
en: Transcript of Richard Stallman's speech at the International Lisp Conference, 28 Oct 2002.
fr: Transcription du discours de Richard Stallman à la conférence internationale Lisp, le 28 octobre 2002.

note: type: Content of: <div><p>
en: Since none of my usual speeches have anything to do with Lisp, none of them were appropriate for today. So I'm going to have to wing it.  Since I've done enough things in my career connected with Lisp I should be able to say something interesting.
fr: 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.

note: type: Content of: <div><p>
en: My first experience with Lisp was when I read the Lisp 1.5 manual in high school. That's when I had my mind blown by the idea that there could be a computer language like that. The first time I had a chance to do anything with Lisp was when I was a freshman at Harvard and I wrote a Lisp interpreter for the <abbr title="Programmed Data Processor">PDP</abbr>-11. It was a very small machine&mdash;it had something like 8k of memory&mdash;and I managed to write the interpreter in a thousand instructions. This gave me some room for a little bit of data. That was before I got to see what real software was like, that did real system jobs.
fr: 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 <abbr title="Programmed Data Processor">PDP</abbr>-11. C'était une toute petite machine, avec quelque chose comme 8 kilooctets 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, c'était avant que je ne voie ce qu'est un vrai logiciel, qui fait de vraies tâches sur un système.

note: type: Content of: <div><p>
en: I began doing work on a real Lisp implementation with JonL White once I started working at <abbr title="Massachusetts Institute of Technology">MIT</abbr>. I got hired at the Artificial Intelligence Lab not by JonL, but by Russ Noftsker, which was most ironic considering what was to come&mdash;he must have really regretted that day.
fr: J'ai commencé à travailler sur une vraie implémentation de Lisp avec JonL White après avoir débuté au <abbr title="Massachusetts Institute of Technology">MIT</abbr>. J'ai été engagé au laboratoire d'intelligence artificielle (IA) 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à.

note: type: Content of: <div><p>
en: During the 1970s, before my life became politicized by horrible events, I was just going along making one extension after another for various programs, and most of them did not have anything to do with Lisp. But, along the way, I wrote a text editor, Emacs. The interesting idea about Emacs was that it had a programming language, and the user's editing commands would be written in that interpreted programming language, so that you could load new commands into your editor while you were editing. You could edit the programs you were using and then go on editing with them. So, we had a system that was useful for things other than programming, and yet you could program it while you were using it. I don't know if it was the first one of those, but it certainly was the first editor like that.
fr: 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, la plupart d'entre eux n'ayant rien à voir avec Lisp. Mais en cours de route 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 étaient écrites dans ce langage de programmation interprété, de telle sorte qu'on pouvait charger de nouvelles commandes dans l'éditeur tout en éditant. On pouvait éditer les programmes qu'on utilisait tout en continuant à s'en servir pour l'édition. Donc, nous avions un système qui était utile à autre chose qu'à programmer et qu'on pouvait programmer pendant qu'on l'utilisait. Je ne sais pas si c'était le premier programme à le faire, mais c'était certainement le premier éditeur comme ça.

note: type: Content of: <div><p>
en: This spirit of building up gigantic, complicated programs to use in your own editing, and then exchanging them with other people, fueled the spirit of free-wheeling cooperation that we had at the AI Lab then. The idea was that you could give a copy of any program you had to someone who wanted a copy of it. We shared programs to whomever wanted to use them, they were human knowledge. So even though there was no organized political thought relating the way we shared software to the design of Emacs, I'm convinced that there was a connection between them, an unconscious connection perhaps. I think that it's the nature of the way we lived at the AI Lab that led to Emacs and made it what it was.
fr: L'idée de construire des programmes gigantesques et compliqués pour nous en servir dans notre propre travail d'é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'<abbr title="Intelligence Artificielle">IA</abbr> à ce moment-là. L'idée première était qu'on pouvait donner une copie de n'importe quel programme qu'on possédait à qui en voulait une. Nous partagions les programmes avec qui voulait 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, peut-être une connexion inconsciente. Je pense que c'est la nature de notre façon de vivre au labo d'IA qui a mené à Emacs et l'a fait devenir ce qu'il était.

note: type: Content of: <div><p>
en: The original Emacs did not have Lisp in it. The lower level language, the non-interpreted language&mdash;was PDP-10 Assembler. The interpreter we wrote in that actually wasn't written for Emacs, it was written for <abbr title="Text Editor and COrrector">TECO</abbr>. It was our text editor, and was an extremely ugly programming language, as ugly as could possibly be. The reason was that it wasn't designed to be a programming language, it was designed to be an editor and command language. There were commands like <code>5l</code>, meaning <code>move five lines</code>, or <code>i</code> and then a string and then an ESC to insert that string. You would type a string that was a series of commands, which was called a command string. You would end it with ESC ESC, and it would get executed.
fr: 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 <abbr title="Text Editor and COrrector">TECO</abbr>. C'était notre éditeur de texte, et c'était un langage de programmation extrêmement laid, le plus laid qui puisse exister. En effet, il n'était pas conçu comme langage de programmation, mais comme langage d'édition et de commande. Il y avait des commandes comme <code>5l</code>, qui signifiait « avance de 5 lignes », ou bien <code>i</code> 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.

note: type: Content of: <div><p>
en: Well, people wanted to extend this language with programming facilities, so they added some. For instance, one of the first was a looping construct, which was <code>&lt;&nbsp;&gt;</code>. You would put those around things and it would loop. There were other cryptic commands that could be used to conditionally exit the loop.  To make Emacs, we&#8239;<a href="#foot-1">[1]</a> added facilities to have subroutines with names. Before that, it was sort of like Basic, and the subroutines could only have single letters as their names. That was hard to program big programs with, so we added code so they could have longer names. Actually, there were some rather sophisticated facilities; I think that Lisp got its unwind-protect facility from TECO.
fr: Certaines personnes voulaient étendre ce langage avec des méthodes de programmation. Elles en ont donc ajouté quelques-unes. Par exemple, l'une des premières fut une structure de boucle, qui était &lt; &gt;. Vous pouviez placer ces chevrons autour de quelque chose, et cette chose s'exécutait en boucle. Il y avait d'autres commandes cryptiques qu'on pouvait utiliser pour sortir de la boucle si une condition était vérifiée. Pour faire Emacs, nous <a id="foot-1-rev" href="#foot-1">[1]</a> avons ajouté des méthodes pour avoir des sous-programmes avec des noms. Avant cela, c'était une sorte de Basic, et le nom des sous-programmes ne pouvaient avoir qu'une seule lettre. Il était difficile de faire de gros programmes avec. Nous avons donc ajouté du code pour qu'ils 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 <i>unwind-protect</i> de TECO.

note: type: Content of: <div><p>
en: We started putting in rather sophisticated facilities, all with the ugliest syntax you could ever think of, and it worked&mdash;people were able to write large programs in it anyway. The obvious lesson was that a language like TECO, which wasn't designed to be a programming language, was the wrong way to go. The language that you build your extensions on shouldn't be thought of as a programming language in afterthought; it should be designed as a programming language. In fact, we discovered that the best programming language for that purpose was Lisp.
fr: Nous avons commencé à intégrer des méthodes plutôt sophistiquées, toutes avec la syntaxe la plus horrible que vous puissiez imaginer, et cela marchait ; en tout cas, les gens étaient capables d'écrire des programmes avec. La leçon évidente était qu'un langage comme TECO, qui n'a pas été conçu pour programmer, menait à une impasse. Un langage sur lequel on construit des extensions ne doit pas être vu comme langage de programmation après coup, il doit être <em>conçu</em> comme langage de programmation. En fait, nous avons découvert que le mieux adapté à cet usage était Lisp.

note: type: Content of: <div><p>
en: It was Bernie Greenberg, who discovered that it was&#8239;<a href="#foot-2">[2]</a>.  He wrote a version of Emacs in Multics MacLisp, and he wrote his commands in MacLisp in a straightforward fashion. The editor itself was written entirely in Lisp. Multics Emacs proved to be a great success&mdash;programming new editing commands was so convenient that even the secretaries in his office started learning how to use it. They used a manual someone had written which showed how to extend Emacs, but didn't say it was a programming. So the secretaries, who believed they couldn't do programming, weren't scared off. They read the manual, discovered they could do useful things and they learned to program.
fr: C'est Bernie Greenberg qui l'a découvert <a id="foot-2-rev" href="#foot-2">[2]</a>. Il a écrit une version d'Emacs avec le MacLisp de Multics ; il écrivait ses commandes en MacLisp de façon très simple. L'éditeur lui-même était entièrement écrit en Lisp. L'Emacs de Multics a été un grand succès : programmer de nouvelles commandes d'édition était si pratique que même les secrétaires de son service s'y sont mises. Elles se servaient d'un manuel que quelqu'un avait écrit pour montrer comment étendre Emacs, sans dire qu'il s'agissait de programmation. Donc les secrétaires, qui croyaient être incapables de programmer, n'ont pas eu peur d'essayer. Elles ont lu le manuel, découvert qu'elles pouvaient faire des choses utiles, et ont appris à programmer.

note: type: Content of: <div><p>
en: So Bernie saw that an application&mdash;a program that does something useful for you&mdash;which has Lisp inside it and which you could extend by rewriting the Lisp programs, is actually a very good way for people to learn programming. It gives them a chance to write small programs that are useful for them, which in most arenas you can't possibly do. They can get encouragement for their own practical use&mdash;at the stage where it's the hardest&mdash;where they don't believe they can program, until they get to the point where they are programmers.
fr: Bernie a vu ainsi qu'une application (un programme qui fait quelque chose d'utile pour vous) contenant Lisp, qu'on pouvait étendre en réécrivant les programmes Lisp, était vraiment une très bonne manière pour les gens d'apprendre à programmer. Cela leur donnait l'occasion d'écrire de petits programmes qui leur étaient utiles, ce qui est impossible dans la plupart des situations. L'utilité pratique qu'ils en retiraient leur servait d'encouragement (au stade le plus difficile) quand ils ne croyaient pas pouvoir programmer, jusqu'à ce qu'ils en arrivent au point où ils étaient devenus programmeurs.

note: type: Content of: <div><p>
en: At that point, people began to wonder how they could get something like this on a platform where they didn't have full service Lisp implementation. Multics MacLisp had a compiler as well as an interpreter&mdash;it was a full-fledged Lisp system&mdash;but people wanted to implement something like that on other systems where they had not already written a Lisp compiler. Well, if you didn't have the Lisp compiler you couldn't write the whole editor in Lisp&mdash;it would be too slow, especially redisplay, if it had to run interpreted Lisp.  So we developed a hybrid technique. The idea was to write a Lisp interpreter and the lower level parts of the editor together, so that parts of the editor were built-in Lisp facilities. Those would be whatever parts we felt we had to optimize. This was a technique that we had already consciously practiced in the original Emacs, because there were certain fairly high level features which we re-implemented in machine language, making them into TECO primitives. For instance, there was a TECO primitive to fill a paragraph (actually, to do most of the work of filling a paragraph, because some of the less time-consuming parts of the job would be done at the higher level by a TECO program). You could do the whole job by writing a TECO program, but that was too slow, so we optimized it by putting part of it in machine language. We used the same idea here (in the hybrid technique), that most of the editor would be written in Lisp, but certain parts of it that had to run particularly fast would be written at a lower level.
fr: À 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. Le MacLisp de Multics 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ù il n'y avait pas encore de compilateur Lisp. Car sans compilateur Lisp on ne pouvait écrire l'éditeur entier en Lisp : cela aurait été trop lent, en particulier l'affichage, s'il avait fallu faire tourner du Lisp interprété. Donc nous avons développé une technique hybride. L'idée était d'écrire ensemble l'interpréteur Lisp et les parties bas niveau de l'éditeur, de telle sorte que certaines parties de l'éditeur soient des méthodes intégrées Lisp. Ces parties étaient celles dont nous pensions qu'elles avaient besoin d'être optimisées. C'est une technique que nous avions déjà consciemment pratiquée 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 exigeantes en temps étaient faites à un niveau supérieur par un programme TECO). On aurait pu 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. C'est cette idée que nous avons utilisée dans la technique hybride : la plus grosse partie de l'éditeur serait écrite en Lisp, mais certaines parties ayant besoin d'une vitesse d'exécution particulièrement rapide seraient écrites à un niveau inférieur.

note: type: Content of: <div><p>
en: Therefore, when I wrote my second implementation of Emacs, I followed the same kind of design. The low level language was not machine language anymore, it was C. C was a good, efficient language for portable programs to run in a Unix-like operating system. There was a Lisp interpreter, but I implemented facilities for special purpose editing jobs directly in C&mdash;manipulating editor buffers, inserting leading text, reading and writing files, redisplaying the buffer on the screen, managing editor windows.
fr: Par conséquent, j'ai suivi le même concept pour écrire ma deuxième implémentation d'Emacs. 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 les tâches spéciales d'édition directement en C : manipuler les piles de l'éditeur, insérer des interlignes, lire et écrire des fichiers, réafficher la pile à l'écran, gérer les fenêtres de l'éditeur.

note: type: Content of: <div><p>
en: Now, this was not the first Emacs that was written in C and ran on Unix. The first was written by James Gosling, and was referred to as GosMacs. A strange thing happened with him. In the beginning, he seemed to be influenced by the same spirit of sharing and cooperation of the original Emacs. I first released the original Emacs to people at MIT. Someone wanted to port it to run on Twenex&mdash;it originally only ran on the Incompatible Timesharing System we used at MIT. They ported it to Twenex, which meant that there were a few hundred installations around the world that could potentially use it. We started distributing it to them, with the rule that &ldquo;you had to send back all of your improvements&rdquo; so we could all benefit. No one ever tried to enforce that, but as far as I know people did cooperate.
fr: Cela dit, ce n'était pas le premier Emacs écrit en C et fonctionnant sous Unix. Le premier a été écrit par James Gosling et s'appelait GosMac. Une chose étrange est arrivée à Gosling. 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 MIT. Quelqu'un voulait le porter sur Twenex – il fonctionnait à l'origine sur l'<i>Incompatible Timesharing System</i> <a id="TransNote1-rev" href="#TransNote1"><sup>a</sup></a> que nous utilisions au MIT. Ils l'ont porté sur Twenex, ce qui signifiait qu'il y avait quelques centaines d'installations dans le monde qui pouvaient éventuellement l'utiliser. Nous avons commencé à le leur distribuer, en posant comme règle que « vous deviez renvoyer toutes vos améliorations » pour que tout le monde en bénéficie. Personne n'a jamais essayé de faire appliquer cette règle, mais autant que je sache les gens coopéraient effectivement.

note: type: Content of: <div><p>
en: Gosling did, at first, seem to participate in this spirit. He wrote in a manual that he called the program Emacs hoping that others in the community would improve it until it was worthy of that name. That's the right approach to take towards a community&mdash;to ask them to join in and make the program better. But after that he seemed to change the spirit, and sold it to a company.
fr: Au début, Gosling avait vraiment l'air de collaborer dans cet esprit. Il a écrit dans un manuel qu'il appelait le programme « Emacs » en espérant que d'autres dans la communauté l'amélioreraient jusqu'à ce qu'il soit digne de ce nom. C'est la bonne approche pour créer une communauté : demander aux gens de se joindre à vous pour participer à l'amélioration du programme. Mais après cela il a apparemment changé d'état d'esprit et vendu le programme à une entreprise.

note: type: Content of: <div><p>
en: At that time I was working on the GNU system (a free software Unix-like operating system that many people erroneously call &ldquo;Linux&rdquo;).  There was no free software Emacs editor that ran on Unix. I did, however, have a friend who had participated in developing Gosling's Emacs. Gosling had given him, by email, permission to distribute his own version. He proposed to me that I use that version. Then I discovered that Gosling's Emacs did not have a real Lisp. It had a programming language that was known as &ldquo;mocklisp,&rdquo; which looks syntactically like Lisp, but didn't have the data structures of Lisp.  So programs were not data, and vital elements of Lisp were missing.  Its data structures were strings, numbers and a few other specialized things.
fr: À ce moment-là, je travaillais sur le système GNU (un système d'exploitation libre de type Unix que beaucoup de gens nomment par erreur « Linux »). Il n'y avait pas d'éditeur Emacs libre fonctionnant sur Unix. J'avais en revanche 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 m'a proposé d'utiliser 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 ses structures de données. 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.

note: type: Content of: <div><p>
en: I concluded I couldn't use it and had to replace it all, the first step of which was to write an actual Lisp interpreter. I gradually adapted every part of the editor based on real Lisp data structures, rather than ad hoc data structures, making the data structures of the internals of the editor exposable and manipulable by the user's Lisp programs.
fr: J'en ai conclu que je ne pouvais pas l'utiliser et qu'il me fallait tout reprendre à zéro, à commencer par l'écriture d'un véritable 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, de manière à permettre aux programmes Lisp des utilisateurs d'accéder aux structures de données des parties internes de l'éditeur pour les manipuler.

note: type: Content of: <div><p>
en: The one exception was redisplay. For a long time, redisplay was sort of an alternate world. The editor would enter the world of redisplay and things would go on with very special data structures that were not safe for garbage collection, not safe for interruption, and you couldn't run any Lisp programs during that. We've changed that since&mdash;it's now possible to run Lisp code during redisplay. It's quite a convenient thing.
fr: L'unique exception était le réaffichage. Pendant longtemps, le réaffichage a été une sorte d'autre planète. L'éditeur arrivait sur cette planète, et les choses continuaient avec des structures de données très spéciales qui pouvaient être corrompues par le « ramasse-miette »,<a id="TransNote2-rev" href="#TransNote2"><sup>b</sup></a> ou par les interruptions, et vous ne pouviez exécuter aucun programme Lisp pendant ce temps-là. Nous avons changé ça depuis ; il est maintenant possible d'exécuter du code Lisp pendant le réaffichage. C'est quelque chose de très pratique.

note: type: Content of: <div><p>
en: This second Emacs program was &ldquo;free software&rdquo; in the modern sense of the term&mdash;it was part of an explicit political campaign to make software free. The essence of this campaign was that everybody should be free to do the things we did in the old days at MIT, working together on software and working with whomever wanted to work with us.  That is the basis for the free software movement&mdash;the experience I had, the life that I've lived at the MIT AI lab&mdash;to be working on human knowledge, and not be standing in the way of anybody's further using and further disseminating human knowledge.
fr: 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 chacun devait être libre de faire les choses que nous faisions au temps du MIT, travailler ensemble sur du logiciel et travailler avec qui voulait travailler avec nous. C'est la base du mouvement du logiciel libre – l'expérience que j'ai eue, la vie que j'ai vécue au labo d'IA du MIT : travailler sur le savoir de l'humanité, sans empêcher qui que ce soit de le réutiliser et de le disséminer.

note: type: Content of: <div><p>
en: At the time, you could make a computer that was about the same price range as other computers that weren't meant for Lisp, except that it would run Lisp much faster than they would, and with full type checking in every operation as well. Ordinary computers typically forced you to choose between execution speed and good typechecking.  So yes, you could have a Lisp compiler and run your programs fast, but when they tried to take <code>car</code> of a number, it got nonsensical results and eventually crashed at some point.
fr: À cette époque, on pouvait fabriquer un ordinateur dans le même ordre de prix que d'autres qui n'étaient pas conçus pour Lisp, à part qu'il faisait fonctionner Lisp beaucoup plus rapidement qu'eux, avec en plus une 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 d'exécuter <code>car</code> sur un nombre, ils sortaient des résultats insensés et finissaient par planter au bout d'un moment.

note: type: Content of: <div><p>
en: The Lisp machine was able to execute instructions about as fast as those other machines, but each instruction&mdash;a <code>car</code> instruction would do data typechecking&mdash;so when you tried to get the <code>car</code> of a number in a compiled program, it would give you an immediate error. We built the machine and had a Lisp operating system for it. It was written almost entirely in Lisp, the only exceptions being parts written in the microcode. People became interested in manufacturing them, which meant they should start a company.
fr: La machine Lisp était capable d'exécuter des instructions presque aussi vite que ces autres machines, mais à chaque instruction une instruction <code>car</code> faisait une vérification de type ; par conséquent, lorsque vous essayiez d'obtenir le <code>car</code> d'un nombre dans un programme compilé, vous obteniez immédiatement une erreur. Nous avons construit la machine et fait un système d'exploitation Lisp pour elle. Il était presque entièrement écrit en Lisp, à la seule exception des parties écrites dans le microcode. Certaines personnes ont porté de l'intérêt à la fabrication de la machine Lisp, ce qui voulait dire qu'elles allaient lancer une entreprise.

note: type: Content of: <div><p>
en: There were two different ideas about what this company should be like.  Greenblatt wanted to start what he called a &ldquo;hacker&rdquo; company. This meant it would be a company run by hackers and would operate in a way conducive to hackers. Another goal was to maintain the AI Lab culture&#8239;<a class="ftn" href="#foot-3">[3]</a>.  Unfortunately, Greenblatt didn't have any business experience, so other people in the Lisp machine group said they doubted whether he could succeed. They thought that his plan to avoid outside investment wouldn't work.
fr: Il y avait deux conceptions différentes du type de société que ça devait ê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. Elle aurait également pour but de maintenir la culture du labo d'IA <a id="foot-3-rev" href="#foot-3">[3]</a>. Malheureusement, comme Greenblatt n'avait aucune expérience des affaires, d'autres personnes du groupe de la machine Lisp ont émis des doutes sur ses chances de réussite. Elles pensaient que son plan pour éviter les investissements extérieurs ne marcherait pas.

note: type: Content of: <div><p>
en: Why did he want to avoid outside investment? Because when a company has outside investors, they take control and they don't let you have any scruples. And eventually, if you have any scruples, they also replace you as the manager.
fr: Pourquoi voulait-il éviter les investissements extérieurs ? Parce que, lorsqu'une entreprise a des investisseurs extérieurs, ils prennent le contrôle et ne vous laissent pas avoir le moindre scrupule. Et si vous finissez par avoir des scrupules, ils vous remplacent également à la direction.

note: type: Content of: <div><p>
en: So Greenblatt had the idea that he would find a customer who would pay in advance to buy the parts. They would build machines and deliver them; with profits from those parts, they would then be able to buy parts for a few more machines, sell those and then buy parts for a larger number of machines, and so on. The other people in the group thought that this couldn't possibly work.
fr: Greenblatt a donc eu l'idée de chercher un client prêt à payer d'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, etc., etc. Les autres personnes du groupe ne pensaient pas que cela puisse fonctionner.

note: type: Content of: <div><p>
en: Greenblatt then recruited Russell Noftsker, the man who had hired me, who had subsequently left the AI Lab and created a successful company.  Russell was believed to have an aptitude for business. He demonstrated this aptitude for business by saying to the other people in the group, &ldquo;Let's ditch Greenblatt, forget his ideas, and we'll make another company.&rdquo; Stabbing in the back, clearly a real businessman. Those people decided they would form a company called Symbolics. They would get outside investment, not have scruples, and do everything possible to win.
fr: Greenblatt a ensuite recruté Russel Noftsker, la personne qui m'avait engagé, et qui avait entre-temps quitté le labo d'IA pour monter une entreprise florissante. Russel passait pour avoir des capacités pour les affaires. Il l'a démontré en disant aux autres membres du groupe : « Jetons Greenblatt, oublions son idée et créons une autre entreprise. » Poignarder dans le dos&hellip; un véritable homme d'affaires en effet. Ces personnes ont décidé de former une société nommée Symbolics. Elles chercheraient des investissements extérieurs, n'auraient aucun scrupule et feraient tout leur possible pour gagner.

note: type: Content of: <div><p>
en: But Greenblatt didn't give up. He and the few people loyal to him decided to start Lisp Machines Inc. anyway and go ahead with their plans. And what do you know, they succeeded! They got the first customer and were paid in advance. They built machines and sold them, and built more machines and more machines. They actually succeeded even though they didn't have the help of most of the people in the group. Symbolics also got off to a successful start, so you had two competing Lisp machine companies. When Symbolics saw that LMI was not going to fall flat on its face, they started looking for ways to destroy it.
fr: Mais Greenblatt n'a pas abandonné. Lui et les quelques personnes qui lui étaient restées loyales ont décidé de lancer tout de même <i>Lisp Machines Inc.</i> et de poursuivre leur projet initial. Et devinez quoi, ils ont réussi ! Ils ont trouvé leur premier client et ont été payés d'avance. Ils ont construit leurs machines, les ont vendues, et ont construit de plus en plus de machines. Ils ont effectivement réussi alors même qu'ils n'avaient pas l'aide de la plupart des personnes du groupe. Symbolics a eu un bon départ également ; il y avait donc deux entreprises concurrentes de machines Lisp. Quand Symbolics a vu que <abbr title="Lisp Machines Inc.">LMI</abbr> n'allait pas s'écrouler, ils ont commencé à chercher des moyens de la détruire.

note: type: Content of: <div><p>
en: Thus, the abandonment of our lab was followed by &ldquo;war&rdquo; in our lab.  The abandonment happened when Symbolics hired away all the hackers, except me and the few who worked at LMI part-time. Then they invoked a rule and eliminated people who worked part-time for MIT, so they had to leave entirely, which left only me. The AI lab was now helpless.  And MIT had made a very foolish arrangement with these two companies.  It was a three-way contract where both companies licensed the use of Lisp machine system sources. These companies were required to let MIT use their changes. But it didn't say in the contract that MIT was entitled to put them into the MIT Lisp machine systems that both companies had licensed. Nobody had envisioned that the AI lab's hacker group would be wiped out, but it was.
fr: Il y a donc eu l'abandon de notre labo, 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 de quelques autres qui travaillaient chez LMI à temps partiel. Puis, pour éliminer les gens qui travaillaient à temps partiel pour le MIT, ils ont invoqué une règle qui les a forcés à le quitter complètement, ce qui m'a laissé seul. Le labo d'IA était maintenant impuissant. Et le MIT a passé un arrangement absurde avec ces deux entreprises. C'était un contrat entre eux trois dans lequel chaque entreprise donnait des licences pour utiliser les sources des systèmes de machine Lisp. Ces entreprises étaient obligées de laisser le MIT utiliser leurs modifications. Mais le contrat ne contenait rien disant que le MIT avait le droit de les utiliser dans les systèmes de machine Lisp pour lesquels les deux entreprises lui avaient donné des licences. Personne n'avait imaginé que le groupe de hackers du labo d'IA disparaîtrait, mais ce fut le cas.

note: type: Content of: <div><p>
en: So Symbolics came up with a plan&#8239;<a href="#foot-4">[4]</a>.  They said to the lab, &ldquo;We will continue making our changes to the system available for you to use, but you can't put it into the MIT Lisp machine system. Instead, we'll give you access to Symbolics' Lisp machine system, and you can run it, but that's all you can do.&rdquo;
fr: Les gens de Symbolics ont trouvé une combine <a id="foot-4-rev" href="#foot-4">[4]</a>. Ils ont dit au labo : « Nous continuerons à mettre à votre disposition nos modifications du système pour votre usage, mais vous ne pourrez pas les installer dans le système de machine Lisp du MIT. À la place, nous vous donnerons accès à celui de Symbolics et vous pourrez le faire fonctionner, mais c'est tout ce que vous pourrez faire. »

note: type: Content of: <div><p>
en: This, in effect, meant that they demanded that we had to choose a side, and use either the MIT version of the system or the Symbolics version.  Whichever choice we made determined which system our improvements went to. If we worked on and improved the Symbolics version, we would be supporting Symbolics alone. If we used and improved the MIT version of the system, we would be doing work available to both companies, but Symbolics saw that we would be supporting LMI because we would be helping them continue to exist. So we were not allowed to be neutral anymore.
fr: En pratique, cela voulait dire qu'ils nous obligeaient à choisir un camp : utiliser la version du MIT, ou la version de Symbolics. Quel que soit notre choix, cela déterminait à quel système iraient nos améliorations. Si nous travaillions sur la version de Symbolics pour l'améliorer, nous soutiendrions uniquement Symbolics. Si nous utilisions la version MIT du système, nos améliorations seraient à la disposition des deux entreprises, mais Symbolics verrait que nous soutenions LMI puisque nous les aidions à exister. Donc nous ne pouvions plus rester neutres.

note: type: Content of: <div><p>
en: Up until that point, I hadn't taken the side of either company, although it made me miserable to see what had happened to our community and the software.  But now, Symbolics had forced the issue.  So, in an effort to help keep Lisp Machines Inc. going&#8239;<a href="#foot-5">[5]</a>&mdash;I began duplicating all of the improvements Symbolics had made to the Lisp machine system.  I wrote the equivalent improvements again myself (i.e., the code was my own).
fr: Jusque-là, je n'avais pris parti pour aucune des deux entreprises, bien que cela me rendît malheureux de voir ce qui était arrivé à notre communauté et au logiciel. Mais maintenant, Symbolics m'avait forcé la main. Alors, pour essayer d'aider LMI à poursuivre son activité <a id="foot-5-rev" href="#foot-5">[5]</a>, j'ai commencé à dupliquer toutes les améliorations que Symbolics avait faites au système de machine Lisp. Je réécrivais des améliorations équivalentes moi-même (c'est-à-dire avec mon propre code).

note: type: Content of: <div><p>
en: After a while&#8239;<a href="#foot-6">[6]</a>, I came to the conclusion that it would be best if I didn't even look at their code. When they made a beta announcement that gave the release notes, I would see what the features were and then implement them. By the time they had a real release, I did too.
fr: Au bout d'un moment <a id="foot-6-rev" href="#foot-6">[6]</a>, je suis arrivé à la conclusion que cela irait mieux si je ne regardais même pas leur code. Dans les annonces de versions bêta qui donnaient les notes de version, je pouvais voir quelles allaient être les fonctionnalités et les implémenter moi-même. Au moment où ils avaient une version publiable, j'avais la mienne également.

note: type: Content of: <div><p>
en: In this way, for two years, I prevented them from wiping out Lisp Machines Incorporated, and the two companies went on. But, I didn't want to spend years and years punishing someone, just thwarting an evil deed. I figured they had been punished pretty thoroughly because they were stuck with competition that was not leaving or going to disappear&#8239;<a href="#foot-7">[7]</a>.  Meanwhile, it was time to start building a new community to replace the one that their actions and others had wiped out.
fr: De cette façon, et pendant deux ans, je les ai empêchés d'écraser LMI et les deux entreprises ont continué d'exister. Mais je ne voulais pas passer des années et des années à punir quelqu'un, dans le seul but de contrer une mauvaise action. J'imagine qu'ils avaient été assez punis parce qu'ils étaient coincés avec de la concurrence qui n'allait pas laisser tomber ni disparaître <a id="foot-7-rev" href="#foot-7">[7]</a>. De toute manière, il était temps de commencer à bâtir une nouvelle communauté pour remplacer celle que leurs actions, ainsi que d'autres, avaient rayée de la carte.

note: type: Content of: <div><p>
en: The Lisp community in the 70s was not limited to the MIT AI Lab, and the hackers were not all at MIT. The war that Symbolics started was what wiped out MIT, but there were other events going on then. There were people giving up on cooperation, and together this wiped out the community and there wasn't much left.
fr: La communauté Lisp des années 70 ne se limitait pas au labo d'IA du MIT et les hackers n'étaient pas tous au MIT. La guerre lancée par Symbolics est ce qui a déclenché la disparition du groupe du MIT, mais il y avait d'autres événements en cours au même moment. Il y avait des gens qui abandonnaient la coopération ; tout cela a détruit la communauté et il n'en est pas resté grand-chose.

note: type: Content of: <div><p>
en: Once I stopped punishing Symbolics, I had to figure out what to do next. I had to make a free operating system, that was clear&mdash;the only way that people could work together and share was with a free operating system.
fr: Après avoir arrêté de punir Symbolics, il m'a fallu réfléchir à la suite. 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 d'avoir un système d'exploitation libre.

note: type: Content of: <div><p>
en: At first, I thought of making a Lisp-based system, but I realized that wouldn't be a good idea technically. To have something like the Lisp machine system, you needed special purpose microcode. That's what made it possible to run programs as fast as other computers would run their programs and still get the benefit of typechecking. Without that, you would be reduced to something like the Lisp compilers for other machines. The programs would be faster, but unstable. Now that's okay if you're running one program on a timesharing system&mdash;if one program crashes, that's not a disaster, that's something your program occasionally does. But that didn't make it good for writing the operating system in, so I rejected the idea of making a system like the Lisp machine.
fr: 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 de la machine Lisp, on avait besoin de microcode à but spécifique. C'est ce qui permettait d'exécuter des programmes aussi rapidement que les autres ordinateurs exécutaient les leurs, en ayant tout de même le bénéfice de la vérification de type. Sans cela, on en était réduit à quelque chose comme les compilateurs Lisp pour les autres machines. Les programmes étaient plus rapides, mais instables. Ça va bien si on exécute un programme sur un système en temps partagé ; si un programme plante, ce n'est pas un désastre, c'est quelque chose que les programmes font occasionnellement. Mais cela ne convenait pas pour l'écriture d'un système d'exploitation ; j'ai donc rejeté l'idée de prendre comme modèle le système comme la machine Lisp.

note: type: Content of: <div><p>
en: I decided instead to make a Unix-like operating system that would have Lisp implementations to run as user programs. The kernel wouldn't be written in Lisp, but we'd have Lisp. So the development of that operating system, the GNU operating system, is what led me to write the GNU Emacs. In doing this, I aimed to make the absolute minimal possible Lisp implementation. The size of the programs was a tremendous concern.
fr: Au lieu de ça, j'ai décidé de faire un système d'exploitation de type Unix qui aurait des implémentations Lisp fonctionnant en tant que programmes utilisateur. Le noyau ne serait pas écrit en Lisp, mais nous aurions Lisp. Le développement de ce système d'exploitation, le système d'exploitation GNU, est ce qui m'a amené à écrire GNU Emacs. Ce faisant, j'ai cherché à faire le strict minimum d'implémentation Lisp. La taille des programmes était un souci énorme.

note: type: Content of: <div><p>
en: There were people in those days, in 1985, who had one-megabyte machines without virtual memory. They wanted to be able to use GNU Emacs. This meant I had to keep the program as small as possible.
fr: Il y avait des gens à cette époque, en 1985, qui avaient des machines d'un mégaoctet sans mémoire virtuelle. Ils voulaient pouvoir utiliser GNU Emacs. Cela voulait dire que je devais garder le programme aussi réduit que possible.

note: type: Content of: <div><p>
en: For instance, at the time the only looping construct was <code>while</code>, which was extremely simple. There was no way to break out of the <code>while</code> statement, you just had to do a catch and a throw, or test a variable that ran the loop. That shows how far I was pushing to keep things small. We didn't have <code>caar</code> and <code>cadr</code> and so on; &ldquo;squeeze out everything possible&rdquo; was the spirit of GNU Emacs, the spirit of Emacs Lisp, from the beginning.
fr: Par exemple, à ce moment-là, la seule construction de boucle était <code>while</code>, et elle était extrêmement simple. Il n'existait aucun moyen de sortir de cette boucle <code>while</code> ; vous ne pouviez faire qu'un <code>catch</code> et un <code>throw</code>, ou tester une variable dans la boucle. Cela montre à quel point j'essayais de réduire le programme. Nous n'avions pas de <code>caar</code>, de <code>cadr</code>, etc. ; simplifier au maximum était l'esprit de GNU Emacs, l'esprit du Lisp d'Emacs, depuis l'origine.

note: type: Content of: <div><p>
en: Obviously, machines are bigger now, and we don't do it that way any more. We put in <code>caar</code> and <code>cadr</code> and so on, and we might put in another looping construct one of these days. We're willing to extend it some now, but we don't want to extend it to the level of common Lisp. I implemented Common Lisp once on the Lisp machine, and I'm not all that happy with it. One thing I don't like terribly much is keyword arguments&#8239;<a href="#foot-8">[8]</a>.  They don't seem quite Lispy to me; I'll do it sometimes but I minimize the times when I do that.
fr: Évidemment les machines sont plus grosses maintenant et nous ne travaillons plus de cette façon. Nous utilisons <code>caar</code> et <code>cadr</code>, etc., et nous pourrions intégrer une autre construction de boucle un de ces jours. Nous avons envie de l'étendre un peu maintenant, mais nous ne voulons pas l'étendre au niveau du Common Lisp. Il m'est arrivé une fois d'implémenter le Common Lisp sur la machine Lisp, mais je n'en ai pas été vraiment satisfait. Ce que je n'aime pas trop, ce sont les arguments mots-clefs <a id="foot-8-rev" href="#foot-8">[8]</a>. Ils ne me semblent pas très « Lisp » ; je le fais de temps à autre, mais le moins possible.

note: type: Content of: <div><p>
en: That was not the end of the GNU projects involved with Lisp. Later on around 1995, we were looking into starting a graphical desktop project. It was clear that for the programs on the desktop, we wanted a programming language to write a lot of it in to make it easily extensible, like the editor. The question was what it should be.
fr: L'implication du projet GNU avec Lisp ne s'est pas arrêtée là. 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 qui permette d'en écrire une grande partie et de le rendre facilement extensible, comme l'éditeur. La question était lequel choisir.

note: type: Content of: <div><p>
en: At the time, <abbr title="Tool Command Language">TCL</abbr> was being pushed heavily for this purpose. I had a very low opinion of TCL, basically because it wasn't Lisp. It looks a tiny bit like Lisp, but semantically it isn't, and it's not as clean.  Then someone showed me an ad where Sun was trying to hire somebody to work on TCL to make it the &ldquo;de-facto standard extension language&rdquo; of the world. And I thought, &ldquo;We've got to stop that from happening.&rdquo; So we started to make Scheme the standard extensibility language for GNU. Not Common Lisp, because it was too large. The idea was that we would have a Scheme interpreter designed to be linked into applications in the same way TCL was linked into applications. We would then recommend that as the preferred extensibility package for all GNU programs.
fr: À ce moment-là, <abbr title="Tool Command Language">TCL</abbr> é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'était pas aussi propre. Puis quelqu'un m'a montré une publicité dans laquelle Sun essayait de recruter quelqu'un pour travailler sur TCL afin d'en faire le « langage d'extension standard de facto » au niveau mondial. Et j'ai pensé : « Nous devons empêcher cela. » C'est ainsi que nous avons commencé à faire de 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 à la manière de TCL. Nous recommanderions ensuite de donner la préférence à Scheme pour les extensions à tous les programmes GNU.

note: type: Content of: <div><p>
en: There's an interesting benefit you can get from using such a powerful language as a version of Lisp as your primary extensibility language.  You can implement other languages by translating them into your primary language. If your primary language is TCL, you can't very easily implement Lisp by translating it into TCL. But if your primary language is Lisp, it's not that hard to implement other things by translating them. Our idea was that if each extensible application supported Scheme, you could write an implementation of TCL or Python or Perl in Scheme that translates that program into Scheme. Then you could load that into any application and customize it in your favorite language and it would work with other customizations as well.
fr: Il y a un avantage intéressant à utiliser comme langage d'extension primaire un langage aussi puissant qu'une version de Lisp. On peut implémenter d'autres langages en les traduisant en langage primaire. Si le langage primaire est TCL, on ne peut pas implémenter facilement Lisp en le traduisant en TCL. Mais si le langage primaire est Lisp, il n'est pas difficile d'implémenter d'autres choses en les traduisant. Nous sommes partis de l'idée que si chaque application extensible était compatible avec Scheme, on pourrait écrire une implémentation de TCL, Python ou Perl en Scheme, qui traduirait ce programme en Scheme. Puis on pourrait charger cela dans n'importe quelle application et la configurer dans votre langage favori, et cela marcherait également avec d'autres configurations.

note: type: Content of: <div><p>
en: As long as the extensibility languages are weak, the users have to use only the language you provided them. Which means that people who love any given language have to compete for the choice of the developers of applications&mdash;saying &ldquo;Please, application developer, put my language into your application, not his language.&rdquo; Then the users get no choices at all&mdash;whichever application they're using comes with one language and they're stuck with [that language]. But when you have a powerful language that can implement others by translating into it, then you give the user a choice of language and we don't have to have a language war anymore. That's what we're hoping Guile, our scheme interpreter, will do. We had a person working last summer finishing up a translator from Python to Scheme. I don't know if it's entirely finished yet, but for anyone interested in this project, please get in touch. So that's the plan we have for the future.
fr: Tant que l'extensibilité des langages est faible, les utilisateurs doivent utiliser uniquement le langage qu'on leur fournit. Ce qui signifie que les gens qui préfèrent un langage particulier doivent concourir pour le choix des développeurs d'application : « S'il vous plaît, monsieur le développeur d'applications, mettez mon langage dans votre application, pas le sien. » Ensuite, 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 peut implémenter les autres en les traduisant, alors vous donnez le choix aux utilisateurs et vous éliminez la guerre des langages. Nous espérons que c'est ce que fera « Guile », notre interpréteur Scheme. Nous avions une personne l'été dernier qui travaillait à terminer 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. Voilà donc notre projet pour l'avenir.

note: type: Content of: <div><p>
en: I haven't been speaking about free software, but let me briefly tell you a little bit about what that means. Free software does not refer to price; it doesn't mean that you get it for free. (You may have paid for a copy, or gotten a copy gratis.) It means that you have freedom as a user. The crucial thing is that you are free to run the program, free to study what it does, free to change it to suit your needs, free to redistribute the copies of others and free to publish improved, extended versions. This is what free software means. If you are using a nonfree program, you have lost crucial freedom, so don't ever do that.
fr: Je n'ai pas parlé de logiciel libre, mais laissez-moi vous dire rapidement un petit peu de ce que cela signifie. « Logiciel libre » ne se réfère pas au prix, cela ne veut pas dire que vous l'obtiendrez gratuitement (vous pouvez avoir à payer les copies, ou bien vous pouvez les obtenir gratuitement).<a id="TransNote3-rev" href="#TransNote3"><sup>c</sup></a> Cela signifie que vous êtes libre en tant qu'utilisateur. L'essentiel, c'est que vous êtes libre d'utiliser le programme, libre d'étudier ce qu'il fait, libre de le modifier pour l'adapter à vos besoins, libre de redistribuer des copies aux autres et libre de publier des versions améliorées ou étendues. Voilà ce que signifie « logiciel libre ». Si vous utilisez des logiciels non libres, vous perdez cette liberté capitale, donc ne le faites jamais.

note: type: Content of: <div><p>
en: The purpose of the GNU project is to make it easier for people to reject freedom-trampling, user-dominating, nonfree software by providing free software to replace it. For those who don't have the moral courage to reject the nonfree software, when that means some practical inconvenience, what we try to do is give a free alternative so that you can move to freedom with less of a mess and less of a sacrifice in practical terms. The less sacrifice the better. We want to make it easier for you to live in freedom, to cooperate.
fr: Le but du projet GNU est de faciliter aux gens le rejet des logiciels non libres qui dominent les utilisateurs, qui piétinent leur liberté, en mettant à leur disposition des logiciels libres pour les remplacer. À 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 qu'ils puissent se libérer avec moins de complications et un sacrifice moindre en termes pratiques. Plus le sacrifice est petit, mieux c'est. Nous voulons leur faciliter la vie libre, la coopération.

note: type: Content of: <div><p>
en: This is a matter of the freedom to cooperate. We're used to thinking of freedom and cooperation with society as if they are opposites. But here they're on the same side. With free software you are free to cooperate with other people as well as free to help yourself. With nonfree software, somebody is dominating you and keeping people divided. You're not allowed to share with them, you're not free to cooperate or help society, anymore than you're free to help yourself.  Divided and helpless is the state of users using nonfree software.
fr: Il s'agit de la liberté de coopérer. Nous avons l'habitude de penser à la liberté et à la coopération avec la société comme si ces notions s'opposaient. Mais ici elles sont dans le même camp. Avec le logiciel libre vous êtes libre de coopérer avec d'autres personnes et vous êtes libre de vous aider vous-même. Avec le logiciel non libre, quelqu'un vous domine et garde les gens divisés. Vous n'êtes pas autorisé à partager avec eux, vous n'êtes pas libre de coopérer avec la société ni de l'aider, pas plus que vous n'êtes autorisé à vous aider vous-même. Divisés et impuissants, voilà l'état des utilisateurs de logiciel non libre.

note: type: Content of: <div><p>
en: We've produced a tremendous range of free software. We've done what people said we could never do; we have two operating systems of free software. We have many applications and we obviously have a lot farther to go. So we need your help. I would like to ask you to volunteer for the GNU project; help us develop free software for more jobs. Take a look at <a href="/help/help.html">gnu.org/help</a> to find suggestions for how to help. If you want to order things, there's a link to that from the home page. If you want to read about philosophical issues, look in /philosophy. If you're looking for free software to use, look in /directory, which lists about 1900 packages now (which is a fraction of all the free software out there). Please write more and contribute to us. My book of essays, &ldquo;Free Software and Free Society,&rdquo; is on sale and can be purchased at www.gnu.org&#8239;<a href="#foot-9">[9]</a>.  Happy hacking!
fr: Nous avons produit une variété énorme de logiciels libres. Nous avons fait ce que les gens disaient que nous n'arriverions jamais à faire ; nous avons deux systèmes d'exploitation constitués de logiciel libre. Nous avons de nombreuses applications, mais évidemment nous avons encore beaucoup à faire. C'est pourquoi nous avons besoin de votre aide. J'aimerais vous demander de faire du bénévolat pour le projet GNU ; aidez-nous à développer le logiciel libre pour qu'il y ait plus d'emplois. Allez voir sur <a href="/help/help.html">gnu.org/help</a> pour trouver des idées 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 des articles sur des questions philosophiques, allez voir dans /philosophy. Si vous cherchez des logiciels libres, allez voir dans /directory, qui actuellement répertorie environ 1900 logiciels (ce qui représente une fraction de tout les logiciels libres existants). S'il vous plaît, écrivez-en d'autres et offrez-les au projet GNU. Mon livre d'essais, <cite>Free Software, Free Society</cite> (Logiciel libre, société libre), est en vente et peut être acheté sur www.gnu.org&#8239;<a id="foot-9-rev" href="#foot-9" >[9]</a>. <i>Happy hacking!</i> (Codez joyeusement !)

note: type: Content of: <div><h3>
en: Footnotes
fr: Notes

note: type: Content of: <div><ol><li>
en: Guy Steele designed the original symmetrical Emacs command set; then he and I began implementing Emacs (on top of TECO), but after one long joint development session, Steele began drifting away, so I finished Emacs.  Others particularly including Eugene C. Cicciarelli and Mike McMahon contributed substantially later on.
fr: <a href="#foot-1-rev" class="nounderline">&#8593;</a> Guy Steele a conçu la bibliothèque symétrique originale de commandes d'Emacs, puis lui et moi avons commencé à implémenter Emacs (au-dessus de TECO), mais après une longue session de développement conjointe, Steele a commencé à s'éloigner. J'ai donc terminé Emacs. D'autres, en particulier Eugene C. Cicciarelli et Mike McMahon, ont par la suite contribué de manière substantielle.

note: type: Content of: <div><ol><li>
en: Bernie Greenberg says that Dan Weinreb's implementation of Emacs for the Lisp Machine came before Greenberg's implementation for Multics.  I apologize for the mistake.
fr: <a href="#foot-2-rev" class="nounderline">&#8593;</a> Bernie Greenberg dit que l'implémentation d'Emacs de Dan Weinberg pour la machine Lisp est arrivée avant celle de Greenberg pour Multics. Je lui présente mes excuses pour cette erreur.

note: type: Content of: <div><ol><li>
en: Greenblatt's plan, as I understood it, was to hire lab people part time, so that they could continue working at the AI Lab.  Symbolics hired them full time instead, so they stopped working at MIT.
fr: <a href="#foot-3-rev" class="nounderline">&#8593;</a> Le plan de Greenblatt, d'après ce que j'ai compris, était d'engager les gens du laboratoire à temps partiel afin qu'ils puissent continuer à travailler au labo d'IA. Au lieu de cela, Symbolics les a engagés à temps plein, et donc ils ont arrêté de travailler au MIT.

note: type: Content of: <div><ol><li>
en: The background of this plan, which I did not state explicitly in the talk, is that during an initial period the ex-AI-Lab hackers, whether at Symbolics or LMI, continued contributing their changes to the MIT Lisp Machine system&mdash;even though the contract did not require this.  Symbolics' plan was to rupture this cooperation unilaterally.
fr: <a href="#foot-4-rev" class="nounderline">&#8593;</a> L'arrière-pensée de ce plan, que je n'ai pas explicitée dans le discours, était que durant cette période initiale les ex-hackers du labo d'IA, que ce soit chez Symbolics ou chez LMI, continuent à apporter leurs modifications au système pour machine Lisp du MIT, bien que le contrat ne l'exige pas. Le plan de Symbolics était de briser cette coopération unilatéralement.

note: type: Content of: <div><ol><li>
en: It was not that I cared particularly about the fate of LMI, but rather I did not want to let Symbolics gain through its aggression against the AI Lab.
fr: <a href="#foot-5-rev" class="nounderline">&#8593;</a> Ce n'est pas que le sort de LMI m'intéressait particulièrement, mais plutôt que je ne voulais pas laisser Symbolics gagner grâce à son agression contre le labo d'IA.

note: type: Content of: <div><ol><li>
en: This statement has been misconstrued as saying that I never, ever looked at Symbolics' code.  Actually it says I did look, at first.  The Symbolics source code was available at MIT, where I was entitled to read it, and at first that's how I found out about their changes.
fr: <a href="#foot-6-rev" class="nounderline">&#8593;</a> Cette phrase a été mal interprétée ; je n'aurais, paraît-il, jamais, à aucun moment jeté un œil sur le code de Symbolics. En réalité, cette phrase dit que je l'ai bel et bien regardé, au début. Le code source de Symbolics était disponible au MIT où j'étais en droit de le lire, et au début c'est ainsi que je me suis rendu compte de leurs modifications.

note: type: Content of: <div><ol><li><p>
en: But that meant I had to make a special effort to solve each problem differently, in order to avoid copying Symbolics code.  After a while, I concluded it was better not to even look.  That way I could write code in whatever way was best, without concern for what might be in Symbolics' code.
fr: Mais cela signifiait que je devais faire un effort particulier pour résoudre chaque problème différemment, de manière à éviter de copier le code de 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 de Symbolics.

note: type: Content of: <div><ol><li>
en: Symbolics at one point protested to MIT that my work, by thwarting their plan, had cost Symbolics a million dollars.
fr: <a href="#foot-7-rev" class="nounderline">&#8593;</a> Symbolics s'est plaint au MIT que mon travail, en contrant leur plan, avait coûté à Symbolics un million de dollars.

note: type: Content of: <div><ol><li>
en: I don't mind if a very complex and heavyweight function takes keyword arguments.  What bothers me is making simple basic functions such as &ldquo;member&rdquo; use them.
fr: <a href="#foot-8-rev" class="nounderline">&#8593;</a> Cela ne me dérange pas si une mégafonction très complexe prend des arguments mots-clés. Ce qui me dérange, c'est de les mettre dans des fonctions simples et basiques comme « member ».

note: type: Content of: <div><ol><li>
en: In 2021, this book can be purchased from <a href="https://shop.fsf.org/books-docs/free-software-free-society-selected-essays-richard-m-stallman-3rd-edition"> GNU Press</a>.
fr:  <a href="#foot-9-rev" class="nounderline">&#8593;</a>En 2021, on peut acheter ce livre sur <a href="https://shop.fsf.org/books-docs/free-software-free-society-selected-essays-richard-m-stallman-3rd-edition">GNU Press</a>.

note: TRANSLATORS: Use space (SPC) as msgstr if you don't have notes. type: Content of: <div>
en: *GNUN-SLOT: TRANSLATOR'S NOTES*
fr: <hr /><b>Notes de traduction</b><ol id="translator-notes-alpha">
    <li><a id="TransNote1" href="#TransNote1-rev" class="nounderline">&#8593;</a> 
    <i>Incompatible Timesharing System</i> (ITS) : « système à temps partagé incompatible », conçu par l'équipe du laboratoire d'intelligence artificielle et nommé en opposition avec CTSS <i>(Compatible Time Sharing System)</i>, système d'exploitation utilisé précédemment au MIT.</li>
    <li><a id="TransNote2" href="#TransNote2-rev" class="nounderline">&#8593;</a> 
    <i>Garbage collection</i> : mise à jour de tables d'allocation de mémoire (d'après <cite>Le Jargon Français</cite>).</li>
    <li><a id="TransNote3" href="#TransNote3-rev" class="nounderline">&#8593;</a> 
    En anglais, le mot <i>free</i> veut dire libre, mais aussi gratuit, d'où la confusion possible.</li>
    </ol>

note: type: Content of: <div><div><p>
en: Please send general FSF &amp; GNU inquiries to <a href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>.  There are also <a href="/contact/">other ways to contact</a> the FSF.  Broken links and other corrections or suggestions can be sent to <a href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.
fr: Veuillez envoyer les requêtes concernant la FSF et GNU à &lt;<a href="mailto:gnu@gnu.org">gnu@gnu.org</a>&gt;. Il existe aussi <a href="/contact/">d'autres moyens de contacter</a> la FSF. Les liens orphelins et autres corrections ou suggestions peuvent être signalés à &lt;<a href="mailto:webmasters@gnu.org">webmasters@gnu.org</a>&gt;.

note: TRANSLATORS: Ignore the original text in this paragraph, replace it with the translation of these two: We work hard and do our best to provide accurate, good quality translations.  However, we are not exempt from imperfection. Please send your comments and general suggestions in this regard to <a hr
en: Please see the <a href="/server/standards/README.translations.html">Translations README</a> for information on coordinating and contributing translations of this article.
fr: Merci d'adresser vos commentaires sur les pages en français à &lt;<a href="mailto:trad-gnu@april.org">trad-gnu@april.org</a>&gt;, et sur les traductions en général à &lt;<a href="mailto:web-translators@gnu.org">web-translators@gnu.org</a>&gt;. Si vous souhaitez y contribuer, vous trouverez dans le <a href="/server/standards/README.translations.html">guide de traduction</a> les infos nécessaires.

note: type: Content of: <div><p>
en: This page is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nd/4.0/">Creative Commons Attribution-NoDerivatives 4.0 International License</a>.
fr: Cette page peut être utilisée suivant les conditions de la licence <a rel="license" href="http://creativecommons.org/licenses/by-nd/4.0/deed.fr">Creative Commons attribution, pas de modification, 4.0 internationale (CC BY-ND 4.0)</a>.

note: TRANSLATORS: Use space (SPC) as msgstr if you don't want credits. type: Content of: <div><div>
en: *GNUN-SLOT: TRANSLATOR'S CREDITS*
fr: Traduction : Marc de Maillard<br /> Révision : <a href="mailto:trad-gnu@april.org">trad-gnu@april.org</a>

note: timestamp start type: Content of: <div><p>
en: Updated:
fr: Dernière mise à jour :
