As quatro linguagens mães: ALGOL
Nos artigos anteriores, falamos sobre Fortran y COBOL e como elas resolveram problemas definidos, agora iremos para um novo capítulo desta série: ALGOL!
Vamos descobrir que o ALGOL é a linguagem mais influente e menos usada.
ALGOL: O Latim das linguagens de programação que explica algoritmos
Fortran, Cobol e LISP começaram o caminho das linguagens de alto nível mas tinham um problema: não eram adequadas para descrever algoritmos.
Mas o que são algoritmos?
Algoritmos são a base da Ciência da Computação. Com eles podemos descrever como os softwares funcionam sem precisar implementá-los, podemos já checar se o funcionamento está correto ou se há bugs no algoritmo, checar a implementação antes de fazer código e verificar a complexidade da execução.
Nesta época, se viu necessário uma linguagem unificada para descrever estes algoritmos que poderiam ser implementados em uma linguagem de programação do mesmo jeito.
Foi aí que surgiu o ALGOL. Ele influenciou a sintaxe de todas as linguagens modernas. Se você programa em C, Java, Python, Ruby ou outra linguagem imperativa, você foi totalmente influenciado pelo ALGOL, sabia?
Mesmo após cair em desuso, é uma referência para descrever algoritmos, sendo uma linguagem não utilizada, porém a mais referenciada que já existiu. É conhecido como o Latim das linguagens de programação.
ALGOL
Hello, ALGOL!
ALGOL é sinônimo de código há muito tempo. O ALGOL (ALGOrithmic Language) foi um desenvolvimento conjunto de 13 cientistas dos EUA e Europa no Instituto Federal de Tecnologia em Zurique, na Suíça em 1958.
Só para se ter uma ideia dos pensadores em cima do ALGOL, tivemos John McCarthy, criador do LISP e John W. Backus, criador do Fortran. Destes 13 cientistas, 4 foram ganhadores do ACM Turing Award, o equivalente ao Nobel de computação.
A criação da linguagem foi uma tentativa de criar uma linguagem universal para os computadores da época e se chamaria IAL (International Algebraic Language), mas o nome foi rejeitado e ficou ALGOL no final das contas.
A linguagem tinha o objetivo de corrigir alguns problemas do Fortran e unificar cientistas de computação do mundo inteiro a seguirem um padrão. Iremos focar nas inovações trazidas pelo ALGOL 60 já que a versão seguinte, o ALGOL 68, nem chegou a ser desenvolvida de fato. Apesar de não ter sido bem sucedido no padrão e ter caído em desuso, o ALGOL marcou as próximas gerações com a sua sintaxe e o grupo de trabalho.
Inovações e Código
Linguagem Imperativa, ou seja, o programador diz exatamente cada passo do algoritmo. Assim, o ALGOL definiu "código" como conhecemos nas principais linguagens: atribuições de variáveis, condicionais, laços e organização em funções.
Entrando em mais detalhes, o ALGOL introduziu o conceito de escopo com blocos: organização e delimitações e o ALGOL introduz o `begin ... end` para delimitar escopo de código. Isto no futuro virou `{ ... }` de muitas linguagens.
Listas ou Array dinâmicos foram outra inovação trazida pelo ALGOL. Muitas linguagens precisam que suas listas sejam definidas em tempo de compilação o seu tamanho (como acontece com o C). ALGOL permitia que o tamanho da lista fosse definido em tempo de execução.
Outra inovação que é algo muito comum no aprendizado de funções com C é a "passagem por valor" e "passagem por referência". Isso permitia que um dado fosse modificado dentro de uma função, apenas passando o seu ponteiro.
O código abaixo em ALGOL 60 faz um cálculo de média:
Este código parece ser bem fácil de ler, né? Porque, com certeza, você já viu uma descrição de algoritmo exatamente neste formato.
Curiosidades
A versão mais famosa do ALGOL foi o ALGOL 60. Hoje não temos compiladores de ALGOL, pois, na época da sua criação apenas um fabricante, a Burroughs, se interessou pela linguagem. Hoje, como linguagem extinta, não há interessados no seu desenvolvimento, exceto alguns projetos open-source. Outro motivo pelo desinteresse pela linguagem é que não foram definidos oficialmente os recursos de Entrada e Saída. Em outras palavras, não daria para fazer o "Hello, World". Isso só foi definido por cada fabricante.
Anos mais tarde, 1968 foi especificado o ALGOL 68 com muito mais recursos especificada pelo cientista da computação Adriaan van Wijngaarden. Se estudarmos a fundo, a criação de van Wijngaarden é uma obra-prima da Ciência da Computação e permitia muitas novas operações. Por exemplo, era possível redefinir operadores e mudar a precedência entre eles, ou seja, poderíamos mudar regras da matemática como fazer a soma vir primeiro que uma multiplicação. Mas o altíssimo nível do ALGOL 68 impôs uma tremenda dificuldade de implementação e de entendimento dos usuários. Isso fez o projeto não seguir em frente.
A despedida do ALGOL
Como se dependia muito de fabricantes de hardware para o desenvolvimento da linguagem, o ALGOL caiu em desuso pela falta de interesse comercial, sendo uma linguagem extinta. Porém, há alguns projetos open-source tentando implementar a linguagem feito por hobbistas.
E nesta mesma analogia, o ALGOL deixou um legado pelo pensamento algorítmico imperativo, o que influenciou todas as linguagens modernas como C, Pascal, Java, Python, JavaScript e Ruby.
Como ALGOL foi uma criação de um grupo relevante de cientistas, a Forma Normal Backus-Naur (BNF) para definir sintaxes de linguagem foi uma criação para o ALGOL que é usada até hoje nas linguagens modernas. Abaixo podemos ver a definição da linguagem Python que usa uma versão mais moderna do BNF:
Outro legado importante do ALGOL foi o seu uso para descrever algoritmos. Como tinha sintaxe fácil, Association for Computer Machinery (ACM), umas das maiores associações científicas em computação do mundo, usou o ALGOL por muitos anos como padrão para a escrita de algoritmos em artigos. Ou seja, provavelmente você já viu a descrição de um algoritmo em ALGOL em alguma explicação. Este é um dos motivos do porquê o ALGOL também nos é familiar.
Em breve está disponível o capítulo final desta série com a última das linguagens mães: LISP.
Até logo!
A Revelo Content Network acolhe todas as raças, etnias, nacionalidades, credos, gêneros, orientações, pontos de vista e ideologias, desde que promovam diversidade, equidade, inclusão e crescimento na carreira dos profissionais de tecnologia.