b'\n_START_ARTICLE_\nEmacs\n_START_SECTION_\nStoria di Emacs\n_START_PARAGRAPH_\nEmacs fu creato nel laboratorio di intelligenza artificiale (AI) del 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._NEWLINE_A differenza degli editor di testo moderni, TECO separava il compito della battitura del testo dalla sua modifica, cos\xc3\xac che modificare un documento richiedeva la scrittura di una serie di istruzioni per il linguaggio interno di TECO._NEWLINE_Questo funzionamento \xc3\xa8 simile al programma ed, tuttora utilizzato._NEWLINE_Carl Mikkelsen, uno degli hacker al laboratorio AI del MIT, aggiunse a TECO una modalit\xc3\xa0 di modifica-visualizzazione, che permise di aggiornare la schermata presentata ad ogni pressione di un tasto da parte dell\'utente. Questa modalit\xc3\xa0 molto pi\xc3\xb9 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\xc3\xa0 macro alla modalit\xc3\xa0 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._NEWLINE_Gli utenti al laboratorio di AI accumularono in breve tempo una grande collezione di macro personalizzate. Nel 1976, Guy Steele cerc\xc3\xb2 di unificare questi insiemi divergenti di macro. Il suo progetto fu completato da Stallman, che scrisse anche funzionalit\xc3\xa0 per l\'estensione e l\'auto-documentazione. Il programma risultante fu chiamato EMACS. Pur infatti essendo costruito sopra TECO, il suo funzionamento era cos\xc3\xac differente da doversi considerare un editor di testo a s\xc3\xa8 stante._NEWLINE_"EMACS" \xc3\xa8 la contrazione di "Editor MACroS". Secondo Stallman, \xc3\xa8 stato utilizzato il nome Emacs "perch\xc3\xa9 non era usata al tempo come un\'abbreviazione su ITS". \xc3\x88 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._NEWLINE_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._NEWLINE_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._NEWLINE_Questo editor fu sviluppato in MacLisp, un dialetto del linguaggio di programmazione Lisp (linguaggio funzionale molto in voga, soprattutto in quegli anni, proprio nell\'ambito dell\'intelligenza artificiale). Estensioni al programma create dagli utenti venivano scritte sempre in Lisp. La scelta di usare Lisp diede maggiore estendibilit\xc3\xa0, scelta poi imitata dalla maggior parte degli emacs successivi._NEWLINE_Gosling Emacs, il primo editor simile ad Emacs funzionante su Unix, fu scritto da James Gosling nel 1981._NEWLINE_Questo era scritto in C e utilizzava una versione ridotta di Lisp, conosciuta come Mocklisp, come linguaggio di estensione._NEWLINE_Nel 1984, Stallman inizi\xc3\xb2 a scrivere una nuova implementazione di emacs, GNU Emacs, che divenne il primo programma del nascente progetto GNU._NEWLINE_GNU Emacs fu scritto anch\'esso in C e usava Emacs Lisp per le sue estensioni. La prima versione di GNU Emacs distribuita largamente fu la revisione 15.34, apparsa nel 1985._NEWLINE_Come Gosling Emacs, GNU Emacs girava su Unix; per\xc3\xb2, GNU Emacs aveva molte pi\xc3\xb9 funzionalit\xc3\xa0, in particolare un\'implementazione Lisp completa come linguaggio di estensione._NEWLINE_Come risultato, ben presto rimpiazz\xc3\xb2 Gosling Emacs come editor Emacs de facto su Unix._NEWLINE_Iniziando nel 1991, Lucid Emacs fu sviluppato da Jamie Zawinski e altri presso Lucid Inc., basandosi su una versione alpha di GNU Emacs 19._NEWLINE_Presto i due codici base diversero, e i separati gruppi di sviluppo smisero di tentare di reintegrarli in un singolo programma._NEWLINE_Questo fu uno dei pi\xc3\xb9 famosi fra i primi fork di software libero. Lucid Emacs da allora fu rinominato XEmacs; insieme a GNU Emacs rimane l\'editor emacs pi\xc3\xb9 popolare in uso ad oggi.\n_START_SECTION_\nDescrizione di GNU Emacs\n_START_PARAGRAPH_\nIl manuale di GNU Emacs descrive questo ambiente come "the extensible, customizable, self-documenting, real-time display editor." (l\'editor in tempo reale, estensibile, personalizzabile, auto-documentante e visuale.)\n_START_SECTION_\nPersonalizzazione\n_START_PARAGRAPH_\nIl codice sorgente di basso livello di Emacs \xc3\xa8 scritto nel linguaggio di programmazione C. Componenti scritti in questo linguaggio sono il sistema grafico e l\'interprete per Emacs Lisp (un dialetto del citato linguaggio  LISP) oltre a tutte quelle parti che risultano critiche per l\'efficienza._NEWLINE_La maggior parte del codice per la modifica del testo \xc3\xa8 scritta in Emacs Lisp._NEWLINE_Quando Emacs \xc3\xa8 in esecuzione, l\'interprete carica e valuta (esegue) questo codice Lisp._NEWLINE_L\'utente pu\xc3\xb2 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\xc3\xa0 caricate (questo riflette la definizione di auto-documentante). Attraverso la valutazione di codice Lisp fornito dall\'utente, il comportamento di Emacs pu\xc3\xb2 essere modificato "al volo", senza che ci sia bisogno di ricompilare il programma o rilanciare l\'editor. Lisp \xc3\xa8 una buona scelta come linguaggio per questo scopo, perch\xc3\xa9 permette di trattare le funzioni come dati (ovvero, \xc3\xa8 un linguaggio funzionale)._NEWLINE_Il risultato di tutto questo \xc3\xa8 che \xc3\xa8 molto facile aggiungere funzionalit\xc3\xa0 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._NEWLINE_In aggiunta, Emacs pu\xc3\xb2 essere usato come IDE, permettendo ai programmatori di modificare, compilare, e fare il debug del proprio codice attraverso una singola interfaccia._NEWLINE_Punto a sfavore del design di Emacs \xc3\xa8 il carico di performance aggiunto causato dal caricare ed interpretare il codice Lisp._NEWLINE_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)._NEWLINE_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\xc3\xb9 rilevanza._NEWLINE_Nonostante questo, \xc3\xa8 un punto frequentemente sollevato dai detrattori di Emacs durante le cosiddette editor wars (guerre fra editor)._NEWLINE_Ci sono altri due metodi per personalizzare Emacs, anche se nessuno cos\xc3\xac flessibile come scrivere codice Emacs Lisp._NEWLINE_Uno \xc3\xa8 la possibilit\xc3\xa0 di usare comandi per registrare macro, cio\xc3\xa8 comandi composti da sequenze di tasti. L\'altro \xc3\xa8 usare il sistema "Customize", incluso in versioni recenti di Emacs, che permette agli utenti di personalizzare le variabili pi\xc3\xb9 comuni usando un\'interfaccia grafica.\n_START_SECTION_\nFunzionamento interno (buffer gap)\n_START_PARAGRAPH_\nIl contenuto dei buffer \xc3\xa8 memorizzato come una sequenza contigua di caratteri separata da un divisore (gap), dove il punto di modifica \xc3\xa8 posizionato. Le modifiche sono fatte al buffer muovendo il divisore oppure alterando il carattere seguente al divisore._NEWLINE_Questo schema permette alle operazioni di modifica di essere molto efficienti, visto che non viene modificata molta memoria._NEWLINE_Un altro modo di memorizzare documenti \xc3\xa8 quello di memorizzare ogni linea del documento in un piccolo buffer.\n_START_SECTION_\nDistribuzione\n_START_PARAGRAPH_\nEmacs \xc3\xa8 software libero, distribuito sotto i termini della GNU GPL._NEWLINE_Il codice sorgente e i binari sono disponibili via FTP dal sito web del progetto GNU (vedi sotto). Sono anche ampiamente disponibili da altri siti Internet._NEWLINE_Svariati vendors di Unix (sia liberi che proprietari) forniscono frequentemente Emacs insieme al sistema operativo._NEWLINE_Emacs gira su un gran numero di piattaforme, incluso GNU/Linux e svariati tipi di Unix, macOS e Microsoft Windows.\n_START_SECTION_\nSviluppo\n_START_PARAGRAPH_\nEmacs \xc3\xa8 parte del progetto GNU ed \xc3\xa8 sotto sviluppo attivo. Molti, anche se non tutti, gli sviluppatori sono affiliati con la Free Software Foundation (FSF)._NEWLINE_Fino al rilascio di Emacs 21.1 (1999), lo sviluppo di Emacs era relativamente chiuso. Da allora il progetto ha adottato una mailing list di sviluppo pubblica e accesso CVS anonimo. Come in tutti i progetti GNU, \xc3\xa8 prassi nello sviluppo di Emacs accettare contributi di codice significativi solo se il contributore assegna il copyright per il codice alla FSF, sebbene una eccezione sia stata fatta per il codice di MULE (MULtilingual Extension)  in quanto il detentore del copyright (il governo giapponese) non aveva permesso questo assegnamento. Tutto questo non si applica ai bug report o a contributi di codice minimi, dove per contributi minimi si intendono 10 righe di codice o meno. Questo sistema esiste per facilitare l\'applicazione del copyleft.'