Historico Linguagens Programacao
2007090800_linguagens_programacao_Picture3-tm.jpg

Uma Linguagem de Programação (LP) é um conjunto finito de regras formadas a partir de uma gramática formal, que expressam instruções para um computador.

A construção de uma linguagem de programação pode ser descrita pelas gramáticas livres de contexto ou pela notação BNF (Forma de Bakcus – Naur).
As instruções seguindo regras gramaticais estabelecidas de forma sintática e semântica são descritas em um Texto Fonte chamado também de Código Fonte. Este passa por um Compilador, escrito especificamente para a linguagem gerando ao fim de sua execução um Código de Máquina, pronto para ser executado pelo processador.

HISTÓRIA

O surgimento das LP se deu exclusivamente para fins militares, visto que a função básica de uma LP era agilizar o processo que um analista tinha em operar o computador para decifrar criptografias inimigas, gerar cálculos para rotas de mísseis etc.

Data-se em 1944 o surgimento da primeira LP, seu criador Konrad Zuse, engenheiro alemão que projetou na Suíça o Plankalkü. Possuía características como as chamadas de função (subrotinas), atribuição, estrutura de repetição, matrizes, instruções condicionais e tratamento de exceções. Seu trabalho foi esquecido por anos e somente foi publicado oficialmente em 1972.

Nos meados da década de 50 os computadores que já passaram a utilizar chips em vez de válvulas tinham seus Códigos escritos diretamente em Linguagem de Máquina, o Assembly. Envolvendo assim muito esforço para converter os cálculos numéricos em instruções Assembly, foram criados então Autocodes que geravam códigos automaticamente em Assembly quando se passava informações pré-definidas.

Em 1954 desenvolvido para o IBM 704 por uma equipe da IBM chefiada por John W. Bakus foi criado a LP chamada Fortran.

Adaptada para a escrita de programas numericamente intensos esta LP se tornou a partir de 1966 a mais usada no meio científico. Uma gama enorme de compiladores para os diversos computadores foram criados, sua simplicidade e facilidade para aprendizado e a capacidade de lidar com números complexos ajudaram para sua difusão.

Como era a primeira projeção de uma LP de alto nível o Fortran necessitava que sua formatação do Código Fonte fosse bastante precisa, erros de sintaxe e pós-compilação eram bastante comuns.

A evolução das LP tem acompanhado a ordem cronológica com que os computadores se desenvolvem, isto gera novas necessidades e por sua vez, formas novas de resolver os problemas devem ser encontradas.

Um Mapa foi criado com a cronologia das LP até os dias atuais.

AS LINGUAGENS DE PROGRAMAÇÃO

Uma LP tem por característica comum a abstração seja parcial ou total da linguagem de máquina que é enxergada pelo computador. Esta abstração pode ser classificada como:

  • Baixo Nível – quando a abstração é relativamente pouca, ou seja, se escreve um código muito próximo ou totalmente entendido pela máquina;
  • Médio Nível – quando se utiliza símbolos simples, estes geram um código intermediário entre a compreensão humana e da máquina;
  • Alto nível – quando se utiliza de símbolos complexos, estes geram um código que é inelegível pela máquina mas completamente compreendido pelo Homem;
  • Altíssimo Nível – quando os símbolos são altamente complexos, seu código fonte é totalmente abstrato ao código que a máquina conhece.

Como função única da LP é facilitar a forma como criamos instruções para o computador executar, o conjunto finito de regras denominado então Linguagem de Programação gera, um conjunto infinito de Códigos Fontes. Isto é possível, pois dois programadores criam soluções diferentes para um único problema, mesmo se utilizando a mesma LP.

Quanto à forma como será transformada em Linguagem de Máquina, uma LP pode ser atualmente ser classificada como para compilação ou para interpretação:

  • Compilação – quando o método utilizado traduz todo o Texto Fonte para a Linguagem de Máquina antes da execução. O mecanismo utilizado é um software chamado compilador que executa diversas tarefas de análise e síntese no Texto Fonte gerando a final um Código Objeto já inteiramente compilado e que poderá ser executado diversas vezes. Este Código Objeto é voltado unicamente para um tipo de plataforma;
  • Interpretação – quando o método utilizado traduz de forma simultânea à sua execução o Texto Fonte. O mecanismo utilizado então é um software chamado Interpretador, as análises no Texto Fonte são simultâneas e os erros reportados ao utilizador. Sua utilização geralmente envolve execuções multi-plataforma para o mesmo Texto Fonte.

É certo que estas duas formas mesmo que distintas podem ser usadas de forma conjunta em uma LP, de forma a tornar mais flexível à utilização.

A UTILIZAÇÃO

É imprescindível para a elaboração rápida de um sistema a utilização de uma LP, sua conversão para a Linguagem de Máquina não é tão eficiente quando um sistema escrito diretamente em Linguagem de Máquina, mas seu custo final de produção compensa esta deficiência.

Existindo cada vez mais equipamentos programáveis, mais LP serão desenvolvidas para suprir as necessidades que estes equipamentos possuirão para interagir com seu dono. Seja para um software no celular, computador de um automóvel, aeronaves, satélites, geladeiras etc.

Dentre outras, a escolha de qual LP utilizar varia de acordo com:

  • Forma de interação com o usuário final – Web, Cliente/Servidor etc.
  • Equipamento – Celular, Pager, Automóvel etc.
  • Especificação – Matemática, Física, Estudos etc.
  • Arquitetura – Unix, Windows, Mac etc.

O equipamento ainda pode ser desenvolvido sob um determinado tipo de LP, restringindo assim as outras.

A evolução que se calcula para as LP são os chamados “Geradores de Software” que se destinam a abstrair da programação a LP.

O programador utiliza símbolos e formas abstratas para gerar o Texto Fonte, que passa então a ser escrito automaticamente para uma LP e em seguida ser compilado. Esta técnica promete agilizar ainda mais a forma como um software é criado.

Fontes:

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License