Linguagens de programação: o que são?
Aprenda o significado das linguagens de programação. Entenda com o que elas se parecem e como são utilizadas para criar programas.
09/11/2023
Definição das Linguagens de Programação
Da maneira mais superficial possível, as linguagens de programação podem ser definidas como uma maneira padronizada de comunicar instruções para um computador executar. Ou seja, é uma simbologia que especifica como um código fonte (código que define um programa de computador) será escrito.
Para entender o significado das linguagens de programação, imagine o seguinte cenário: um poema de amor escrito em três idiomas:
Duvida da luz dos astros,
De que o sol tenha calor,
Duvida até da verdade,
Mas confia em meu amor.
Poema de amor escrito em Português.
شك في ضوء النجوم ،
أن الشمس حارة ،
شك حتى الحقيقة ،
لكن ثق بحبي.
Poema de amor escrito em Árabe.
星の光を疑い
太陽が暖かくなりますように
真実すら疑って
でも私の愛を信じてください。
Poema de amor escrito em Japonês.
Apesar dos três poemas comunicarem a mesma coisa, certamente você só conseguiu entender o poema escrito em português. Isso acontece porque a língua portuguesa te fornece símbolos e palavras que fazem sentido para sua mente, que você consegue compreender.
Com as linguagens de programação é a mesma coisa. Elas são espécies de idiomas. Conjuntos de símbolos e palavras que os programadores utilizam para informar ao computador o que ele deve fazer. Observe abaixo um exemplo de um simples programa de computador escrito em duas linguagens de programação diferentes:
1.#include
2.using namespace std;
3.unsigned int factorial(unsigned int n)
4.{
5. if (n == 0)
6. return 1;
7. return n * factorial(n - 1);
8.}
9.int main() {
10. int num = 5;
11. cout << "Factorial is " << factorial(num) << endl;
12. return 0;
13.}
Programa escrito na linguagem C++
1.def recur_factorial(n):
2. if n == 0:
3. return 1
4. else:
5. return n*recur_factorial(n-1)
6.num =5
7.fact = recur_factorial(num)
8.print("The factorial is ",fact)
Programa escrito na linguagem Python.
Todos os dois programas, apesar de escritos em linguagens diferentes e de formas diferentes, são tecnicamente interpretados e executados da mesma maneira. Desta forma, podemos entender que as linguagens de programação são idiomas utilizados por programadores para escrever código fonte que serão executados por um computador.
Características e uso das Linguagens de Programação
As linguagens de programação foram projetadas, e ainda são, para fornecer ao programador um modelo de alto nível de comunicação. Ela faz uso de termos humanamente compreensíveis e que, muitas vezes, estão relacionados às ações comuns da atividade humana.
Observe no código abaixo como os termos da linguagem se referem a ações humanamente compreensíveis, tais como o termo “setColor”, que se refere a atribuir uma cor, e o termo “drawImage”, que se refere a desenhar uma imagem na tela.
1.protected void paintComponent(Graphics g) {
2. super.paintComponent(g);
3. setBackground(Color.LIGHT_GRAY);
4. g.setColor(Color.RED);
5. g.fillOval(bola.posX, bola.posY, bola.raio*2, bola.raio*2);
6. g.drawImage(ball.stoped, ball.posX, ball.posY, null);
7.}
No que diz respeito à sua utilidade, as linguagens de programação são usadas para fazer representações de conhecimentos do mundo real. Para fazer com que os computadores representem as teorias e conceitos humanos dos diversos campos da ciência.
Para entender como isso ocorre, vamos partir para um exemplo no campo da matemática. Observe abaixo a representação do conceito matemático do Teorema de Pitágoras, expresso de duas formas: na primeira imagem temos a linguagem matemática, que aprendemos na formação escolar básica; na segunda temos o mesmo conceito representado na linguagem de programação Java.
hipotenusa = √(cateto12 + cateto22)
Teorema de Pitágoras expresso na linguagem Matemática.
1.int cateto1 = 3;
2.int cateto2 = 4;
3.int dc1 = Math.pow(cateto1, 2);
4.int dc2 = Math.pow(cateto2, 2);
5.int hipotenusa = Math.sqrt(dc1 + dc2);
Teorema de Pitágoras expresso na linguagem Java.
Observando a representação do Teorema de Pitágoras, que foi expressa na imagem acima, fica claro que a complexidade das linguagens representa um meio termo entre o que o ser humano consegue entender e o que uma máquina consegue entender. Para o humano, uma linguagem natural composta de regras lógicas, que definem como podemos construir uma palavra ou frase, é algo perfeitamente compreensível. Para uma máquina, tanto faz.
Linguagens de Programação versus Código Binário
De fato, um computador compreende apenas instruções em códigos binários (zeros e uns) e as linguagens de programação representam simplificações dessas instruções em uma linguagem de mais alto nível, mais humanamente compreensível. Assim, todo o código fonte escrito em uma linguagem de programação é convertido para código binário antes de ser executado pelo computador.
Para compreender melhor essa diferença observe abaixo o exemplo de um programa escrito em uma linguagem de programação e em código binário.
1.int main(){
2. printf("Hello World");
3. return 0;
4.}
O programa é criado em uma linguagem mais humanamente compreensível.
1.01101001 01101110 01110100 00100000
2.01101101 01100001 01101001 01101110
3.00101000 00101001 01111011 00001101
4.00001010 00100000 00100000 00100000
5.00100000 01110000 01110010 01101001
6.01101110 01110100 01100110 00101000
7.00100010 01001000 01100101 01101100
8.01101100 01101111 00100000 01010111
9.01101111 01110010 01101100 01100100
10.00100010 00101001 00111011 00001101
11.00001010 00100000 00100000 00100000
12.00100000 01110010 01100101 01110100
13.01110101 01110010 01101110 00100000
14.00110000 00111011 00001101 00001010
15.01111101
Para ser executado, o programa é convertido para código binário, que é a representação que o computador compreende.
Fica óbvio que, mesmo parecendo um pouco complicado, é muito mais fácil para um ser humano compreender o código fonte escrito em uma linguagem de programação do que em código binário. O computador, por sua vez, também consegue compreender o código escrito em uma linguagem de programação e traduzi-lo para sua representação binária.
Linguagens de Baixo Nível
Na década de 1950, nos primórdios da ciência da computação, os programas de computador não eram produtos comerciais. Eram ferramentas restritas aos centros de pesquisas de universidades e aos órgãos nacionais de defesa. Por esse motivo, não havia grande demanda de mercado para construção de softwares.
Os programas daquela época eram desenvolvidos por cientistas, para uso exclusivo deles próprios, utilizando uma linguagem de programação de baixo nível denominada Assembly.
A linguagem Assembly não era nada compreensível. Estava fortemente ligada à conceitos da própria arquitetura e dos componentes eletrônicos. Por esse motivo, era denominada como linguagem de baixo nível.
Outra característica negativa era o fato de que cada arquitetura de computador tinha a sua própria linguagem Assembly. Um programa escrito para uma máquina não funcionava na outra e vice-versa. O código fonte tinha que ser totalmente reescrito em Assembly para cada máquina onde fosse executado. Isso não era algo muito produtivo.
Linguagens de Alto Nível
Como resposta à essa ineficiência, surgiram as linguagens de programação de alto nível. Linguagens mais compreensíveis e parecidas com a forma humana de se comunicar. Por esse motivo, eram mais e fáceis de aprender.
A principal característica das linguagens de alto nível é a capacidade de escrever programas para todos os tipos de máquinas. Ou seja, o retrabalho de reescrever todo o programa para um computador diferente foi resolvido!
O código fonte do programa era escrito em uma linguagem de alto nível. Depois era convertido para o código binário por meio de um outro programa denominado compilador. O compilador gerava o programa que poderia ser executado naquela máquina específica.
A importância das Linguagens de Alto nível
Desde que as linguagens de programação de alto nível surgiram, foi possível não só escrever programas únicos que funcionavam em todas as maquinas, mas também foi possível difundir a utilização dos softwares de computador para outros setores da sociedade, externos às universidades e aos centros de pesquisa.
Basta olhar em volta para podermos observar como a sociedade está inundada de programas de computadores. Se você pegar o seu celular vai encontrar centenas deles. Na sua TV Digital, na sua geladeira, no elevador, nos semáforos inteligentes e em quase tudo que usamos no cotidiano e nem nos damos conta.
Nesse sentido, as linguagens de programação de alto nível desempenharam papel importantíssimo, pois permitiram uma considerável redução da curva de aprendizado da atividade de programação e simplificaram drasticamente o processo de desenvolvimento de softwares para todos os setores da economia mundial.
David Santiago
Mestre em Sistemas e Computação. Graduado em Sistemas de Informação. Professor de Linguagem de Programação, Algoritmos, Estruturas de Dados e Desenvolvimento de Jogos Digitais.