Histórico das Linguagens de Programação - Década de 1940

Histórico das Linguagens de Programação - Década de 1940

Esta página tem o resultado da pesquisa feita pelo aluno Endryl Marques sobre o histórico das linguagens de programação da década de 1940.


O espaço dessa Wiki será dedicado para apresentar um pouco das linguagens de programação na década de 40 e como elas se relacionam com os compiladores, como foi solicitado pelo professor Osvaldo Requião, para fins de pesquisa e avaliação da matéria de compiladores de 2018.1 da turma de engenaria de software.


Programação em linguagens de máquina
Na década de 40 a computação ainda estava dando seus primeiros passos, as linguagens de programação de alto como conhecemos hoje ainda não existiam, os computadores era programados através de linguagem de maquina utilizando interruptores e cartões perfurados que davam comandos aos enormes computadores com pouquíssima capacidade de memoria e processamento que existiam na época.


Funcionamento dos primeiros computadores e o Eniac Code System
Um desses brutamontes era o ENIAC:

Two_women_operating_ENIAC.gif

Electronic Numerical Integrator and Computer (ENIAC - em português: computador integrador numérico eletrônico) foi o primeiro computador digital eletrônico de grande escala. Muitos comentam que o primeiro foi o Mark I, mas este era apenas eletromecânico. O ENIAC entrou em funcionamento em fevereiro de 1946 pelas mãos dos cientistas norte-americanos John Eckert e John Mauchly, da Electronic Control Company.

O ENIAC começou a ser desenvolvido em 1943 durante a II Guerra Mundial para computar trajetórias táticas que exigissem conhecimento substancial em matemática, mas só se tornou operacional após o final da guerra.

  • Sua capacidade de processamento era de 5.000 operações por segundo;
  • Criado na segunda guerra, tinha como principal finalidade cálculos balísticos;
  • Possuía 17.468 válvulas termiônicas, de 160 kW de potência;
  • O "sistema operacional" da máquina era através de cartões perfurados.

A calculadora efetua os cálculos a partir das teclas pressionadas, fazendo interação direta com o hardware, como no ENIAC, no qual era preciso conectar fios, relês e sequências de chaves para que se determinasse a tarefa a ser executada. A cada tarefa diferente o processo deveria ser refeito. A resposta era dada por uma sequência de lâmpadas.


Konrad Zuze / Plankalkull
Mas mesmo nessa época as linguagens de alto nível começavam a ser imaginas, e teorias sugiram impulsionando o cenário para um outro caminho que buscava facilitar a vida dos programadores, e foi nesse momento que surgiu Plankalkül:

200px-Konrad_Zuse_%281992%29.jpg

Plankalkül foi a primeira linguagem de programação, a mesma foi criada pelo cientista alemão Konrad Zuse nos anos de 1943 a 1946 sendo considerada uma Linguagem de Alto Nível, porém só foi publicada em 1972.Zuse queria desenvolver um meio sofisticado para o desenvolvimento das tarefas que o computador deveria fazer.
Konrad Zuse construiu diversos computadores complexos a partir de reles eletromagnéticos, porém em 1945, a guerra destruiu todos, a não ser um único modelo, o Z4. Após a destruição de seus computadores, Konrad se mudou para uma aldeia chamada Hinterstein, onde, começou a trabalhar sozinho em seu projeto para desenvolver sua linguagem de programação, um projeto que iniciou em 1943 como proposta para a sua dissertação de Ph.D. Ele chamou a sua linguagem de programação de Plankalkül, que significa cálculo de programa.


Short Code/Short Order Code
Ainda na década de 40, perto de seu final pra ser mais exato, um grande nome do ramo, John Mauchly começou a desenvolver uma linguagem de alto nível para auxiliar os desenvolvedores, anos depois ela foi chamada de short code.

Mauchly.jpeg

Short Code foi uma das primeiras linguagens de programação de alto nível já desenvolvida para um computador.[1] Diferente de código de máquina, seu o código é representado por expressões matemáticas.

A linguagem foi proposta por John Mauchly em 1949, e conhecida originalmente como Brief Code. William Schmitt implementou uma versão ainda no mesmo ano para o BINAC,[2] mas ela nunca foi depurada ou testada. No ano seguinte, Schmitt implementou uma nova versão para o Univac I, agora com o nome Short Code. Uma versão revisada foi desenvolvida em 1952 para o Univac II, por A. B. Tonik e J. R Logan.[3]

O Short Code é implementado através de expressões matemáticas, que devem ser convertidas manualmente para a execução. Os elementos de uma expressão são representados por códigos de dois caracteres, e então agrupados em em conjuntos de seis códigos. Com o agrupamento, forma-se então palavras de doze bytes, de acordo com a arquitetura do BINAC e do Univac.[4]


Herman Goldstine/fluxogramas

image_gallery.jpg

Em Princeton, do outro lado do Atlântico, Herman H. Goldstine e John von Neumann estavam preocupados com o mesmo problema: como se poderiam representar algoritmos de uma maneira precisa, em uma linguagem de mais alto nível que a de máquina.

Ao desenvolver os projetos lógicos do computador EDVAC e da máquina do IAS (Institute for Advanced Study, da universidade de Princeton), von Neumann tinha também uma grande preocupação com a sua programação. Ele deixou um manuscrito que é provavelmente o primeiro programa escrito para um computador com programa armazenado na memória. O problema proposto é o da classificação de uma série de dados em ordem recente. Von Neumann propôs o método que ficou conhecido mais tarde como classificação por intercalação, até hoje um dos algoritmos mais usados para classificar dados na memória. Já aí aparecem alguns expedientes que prenunciam o surgimento das linguagens de montagem (linguagens simbólicas, mnemônicas, muito próximas à linguagem binária das máquinas)como os símbolos para denotar grandezas ou o conceito básico de alocação dinâmica de memória. A descrição termina com uma análise do tempo de execução muito semelhante às análises difundidas por Donald Knuth.

Sem entrar em detalhes mais técnicos, significava que a atribuição de endereços era feita em relação a um endereço inicial arbitrário, a ser preenchido mais tarde, conseguindo-se o efeito de relocação manual do código, de modo a ser usado como uma subrotina aberta (outro conceito que exige maior conhecimento técnico sobre sistemas operacionais e programação/arquitetura de computadores)

Para o projeto do IAS, von Neumann e Goldstine compuseram três volumes (1947/48) intitulados Planning and coding of problems for an electronic computing instrument. O primeiro volume é dedicado à metodologia da programação, o segundo volume traz vários exemplos de programas e o terceiro volume é dedicado à construção de subrotinas reutilizáveis e construção de bibliotecas destas subrotinas.

Eles propuseram uma representação pictórica, através de caixas unidas por setas, que chamaram de fluxogramas. Descreveram fluxogramas que continham uma caixa denominada caixa de anotação (especificação). Nessa caixa descreviam-se certos fatos sobre o resultado de uma computação (o efeito por ela provocado). O conteúdo dessa caixa deveria ser confrontado com as operações descritas pelo fluxograma, possibilitando uma verificação da consistência entre o fluxograma e as intenções do programador expressas através das anotações. Com von Neumann e Goldstine encontra-se também a primeira referência à corretude de programas.

A ênfase era colocada no poder de cálculo e não na expressividade das estruturas como Zuse e esse trabalho foi largamente difundido entre as pessoas envolvidas com computadores na época fato, acompanhado da excelente qualidade de apresentação e pelo prestígio de von Neumann, significaram que seu trabalho teve um enorme impacto, tornando-se fundamento para técnicas de programação em todo o mundo. O conceito
matemático de igualdade foi substituído pelo de atribuição [KP80].

Haskell B. Curry, contemporâneo de Goldstine e von Neumann, após uma experiência com um programa complexo no ENIAC, sugeriu uma notação mais compacta que a deles. Na prática não obteve sucesso pela maneira estranha com que analisava e dividia os problemas. O principal ponto de interesse no trabalho de Curry, no entanto, não foi a sua linguagem de programação, mas os algoritmos que analisou para conversão de parte desses em código de máquina. Com isso proporcionou uma descrição recursiva de um procedimento para converter expressões aritméticas claras em um código de máquina apropriado, sendo por isso a primeira pessoa a descrever a fase de geração de código de um compilador [KP80].


Como podemos ver ao longo de toda essa pesquisa, a humanidade estava dando seu primeiro passo para a era modera como conhecemos hoje, com computadores em todos lugares, com milhares de linguagens de programação proporcionando todo essa facilidade, assim vemos que os compiladores surgem junto com linguagens de alto nível para assim ajudar a descomplicar o desenvolvimento de programas e facilitar esse processo.


Referencias:
https://pt.wikiversity.org/wiki/Introdu%C3%A7%C3%A3o_%C3%A0s_Linguagens_de_Programa%C3%A7%C3%A3o/Plankalk%C3%BCl
https://pt.wikipedia.org/wiki/Hist%C3%B3ria_das_linguagens_de_programa%C3%A7%C3%A3o#Os_anos_1940
https://pt.wikipedia.org/wiki/C%C3%B3digo_de_m%C3%A1quina
https://pt.wikipedia.org/wiki/ENIAC
http://www.programador.com.br/historia-da-programacao.html
https://www.infoescola.com/informatica/historia-da-programacao/

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License