Emacs

De la Viquipèdia, l'enciclopèdia lliure.
Saltar a la navegació Saltar a la cerca
Emacs
programari
Logotip
Captura de pantalla d'Emacs (versió Alpha amb compatibilitat de la biblioteca GTK + i Xft amb antialiasing).
Captura de pantalla d'Emacs (versió Alpha amb compatibilitat de la biblioteca GTK + i Xft amb antialiasing ).
Tipus Editor de text
Desenvolupador David A. Moon
Data de la primera versió 1976
Última versió 27,1 (10 d'agost de 2020)
Sistema operatiu WILDEBEEST
Microsoft Windows
macOS
TECO
Llenguatge Lisp
TECO
C.
Llicència GPLv3 +
( llicència gratuïta )

Emacs és un editor de text gratuït extremadament versàtil que és molt popular entre els programadors. Va ser desenvolupat originalment per Richard Stallman partir de setembre de 1.984 [1] , com un conjunt d'E ditor MAC ro S per al TECO editor.

Emacs forma part del projecte GNU i està en desenvolupament actiu. Molts desenvolupadors, encara que no tots, estan afiliats a la Free Software Foundation (FSF). És un programari multiplataforma, les versions més populars de les quals són dues: GNU Emacs (també escrit per Stallman) i el seu parent proper XEmacs . La paraula minúscula emacs es pot utilitzar per identificar aquella classe d’editor que funciona de manera similar a l’Emacs original.

La paraula Emacs (en majúscula) s'utilitza sovint com a sinònim de GNU Emacs.

Història

Emacs es va crear al laboratori d’ intel·ligència artificial (IA) del MIT . Abans de la seva introducció, l'editor que s'utilitzava habitualment al sistema operatiu ITS ( sistema operatiu dels ordinadors PDP-6 i PDP-10 presents al laboratori) era TECO . A diferència dels editors de text moderns, TECO va separar la tasca d’escriure text de l’edició, de manera que per editar un document calia escriure un conjunt d’instruccions per al llenguatge intern de TECO.

Aquesta operació és similar al programa i , encara avui en dia.

Carl Mikkelsen, un dels pirates informàtics del laboratori d'AI del MIT, va afegir un mode de visualització d'edició a TECO, que permetia actualitzar la pantalla presentada cada vegada que l'usuari premia una tecla. Aquest mode molt més intuïtiu, utilitzat per la majoria dels editors de text moderns, es va introduir amb l'editor "E" desenvolupat als laboratoris d'intel·ligència artificial de Stanford . El 1974 , Richard Stallman (un altre hacker) va afegir una funcionalitat macro al mode de visualització d'edició de TECO. Això va permetre a l'usuari definir seqüències clau associades a l'execució de programes TECO, per tal de completar determinades tasques com ara llegir o escriure fitxers.

Els usuaris del laboratori d'AI van acumular ràpidament una gran col·lecció de macros personalitzades. El 1976 , Guy Steele va intentar unificar aquests conjunts divergents de macros. El seu disseny el va completar Stallman, que també va escriure funcions d’extensió i autodocumentació. El programa resultant es va anomenar EMACS . De fet, tot i que es va construir a sobre de TECO, el seu funcionament era tan diferent que es va haver de considerar un editor de text independent.

Pantalla de benvinguda que es mostra a la versió gràfica de GNU Emacs.

"EMACS" és la contracció de "MACroS Editor". Segons Stallman, el nom Emacs es va utilitzar "perquè no es feia servir en aquell moment com a abreviatura a ITS". S'ha assenyalat que " Emack and Bolio's " era el nom d'una gelateria molt popular a Boston , situada a poca distància del MIT. El programa de format de text utilitzat a ITS es deia BOLIO.

EMACS aviat es va convertir en l’editor estàndard d’ITS. També va ser portat per ITS als sistemes operatius Tenex i TOPS-20 per Stallman i Michael McMahon.

Els anys següents es van desenvolupar diversos editors semblants a Emacs, inclosos EINE (EINE Is Not EMACS) i ZWEI (ZWEI Was EINE Inicialment) de Michael McMahon i Daniel Weinreb. El 1978 , Bernard Greenberg va escriure Emacs per a Multics al laboratori de sistemes d'informació de Honeywell a Cambridge . Aquest editor es va desenvolupar en MacLisp , un dialecte del llenguatge de programació Lisp ( llenguatge funcional molt popular, sobretot en aquells anys, precisament en el camp de la intel·ligència artificial). Les extensions de programa creades per l'usuari sempre es van escriure a Lisp. L'elecció d'utilitzar Lisp va donar una major extensibilitat, una opció imitada per la majoria dels emacs posteriors.

Gosling Emacs, el primer editor semblant a Emacs que s’executa a Unix , va ser escrit per James Gosling el 1981 . Això es va escriure en Do i utilitzava una versió despullada de Lisp, coneguda com a Mocklisp , com a llenguatge d’ extensió.

El 1984 , Stallman va començar a escriure una nova implementació d'emacs, GNU Emacs , que es va convertir en el primer programa del naixent projecte GNU . GNU Emacs també es va escriure en C i va utilitzar Emacs Lisp per a les seves extensions. La primera versió àmpliament distribuïda de GNU Emacs va ser la revisió 15.34, que va aparèixer el 1985 . Igual que Gosling Emacs, GNU Emacs va funcionar a Unix; no obstant això, GNU Emacs tenia molta més funcionalitat, sobretot una implementació completa de Lisp com a llenguatge d'extensió. Com a resultat, aviat va substituir Gosling Emacs com a editor de facto Emacs a Unix.

A partir del 1991 , Lucid Emacs va ser desenvolupat per Jamie Zawinski i altres a Lucid Inc., basant-se en una versió alfa de GNU Emacs 19. Aviat els dos codis base van divergir i els grups de desenvolupament separats van deixar d'intentar reintegrar-los en un sol programa. Fins al llançament d’Emacs 21.1 ( 1999 ), el desenvolupament d’Emacs era relativament tancat. El projecte ha adoptat des de llavors una llista de correu de desenvolupament públic i accés CVS anònim. Com en tots els projectes de GNU, és pràctica habitual en el desenvolupament d’Emacs acceptar contribucions de codi significatives només si el col·laborador assigna els drets d’ autor del codi a la FSF, tot i que s’ha fet una excepció per al codi MULE ( MUL tilingual E xtension) [1]. ] com a titular dels drets d'autor (el govern japonès ) no va permetre aquesta cessió. Això no s'aplica als informes d'errors ni a les contribucions de codi mínim, on les contribucions mínimes es defineixen com a 10 línies de codi o menys. Aquest sistema existeix per facilitar l'aplicació del copyleft .

Descripció

El manual de GNU Emacs descriu aquest entorn com "l'editor de visualització en temps real extensible, personalitzable i autodocumentat". (l'editor en temps real, extensible, personalitzable, autodocumentat i visual.)

Interfície d'usuari

Emacs emmagatzema text en objectes anomenats buffers . L'usuari pot crear nous memòries intermèdies i tancar-ne de no utilitzades, ja que poden existir diverses memòries intermèdies al mateix temps. La majoria de memòries intermèdies contenen text carregat des d’un fitxer de text per a l’edició de l’usuari. Al mateix temps, els buffers es poden utilitzar per a altres propòsits; per exemple, l'usuari podria crear memòries buides buides per emmagatzemar temporalment text.

Cada pantalla d'Emacs (que pot ser una sola "finestra" en un sistema de finestres o una pantalla completa en un terminal ) pot mostrar un o més buffers al mateix temps. Si es mostra més d'un buffer, l'àrea de la pantalla es divideix en diverses seccions (a les quals fa referència Emacs, creant confusió, com ara finestres o finestres). En un sistema de finestres, es poden crear diverses finestres Emacs (a les quals Emacs es refereix com a marcs ).

L'usuari invoca ordres per editar text prement les tecles. A més de les ordres habituals per inserir i eliminar text, Emacs proporciona un conjunt d’ordres més exòtiques, com ara moure el punt d’edició a la següent frase, obrir tots els fitxers d’un directori i realitzar operacions de cerca i substitució. La majoria d’aquestes ordres es poden activar amb una combinació de tecles. Les versions més recents d'Emacs proporcionen menús gràfics per a les ordres més habituals. (La majoria de les ordres, fins i tot el més simple com a la inserció de caràcter, són en realitat diu funcions Emacs Lisp, es descriu a continuació).

Emacs admet moltes codificacions de caràcters , inclòs UTF-8 . S'està desenvolupant una versió amb suport complet d' Unicode . Per als usuaris amb discapacitat visual, hi ha un subsistema anomenat Emacspeak que es pot carregar. Permet utilitzar l'editor només amb comentaris audibles. Emacs també té la seva pròpia política d’assignar claus a funcions que ha evolucionat des del 1976 i que es pot descriure d’aquesta manera:

  • Les ordres s’associen a seqüències de tecles el més mnemotècniques possibles
  • En general, si una ordre invoca amb Control + lettera actua a nivell d'una sola lletra, llavors el corresponent Meta + lettera actua a nivell de la paraula i Control + Meta + lettera (si s'ha definit) actua a nivell de les estructures sintàctiques.
  • Les ordres més freqüents s’activen més ràpidament que les d’ús inferior
    • Els més habituals s’associen a Control + lettera , Meta + lettera i Control + Meta + lettera . Alguns exemples són moure’s al text, suprimir, copiar àrees de text, transposar lletres o paraules ...
    • Les ordres d'ús general menys freqüents s'activen mitjançant el prefix Control + x (per exemple, carregueu un fitxer a un buffer o deseu el contingut d'un buffer a un fitxer)
    • Les ordres típiques d'un determinat tipus de fitxer s'activen amb el prefix Control + c (compilar una font, enviar un missatge de correu electrònic)
    • altres ordres s'invoquen amb el seu nom complet donant l'ordre Meta + x (per exemple, set-background-color, per establir el color de fons on s'admeten els colors).

(Nota: Meta era una tecla present als teclats de les màquines disponibles a MIT AI Labs i té un ús similar a Shift i Control . En els ordinadors actuals sol mapar-se a la tecla Alt o a les tecles de bandierina . Com a alternativa a utilitzar la tecla Meta-lettera , podeu utilitzar la tecla ESC seguida de la lettera ).

Per facilitar la vida dels nous usuaris, però, hi ha un paquet anomenat mode cua que activa les assignacions de claus que compleixen l'estàndard CUA (típic de la GUI Motif / Windows / Mac), però el que proporciona l'estàndard CUA és només un subconjunt de allò que Emacs posa a disposició.

Personalització

El codi font de baix nivell d’Emacs està escrit en llenguatge de programació C. Els components escrits en aquest llenguatge són el sistema gràfic i l’intèrpret d’ Emacs Lisp (un dialecte de l’esmentat llenguatge LISP), així com totes aquelles parts que són crítiques per a l’eficiència. La majoria del codi per editar text està escrit a Emacs Lisp. Quan l’Emacs s’executa, l’intèrpret carrega i avalua (executa) aquest codi Lisp.

L'usuari pot ampliar i personalitzar el codi Lisp des del mateix Emacs. Emacs proporciona diverses eines que ho permeten, incloses les ordres per llegir la documentació de funcions i variables ja carregades (això reflecteix la definició d' autodocumentació ). En avaluar el codi Lisp subministrat per l'usuari, el comportament d'Emacs es pot canviar "sobre la marxa", sense necessitat de recompilar el programa ni rellançar l'editor. Lisp és una bona opció com a idioma per a aquest propòsit, ja que permet tractar les funcions com a dades (és a dir, és un llenguatge funcional ).

El resultat de tot això és que és molt fàcil afegir funcions personalitzades a Emacs. Emacs inclou diverses extensions estàndard, com ara Emacs / W3 (un navegador web ), Gnus (una eina per llegir discussions de correu electrònic i Usenet ), una implementació de jocs Tetris i Doctor, una implementació ELIZA que simula la psicoteràpia rogeriana . A més, Emacs es pot utilitzar com a IDE , cosa que permet als programadors modificar, compilar i depurar el seu propi codi mitjançant una única interfície.

El desavantatge del disseny d’Emacs és la càrrega de rendiment addicional causada per la càrrega i la interpretació del codi Lisp. Dues sigles lúdiques d'EMACS són Vuit megabytes i intercanvi constant (vuit megabytes i intercanvi constant), i Emacs fa que l'ordinador sigui lent (Emacs fa que l'ordinador sigui lent). Els ordinadors moderns solen tenir una memòria i un processador adequats en comparació amb els sistemes en què es va implementar Emacs, tant que aquestes bromes ja no importen. Malgrat això, és un punt que solen plantejar els detractors d'Emacs durant les anomenades guerres d'editors .

Hi ha dos mètodes més per personalitzar Emacs, tot i que cap de tan flexible com escriure codi Emacs Lisp. Una d’elles és la possibilitat d’utilitzar ordres per enregistrar macros , és a dir, ordres compostes de pulsacions de tecles. L'altre és utilitzar el sistema "Personalitza", inclòs en versions recents d'Emacs, que permet als usuaris personalitzar les variables més habituals mitjançant una interfície gràfica.

Funcionament intern ("buffer gap")

Icona de la lupa mgx2.svg El mateix tema en detall: Espai de memòria intermèdia .

El contingut de les memòria intermèdia s’emmagatzema com una seqüència contigua de caràcters separats per un divisor ( espai ), on es situa el punt d’edició. Es fan canvis a la memòria intermèdia movent el divisor o alterant el caràcter que segueix el divisor. Aquest esquema permet que les operacions d’edició siguin molt eficients, ja que no es canvia molta memòria. Una altra manera d’emmagatzemar documents és emmagatzemar cada línia del document en un petit buffer .

Distribució

Emacs és un programari lliure , distribuït sota els termes de la GNU GPL .

El codi font i els fitxers binaris estan disponibles via FTP des del lloc web del projecte GNU (vegeu més avall). També estan àmpliament disponibles en altres llocs d' Internet . Diversos proveïdors d' Unix (tant gratuïts com privats) freqüentment envien Emacs juntament amb el sistema operatiu .

La guerra dels editors

Icona de la lupa mgx2.svg El mateix tema en detall: Guerra dels editors .

Hi ha una (broma) "guerra religiosa" entre qui diu que el millor editor de text és Emacs i qui diu que n'hi ha .

Entre altres coses, Emacs és capaç d’emular vi per si mateix , mentre que per a la implementació d’emacs a partir de vi és necessari utilitzar scripts d’ intèrpret d’ ordres.

També hi ha una (encara més lúdica) "església d'Emacs", on principalment (nosaltres) ens burlem de la passió per aquesta poderosa eina de treball.

Això ha conduït a bromes escrites teològiques com aquest post a alt.religion.emacs en què Juliusz Chroboczek respon a Per Abrahamsen ( text original ):

PA: "D'altra banda, es pot argumentar que Emacs és un sistema operatiu, no es pot acostar molt més que això".

JC: "Tot i que estic d'acord amb vosaltres en la idea fonamental, em temo que aquesta frase menysprea l'Editor en solitari i passa per alt un dels seus misteris fonamentals; si tots no coneguéssim perfectament la vostra perfecta ortodòxia, es plantejarien acusacions de blasfèmia.

Emacs (que el vostre nom sigui honrat per sempre) no és només un sistema operatiu, és un sistema operatiu i un llenguatge de programació (The Only Programming Language - vegeu alt.religion.lisp) i un conjunt d’editors, on la programació de llenguatge és la personificació del vincle entre els editors i el sistema operatiu. Si Emacs és un de cada tres o tres en un continua sent una qüestió teològica oberta ".

Nota

Bibliografia

  • (EN) Debra Cameron, James Elliott; Marc Loy; Eric S. Raymond ; Bill Rosenblatt, Learning GNU Emacs , 3a ed., O'Reilly Media, desembre de 2004, ISBN 0-596-00648-9 .

Articles relacionats

Altres projectes

Enllaços externs

Programari lliure Portal de programari lliure : accediu a les entrades de Viquipèdia relacionades amb programari lliure