Monthly Archives: November 2014

Evolução das Linguagens de Alto Nível

Conforme falado neste post, todos os computadores operam por conta de programas que falam a mesma língua do computador, longas sequências de instruções chamadas de código de máquina endereçadas ao hardware e que são escritas em notação binária, ou seja, usam apenas os dígitos 0 e 1.

A primeira geração das linguagens precisava de longas sequências de números binários para representar operações matemáticas como “adicionar”, “subtrair”, “dividir”.

Como o desenvolvimento de programas em código de máquina é impraticável, tedioso e totalmente propenso a erros, surgiram as linguagens de segundo nível, que usavam mnemônicos simples como “A” para indicar “ADD” (somar) ou M para “MULTIPLY” (multiplicar), que então eram traduzidos para linguagem de máquina por um programa chamado Assembler, conforme já falado.

A dificuldade de portar programas através de diferentes computadores levou ao desenvolvimento das linguagens de alto nível que são tão conhecidas hoje em dia, pois permitiram ao programador ignorar detalhes de baixo nível, que não estavam relacionadas diretamente ao seu objetivo final, às regras de negócio.

Posteriormente ficou reconhecida que quanto mais parecida a linguagem de programação fosse com a linguagem natural, menos suscetível a erros seria o programa. Essas linguagens de terceira geração foram desenvolvidas para resolver problemas singulares. Diferentemente das linguagens de máquina e simbólicas (Assembly), elas variavam menos entre diferentes computadores. O código escrito em linguagem de alto nível é traduzido em código de máquina por um programa chamado compilador ou interpretador.

Os primeiros computadores eram usados quase exclusivamente por cientistas, tanto é que a primeira linguagem de alto nível, a FORTRAN, foi desenvolvida para aplicações de engenharia. Uma linguagem que lidava melhor com algoritmos recursivos, chamada LISP, também foi criada em seguida. A primeira linguagem direcionada para aplicações comerciais, o COBOL, ainda é amplamente usada nos dias de hoje em grandes sistemas corporativos.

BASIC foi desenvolvida como uma ferramenta de ensino para alunos de graduação e depois se tornou a principal linguagem de programação responsável pela revolução do computador pessoal. Em 1971 um professor suíço criou a linguagem estruturada a qual ele nomeou Pascal, em homenagem ao primeiro homem a criar com sucesso uma calculadora mecânica.

Em 1972 a linguagem C foi criada, seguida pela criação de sua extensão chamada de C++, que provavelmente se tornou uma das linguagens de programação de propósito geral mais amplamente utilizada, devido a sua capacidade de lidar com a programação orientada a objetos.

Java é uma linguagem orientada a objetos parecida com C++, mas sem algumas funções que tornavam a programação mais suscetível a erros por parte do programador. Java foi desenvolvida especificamente para escrever programas que fossem possíveis de serem transferidos com segurança pela internet e executados sem medo de que vírus fossem instalados no computador.

O que é um programa de computador?

Um programa de computador é formado por um conjunto de instruções que irão fazer o computador executar algo. As instruções básicas de computador são compostas por uma sequência de “sim” e “não” ou “ligado” e “desligado” (on/off) que o computador segue enquanto roda um programa.

Essa sequência de “ligado” e “desligado” é chamado de sistema binário, que é um sistema de numeração formado por apenas dois algarismos (0 off / 1 on). Ou seja, esse sistema admite apenas duas possibilidades, sempre opostas, como: tudo/nada, ligado/desligado, presença/ausência, esquerdo/direito, alto/baixo, verdadeiro/falso, aceso/apagado.

Os “ligado/sim” são codificados (ou seja, escritos em programação) como 1 e os “desligado/não” como 0. Números e letras também são representados todos dessa maneira: 0000 = 0, 0001 = 1, 0010 = 2, 0011 = 3, etc.

 

binarios

A vida não deve ter sido fácil para os programadores de antigamente…

 

No início da programação os códigos pareciam algo como “10100101010101000101010101010101”, até que alguém percebeu que, como o objetivo da programação é tornar a vida mais fácil, seria mais lógico se criassem um programa que receberia um tipo de código que fosse fácil de criar e esse programa, então, traduziria para código de máquina (em 0 e 1, portanto, binário).

 

Assim a linguagem a Assembly foi criada, de forma que o código de computador passou a ficar parecido com “add $5, $7, $8”, o que apesar de não ser totalmente legível ainda assim era melhor que “010101”. O programa que traduzia a linguagem Assembly para linguagem de máquina era chamado de Assembler.

assembly

Programa em Assembly: diversão garantida!

 Então alguém teve a ideia de criar um programa que traduziria palavras em inglês para a linguagem Assembly, para que pudessem escrever em inglês.

Assim as linguagens de alto nível foram criadas. Agora os programadores podiam codificar coisas como “x = 5 + 8” ou String nome = “Ivens Rocha”, o que tornou o código muito mais fácil de ler.

assembly 2

FORTRAN, a primeira linguagem de alto nível. (E hoje poderia ser considerada de baixo nível, devido a grande evolução das linguagens de programação modernas)

Este novo jeito de programar fazia com que o compilador traduzisse o código contendo palavras em inglês para linguagem Assembly, para que ela então traduzisse para linguagem de máquina e em seguida o computador entendesse e executasse aquela série de “sim” e “não” (1 e 0).

Esta nova forma de codificar tornou possível criar códigos mais complexos, mais organizados e mais fáceis de ler, manter e continuar.

Programar, em última instância, significa criar instruções. Dependendo da velocidade do computador, ele consegue executar milhões de instruções por segundo. Por exemplo, um jogo 3D complexo como Call of Duty possui milhões de linhas de código que são executadas por segundo. O trabalho de um programador é ser capaz de não focar apenas em como o produto final aparenta ser, mas em como cada pequena parte roda individualmente e então ser capaz de escrever todas as linhas de código que façam com que o programa como um todo funcione.

Quando você aprender a como programar, você aprenderá a quebrar o objetivo em pequenas partes e trabalhar somente em uma parte por vez. Isso serve para que você foque apenas no que precisa ser feito agora, deixando o futuro para o futuro.

 

A Curiosity, lançada pela NASA e que vaga por Marte desde 2012 usa 2.500.000 linhas de código, na linguagem C.

Por exemplo, quando você estiver programando um jogo, se você estiver focado em desenvolver o comportamento dos tiros de uma arma, você deixará o resto para depois. Quando você quiser programar a forma como um jogador irá se movimentar no mapa, você irá programar apenas isso, deixando todo o resto para depois. Depois disso tudo, você dará um passo pra trás e juntará todos os pedaços. Apesar de parecer difícil, esse é um dos aspectos mais básico que você aprenderá nesse curso e ficará extremamente acostumado com isso. Isso é conhecido como abstração.