È stato sviluppato originariamente da Richard Stallman a partire dal settembre 1984[1], come insieme di Editor MACroS per l'editor TECO.
Dalla sua incarnazione originale, Emacs è stato reimplementato svariate volte. Nonostante questo, le versioni più popolari sono due: GNU Emacs (sempre scritto da Stallman) e il suo parente stretto XEmacs.
La parola in minuscolo emacs può essere usata per identificare quella classe di editor dal funzionamento simile all'Emacs originale. La parola Emacs (con la maiuscola) è spesso usata come sinonimo di GNU Emacs.
Emacs fu creato al laboratorio di intelligenza artificiale al MIT. Prima della sua introduzione, l'editor comunemente usato sul sistema operativo ITS (sistema operativo dei computer PDP-6 e PDP-10 presenti nel laboratorio) era TECO. A differenza degli editor di testo moderni, TECO separava il compito della battitura del testo dalla sua modifica, così che modificare un documento richiedeva la scrittura di una serie di istruzioni per il linguaggio interno di TECO. Questo funzionamento è simile al programma ed, tuttora utilizzato.
Carl Mikkelsen, uno degli hacker al laboratorio AI del MIT, aggiunse a TECO una modalità di modifica-visualizzazione, che permise di aggiornare la schermata presentata ad ogni pressione di un tasto da parte dell'utente.
Questa modalità molto più intuitiva, usata dalla maggior parte degli editor di testo moderni, fu introdotta con l'editor "E" sviluppato ai laboratori di intelligenza artificiale di Stanford. Nel 1974, Richard Stallman (un altro hacker) aggiunse una funzionalità macro alla modalità modifica-visualizzazione di TECO. Questo permise all'utente di definire sequenze di tasti associate all'esecuzione di programmi TECO, in modo da completare determinati compiti come leggere o scrivere dei file.
Gli utenti al laboratorio di AI accumularono in breve tempo una grande collezione di macro personalizzate. Nel 1976, Guy Steele cercò di unificare questi insiemi divergenti di macro. Il suo progetto fu completato da Stallman, che scrisse anche funzionalità per l'estensione e l'auto-documentazione. Il programma risultante fu chiamato EMACS. Pur infatti essendo costruito sopra TECO, il suo funzionamento era così differente da doversi considerare un editor di testo a sé stante.
Schermata iniziale di benvenuto visualizzata nella versione di GNU Emacs in ambiente grafico.
"EMACS" sta per "Editor MACroS". Secondo Stallman, è stato utilizzato il nome Emacs "perché non era usata al tempo come un'abbreviazione su ITS". È stato fatto notare che "Emack and Bolio's" era il nome di un negozio di gelati molto popolare a Boston, situato a pochi passi dal MIT. Il programma di formattazione testi usato su ITS era chiamato BOLIO.
EMACS divenne presto l'editor standard su ITS. Fu anche portato da ITS ai sistemi operativi Tenex e TOPS-20 da Stallman e Michael McMahon.
Svariati editor simili ad Emacs furono sviluppati negli anni seguenti, inclusi EINE (EINE Is Not EMACS) e ZWEI (ZWEI Was EINE Initially) di Michael McMahon e Daniel Weinreb. Nel 1978, Bernard Greenberg scrisse Emacs per Multics al Honeywell's Information Systems Lab di Cambridge. Questo editor fu sviluppato in MacLisp, un dialetto del linguaggio di programmazione Lisp. Estensioni al programma create dagli utenti venivano scritte sempre in Lisp. La scelta di usare Lisp diede maggiore estendibilità, scelta poi imitata dalla maggior parte degli emacs successivi.
Gosling Emacs, il primo editor simile ad Emacs funzionante su Unix, fu scritto da James Gosling nel 1981. Era scritto in C e utilizzava una versione ridotta di Lisp, conosciuta come Mocklisp, come linguaggio di estensione.
Nel 1984, Stallman iniziò a scrivere una nuova implementazione di emacs, GNU Emacs, che divenne il primo programma del nascente progetto GNU. GNU Emacs fu scritto in C e usava Emacs Lisp per le estensioni. La prima versione di GNU Emacs distribuita largamente fu la revisione 15.34, apparsa nel 1985. Come Gosling Emacs, GNU Emacs girava su Unix; però, GNU Emacs aveva molte più funzionalità, in particolare un'implementazione Lisp completa come linguaggio di estensione. Come risultato, ben presto rimpiazzò Gosling Emacs come editor Emacs de facto su Unix.
Iniziando nel 1991, Lucid Emacs fu sviluppato da Jamie Zawinski e altri presso Lucid Inc., basandosi su una versione alpha di GNU Emacs 19. Presto i due codici base diversero, e i separati gruppi di sviluppo smisero di tentare di reintegrarli in un singolo programma. Questo fu uno dei più famosi fra i primi fork di software libero. Lucid Emacs da allora fu rinominato XEmacs; insieme a GNU Emacs rimane l'editor emacs più popolare in uso ad oggi.
Personalizzazione.
Il codice sorgente di basso livello di Emacs è scritto nel linguaggio di programmazione C. Componenti scritti in questo linguaggio sono il sistema grafico e l'interprete per Emacs Lisp (un dialetto del linguaggio di programmazione LISP) oltre a tutte quelle parti che risultano critiche per l'efficienza. La maggior parte del codice per la modifica del testo è scritta in Emacs Lisp. Quando Emacs è in esecuzione, l'interprete carica e valuta (esegue) questo codice Lisp.
L'utente può estendere e personalizzare il codice Lisp da Emacs stesso. Emacs fornisce numerosi strumenti che permettono questo, inclusi comandi per leggere la documentazione di funzioni e variabili già caricate (questo riflette la definizione di auto-documentante). Attraverso la valutazione di codice Lisp fornito dall'utente, il comportamento di Emacs può essere modificato "al volo", senza che ci sia bisogno di ricompilare il programma o rilanciare l'editor. Lisp è una buona scelta come linguaggio per questo scopo, perché permette di trattare le funzioni come dati.
Il risultato di tutto questo è che è molto facile aggiungere funzionalità personalizzate a Emacs. Emacs include numerose estensioni standard, come Emacs/W3 (un browser web), Gnus (uno strumento per leggere E-Mail e discussioni Usenet), un'implementazione del gioco Tetris e Doctor, un'implementazione di ELIZA che simula una psicoterapia Rogeriana. In aggiunta, Emacs può essere usato come IDE, permettendo ai programmatori di modificare, compilare, e fare il debug del proprio codice attraverso una singola interfaccia.
Punto a sfavore del design di Emacs è il carico di performance aggiunto causato dal caricare ed interpretare il codice Lisp. Due acronimi scherzosi di EMACS sono Eight Megabytes And Constantly Swapping (otto Megabyte e swapping costante), e Emacs Makes A Computer Slow (Emacs rende un computer lento). I computer moderni hanno generalmente memoria e processore adeguati in confronto ai sistemi sui quali Emacs fu implementato, tanto che questi motteggi non hanno più rilevanza. Nonostante questo, è un punto frequentemente sollevato dai detrattori di Emacs durante le cosiddette editor wars (guerre fra editor).
Ci sono altri due metodi per personalizzare Emacs, anche se nessuno così flessibile come scrivere codice Emacs Lisp. Uno è la possibilità di usare comandi per registrare macro, cioè comandi composti da sequenze di tasti. L'altro è usare il sistema "Customize", incluso in versioni recenti di Emacs, che permette agli utenti di personalizzare le variabili più comuni usando un'interfaccia grafica.
Ultime versioni pubblicate:
- May 8, 2010 - Emacs 23.2 released
- July 29, 2009 - Emacs 23.1 released
- September 5, 2008 - Emacs 22.3 released
- March 26, 2008 - Emacs 22.2 released
- June 2, 2007 - Emacs 22.1 released
- Feb 6, 2005 - Emacs 21.4 released (fixing a security hole)
- March 24, 2003 - Emacs 21.3 released
- March 18, 2002 - Emacs 21.2 released
- October 28, 2001 - Emacs 21.1 released
Screenshots.
Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog: