El primer lenguaje de alto nivel del mundo fue diseñado en la década de 1940 (probablemente entre 1941 y 1945, pero el concepto fue publicado por primera vez en 1948), por el pionero informático alemán Konrad Zuse, el creador del primer ordenador binario de la historia.
De 1941 a 1946 (al mismo tiempo que desarrollaba su ordenador Z4), Konrad Zuse desarrolló ideas sobre cómo sus máquinas podían ser programadas de una manera muy poderosa. El lenguaje Plankalkül fue descrito inicialmente en su tesis doctoral en 1943 y lo acabó en 1945: "Plankalkül. Theorie del angewandten Logistik.". Su tesis llegó al público en un artículo de 1948 (pero no llamó la atención ya que la única forma de programar un ordenador era mediante código máquina). Plankalkül se amplió en un artículo de 1972, mientras que el primer compilador para este lenguaje se implementó muchos años más tarde, en 1998.
Konrad Zuse fue la primera persona en la historia en construir un ordenador digital en funcionamiento, un hecho que todavía no se reconoce generalmente. Aún menos conocido es que en los años 1943-1945, Zuse desarrolló un modelo de programación de alto nivel y, basándose en él, un lenguaje de programación algorítmico llamado Plankalkül (cálculo del plan). El Plankalkül cuenta con tipos de estructura de datos binarios, lo que admite un estilo de programación sin bucle para problemas lógicos o relacionales. Como lenguaje para aplicaciones numéricas, el Plankalkül ya tenía las características esenciales de un "lenguaje von Neumann". En consecuencia, el Plankalkül es en algunos aspectos equivalente y en otros más potente que el modelo de programación von Neumann que llegó a dominar la programación durante mucho tiempo.
Para encontrar conceptos lingüísticos similares a los del Plankalkül, hay que mirar "idiomas no von Neumann" como la APL o el álgebra relacional.
Utilizando la terminología de programación moderna, Plankalkül es un lenguaje de programación imperativo de alto nivel con las siguientes características principales:
- Los programas son funciones reutilizables, y las funciones no son recursivas.
- Las variables son locales a las funciones (programas).
- Los tipos de datos fundamentales son matrices y tuplas de matrices, pero también hay coma flotante, punto fijo, números complejos; registros; estructuras jerárquicas de datos; lista de pares.
- El tipo de las variables no necesita ser declarado en un encabezado especial.
- No hay construcción de GOTO.
- Operación de asignación (por ejemplo: V1 + V2 = > R1).
- Declaración condicional (por ejemplo: V1 = V2 = > R1. Esto significa: Compara las variables V1 y V2: Si son idénticas, asigna el valor true a R1, asigna el valor false en caso contrario. Estas operaciones también podrían aplicarse en estructuras de datos complicadas.
- Posibilidad de definir subprogramas.
- Posibilidad de definir bucles (loops), construcción WHILE para iteración.
- Operaciones lógicas (lógica de predicado y álgebra booleana).
- Manejo aritmético de excepciones.