Translate

Mostrar mensagens com a etiqueta linguagem de programação. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta linguagem de programação. Mostrar todas as mensagens

segunda-feira, 6 de junho de 2016

Mainframe History : Parte VI — Plankalkül: Quando Konrad Zuse Inventou uma Linguagem de Programação Antes de o Mundo Estar Pronto para Entendê-la

 

Bellacosa Mainframe e o outro computador z parte vi

☕ Um Café no Bellacosa Mainframe

Muito Antes do IBM Z Existia Outro "Z"

Parte VI — Plankalkül: Quando Konrad Zuse Inventou uma Linguagem de Programação Antes de o Mundo Estar Pronto para Entendê-la

"É possível construir um computador extraordinário. Mais extraordinário ainda é imaginar como conversar com ele quando ninguém jamais havia escrito um programa."

Nas cinco primeiras partes desta série, acompanhamos Konrad Zuse transformar um apartamento em laboratório, construir o Z1, evoluir para o Z2, aperfeiçoar o conceito com o Z3 e, finalmente, levar o Z4 para a ETH Zürich, demonstrando que computadores programáveis tinham utilidade prática.

Mas existe um aspecto de sua obra que, durante décadas, permaneceu praticamente esquecido.

Talvez porque fosse avançado demais.

Talvez porque a guerra interrompeu sua divulgação.

Ou talvez porque o restante do mundo ainda estivesse preocupado em construir computadores, enquanto Zuse já pensava em algo completamente diferente.

Ele queria facilitar a vida do programador.

Pode parecer uma frase comum em 2026.

Mas estamos falando do início da década de 1940.

Nem mesmo a profissão de programador existia oficialmente.

Mesmo assim, Konrad Zuse já fazia uma pergunta extraordinária:

"Por que um ser humano deveria pensar como uma máquina para conseguir utilizá-la?"

Essa pergunta continua extremamente atual.


Antes das Linguagens Existiam Cabos

Hoje um desenvolvedor COBOL escreve algo como:

ADD VALOR-A TO VALOR-B GIVING TOTAL.

O compilador transforma essa instrução em milhares de operações internas.

No IBM Z, isso resulta em instruções de máquina extremamente eficientes.

Mas nada disso existia em 1940.

Programar significava movimentar chaves.

Alterar conexões.

Trocar cabos.

Reposicionar painéis.

Perfurar fitas.

Modificar sequências físicas de operação.

Na prática, cada novo programa alterava o próprio computador.

Era como reescrever a instalação elétrica de uma casa toda vez que alguém quisesse acender uma lâmpada diferente.

Zuse percebeu que esse caminho não escalaria.


O Nascimento do Plankalkül

Entre aproximadamente 1942 e 1945, Konrad Zuse começou a desenvolver uma notação completamente nova.

Seu nome era Plankalkül.

Traduzido livremente, algo como "Cálculo de Planos" ou "Plano de Cálculo".

Não era apenas uma linguagem.

Era praticamente uma teoria sobre programação.

Décadas antes de FORTRAN.

Décadas antes de ALGOL.

Mais de quinze anos antes de COBOL.

Enquanto boa parte do mundo ainda discutia como construir computadores, Zuse já refletia sobre como escrever algoritmos de maneira compreensível para seres humanos.


☕ Café com Naftalina

É curioso imaginar um Sysprog levando um listing COBOL para mostrar a Konrad Zuse.

Provavelmente ele não entenderia a sintaxe.

Mas reconheceria imediatamente os conceitos.

Variáveis.

Atribuições.

Sequência lógica.

Modularização.

Abstração.

Era exatamente isso que ele havia sonhado décadas antes.


Muito Além da Matemática

Naquela época, muitos acreditavam que computadores serviriam apenas para resolver equações numéricas.

Zuse discordava.

Seu Plankalkül permitia trabalhar com estruturas de dados.

Matrizes.

Registros.

Conjuntos de informações.

Operações lógicas.

Tomadas de decisão.

Em outras palavras, ele enxergava computadores manipulando informação, não apenas números.

Essa diferença parece sutil.

Na verdade, ela separa uma calculadora de um computador moderno.


Variáveis com Nome

Hoje parece natural declarar variáveis.

Em COBOL temos:

01 CLIENTE.
   05 NOME.
   05 SALDO.

Em PL/I:

DCL SALDO FIXED DECIMAL(15,2);

Em Java:

double saldo;

Mas alguém precisou imaginar esse conceito pela primeira vez.

O Plankalkül introduzia símbolos representando dados que poderiam ser reutilizados durante o algoritmo.

Hoje isso parece óbvio.

Na época era revolucionário.


Estruturas de Dados

Outro aspecto surpreendente.

Zuse compreendia que problemas complexos exigiam organização.

Não bastava armazenar valores isolados.

Era necessário agrupá-los.

Essa ideia aparece claramente em seu trabalho.

Quem programa COBOL imediatamente faz uma associação com:

  • níveis 01;

  • grupos;

  • OCCURS;

  • tabelas;

  • estruturas hierárquicas.

É evidente que COBOL não nasceu do Plankalkül.

Mas ambos compartilham uma mesma filosofia.

Representar o mundo real utilizando estruturas organizadas.


🔧 Oficina do Engenheiro

Uma linguagem de programação possui dois grandes objetivos:

  1. Expressar claramente um algoritmo para outro ser humano.

  2. Permitir que esse algoritmo seja executado por uma máquina.

Quanto melhor ela cumprir esses dois papéis, maior sua longevidade.

Talvez por isso COBOL continue absolutamente relevante mais de seis décadas depois.


Procedimentos

Outro conceito presente no Plankalkül era a divisão de problemas em partes menores.

Hoje chamamos isso de:

  • procedimentos;

  • funções;

  • métodos;

  • módulos;

  • serviços.

Todo arquiteto de software conhece essa estratégia.

Resolver um problema gigantesco dividindo-o em pequenos problemas independentes.

Konrad Zuse já fazia exatamente isso.

Muito antes da Engenharia de Software receber esse nome.


Decisões

Uma máquina precisa escolher caminhos.

Executar determinada ação.

Ou outra.

Hoje escrevemos:

IF SALDO > LIMITE
    ...
END-IF

Esse conceito também aparece nas ideias de Zuse.

Sem estruturas condicionais, computadores seriam incapazes de resolver problemas realmente interessantes.

É impressionante perceber quantos conceitos modernos já estavam presentes em seus manuscritos.


O Mundo Não Estava Preparado

Então surge uma pergunta inevitável.

Se o Plankalkül era tão avançado...

Por que ele não mudou imediatamente a história da computação?

A resposta possui várias causas.

Primeiro.

A guerra.

Grande parte dos documentos permaneceu praticamente desconhecida durante anos.

Segundo.

Havia pouquíssimos computadores capazes de executar qualquer linguagem semelhante.

Terceiro.

Os pesquisadores da época estavam preocupados com problemas muito mais imediatos.

Era necessário construir hardware confiável.

As linguagens ficariam para depois.

Quando FORTRAN surgiu na década de 1950, poucos conheciam o trabalho anterior de Zuse.

O Plankalkül só seria plenamente reconhecido décadas mais tarde.


📦 Baú do Sysprog

Nem sempre a melhor ideia vence imediatamente.

Na história da computação existem inúmeras tecnologias que chegaram cedo demais.

O Plankalkül talvez seja o exemplo mais famoso.

Era uma solução excelente para um problema que o restante do mundo ainda não havia percebido.


E o COBOL?

Chegamos ao momento que todo leitor do Bellacosa Mainframe esperava.

Existe alguma ligação entre Plankalkül e COBOL?

Diretamente, não.

O COBOL nasceu em um contexto completamente diferente, no final da década de 1950, impulsionado por Grace Hopper, pelo CODASYL e pela necessidade de criar uma linguagem voltada para aplicações comerciais.

Entretanto, ambos compartilham objetivos surpreendentemente semelhantes.

Os dois procuram afastar o programador dos detalhes internos da máquina.

Os dois valorizam clareza.

Os dois permitem representar estruturas complexas.

Os dois tratam programas como descrições de processos, e não como sequências de impulsos elétricos.

Em outras palavras.

Eles pertencem à mesma família filosófica.

A família da abstração.


O Que um Programador COBOL Aprende com Zuse?

Muito.

Talvez mais do que imagine.

Quando um desenvolvedor declara uma WORKING-STORAGE organizada.

Quando utiliza tabelas OCCURS.

Quando cria procedimentos bem definidos.

Quando separa regras de negócio da infraestrutura.

Está praticando princípios que começaram a surgir justamente nessa época.

Mudaram as linguagens.

Mudaram os compiladores.

Mudaram os processadores.

A boa engenharia permaneceu.


O Que um Sysprog Aprende?

Um Sysprog costuma enxergar compiladores apenas como ferramentas.

Mas compiladores são verdadeiras obras de engenharia.

Eles transformam ideias humanas em instruções que a CPU consegue executar.

Quanto melhor entendemos essa transformação, melhor compreendemos o funcionamento do IBM Z.

Por trás de um simples programa COBOL existe uma longa cadeia.

Código-fonte.

Análise léxica.

Análise sintática.

Código intermediário.

Otimizações.

Instruções de máquina.

Execução.

Tudo isso só existe porque alguém, décadas atrás, decidiu que programar não deveria significar movimentar fios e relés.


O Legado Invisível

Talvez o maior legado de Konrad Zuse não esteja em nenhuma máquina específica.

Nem no Z1.

Nem no Z3.

Nem no Z4.

Seu maior legado talvez seja a ideia de que computadores deveriam adaptar-se às pessoas.

E não o contrário.

Essa filosofia continua presente.

Quando utilizamos COBOL.

Quando escrevemos JCL declarativo.

Quando criamos APIs REST.

Quando descrevemos infraestrutura utilizando Ansible.

Quando perguntamos algo para uma Inteligência Artificial utilizando linguagem natural.

Cada nova camada de abstração afasta um pouco mais o ser humano da complexidade do hardware.

Konrad Zuse sonhava exatamente com isso.


O DNA do IBM Z

Um IBM z17 executa bilhões de instruções por segundo.

Possui dezenas de núcleos.

Terabytes de memória.

Criptografia embarcada.

Inferência de Inteligência Artificial.

Virtualização sofisticada.

Entretanto, um programador continua escrevendo código utilizando conceitos como:

Variáveis.

Estruturas.

Procedimentos.

Condições.

Algoritmos.

Abstrações.

Essa talvez seja a maior vitória da computação.

Quanto mais poderoso o hardware se torna, menos precisamos pensar nele.

E essa jornada começou muito antes de FORTRAN.

Muito antes de COBOL.

Muito antes de ALGOL.

Começou quando um engenheiro alemão decidiu que computadores deveriam entender melhor as pessoas.


No Próximo Café...

Até agora caminhamos ao lado de Konrad Zuse.

Mas havia outro gigante moldando silenciosamente o futuro da computação.

Enquanto Zuse criava computadores programáveis para cálculos científicos, uma empresa americana dominava governos, bancos e seguradoras com enormes máquinas eletromecânicas alimentadas por cartões perfurados.

Seu nome era IBM.

Na próxima parte responderemos uma pergunta que ainda desperta debates entre historiadores:

A IBM ignorou Konrad Zuse?

Ou será que ambos estavam resolvendo problemas completamente diferentes?

Prepare seu café.

No próximo capítulo, dois mundos finalmente se encontrarão.

O "Z" de Zuse.

E a empresa que, décadas depois, criaria o IBM Z.

☕ Um Café no Bellacosa Mainframe

Histórias com Cheiro de Naftalina

O Guia do Viajante do Tempo

Muito Antes do IBM Z Existia Outro “Z”

Viaje pelas origens da computação, conhecendo Konrad Zuse, Herman Hollerith, Tommy Flowers, John von Neumann, o Colossus, o EDVAC, o IBM System/360 e os pioneiros que construíram o caminho até o IBM Z.

ARTIGO SELECIONADO

O Guia do Viajante do Tempo

Abrir em nova guia ↗
Preparando a máquina do tempo...

Caso o navegador impeça a exibição incorporada, utilize o botão Abrir em nova guia.

☕ Quem não conhece o passado não entende o código do futuro.

Bellacosa Mainframe — tecnologia, história, COBOL, IBM Z e memória.