Linguagem de Programação

Uma linguagem de programação é um método padronizado para expressar instruções para um computador. É um conjunto de regras sintáticas e semânticas usadas para definir um programa de computador. Uma linguagem permite que um programador especifique precisamente sobre quais dados um computador vai atuar, como estes dados serão armazenados ou transmitidos e quais ações devem ser tomadas sob várias circunstâncias.

O conjunto de palavras (tokens), compostos de acordo com essas regras, constituem o código fonte de um software. Esse código fonte é depois traduzido para código de máquina, que é executado pelo processador.

Uma das principais metas das linguagens de programação é permitir que programadores tenham uma maior produtividade, permitindo expressar suas intenções mais facilmente do que quando comparado com a linguagem que um computador entende nativamente (código de máquina). Assim, linguagens de programação são projetadas para adotar uma sintaxe de nível mais alto, que pode ser mais facilmente entendida por programadores humanos. Linguagens de programação são ferramentas importantes para que programadores e engenheiros de software possam escrever programas mais organizados e com maior rapidez.

Linguagens de programação também tornam os programas menos dependentes de computadores ou ambientes computacionais específicos (propriedade chamada de portabilidade). Isto acontece porque programas escritos em linguagens de programação são traduzidos para o código de máquina do computador no qual será executado em vez de ser diretamente executado. Uma meta ambiciosa do Fortran, uma das primeiras linguagens de programação, era esta independência da máquina onde seria executada.

História

A primeira linguagem de programação para computadores foi provavelmente Plankalkül, criada por Konrad Zuse na Alemanha Nazista, mas que teve pouco ou nenhum impacto no futuro das linguagens de programação.

A primeira linguagem de programação de alto nível amplamente usada foi Fortran, criada em 1954.

Em 1957 foi criada [B-0], que daria origem a Flow-Matic (1958), antecessor imediato de COBOL, de 1959. Lisp e ALGOL foram criadas em 1958. Veja um mapa [1] da história das linguagens de programação.

Interpretação e compilação

Uma linguagem de programação pode ser convertida, ou traduzida, em código de máquina por compilação ou interpretação, que juntas podem ser chamadas de tradução.

Se o método utilizado traduz todo o texto do programa (também chamado de código), para só depois executar (ou rodar, como se diz no jargão da computação) o programa, então diz-se que o programa foi compilado e que o mecanismo utilizado para a tradução é um compilador (que por sua vez nada mais é do que um programa). A versão compilada do programa tipicamente é armazenada, de forma que o programa pode ser executado um número indefinido de vezes sem que seja necessária nova compilação, o que compensa o tempo gasto na compilação. Isso acontece com linguagens como Pascal e C.

Se o texto do programa é traduzido à medida que vai sendo executado, como em Javascript, Python ou Perl, num processo de tradução de trechos seguidos de sua execução imediata, então se diz que o programa foi interpretado e que o mecanismo utilizado para a tradução é um interpretador. Programas interpretados são geralmente mais lentos do que os compilados, mas são também geralmente mais flexíveis, já que podem interagir com o ambiente mais facilmente (freqüentemente linguagens interpretadas são chamadas também de script).

Embora haja essa distinção entre linguagens interpretadas e compiladas, as coisas nem sempre são tão simples. Há linguagens compiladas para um código de máquina de uma máquina virtual (sendo esta máquina virtual apenas mais um software, que emula a máquina virtual sendo executado em uma máquina real), como o Java e o Parrot. E também há outras formas de interpretar em que os códigos-fontes, ao invés de serem interpretados linha-a-linha, têm blocos "compilados" para a memória, de acordo com as necessidades, o que aumenta a performance dos programas quando os mesmos módulos são chamados várias vezes, técnica esta conhecida como JIT.

Como exemplo, podemos citar a linguagem Java. Nela, um compilador traduz o código java para o código intermediário (e portável) da JVM. As JVMs originais interpretavam esse código, de acordo com o código de máquina do computador hospedeiro, porém atualmente elas compilam segundo a técnica JIT o código JVM para código hospedeiro.

A tradução é tipicamente feita em várias fases, sendo as mais comuns a Análise léxica, a Análise sintática ou Parsing, a Geração de código e a Otimização. Em compiladores também é comum a Geração de código intermediário.

Classificação

As linguagens de programação podem ser classificadas e sub-classificadas de várias formas.

Classificação da ACM

A ACM mantém um sistema de classificação com os seguintes subitens:

  • Linguagens aplicativas, ou de aplicação
  • Linguagens concorrentes, distribuídas e paralelas
  • Linguagens de fluxo de dados
  • Linguagens de projeto
  • Linguagens extensíveis
  • Linguagens de montagem e de macro
  • Linguagens de microprogramação
  • Linguagens não determinísticas
  • Linguagens não procedurais
  • Linguagens orientadas a objeto
  • Linguagens de aplicação especializada
  • Linguagens de altíssimo nível

Quanto ao paradigma

Ler sobre paradigma de programação.

Diferentes linguagens de programação podem ser agrupadas segundo o paradigma que seguem para abordar a sua sintaxe:

  • Linguagem funcional
  • Programação estruturada
  • Linguagem orientada a objetos
  • Linguagem natural
  • Programação lógica

Quanto a estrutura de tipos

  • Fracamente tipada, como Smalltalk
  • Fortemente tipada, como Java
  • Dinamicamente tipada, como Python

Quanto ao grau de abstração

  • Linguagem de programação de baixo nível, binária, composta de zeros e uns {0,1}, ininteligível pelo ser humana e executada diretamente pela máquina.
  • Linguagem de programação de médio nível, composta de símbolos muito simples, num meio caminho entre a compreensão humana e a execução direta pela máquina, como Assembly.
  • Linguagem de programação de alto nível, composta de símbolos mais complexos, inteligível pelo ser humano e não-executável diretamente pela máquina, no nível da especificação de algoritmos, como Pascal, Fortran e SQL.

Quanto à geração

  • Primeira geração, as linguagens de baixo nível (Assembly)
  • Segunda geração, as primeiras linguagens (Fortran, ALGOL, e outras)
  • Terceira geração, as procedurais e estruturadas (Pascal, C).
  • Quarta geração, linguagens que geram programas em outras linguagens, linguagens de consulta (SQL).
  • Quinta geração, linguagens lógicas (Prolog).

 


Associação SoftwareLivre

A Associação SoftwareLivre.org (ASL) é uma associação civil sem fins-lucrativos, com sede em Porto Alegre/RS que reúne empresários, profissionais liberais, estudantes e servidores públicos, estabelecendo relações com os mais diversos setores da sociedade como o poder público, universidades, empresas, grupos de usuários, hackers e ONGs. A ASL tem por principal objetivo tornar o software livre amplamente incluído na sociedade, propiciando espaço de discussão, apoio, fomento e organização de iniciativas nas mais diversas áreas relacionadas. - Site oficial da associação