Avançar para o conteúdo principal

Compiladores (1) - Introdução

A informática saiu da sua "idade média" em parte ajudado pelo aparecimento de linguagens de programação de mais alto nível do que o assembler dos CPU(s).
Os computadores,no entanto, executam sequências de instruções muito particulares. Estas variam normalmente de versão para versão de um CPU e entre fabricantes de CPU(s).
Com as linguagens de programação consegue-se criar programas que funcionem em várias máquinas.

Para executar o código (normalmente textos numa linguagem com uma gramática bem definida) existem programas que convertem essa linguagem para a da máquina concreta. A esses programas chamam-se compiladores. Os compiladores fazem parte da computação desde os anos 50.

Um compilador é um programa complexo. Em 1958, um compilador de fortran demorava algo como 18 meses / homem a ser construído.

No inicio o maior problema dos compiladores era a quantidade de memória ram ou disco disponível. Por isso era tentava-se construir os compiladores em passo-único . Isto significa que o programa era lido e convertido apenas numa leitura do seu código fonte.

Nos últimos anos, o disco e a memória não são claramente um problema. Desta forma os compiladores evoluíram muito e a sua arquitectura actual é bastante completa, com fases bem divididas e com interfaces bem definidos entre fases.

Este post é uma introdução pois participo no desenvolvimento de um compilador da linguagem Informix 4gl. Já à algum tempo que iniciei uma mudança com os seguintes objectivos:
  • Aplicar uma arquitectura moderna (com separação clara e interfaces entre fases).
  • Atingir um nível de produtividade de produção e manutenção.
  • Criar um compilador cuja gramática (na altura da sua compilação) pode facilmente variar.

Comentários

  1. Ora aí está !
    Os compiladores evoluiram muito em termos de arquitectura e actualmente a sua arquitectura e ferramentas começam a ser tais que irão permitir a execução de tarefas em paralelo usando por exemplo multi-threading.
    Mas podia-se ir mais longe fazendo distribuição por várias máquinas.
    O meu próximo post será sobre as arquitecturas dos compiladores mais modernos.

    ResponderEliminar
  2. Entretanto estive a pensar.
    O compilador de Java sempre que precisa trata de compilar as classes Java que são referênciadas num módulo (o que faz com que se faça javac sobre um ficheiro e em vez de um .class apareçam vários).
    Não sei até que ponto o javac já funciona em multi-threading.
    Mas se não funciona podia bem funcionar.

    ResponderEliminar
  3. Boas,

    Realmente passam a estar disponíveis máquinas com 2 ou mais cores a bom preço, e os compiladores continuam a não tirar partido dos mesmos (http://www.linkedin.com/answers?viewQuestion=&questionID=7804&askerID=4194838&browseIdx=5&sik=1169463583475&goback=%2Eahp%2Eama).

    No projecto do compilador 4GL vão incorporar paralelismo ?

    ResponderEliminar
  4. Interessante! Onde é que está a continuação deste artigo? ;-)

    ResponderEliminar

Enviar um comentário

Mensagens populares deste blogue

Backup automático de disco USB (pen drive)

Hoje em dia toda a gente tem uma pen drive para levar os seus ficheiros de um lado para o outro. E muitas vezes está lá trabalho importante. Mas impõe-se uma pergunta: o que acontece se se perde a pen drive ? Ou se esta se avaria? Quem é que faz backups regulares da pen drive ? Muito pouca gente! Pessoalmente tenho por hábito fazer um backup cerca de uma vez por semana. Quando o trabalho é muito, faço backup mais vezes. Mas já por duas vezes as avarias me fizeram perder as versões mais recentes. E isto chateia. Por isso aqui há uns dias decidi "coçar esta comichão" e resolver o problema de forma mais sistemática: arranjei maneira de fazer um backup automático cada vez que ligo a pen drive a um computador. (sim, eu sei que há software específico para isto, mas que querem, apeteceu-me fazer mais um) A receita é relativamente simples: um script (DOS batch file ) que faz o backup , um ficheiro de definição de autorun e já está. 1. O script de backup - Basta instalar, na roo...

Horário de trabalho

A trabalhar há dois meses na Irlanda, ando para escrever alguns apontamentos daqui de Dublin, mas são tantos e tão diversos que há matéria aqui para escrever um blog inteiro (e talvez ainda o faca se a inspiração vier em meu auxílio). Há no entanto uma diferença que encontrei por aqui que é muito mais marcante do que eu poderia supor poder ser, e lembrei-me deste ponto que talvez se acomode bem neste blog e no tipo de posts que por aqui há. Falo do horário de trabalho . O horário que por aqui se pratica, e que suponho generalizado, é de entrar as 9h e sair as 17h, com meia-hora de almoço. Ou seja, 7 horas e meia. Ou seja, meia-hora de diferença para o horário "normal" de Portugal. E que diferença que essa diferença faz... Os irlandeses não são muito "fanáticos" com o trabalho e os horários, não se trata de regimes "autoritários" como parece ser em Inglaterra ou na Alemanha - a propósito, sabem que os alemães dizem que na Alemanha a taxa de criminalidade é ...

Recém-licenciados das TI não sabem produzir sistemas de informação

Uma das conclusões mais chocantes do recente trabalho " Competências a reforçar na formação dos profissionais de TI em Portugal ", do Grupo de Trabalho das Competências, da ANETIE é que os recém-licenciados não sabem o suficiente sobre construção de interfaces nem sobre produção de informação . Não conheço estatísticas sobre esta matéria. Mas julgo que não estará muito longe da verdade a afirmação de que mais de 90% dos licenciados em cursos ligados às TI estarão envolvidos profissionalmente na produção ou exploração de Sistemas de Informação de Gestão. Isto é: bases de dados, formulários electrónicos, relatórios operacionais ou analíticos, troca de informação entre sistemas, etc.. Ora o que a ANETIE apurou junto dos seus associados é que entre as maiores lacunas encontradas nos licenciados do sector que se vão depois dedicar à engenharia de software, os conhecimentos sobre coisas básicas como écrans de entradas de dados e emissão de relatórios são extremamente baixos. Outr...