Pagina iniziale | Navigazione |
Google

Emacs

Emacs è un editor di testo libero estremamente versatile molto popolare fra i programmatori. È stato sviluppato originariamente da Richard Stallman nel 1976, 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.

Storia di 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 se stante.

"EMACS" sta per "Editor MACroS". Secondo Stallman, è stato utilizzato il nome Emacs "perché non era usata al tempo come un'abbreviazione su ITS". E' 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.

Descrizione di GNU Emacs

Il manuale di GNU Emacs lo descrive come "the extensible, customizable, self-documenting, real-time display editor." (l'editor in tempo reale, estensibile, personalizzabile, auto-documentante e visuale.)

Interfaccia Utente

Emacs memorizza il testo in oggetti chiamati buffer. L'utente può creare nuovi buffer e chiudere quelli non più usati, più buffer possono esistere allo stesso tempo. La maggior parte dei buffer contengono testo caricato da un file di testo per essere edito dall'utente. Allo stesso tempo, i buffer possono essere usati per altri scopi; per esempio, l'utente potrebbe creare buffer vuoti per memorizzare testo temporaneamente.

Ogni schermata di Emacs (che può essere una singola 'finestra' in un sistema a finestre, o uno schermo intero in un terminale può mostrare uno o più buffer allo stesso tempo. Se più di un buffer è mostrato, l'area della schermata viene divisa in più sezioni (alle quali Emacs si riferisce, creando confusione, come 'windows' ovvero finestre). In un sistema a finestre, più finestre di Emacs possono essere create (alle quali Emacs si riferisce con il termine frames).

L'utente invoca comandi per la modifica del testo premendo sequenze di tasti. In aggiunta agli usuali comandi per inserire e cancellare il testo, Emacs fornisce un insieme di comandi più esotici, come muovere il punto di modifica alla frase seguente, aprire tutti i file in una directory, ed eseguire operazioni di ricerca e sostituzione. La maggior parte di questi comandi può essere attivata con una combinazione di tasti. Versioni più recenti di Emacs forniscono menù grafici per i comandi più comuni. (La maggior parte dei comandi, anche il più semplice come a per l'inserimento del carattere a, sono attualmente chiamate di funzioni Emacs Lisp, descritte sotto).

Emacs supporta molti Sistemi di codifica dei caratteri, incluso UTF-8. Una versione con pieno supporto Unicode è in sviluppo.

Per utenti con handicap visivi esiste un sottosistema chiamato Emacspeak che può essere caricato. Permette all'editor di essere usato con il solo riscontro sonoro.

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). 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 esegue una semplice 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.

Funzionamento interno

Il contenuto dei buffer è memorizzato come una sequenza contigua di caratteri separata da un divisore (gap), dove il punto di modifica è posizionato. Le modifiche sono fatte al buffer muovendo il divisore e/o alterando il carattere seguente al divisore. Questo design permette alle operazioni di modifica di essere molto efficienti, visto che non molta memoria viene modificata. Un altro modo di memorizzare documenti è quello di memorizzare ogni linea del documento in un piccolo buffer.

Distribuzione

Emacs è software libero, distribuito sotto i termini della GNU GPL.

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. Svariati vendors di Unix (sia liberi che proprietari) forniscono frequentemente Emacs insieme al sistema operativo.

Emacs gira su un gran numero di piattaforme, incluso GNU Linux e svariati tipi di Unix, MacOS e Windows.

Sviluppo

Emacs è parte del progetto GNU ed è sotto sviluppo attivo. Molti, anche se non tutti, degli sviluppatori sono affiliati con la Free Software Foundation (FSF).

Fino al rilascio di Emacs 21.1, lo sviluppo di Emacs era relativamente chiuso. Da allora il progetto ha adottato una mailing list di sviluppo pubblica e accesso CVS anonimo. Nonostante questo, è prassi nello sviluppo di Emacs accettare contributi di codice solo se il contributore assegna il copyright per il codice alla FSF. (Questo non si applica ai bug report o a contributi di codice minimi). Questo sistema esiste per facilitare l'applicazione del copyleft.

L'ultima versione di GNU Emacs è la versione 21.3. Lo sviluppo avviene in un singolo ramo CVS, attualmente alla versione 21.3.50. Il mantainer corrente è Richard Stallman.

Link esterni


GNU Fdl - it.Wikipedia.org




Google | 

Enciclopedia |  La Divina Commedia di Dante |  Mappa | : 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 |