Obligement - L'Amiga au maximum

Vendredi 23 mai 2025 - 16:06  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in English


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Dossier : D'où vient Vim ?
(Article écrit par Sinclair Target et extrait de TwoBitHistory - août 2018)


Je suis récemment tombé sur un format de fichier connu sous le nom de "Intel HEX". Pour autant que je sache, les fichiers Intel HEX (qui utilisent l'extension ".hex") sont destinés à rendre les images binaires moins opaques en les encodant sous forme de lignes de chiffres hexadécimaux. Apparemment, ils sont utilisés par les personnes qui programment des microcontrôleurs ou qui ont besoin de graver des données en ROM. Quoi qu'il en soit, lorsque j'ai ouvert un fichier HEX dans Vim pour la première fois, j'ai découvert quelque chose de choquant. Il s'agissait d'un format de fichier qui, du moins pour moi, était profondément ésotérique, mais que Vim connaissait déjà. Chaque ligne d'un fichier HEX est un enregistrement divisé en différents champs - Vim avait pris les devants et coloré chacun des champs d'une couleur différente. Stupéfait, j'ai tapé "set ft?". Et, triomphant, Vim a répondu "filetype=hex".

Vim est partout. Il est utilisé par tellement de gens que quelque chose comme la gestion des fichiers HEX ne devrait pas être une surprise. Vim est préinstallé sur macOS et jouit d'une grande popularité dans le monde Linux. Il est familier même à ceux qui le détestent, car suffisamment d'outils populaires en ligne de commande lancent les utilisateurs dans Vim par défaut. Et le fait que les non-initiés se fassent piéger dans Vim est devenu un mème. Certains grands sites Web, dont Facebook, font défiler les pages vers le bas lorsque vous appuyez sur la touche "j" et vers le haut lorsque vous appuyez sur la touche "k". Il s'agit là de la marque de fabrique improbable de la propagation de Vim dans la culture numérique.

Et pourtant, Vim est aussi un mystère. Contrairement à React, par exemple, dont tout le monde sait qu'il est développé et maintenu par Facebook, Vim n'a pas de mécène évident. Malgré son omniprésence et son importance, il ne semble pas y avoir de comité ou d'organisation qui prenne des décisions concernant Vim. Vous pourriez passer plusieurs minutes à parcourir le site Web de Vim sans avoir une idée plus précise de qui a créé Vim et pourquoi. Si vous lancez Vim sans lui donner d'argument de fichier, vous verrez le message de démarrage de Vim, qui dit que Vim est développé par "Bram Moolenaar et al.". Mais cela ne vous dit pas grand-chose. Qui est Bram Moolenaar et qui sont ses confrères de l'ombre ?

Peut-être plus important encore, puisque nous posons des questions, pourquoi quitter Vim implique-t-il de taper ":wq" ? Bien sûr, il s'agit d'une opération d'écriture suivie d'une opération de sortie, mais ce n'est pas une convention particulièrement intuitive. Qui a décidé que la copie de texte devait plutôt s'appeler "yanking" ? Pourquoi ":%s/foo/bar/gc" est-il l'abréviation de "trouver et remplacer" ? Les particularités de Vim semblent trop arbitraires pour avoir été inventées, mais alors d'où viennent-elles ?

La réponse, comme c'est souvent le cas, commence par cet ancien creuset de l'informatique, Bell Labs. D'une certaine manière, Vim n'est que la dernière itération d'un logiciel - appelons-le "éditeur de texte wq" - qui a été continuellement développé et amélioré depuis l'aube de l'ère Unix.

Ken Thompson écrit un éditeur de ligne

En 1966, les laboratoires Bell engagèrent Ken Thompson. Ce dernier venait d'obtenir une maîtrise en génie électrique et en informatique à l'université de Californie, à Berkeley. Il y avait utilisé un éditeur de texte appelé QED, écrit pour le Berkeley Timesharing System entre 1965 et 1966 (1). L'une des premières choses que Ken Thompson a faites après son arrivée aux Bell Labs a été de réécrire QED pour le MIT Compatible Time-Sharing System (système de partage du temps compatible avec le MIT). Plus tard, il écrira une autre version de QED pour le projet Multics. En cours de route, il a étendu le programme pour que les utilisateurs puissent rechercher des lignes dans un fichier et effectuer des substitutions à l'aide d'expressions régulières (2).

Le projet Multics, qui, comme le Berkeley Timesharing System, visait à créer un système d'exploitation à temps partagé commercialement viable, était un partenariat entre le MIT, General Electric et Bell Labs. AT&T a finalement décidé que le projet n'allait nulle part et s'est retiré. Ken Thompson et son collègue Dennis Ritchie, chercheur aux Bell Labs, n'ayant plus accès à un système à temps partagé et n'ayant plus la "sensation d'informatique interactive" qu'offraient ces systèmes, ont entrepris de créer leur propre version, qui allait être connue sous le nom d'Unix (3). En août 1969, alors que sa femme et son jeune fils étaient en vacances en Californie, Ken Thompson a mis au point les composants de base du nouveau système, consacrant "une semaine chacun au système d'exploitation, à l'interpréteur de commandes, à l'éditeur et à l'assembleur" (4).

L'éditeur s'appelait "ed". Il était basé sur QED mais n'était pas une réimplémentation exacte. Ken Thompson a décidé d'abandonner certaines fonctionnalités de QED. La gestion des expressions régulières a été réduite afin que seules les expressions régulières relativement simples soient comprises. QED permettait aux utilisateurs d'éditer plusieurs fichiers à la fois en ouvrant plusieurs tampons, mais ed ne pouvait travailler qu'avec un seul tampon à la fois. Et alors que QED pouvait exécuter un tampon contenant des commandes, ed ne faisait rien de tel. Ces simplifications étaient peut-être nécessaires. Dennis Ritchie a déclaré que se passer des expressions régulières avancées de QED n'était "pas une grande perte " (5).

ed fait maintenant partie de la spécification POSIX, donc si vous avez un système compatible POSIX, il est installé sur votre ordinateur. Cela vaut la peine de bidouiller avec, car de nombreuses commandes ed font aujourd'hui partie de Vim. Pour écrire un tampon sur le disque, par exemple, vous devez utiliser la commande "w". Pour quitter l'éditeur, vous devez utiliser la commande "q". Ces deux commandes peuvent être spécifiées sur la même ligne à la fois - d'où "wq". Comme Vim, ed est un éditeur modal ; pour passer du mode commande au mode saisie, vous devez utiliser la commande d'insertion "i", la commande d'ajout "a" ou la commande de modification "c", selon la façon dont vous essayez de transformer votre texte. ed a également introduit la syntaxe "s/foo/bar/g" pour trouver et remplacer, ou "substituer", du texte.

Compte tenu de toutes ces similitudes, on pourrait s'attendre à ce que l'utilisateur moyen de Vim n'ait aucune difficulté à utiliser ed. Mais ed n'est pas du tout comme Vim sur un autre point important. ed est un véritable éditeur de ligne. Il a été écrit et largement utilisé à l'époque de l'imprimante télétype. Lorsque Ken Thompson et Dennis Ritchie travaillaient sur Unix, ils ressemblaient à ceci :

Ken Thompson et Dennis Ritchie
Ken Thompson (assis) interagissant avec un PDP-11 par télétype, à côté de Dennis Ritchie (debout)

ed ne vous permet pas d'éditer des lignes à la place des autres lignes du tampon ouvert, ni de déplacer un curseur, car ed devrait réimprimer le fichier entier à chaque fois que vous y apportez une modification. En 1969, il n'existait aucun mécanisme permettant à ed "d'effacer" le contenu de l'écran, car l'écran n'était qu'une feuille de papier et tout ce qui avait déjà été édité l'avait été à l'encre. Si nécessaire, vous pouvez demander à ed d'afficher une série de lignes à l'aide de la commande list "l", mais la plupart du temps, vous travaillez sur du texte que vous ne pouvez pas voir. Utiliser ed, c'est donc un peu comme essayer de s'orienter dans une maison sombre avec une lampe de poche peu puissante. Vous ne pouvez pas voir tout ce qui se trouve d'un coup, et vous devez faire de votre mieux pour vous souvenir de l'endroit où se trouve chaque chose.

Voici un exemple de session ed. J'ai ajouté des commentaires (après le caractère "#") expliquant le but de chaque ligne, bien que si ces commentaires étaient réellement saisis, ed ne les reconnaîtrait pas comme des commentaires et se plaindrait :

[sinclairtarget 09:49 ~]$ ed
i                           # Entrer dans le mode d'entrée
Hello world!

Isn't it a nice day?
.                           # Saisie terminée
1,2l                        # Lister les lignes 1 à 2
Hello world!$
$
2d                          # Effacer ligne 2
,l                          # Lister le tampon complètement
Hello world!$
Isn't it a nice day?$
s/nice/terrible/g           # Substituer globallement
,l
Hello world!$
Isn't it a terrible day?$
w foo.txt                   # Écrire dans foo.txt
38                          # (octets écrits)
q                           # Quitter
[sinclairtarget 10:50 ~]$ cat foo.txt
Hello world!
Isn't it a terrible day?

Comme vous pouvez le constater, ed n'est pas un programme particulièrement bavard.

Bill Joy écrit un éditeur de texte

ed a assez bien fonctionné pour Ken Thompson et Dennis Ritchie. D'autres l'ont trouvé difficile à utiliser et il a acquis la réputation d'être un exemple particulièrement flagrant de l'hostilité d'Unix envers les novices (6). En 1975, un homme nommé George Coulouris a développé une version améliorée d'ed sur le système Unix installé au Queen Mary's College, à Londres. George Coulouris a écrit son éditeur pour tirer parti des écrans vidéo dont il disposait au Queen Mary's College. Contrairement à ed, le programme de George Coulouris permettait aux utilisateurs d'éditer une seule ligne à l'écran, en naviguant à travers la ligne touche par touche (imaginez l'utilisation de Vim sur une ligne à la fois). George Coulouris a appelé son programme "em", ou "editor for mortals" (éditeur pour les mortels), ce qui lui aurait été inspiré après que Ken Thompson eut rendu visite à Queen Mary's, vu le programme que George Coulouris avait créé et l'eut rejeté en disant qu'il n'avait pas besoin de voir l'état d'un fichier pendant qu'il le modifiait (7).

En 1976, George Coulouris l'a emmené avec lui à l'Université de Berkeley, où il a passé l'été en tant que visiteur au département des sciences de la vie. C'était exactement dix ans après que Ken Thompson ait quitté Berkeley pour travailler aux Bell Labs. À Berkeley, George Coulouris a rencontré Bill Joy, un étudiant diplômé qui travaillait sur Berkeley Software Distribution (BSD). George Coulouris a montré ed à Bill Joy, qui, à partir du code source de George Coulouris, a développé une version améliorée de ed appelée "ex", pour "extended ed". La version 1.1 de ex a été livrée avec la première version de BSD Unix en 1978. ex était largement compatible avec ed, mais il a ajouté deux modes supplémentaires : un mode "ouvert", qui permettait l'édition d'une seule ligne comme cela avait été possible avec em, et un mode "visuel", qui prenait tout l'écran et permettait l'édition en direct d'un fichier entier comme nous en avons l'habitude aujourd'hui.

Pour la deuxième version de BSD en 1979, un exécutable nommé "vi" a été introduit qui ne faisait rien de plus que d'ouvrir ex en mode visuel (8).

ex/vi (dorénavant vi) a établi la plupart des conventions que nous associons aujourd'hui à Vim et qui ne faisaient pas déjà partie de ed. Le terminal vidéo que Bill Joy utilisait était un Lear Siegler ADM-3A, dont le clavier ne comportait pas de touches de curseur. À la place, des flèches étaient peintes sur les touches h, j, k et l, ce qui explique pourquoi Bill Joy utilisait ces touches pour déplacer le curseur dans vi. La touche d'échappement du clavier de l'ADM-3A se trouvait également à l'endroit où l'on trouverait aujourd'hui la touche de tabulation, ce qui explique comment une touche aussi difficile d'accès a pu être affectée à une opération aussi courante que la sortie d'un mode. Le caractère ":" qui préfixe les commandes provient également de vi, qui en mode normal (c'est-à-dire le mode dans lequel on entre en lançant ex) utilisait ":" comme invite. Cela répondait à une plainte de longue date concernant ed, qui, une fois lancé, accueille les utilisateurs dans un silence total. En mode visuel, sauvegarder et quitter impliquait désormais de taper le classique ":wq". Les marques "Yanking" et "putting", ainsi que la commande "set" permettant de définir des options, faisaient toutes partie du vi original. Les fonctions que nous utilisons aujourd'hui dans Vim pour l'édition de texte de base sont en grande partie des fonctions de vi.

Ken Thompson et Dennis Ritchie
Clavier de l'ADM-3A

vi était le seul éditeur de texte fourni avec BSD Unix, à l'exception de ed. À l'époque, Emacs pouvait coûter des centaines de dollars (c'était avant GNU Emacs), et vi est donc devenu extrêmement populaire. Mais vi était un descendant direct de ed, ce qui signifiait que le code source ne pouvait pas être modifié sans une licence AT&T. Cette situation a incité plusieurs personnes à créer des versions libres de vi. STEVIE (ST Editor for VI Enthusiasts) est apparu en 1987, Elvis en 1990 et nvi en 1994. Certains de ces clones ont ajouté des fonctionnalités supplémentaires telles que la coloration syntaxique et les fenêtres fractionnées. Elvis, en particulier, a vu nombre de ses fonctionnalités incorporées dans Vim, car de nombreux utilisateurs d'Elvis ont insisté pour qu'elles le soient (9).

Bram Moolenaar écrit Vim

"Vim", dont l'abréviation est désormais "Vi Improved", signifiait à l'origine "Vi Imitation". Comme beaucoup d'autres clones de vi, Vim a commencé comme une tentative de reproduire vi sur une plate-forme où il n'était pas disponible. Bram Moolenaar, un ingénieur logiciel néerlandais travaillant pour une société de photocopies à Venlo, aux Pays-Bas, voulait quelque chose comme vi pour son tout nouvel Amiga 2000. Bram Moolenaar avait pris l'habitude d'utiliser vi sur les systèmes Unix de son université et il l'avait maintenant "dans les doigts" (10). En 1988, Bram Moolenaar a donc commencé à travailler sur Vim en utilisant STEVIE, le clone de vi existant, comme point de départ.

Bram Moolenaar a eu accès à STEVIE parce que STEVIE était apparu auparavant sur ce qu'on appelait une disquette Fred Fish. Fred Fish était un programmeur américain qui envoyait chaque mois une disquette contenant une sélection des meilleurs logiciels libres disponibles pour la plate-forme Amiga. N'importe qui pouvait demander une disquette pour rien de plus que le prix de l'affranchissement. Plusieurs versions de STEVIE ont été publiées sur les disquettes Fred Fish. La version utilisée par Bram Moolenaar avait été publiée sur la disquette Fred Fish 256 (11). (il est décevant de constater que les disquettes Fred Fish n'ont rien à voir avec Freddi Fish, alias Marine Malice en français).

Bram Moolenaar a apprécié STEVIE mais a rapidement remarqué qu'il manquait de nombreuses commandes vi (12). Ainsi, pour la première version de Vim, Bram Moolenaar a fait de la compatibilité vi sa priorité. Quelqu'un d'autre avait écrit une série de macros vi qui, lorsqu'elles étaient exécutées par un éditeur compatible vi, permettaient de résoudre un labyrinthe généré de manière aléatoire. Bram Moolenaar a réussi à faire fonctionner ces macros dans Vim. En 1991, Vim a été publié pour la première fois sur la disquette 591 de Fred Fish sous le nom de "Vi Imitation" (13). Bram Moolenaar avait ajouté quelques fonctionnalités (notamment une annulation à plusieurs niveaux et un mode "quickfix" pour les erreurs de compilation) qui signifiaient que Vim avait surpassé vi. Mais Vim restera "Vi Imitation" jusqu'à Vim 2.0, publié en 1993 via FTP.

Bram Moolenaar, avec l'aide occasionnelle de divers collaborateurs Internet, a ajouté des fonctionnalités à Vim à un rythme soutenu. Vim 2.0 a introduit la gestion de l'option "wrap" et du défilement horizontal dans les longues lignes de texte. Vim 3.0 a ajouté la gestion des fenêtres scindées et des tampons, une fonctionnalité inspirée par le clone de vi, nvi. Vim sauvegardait également chaque tampon dans un fichier d'échange, de sorte que le texte édité puisse survivre à un plantage. Vimscript a fait sa première apparition dans Vim 5.0, en même temps que la gestion de la coloration syntaxique. Pendant ce temps, la popularité de Vim augmentait. Il a été porté sur MS-DOS, Windows, Mac et même Unix, où il était en concurrence avec l'original vi.

En 2006, Vim a été élu éditeur le plus populaire par les lecteurs de Linux Journal (14). Aujourd'hui, selon l'enquête 2018 de Stack Overflow auprès des développeurs, Vim est l'éditeur en mode texte (c'est-à-dire l'émulateur de terminal) le plus populaire, utilisé par 25,8% de tous les développeurs de logiciels (et 40% des administrateurs système/ingénieur DevOps) (15). Pendant un certain temps, à la fin des années 1980 et tout au long des années 1990, les programmeurs se sont livrés à la "guerre des éditeurs", qui opposait les utilisateurs d'Emacs aux utilisateurs de vi (et finalement de Vim). Bien qu'Emacs ait encore des adeptes, certains pensent que la guerre des éditeurs est terminée et que Vim a gagné (16). L'enquête Stack Overflow Developer Survey de 2018 suggère que c'est bien le cas ; seulement 4,1% des personnes interrogées utilisaient Emacs.

Comment Vim a-t-il connu un tel succès ? Il est évident que les gens apprécient les fonctionnalités offertes par Vim. Mais je dirais que la longue histoire de Vim montre que ses avantages ne se limitent pas à ses fonctionnalités. La base de code de Vim ne remonte qu'à 1988, lorsque Bram Moolenaar a commencé à travailler dessus. "L'éditeur de texte wq", quant à lui, la vision plus large de la manière dont un éditeur de texte Unix devrait fonctionner, remonte à un demi-siècle. "L'éditeur de texte wq" a eu quelques expressions concrètes différentes, mais grâce en partie à l'attention inhabituelle portée à la compatibilité ascendante par Bill Joy et Bram Moolenaar, les bonnes idées se sont accumulées progressivement au fil du temps. "L'éditeur de texte wq", dans ce sens, est l'un des projets en source ouverte les plus anciens et les plus réussis, ayant bénéficié des contributions de certains des plus grands esprits du monde de l'informatique. Je ne pense pas que l'approche du développement "jeune société qui jette aux oubliettes tous les précédents et crée un nouveau logiciel perturbateur" soit nécessairement mauvaise, mais Vim nous rappelle que l'approche collaborative et incrémentale peut aussi produire des merveilles.

Note : Bram Moolenaar est mort 3 août 2023, à la suite d'une maladie qui a rapidement progressé en quelques semaines. Son éditeur de texte est toujours présent dans sa version la plus récente (9.x) sur Amiga (AmigaOS 4, MorphOS et AROS).

Note 2 : si vous avez apprécié cet article, sachez que d'autres de ce type sont publiés toutes les quatre semaines ! Suivez @TwoBitHistory sur Twitter ou abonnez-vous au flux RSS pour être sûr de savoir quand un nouvel article est publié.

Références
  1. Butler Lampson, "Systems", Butler Lampson, consulté le 5 août 2018, bwlampson.site/Systems.htm.
  2. Dennis Ritchie, "An Incomplete History of the QED Editor", consulté le 5 août 2018, www.bell-labs.com/usr/dmr/www/qed.html.
  3. Peter Salus, "The Daemon, the GNU, and the Penguin", Groklaw, 14 avril 2005, consulté le 5 août 2018, www.groklaw.net/article.php?story=20050414215646742.
  4. ibid.
  5. Dennis Ritchie, "An Incomplete History of the QED Editor", consulté le 5 août 2018, www.bell-labs.com/usr/dmr/www/qed.html.
  6. Donald Norman, "The Truth about Unix: The User Interface Is Horrid", Datamation, consulté le 5 août 2018, www.ceri.memphis.edu/people/smalley/ESCI7205_misc_files/The_truth_about_Unix_cleaned.pdf.
  7. George Coulouris, "George Coulouris: A Bit of History", site Internet de George Coulouris, septembre 1998, consulté le 5 août 2018, www.eecs.qmul.ac.uk/~gc/history/index.html.
  8. "Second Berkeley Software Distribution Manual", Roguelife, consulté le 5 août 2018, roguelife.org/~fujita/COOKIES/HISTORY/2BSD/vi.u.html.
  9. Sven Guckes, "VIM Wishlist", Vmunix, 15 mai 1995, consulté le 5 août 2018, www.vmunix.com/vim/wish.html.
  10. Bram Moolenaar, "Vim 25" (conférence, Zurich, 2 novembre 2016), 13 décembre 2016, consulté le 5 août 2018, www.youtube.com/watch?v=ayc_qpB-93o&t=4m58s.
  11. ibid. (?t=6m15s).
  12. ibid. (?t=7m6s).
  13. "Fish Disk 1 - 1120 ", Amiga Stuff, consulté le 5 août 2018, www.amiga-stuff.com/pd/fish.html.
  14. "2005 Linux Journal Reader's Choice Awards", Linux Journal, 28 septembre 2005, consulté le 5 août 2018, www.linuxjournal.com/article/8520#N0x850cd80.0x87983bc.
  15. "Stack Overflow Developer Survey 2018", Stack Overflow, consulté le 5 août 2018, insights.stackoverflow.com/survey/2018/#development-environments-and-tools.
  16. Bruce Byfield, "The End of the Editor Wars", Linux Magazine, 11 mai 2015, consulté le 5 août 2018, www.linux-magazine.com/Online/Blogs/Off-the-Beat-Bruce-Byfield-s-Blog/The-End-of-the-Editor-Wars.


[Retour en haut] / [Retour aux articles]