SlideShare une entreprise Scribd logo
1  sur  9
Télécharger pour lire hors ligne
UNIVERSIDADE FEDERAL DE CAMPINA GRANDE – UFCG
   CENTRO DE ENGENHARIA ELÉTRICA E INFORMÁTICA – CEEI
     DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO – DSC
EMBEDDED SYSTEMS AND PERVASIVE COMPUTING LAB - EMBEDDED




                     Relatório Técnico:


           Emacs: Arquitetura e Design com Foco
              no Desenvolvimento de Plugins.




                  José Martins da Nobrega Filho
                    martins.ufcg@gmail.com




                 Campina Grande, agosto de 2009.




                                                        1
Sumário
Sumário ............................................................................................................................. 2
1 Introdução................................................................................................................... 3
2 Arquitetura da Ferramenta .......................................................................................... 3
3 Design da ferramenta .................................................................................................. 4
  3.1 Conceitos Estruturais ........................................................................................... 5
  3.2 Conceitos Visuais ................................................................................................. 6
  3.3 Módulos de edição ............................................................................................... 7
  3.4 Interface com o Sistema Operacional ................................................................... 8
4 Conclusões ................................................................................................................. 8
5 Referências ................................................................................................................. 8




                                                                                                                                   2
1 Introdução

       Com origem no laboratório de Inteligência Artificial do MIT como uma extensão do
TECO, o Emacs ganhou com o tempo várias implementações sendo hoje um ambiente de
trabalho totalmente customizado e utilizado principalmente por programadores. Suas
principais implementações são o GnuEmacs e o XEmacs que são tidos como dois editores
separados por uma língua comum.
       Nesse relatório será informada uma descrição geral da arquitetura dessa ferramenta
com foco no GnuEmacs e um pouco da linguagem utilizada para desenvolvimento de
extensões e customização da ferramenta.



2 Arquitetura da Ferramenta

       A primeira implementação do Emacs surgiu em 1976 tendo o objetivo de organizar
os macros (plugins) criados pelos usuários do TECO e adicionar facilidades para
implementação de novos comandos. Mas foi em 1978 que o Emacs ganhou a primeira
implementação cuja linguagem de extensão era baseada num dialeto do Lisp.
       Com o advento dessa linguagem que hoje é conhecida como EmacsLisp, a
ferramenta passou a funcionar como um interpretador Lisp que utiliza uma API para
utilização dos conceitos inerentes ao seu design.
       Na figura seguinte é possível visualizar o modelo da arquitetura utilizada pelo
Emacs. Nesse modelo a ferramenta é customizada através de um arquivo de boot, escrito
em lisp, que é carregado durante a execução do sistema, esse arquivo contém informações
sobre os plugins que serão utilizados e os parâmetros de configuração de cada um deles.
       Cada plugin referenciado é então carregado pelo interpretador que disponibiliza
todas as funções e/ou variáveis do mesmo para o sistema. Com esse modelo as estruturas de
dados e funções passam a ser compartilhadas por todos os plugins existentes permitindo
uma ampla utilização dos recursos do ambiente montado.




                                                                                          3
Figura 1: Visão arquitetural do emacs. (1) leitura do arquivo .emacs durante a execução do sistema; (2)
 referência aos plugins que devem ser carregados; (3) leitura dos plugins referenciados; (4) disponibilização
                                  das funções carregadas para o sistema.



        A disponibilização das estruturas montadas pelo sistema permite uma grande
possibilidade de reuso e extensão, mas também permite uma má utilização das estruturas de
dados, sendo necessário um conjunto de convenções que são utilizadas pela comunidade.



3 Design da ferramenta
        Como visto no tópico anterior, a arquitetura do Emacs está totalmente centralizada
num interpretador que funciona como uma interface entre os componentes visuais e a
lógica implementada em suas extensões. Essa associação torna-se possível devido à
definição de conceitos que serão utilizados pelos plugins na forma de uma API que
acompanha a ferramenta.
        Os conceitos existentes no design da ferramenta podem ser classificados em quatro
grupos como visto na figura seguinte. O primeiro grupo contém os conceitos estruturais que
definem como os arquivos são tratados no sistema e como é feita a associação desse




                                                                                                             4
arquivo a funcionalidades como syntax highlighting, autocomplete, spell-checking e outros.
        O segundo grupo determina os conceitos relacionados aos itens visuais da aplicação
e, portanto, define como manipular vários arquivos numa única janela, como interagir com
o usuário, definir quais os menus serão visíveis, entre outras funcionalidades.
       O terceiro e o quarto grupos estão relacionados, respectivamente, à edição de
arquivos e à manipulação do sistema operacional, sendo utilizados para recursos como
autocomplete e remote editon file através de programas como openssh.




                     Figura 2: Classificação dos conceitos utilizados pelo Emacs.




3.1 Conceitos Estruturais

        O primeiro conceito abordado nesse tópico será o Buffer. Essa estrutura é utilizada
como um pacote com metadados associados e cujo conteúdo pode ser o texto de um
arquivo ou uma string resultante de algum processamento no Emacs.
       Com essa estrutura é possível identificar de forma única um conteúdo e obter
informações sobre o arquivo, como permissões de edição (ex: read only) e informações
sobre o Major Mode e os Minor Modes associados a esse buffer.
       Os Modes de um buffer são responsáveis pela definição de um conjunto de
comportamentos que serão aplicados ao conteúdo do buffer como, por exemplo, o syntax
highlighting.
      Em um buffer existe sempre um Major Mode que contém informações referentes a
comportamentos mais básicos (ex: comando para apagar uma linha) e um ou mais Minor
Modes que definem comportamentos especialistas (ex: highlighting de códigos C/C++).



                                                                                        5
Entre as estruturas utilizadas nos modos de operação, o Keymap e a Syntax Table
merecem destaque. A primeira estrutura consiste num mapa que relaciona uma combinação
de teclas a uma função, permitindo a implementação de teclas de atalho.
       A segunda estrutura consiste numa tabela que relaciona um caractere a um
significado na construção sintática do conteúdo como, por exemplo, o caractere “;” que em
Lisp indica um comentário e em linguagens como C/C++ tem outro significado. Essa
definição permite a utilização de funções que realizam um parsing no código e verificam,
por exemplo, se a parentetização está correta.
       A figura seguinte demonstra o relacionamento entre essas estruturas para uma
implementação de highlighting e autocomplete para códigos em C++.




                 Figura 3: Instância do relacionamento entre os conceitos estruturais.




3.2 Conceitos Visuais

       O principal critério de usabilidade adotado pela ferramenta é a produtividade na
edição de arquivos, esse requisito provavelmente influenciou a utilização de um ambiente
gráfico dividido em janelas internas.
       Para permitir a manipulação desse ambiente por plugins externos, o Emacs definiu
três conceitos que permitem trabalhar com cada item contido na interface da ferramenta.




                                                                                          6
O primeiro conceito é o Frame que identifica cada janela gráfica do sistema
operacional associada ao Emacs.
       O outro conceito adotado, chamado Window, identifica as janelas internas a um
frame que estão sempre associadas a um buffer. Dessa forma o usuário pode trabalhar com
vários arquivos em uma ou mais janelas internas.
       Com a definição desses conceitos, o desenvolvedor pode interagir com essas janelas
para exibir informações de forma temporária (uma window temporária), informações
estáticas como a árvore de diretórios do sistema (uma window fixa), informações sobre os
projetos abertos (um frame separado), etc.
       Também foi adotado um conceito chamado Minibuffer que permite a entrada de
dados como senhas, comandos e parâmetros para funções. Essa estrutura está sempre
associada a uma window fixa que está localizada no rodapé do frame principal.



3.3 Módulos de edição

       Como dito anteriormente, os buffers são estruturas que encapsulam o conteúdo, as
funções e as estruturas associados ao documento. No caso da edição do conteúdo desse
buffer, são definidos os conceitos Text, Positions e Markers.
       Um Text representa o conteúdo de um buffer entre dois pontos (Positions/Markers)
e as propriedades desse conteúdo. É através dessa estrutura que é possível realizar
operações como inserir, deletar, formatar, comparar partes, definir margens, visibilidade e
outras mais.
       Os Positions e Markers, por sua vez, definem pontos no conteúdo do buffer que são
utilizados para delimitar a área do texto onde será realizada uma dada operação. No
primeiro caso a definição do ponto é realizada através de um inteiro representando o índice
do caractere e, portanto, a área delimitada é alterada durante inserções ou deleções no texto.
       Já os Markers usam como referencial os caracteres antes e depois do ponto. Dessa
forma as operações realizadas no texto não interferem na área delimitada.




                                                                                           7
3.4 Interface com o Sistema Operacional

       Para interagir com o sistema operacional ou programas externos, o Emacs
disponibiliza o conceito de processos e um conjunto de funções para interagir com o SO.
       Os processos disponibilizados pelo Emacs podem ser vistos como objetos que são
identificados por um nome e executados de forma síncrona ou assíncrona. Além desse
conceito, a ferramenta disponibiliza uma API para envio de sinais e/ou strings, obtenção de
informações sobre o status do processo, aplicação de filtros nas saídas padrões, etc.
       Para comunicação com o sistema operacional o Emacs disponibiliza um conjunto de
funções onde é possível obter informações sobe a data, setar variáveis de ambiente, tocar
som, entre outros. Observe que do ponto de vista arquitetural essas funções para interface
com o SO são apenas utilitários que fazem parte da linguagem.



4 Conclusões
       Com mais de trinta anos no mercado, o Emacs continua sendo uma ferramenta de
alta produtividade para diversas atividades, mostrando com isso a eficiência de sua
arquitetura.
       A escolha do Lisp como linguagem de extensão foi fundamental por ser interpretada
e por ter características do paradigma funcional e orientado a objetos, mas foi a definição
dos conceitos utilizados que permitiu a grande diversificação de plugins existentes.



5 Referências

   B. Lewis, D. LaLiberte, and the GNU Manual Group. The GNU Emacs Lisp Reference Manual,
   version 23.1, revision 3.0, July 2009.
   Emacs. Acedido em: 23, agosto, 2009, em: http://pt.wikipedia.org/wiki/Emacs.
   Emacs Lisp. Acedido em: 23, agosto, 2009, em: http://pt.wikipedia.org/wiki/Emacs_Lisp.
   Ferrari, B. (2007). An Introduction to all these Emacs articles. Acedido em: 23, agosto, 2009, em:
   http://blog.bookworm.at/2007/03/introduction-to-all-these-emacs.html
   GNU Operating System - GNU Emacs. Acedido em: 23, agosto, 2009, em: http://www.gnu.org/
   software/emacs/.




                                                                                                  8
História do Emacs. Acedido em: 23, agosto, 2009, em: http://www.emacswiki.org/emacs-
pt/Hist%C3%B3riaDoEmacs.
Text Editor and Corrector. Acedido em: 23, agosto, 2009, em: http://en.wikipedia.org/wiki/
Text_Editor_and_Corrector.
XEmacs. Acedido em: 23, agosto, 2009, em: http://www.xemacs.org/.




                                                                                       9

Contenu connexe

Tendances (7)

Diagramas de distribuicao
Diagramas de distribuicaoDiagramas de distribuicao
Diagramas de distribuicao
 
Uml Diagramas Estruturais
Uml   Diagramas EstruturaisUml   Diagramas Estruturais
Uml Diagramas Estruturais
 
Manual Pentaho 3.5
Manual Pentaho 3.5Manual Pentaho 3.5
Manual Pentaho 3.5
 
Sistemas operacionais pronatec- prof. manoel
Sistemas operacionais   pronatec- prof. manoelSistemas operacionais   pronatec- prof. manoel
Sistemas operacionais pronatec- prof. manoel
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
1ª aula sistema operacional
1ª aula  sistema operacional1ª aula  sistema operacional
1ª aula sistema operacional
 
Relatório final so
Relatório final soRelatório final so
Relatório final so
 

Similaire à Emacs - Arquitetura E Design Com Foco No Desenv De Plugins

Do Diagrama de Fluxo de Dados ao Use Case
Do Diagrama de Fluxo de Dados ao Use CaseDo Diagrama de Fluxo de Dados ao Use Case
Do Diagrama de Fluxo de Dados ao Use CaseRobson Silva Espig
 
Zachman framework
Zachman frameworkZachman framework
Zachman frameworkJoao Santos
 
Report - Lex and YACC
Report -  Lex and YACCReport -  Lex and YACC
Report - Lex and YACCMichel Alves
 
Armazenamento, Indexação e Recuperação de Informação
Armazenamento, Indexação e Recuperação de InformaçãoArmazenamento, Indexação e Recuperação de Informação
Armazenamento, Indexação e Recuperação de InformaçãoMário Monteiro
 
Saam & arquiteturas_iu_halan
Saam & arquiteturas_iu_halanSaam & arquiteturas_iu_halan
Saam & arquiteturas_iu_halanHalan Ridolphi
 
Visão Geral Arquiteturade Software
Visão Geral Arquiteturade SoftwareVisão Geral Arquiteturade Software
Visão Geral Arquiteturade Softwareelliando dias
 
Latex2e - guia rápido e básico
Latex2e - guia rápido e básicoLatex2e - guia rápido e básico
Latex2e - guia rápido e básicoRenato Guimarães
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotationeduardo dias
 
Artigo Threads O Problema Dos Leitores E Escritores Implementado Em C# Rafael...
Artigo Threads O Problema Dos Leitores E Escritores Implementado Em C# Rafael...Artigo Threads O Problema Dos Leitores E Escritores Implementado Em C# Rafael...
Artigo Threads O Problema Dos Leitores E Escritores Implementado Em C# Rafael...rafaelov
 
Bancos de dados distribuídos
Bancos de dados distribuídosBancos de dados distribuídos
Bancos de dados distribuídosJ Chaves Silva
 

Similaire à Emacs - Arquitetura E Design Com Foco No Desenv De Plugins (20)

Oficina cake php
Oficina cake phpOficina cake php
Oficina cake php
 
Do Diagrama de Fluxo de Dados ao Use Case
Do Diagrama de Fluxo de Dados ao Use CaseDo Diagrama de Fluxo de Dados ao Use Case
Do Diagrama de Fluxo de Dados ao Use Case
 
PHP 10 CodeIgniter
PHP 10 CodeIgniterPHP 10 CodeIgniter
PHP 10 CodeIgniter
 
Dfd
DfdDfd
Dfd
 
Zachman framework
Zachman frameworkZachman framework
Zachman framework
 
So cap01
So cap01So cap01
So cap01
 
Report - Lex and YACC
Report -  Lex and YACCReport -  Lex and YACC
Report - Lex and YACC
 
Armazenamento, Indexação e Recuperação de Informação
Armazenamento, Indexação e Recuperação de InformaçãoArmazenamento, Indexação e Recuperação de Informação
Armazenamento, Indexação e Recuperação de Informação
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Sap – stablility and abstract principle
Sap – stablility and abstract principleSap – stablility and abstract principle
Sap – stablility and abstract principle
 
Saam & arquiteturas_iu_halan
Saam & arquiteturas_iu_halanSaam & arquiteturas_iu_halan
Saam & arquiteturas_iu_halan
 
Visão Geral Arquiteturade Software
Visão Geral Arquiteturade SoftwareVisão Geral Arquiteturade Software
Visão Geral Arquiteturade Software
 
Latex2e - guia rápido e básico
Latex2e - guia rápido e básicoLatex2e - guia rápido e básico
Latex2e - guia rápido e básico
 
Resumo c#
Resumo c#Resumo c#
Resumo c#
 
Html
HtmlHtml
Html
 
Arquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADAArquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADA
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
 
Artigo Threads O Problema Dos Leitores E Escritores Implementado Em C# Rafael...
Artigo Threads O Problema Dos Leitores E Escritores Implementado Em C# Rafael...Artigo Threads O Problema Dos Leitores E Escritores Implementado Em C# Rafael...
Artigo Threads O Problema Dos Leitores E Escritores Implementado Em C# Rafael...
 
Bancos de dados distribuídos
Bancos de dados distribuídosBancos de dados distribuídos
Bancos de dados distribuídos
 
Corbawebserves
CorbawebservesCorbawebserves
Corbawebserves
 

Emacs - Arquitetura E Design Com Foco No Desenv De Plugins

  • 1. UNIVERSIDADE FEDERAL DE CAMPINA GRANDE – UFCG CENTRO DE ENGENHARIA ELÉTRICA E INFORMÁTICA – CEEI DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO – DSC EMBEDDED SYSTEMS AND PERVASIVE COMPUTING LAB - EMBEDDED Relatório Técnico: Emacs: Arquitetura e Design com Foco no Desenvolvimento de Plugins. José Martins da Nobrega Filho martins.ufcg@gmail.com Campina Grande, agosto de 2009. 1
  • 2. Sumário Sumário ............................................................................................................................. 2 1 Introdução................................................................................................................... 3 2 Arquitetura da Ferramenta .......................................................................................... 3 3 Design da ferramenta .................................................................................................. 4 3.1 Conceitos Estruturais ........................................................................................... 5 3.2 Conceitos Visuais ................................................................................................. 6 3.3 Módulos de edição ............................................................................................... 7 3.4 Interface com o Sistema Operacional ................................................................... 8 4 Conclusões ................................................................................................................. 8 5 Referências ................................................................................................................. 8 2
  • 3. 1 Introdução Com origem no laboratório de Inteligência Artificial do MIT como uma extensão do TECO, o Emacs ganhou com o tempo várias implementações sendo hoje um ambiente de trabalho totalmente customizado e utilizado principalmente por programadores. Suas principais implementações são o GnuEmacs e o XEmacs que são tidos como dois editores separados por uma língua comum. Nesse relatório será informada uma descrição geral da arquitetura dessa ferramenta com foco no GnuEmacs e um pouco da linguagem utilizada para desenvolvimento de extensões e customização da ferramenta. 2 Arquitetura da Ferramenta A primeira implementação do Emacs surgiu em 1976 tendo o objetivo de organizar os macros (plugins) criados pelos usuários do TECO e adicionar facilidades para implementação de novos comandos. Mas foi em 1978 que o Emacs ganhou a primeira implementação cuja linguagem de extensão era baseada num dialeto do Lisp. Com o advento dessa linguagem que hoje é conhecida como EmacsLisp, a ferramenta passou a funcionar como um interpretador Lisp que utiliza uma API para utilização dos conceitos inerentes ao seu design. Na figura seguinte é possível visualizar o modelo da arquitetura utilizada pelo Emacs. Nesse modelo a ferramenta é customizada através de um arquivo de boot, escrito em lisp, que é carregado durante a execução do sistema, esse arquivo contém informações sobre os plugins que serão utilizados e os parâmetros de configuração de cada um deles. Cada plugin referenciado é então carregado pelo interpretador que disponibiliza todas as funções e/ou variáveis do mesmo para o sistema. Com esse modelo as estruturas de dados e funções passam a ser compartilhadas por todos os plugins existentes permitindo uma ampla utilização dos recursos do ambiente montado. 3
  • 4. Figura 1: Visão arquitetural do emacs. (1) leitura do arquivo .emacs durante a execução do sistema; (2) referência aos plugins que devem ser carregados; (3) leitura dos plugins referenciados; (4) disponibilização das funções carregadas para o sistema. A disponibilização das estruturas montadas pelo sistema permite uma grande possibilidade de reuso e extensão, mas também permite uma má utilização das estruturas de dados, sendo necessário um conjunto de convenções que são utilizadas pela comunidade. 3 Design da ferramenta Como visto no tópico anterior, a arquitetura do Emacs está totalmente centralizada num interpretador que funciona como uma interface entre os componentes visuais e a lógica implementada em suas extensões. Essa associação torna-se possível devido à definição de conceitos que serão utilizados pelos plugins na forma de uma API que acompanha a ferramenta. Os conceitos existentes no design da ferramenta podem ser classificados em quatro grupos como visto na figura seguinte. O primeiro grupo contém os conceitos estruturais que definem como os arquivos são tratados no sistema e como é feita a associação desse 4
  • 5. arquivo a funcionalidades como syntax highlighting, autocomplete, spell-checking e outros. O segundo grupo determina os conceitos relacionados aos itens visuais da aplicação e, portanto, define como manipular vários arquivos numa única janela, como interagir com o usuário, definir quais os menus serão visíveis, entre outras funcionalidades. O terceiro e o quarto grupos estão relacionados, respectivamente, à edição de arquivos e à manipulação do sistema operacional, sendo utilizados para recursos como autocomplete e remote editon file através de programas como openssh. Figura 2: Classificação dos conceitos utilizados pelo Emacs. 3.1 Conceitos Estruturais O primeiro conceito abordado nesse tópico será o Buffer. Essa estrutura é utilizada como um pacote com metadados associados e cujo conteúdo pode ser o texto de um arquivo ou uma string resultante de algum processamento no Emacs. Com essa estrutura é possível identificar de forma única um conteúdo e obter informações sobre o arquivo, como permissões de edição (ex: read only) e informações sobre o Major Mode e os Minor Modes associados a esse buffer. Os Modes de um buffer são responsáveis pela definição de um conjunto de comportamentos que serão aplicados ao conteúdo do buffer como, por exemplo, o syntax highlighting. Em um buffer existe sempre um Major Mode que contém informações referentes a comportamentos mais básicos (ex: comando para apagar uma linha) e um ou mais Minor Modes que definem comportamentos especialistas (ex: highlighting de códigos C/C++). 5
  • 6. Entre as estruturas utilizadas nos modos de operação, o Keymap e a Syntax Table merecem destaque. A primeira estrutura consiste num mapa que relaciona uma combinação de teclas a uma função, permitindo a implementação de teclas de atalho. A segunda estrutura consiste numa tabela que relaciona um caractere a um significado na construção sintática do conteúdo como, por exemplo, o caractere “;” que em Lisp indica um comentário e em linguagens como C/C++ tem outro significado. Essa definição permite a utilização de funções que realizam um parsing no código e verificam, por exemplo, se a parentetização está correta. A figura seguinte demonstra o relacionamento entre essas estruturas para uma implementação de highlighting e autocomplete para códigos em C++. Figura 3: Instância do relacionamento entre os conceitos estruturais. 3.2 Conceitos Visuais O principal critério de usabilidade adotado pela ferramenta é a produtividade na edição de arquivos, esse requisito provavelmente influenciou a utilização de um ambiente gráfico dividido em janelas internas. Para permitir a manipulação desse ambiente por plugins externos, o Emacs definiu três conceitos que permitem trabalhar com cada item contido na interface da ferramenta. 6
  • 7. O primeiro conceito é o Frame que identifica cada janela gráfica do sistema operacional associada ao Emacs. O outro conceito adotado, chamado Window, identifica as janelas internas a um frame que estão sempre associadas a um buffer. Dessa forma o usuário pode trabalhar com vários arquivos em uma ou mais janelas internas. Com a definição desses conceitos, o desenvolvedor pode interagir com essas janelas para exibir informações de forma temporária (uma window temporária), informações estáticas como a árvore de diretórios do sistema (uma window fixa), informações sobre os projetos abertos (um frame separado), etc. Também foi adotado um conceito chamado Minibuffer que permite a entrada de dados como senhas, comandos e parâmetros para funções. Essa estrutura está sempre associada a uma window fixa que está localizada no rodapé do frame principal. 3.3 Módulos de edição Como dito anteriormente, os buffers são estruturas que encapsulam o conteúdo, as funções e as estruturas associados ao documento. No caso da edição do conteúdo desse buffer, são definidos os conceitos Text, Positions e Markers. Um Text representa o conteúdo de um buffer entre dois pontos (Positions/Markers) e as propriedades desse conteúdo. É através dessa estrutura que é possível realizar operações como inserir, deletar, formatar, comparar partes, definir margens, visibilidade e outras mais. Os Positions e Markers, por sua vez, definem pontos no conteúdo do buffer que são utilizados para delimitar a área do texto onde será realizada uma dada operação. No primeiro caso a definição do ponto é realizada através de um inteiro representando o índice do caractere e, portanto, a área delimitada é alterada durante inserções ou deleções no texto. Já os Markers usam como referencial os caracteres antes e depois do ponto. Dessa forma as operações realizadas no texto não interferem na área delimitada. 7
  • 8. 3.4 Interface com o Sistema Operacional Para interagir com o sistema operacional ou programas externos, o Emacs disponibiliza o conceito de processos e um conjunto de funções para interagir com o SO. Os processos disponibilizados pelo Emacs podem ser vistos como objetos que são identificados por um nome e executados de forma síncrona ou assíncrona. Além desse conceito, a ferramenta disponibiliza uma API para envio de sinais e/ou strings, obtenção de informações sobre o status do processo, aplicação de filtros nas saídas padrões, etc. Para comunicação com o sistema operacional o Emacs disponibiliza um conjunto de funções onde é possível obter informações sobe a data, setar variáveis de ambiente, tocar som, entre outros. Observe que do ponto de vista arquitetural essas funções para interface com o SO são apenas utilitários que fazem parte da linguagem. 4 Conclusões Com mais de trinta anos no mercado, o Emacs continua sendo uma ferramenta de alta produtividade para diversas atividades, mostrando com isso a eficiência de sua arquitetura. A escolha do Lisp como linguagem de extensão foi fundamental por ser interpretada e por ter características do paradigma funcional e orientado a objetos, mas foi a definição dos conceitos utilizados que permitiu a grande diversificação de plugins existentes. 5 Referências B. Lewis, D. LaLiberte, and the GNU Manual Group. The GNU Emacs Lisp Reference Manual, version 23.1, revision 3.0, July 2009. Emacs. Acedido em: 23, agosto, 2009, em: http://pt.wikipedia.org/wiki/Emacs. Emacs Lisp. Acedido em: 23, agosto, 2009, em: http://pt.wikipedia.org/wiki/Emacs_Lisp. Ferrari, B. (2007). An Introduction to all these Emacs articles. Acedido em: 23, agosto, 2009, em: http://blog.bookworm.at/2007/03/introduction-to-all-these-emacs.html GNU Operating System - GNU Emacs. Acedido em: 23, agosto, 2009, em: http://www.gnu.org/ software/emacs/. 8
  • 9. História do Emacs. Acedido em: 23, agosto, 2009, em: http://www.emacswiki.org/emacs- pt/Hist%C3%B3riaDoEmacs. Text Editor and Corrector. Acedido em: 23, agosto, 2009, em: http://en.wikipedia.org/wiki/ Text_Editor_and_Corrector. XEmacs. Acedido em: 23, agosto, 2009, em: http://www.xemacs.org/. 9