# Plankalkül

Plankalkül é uma linguagem de programação criada pelo cientista alemão Konrad Zuse, entre 1942 e 1946, no desenvolvimento dos primeiros computadores. A linguagem é considerada de alto nível, mas só foi publicada amplamente em 1972; e o compilador em 1998. Uma implementação independente foi lançada em 2000 pela Universidade Livre de Berlim.

## Desenvolvimento

Konrad Zuse construiu vários computadores de relés eletromagnéticos complexos, mas em 1945, a guerra destruiu tudo, exceto um modelo, o Z4. Após a destruição de seus equipamentos, Konrad mudou-se para uma cidade chamada Hintersteiner, onde começou a trabalhar sozinho em seu projeto para desenvolver a sua linguagem de programação, um projeto que começou em 1943 como uma proposta para sua tese de doutorado, que desenvolveu sua linguagem de programação Plankalkül.
Zuse, em 1948, publicou um artigo no Archiv der Mathematik - um jornal que publica trabalhos de alta qualidade em todas as áreas da matemática - mas sua publicação não produziu interesse académico. Heinz Rutishauser (co-fundador do ALGOL) disse: "A primeira tentativa de desenvolver uma linguagem algorítmica foi realizado em 1948 por K. Zuse. Sua notação foi geral, mas a proposta nunca alcançou a consideração que merece".
A linguagem era muito complementar a sua época de reprodução e teve alguns de seus recursos mais avançados na área de estruturas de dados. O tipo mais simples é o de um único bit, mas também construiu os tipos de números inteiros e reais. A linguagem tem três variáveis ​​específicas para o desenvolvimento de um programa. Entre elas, podem-se destacar as letras V (passagem de parâmetros), Z (o armazenamento de valores intermediários) e R (ver resultados).

## Implementação

Um dos maiores obstáculos para a implementação da linguagem Plankalkül ocorria devido ao fato da mesma utilizar uma sintaxe de difícil compreensão, ou seja, um determinado desenvolvedor demoraria muito tempo para compreender as sequências lógicas utilizadas no programa. Geralmente, as variáveis nessa determinada linguagem utilizavam aproximadamente quatro linhas. Na primeira linha, eram declaradas algumas das letras V, Z, ou R; na segunda linha, era declarado o índice da variável; na terceira, era declarado o componente da variável; e na quarta linha, declarava-se o tipo da variável, por exemplo, 5.0 (cinco bits). Todavia, podemos também encontrar exemplos de programas escritos de forma linearizada.

### Linguagem completa

Além desses tipos mais comuns, o Planklakül incluiu também matrizes e registros. Pode-se resumir dizendo que a ideia incorporou muitas ideias importantes ao Plankalkül. Ao concluir seus algoritmos de trabalho, Konrad desenvolveu para classificação, testar a conectividade de gráficos para aritmética de inteiros (inclusive raiz quadrada); e até mesmo um jogo de xadrez, onde o artigo foi encontrado em uma seção de 60 páginas sobre como desenvolver a aplicação e outras. Infelizmente, a maioria destas coisas não foram conhecidas até 1972; o primeiro compilador foi desenvolvido em 1998; e uma posterior aplicação em 2000 na Universidade Livre de Berlim. Portanto, pode-se identificar a visão de longo prazo dele em uma declaração em que ele enfatizou a sua linguagem: "Depois de algum tempo, como a bela adormecida, ainda está para vir para a vida".
A linguagem era notavelmente completa para sua época de criação e tinha alguns de seus recursos mais avançados na área das estruturas de dados. O tipo mais simples era o bit único; e a partir dele eram construídos tipos para números inteiros e reais. O tipo real usava uma notação de dois e o esquema de "bit oculto", que é atualmente usado para evitar armazenar o bit mais significativo da parte fracionária normalizada de um valor. A linguagem Plankalkül possui três variáveis específicas para o desenvolvimento de um programa; entre elas, podemos destacar as letras V (passagem de parâmetros), Z (armazenamento de valores intermediários), e R (exibição de resultado).
* Ambiente da linguagem: Nunca implementada. Estruturas de dados avançadas: reais, arrays, records.
* Principais características:
** Esta linguagem de programação possui, entre outras coisas, indicações de atribuição e chamadas da função (sub-rotinas);
** Instruções condicionais;
** Aritmética de ponto flutuante;
** Matrizes (arrays);
** Operações matemáticas ou lógicas só podem ser aplicadas a variáveis do mesmo tipo;
** Tipos de dados compostos;
** Tratamento de exceção, dentre outras características.
* Vantagens de uso:
** Execução objetiva dirigida;
** Estruturas record hierárquicas;
** Aritmética de ponto flutuante;
** Estrutura de repetição (iteração);
** Tratamento de exceção;
** Programas são funções reutilizáveis;
** Variáveis não precisam ser especificadas em um lugar especial do ambiente de desenvolvimento;
** Funções não podem se repetir.
* Desvantagem de uso:
** Não é possível definir um nome qualquer para uma variável;
** Linguagem exclusiva para tratamento com números;
** Falta de uma sintaxe de fácil interpretação;
** Utilização de um layout bidimensional e unidimensional.

## Atributos

Esta linguagem de programação possui, entre outras coisas, indicações de atribuição, chamadas da função (sub-rotinas), instruções condicionais, estrutura de repetição (iteração), aritmética de ponto flutuante, matrizes (arrays), tipos de dados compostos, tratamento de exceção, dentre outras características.
Seu criador não pretendia usar a linguagem nos sucessores de seu Z3, mas os eventos da Segunda Guerra Mundial forçaram o seu uso por muito tempo. Durante anos, esse trabalho permaneceu esquecido. Somente em 1972 foi publicado completamente. No contexto de uma tese, Plankalkül foi descrito e implementado em 1975 por J. Hohmann. No final dos anos 90, foram feitas implementações alternativas independentes (em 1998; e dois anos mais tarde, na universidade livre de Berlim), incluindo um editor de sintático.

## Exemplo

Abaixo, temos um exemplo de um programa que calcula o valor máximo de três variáveis pela chamada a função max: