Este é o terceiro artigo da série sobre as abstrações encontradas na computação.
O artigo anterior apresentou um resumo sucinto do que é um sistema operacional, observando que ele oferece uma camada de abstração a ser utilizada por programas escritos via uso de linguagens de programação.
O conceito por trás de uma linguagem de programação está em expressar através de sentenças próximas da linguagem humana (mais precisamente a língua inglesa, adotada nos países pioneiros da computação – Inglaterra e EUA).
Através do trabalho pioneiro de Grace Hopper, criou-se o conceito de compilação, que resumidamente é transformar um conjunto de sentenças escritas dentro de regras específicas em uma codificação que computadores reconhecem. Com isso surgiram as primeiras linguagens de alto nível, como COBOL e FORTRAN.
A principal contribuição das linguagens de programação está no desenvolvimento da computação empresarial. Computadores deixaram de ser usados apenas para fins militares e começaram a entrar nas corporações, para resolver questões financeiras e de engenharia.
Com a evolução dos equipamentos, principalmente através da miniaturização dos componentes usados para monta-los (ver Tudo começa no processador), surgiu uma grande demanda por programadores e isso levou à busca de linguagens com um aprendizado mais rápido, como o BASIC). Também houve um desenvolvimento acadêmico, que levou a linguagens mais rigorosas na implementação de algoritmos, como o Pascal.
Uma linguagem que teve enorme´sucesso é a C. Ela foi usada no desenvolvimento do Unix, provavelmente o sistema operacional mais bem sucedido da história, considerando que é a base para modernos SO como o Linux e sua vertente móvel Android. Ela possui características que facilitam a codificação de instruções para usar diretamente recursos do hardware de um computador e a portabilidade, que é rodar um programa em diferentes modelos de processadores.
A programação orientada a objetos foi uma evolução notável no mundo das linguagens de programação. As sentenças que fazem parte de qualquer linguagem são usadas para descrever os chamados “objetos”, incluindo as possíveis ações que eles podem realizar. A analogia de objetos com entidades do mundo real é algo perceptível, conforme visto em diversos tutoriais sobre o assunto que se encontram na Internet.
Atualmente as principais linguagens de programação, como Java e as voltadas para a plataforma .NET são baseadas em orientação a objetos. Especificamente para esses casos, os compiladores não geram diretamente código de máquina e sim instruções que são executadas por máquinas virtuais. Isso é feito para garantir um maior independência entre programas e o ambiente onde são executados, visando maior segurança e independência do processador utilizado.
Linguagens de programação podem ser declarativas, quando possuem a qualidade de transparência referencial. Em um código que use expressões com essa característica, estas são trocadas por seu valor sem mudar o sentido do programa. Uma explicação mais detalhada para isso está além da proposta destes artigos, mas vale observar que a computação quântica eventualmente se baseará em linguagens dessa natureza.
Para se trabalhar com as modernas linguagens de programação, surgiram os frameworks de desenvolvimento, cuja finalidade é descrita no próximo artigo.