• [^] # Re: paradigmes/univers ≠

    Posté par (site web personnel, Mastodon) . En réponse au journal Les doutes d'un gars qui écrit: sérieusement se mettre à Emacs, ou pas ?. Évalué à 1. Dernière modification le 12 mai 2021 à 09:11.

    La configuration dans Emacs se fait en lisp, qui n'est autre que le langage dans lequel est codé Emacs. Configurer Emacs est égal à recoder Emacs. Il n'y a pas de limite.

    Attention que ce n'est pas tout à fait vrai...

    Aussi bien le Emacs originel (sur PDP-10) que ceux actuels sous les systèmes de type Unix ne sont en Lisp... Pour les Unix-like, y compris GNU/Linux, le cœur de l'éditeur est écrit en C ; j'y reviens plus tard.

    Il a fallu attendre le portage sur une machine Lisp (SINE, EINE, ZWEI) pour avoir un éditeur écrit en Lisp, qui était l'équivalent à la fois du C ou du FORTRAN (compilation haut niveau) et du BASIC (interprétation interactive) sur ces machines là. Quelques autres suivront : le portage sous Multics utilisera MacLisp (dialecte écrit en assembleur PDP pour ITS, et en PL/I pour Multics) et Zmacs (la suite propriétaire de ZWEI) utilisera ZetaLisp.

    Pour en revenir aux implémentations unixiennes, il a actuellement un certain nombre d'éditeurs de textes qui ont le fonctionnement du Emacs de base sans la personnalisation (plus précisément le système d'extension par MACroS) ; et aucun d'entre eux n'est en Lisp, mais plutôt en C pour les plus anciens (de nouveaux ou futur programmes du genre sont ou seront probablement en C++ ou Rust ou Java ou Go ou que sais-je)

    Les implémentation complétes/extensibles de référence sont écrit en C, avec un langage d'extension dérivé de Lisp : ce sera Mocklisp pour Gosling Emacs ; Emacs Lisp pour GNU Emacs et XEmacs !

    Il n'y a pas, à ma connaissance, d'utilisation de CL (Emacs Lisp s'en rapproche mais il y a quelques différences qui parfois cassent les pieds) mais de plus en plus d'application sont extensibles en Scheme via Guile et script-fu

    À noter aussi que d'autres éditeurs ont fait le choix d'être extensibles via un certain langage de programmation, comme Lua ou JS, au lieu d'inventer leur DSL. C'est un peu la même idée...

    "It is seldom that liberty of any kind is lost all at once." ― David Hume