# Plankalkül

Plankalkül fue el primer lenguaje de programación que fue creado por el científico alemán Konrad Zuse en los años 1942 a 1946, se considera un lenguaje de alto nivel, pero no se publicó hasta 1972. Zuse quería desarrollar un método sofisticado para el desarrollo de las tareas que el equipo debe hacer.

## Historia

Konrad Zuse construyó varios ordenadores de relés electromagnéticos complejos, pero en 1945 la guerra los destruyó todos salvo un único modelo, el Z4. Tras la destrucción de sus equipos, Konrad se mudó a un pueblo llamado Hinterstein, donde comenzó a trabajar solo en su proyecto de desarrollo de su lenguaje de programación, un proyecto que comenzó en 1943 como propuesta para su tesis de doctorado: Plankalkül, que significa "programa de cálculo".
Zuse publicó en 1948 un artículo en Archiv der Mathematik, una revista científica de alta calidad en áreas matemáticas, pero su publicación no produjo un eco relevante en el ámbito académico-profesional de entonces. Heinz Rutishauser (co-fundador de ALGOL) dijo: "El primer intento de desarrollar un lenguaje algorítmico se llevó a cabo en 1948 por K. Zuse. Su notación era bastante general, pero la propuesta nunca alcanzó la consideración que merecía."
El lenguaje era muy completo en tiempo de reproducción y algunas de sus características más avanzadas se presentaban en el área de estructuras de datos. El tipo más simple es el de un solo bit de ella y se construyeron los tipos de números enteros y números reales. El tipo real utilizado un esquema de calificación y los dos "poco escondido", que se utiliza actualmente para evitar el almacenamiento de los bits más significativos de la parte fraccionaria de un valor normalizado. La lengua tiene tres variables Plankalkül específicos para el desarrollo de un programa, entre ellas podemos destacar las letras V (el paso de parámetros), Z (el almacenamiento de los valores intermedios) y R (ver resultados). Uno de los mayores obstáculos para la aplicación del lenguaje Plankalkül ocurrió debido a que utiliza la misma sintaxis difícil de entender, es decir, un desarrollador en particular tomaría mucho tiempo para entender las secuencias lógicas utilizadas en el programa. Por lo general, las variables que determina el idioma utilizado por cuatro líneas. La primera línea fue declarada una de las letras V, Z o R, la segunda línea se declaró la variable del índice, fue declarado el tercer componente de la variable, y por último la cuarta línea es el tipo declarado de la variable, por ejemplo, 5.0 (cinco bits), pero también podemos encontrar ejemplos de programas escritos en forma lineal.
Además de estos tipos comunes, el Planklakül también se incluyen matrices y registros. Se puede resumir diciendo que la idea Plankalkül incorporado muchas ideas muy importantes. Como conclusión de su trabajo de Zuse desarrollado algoritmos para clasificar, probar la conectividad de gráficos para la aritmética de enteros (incluida la raíz cuadrada) y hasta un juego de ajedrez donde se encontró el artículo en una sección de 60 páginas sobre cómo desarrollar la aplicación entre otros. Desafortunadamente, la mayoría de estas cosas no se conoció hasta 1972, y desarrolló el primer compilador en 1998 y una posterior aplicación en el año 2000 en la Universidad Libre de Berlín. Por lo tanto, podemos identificar la visión de largo plazo que Konrad Zuse propiedad de una declaración en la que destacó su lenguaje: "Después de algún tiempo, como la bella durmiente, aún está por llegar a la vida."
Konrad Zuse diseñó el lenguaje de programación de alto nivel Plankalkül (Cálculo de Programas) en 1945, después de mudarse de Berlín al final de Segunda Guerra Mundial. Cualquiera que ha tenido la oportunidad de estudiar la definición original de Plankalkül han quedado alucinados por su sorprendente carácter actual- parece como si había sido creado mucho más tarde que en 1945. Sin embargo, el hecho más asombroso es que en el tiempo que Konrad Zuse escribía su documento Plankalkül, los dos únicos ordenadores trabajadores en el mundo eran el ENIAC y Harvard Mark I. Ninguno de ellos usó un compilador o un traductor de fórmula - el ENIAC tuvo que ser alambrado de nuevo para cada problema diferente.
A partir de 1936 hasta 1945, Zuse construyó tres ordenadores programables que incorporaron los mismos principios computacionales. En el lapso de aquellos nueve años, Zuse con gran determinación persiguió un corte claro del concepto arquitectónico. El Z1 (1938), el Z3 (1941) y el Z4 (1945) eran todas máquinas de punto flotante binario (“algebraico"), con una memoria separada del procesador, y un programa almacenado en la cinta perforada. Estos fueron programados en el lenguaje máquina, como todos los primeros ordenadores americanos o británicos. Por su propia cuenta, Zuse muy pronto comprendió que " la combinatoria condicional " (como él la llamó) era idéntica al cálculo, y concibió una máquina mucho más poderosa, " la máquina lógica ", que sería más general y reemplazaría las máquinas algebraicas que él ya había construido.
Aunque Zuse solicitara una patente: la máquina lógica, realmente nunca terminó su diseño. La máquina lógica era muy sencillo y similar a la Máquina de Turing: consistió en una memoria con palabras de un bit, y un procesador capaz de ejecutar sólo las operaciones lógicas AND, OR, y NOT sobre operandos de un bit. La máquina sería capaz de solucionar cualquier problema numérico o lógico y, aunque ciertamente no se sepa esto, su lenguaje de programación hubiera sido el Plankalkül.
En 1942/43, Zuse comenzó a escribir un largo documento con la intención de someter como una disertación de Doctor en Filosofía. El esbozo describe la lógica de predicados para " para hacerlo accesible para ingenieros ", y entra en el gran detalle en su puesta en práctica con relevos mecánicos y eléctricos. La tesis planificada de Konrad Zuse, nunca sometida, es de hecho uno de los primeros tratados sobre la construcción sistemática de ordenador de circuitos. Ésta describe como trazar un mapa de fórmulas lógicas para retransmitir en circuitos y viceversa. También considera que el problema de reducir al mínimo los circuitos y como superponerlos para usar menos componentes. La tesis también explica los circuitos síncronos y todo lo necesario para construir un ordenador.
La continuación de esta tesis inacabada es el documento Plankalkül esbozado en 1945. Zuse, ocupado por el funcionamiento del Z4, se mudó de Berlín y a Hinterstein, (una pequeña ciudad de los Alpes), donde se sentó para resumir como pensaba que las máquinas lógicas del futuro deberían ser programadas. La versión final de Plankalkül fue acabada en esta misma ciudad un año más tarde en 1946. Años más tarde en 1972/Zuse72/ Plankalkül fue publicado por GMD (Gesellschaft für Mathematik und Datenverarbeitung). La razón de su tardía publicación fue la gran dedicación que le supuso la dirección de la pequeña empresa Zuse KG, que se convirtió en una de las empresas de ordenadores pioneras en Alemania de 1949-1964. El Plankalkül era un lenguaje de programación notablemente completo en el cual Konrad Zuse usó una escritura insólita de las declaraciones (explicadas más abajo).
La lengua fue muy completa su temporada de reproducción y tenía algunas de sus características más avanzadas en el área de estructuras de datos. El tipo más simple es el de un solo bit y fue construido a partir de los tipos de números enteros y números reales. El tipo real utilizado un esquema de calificación y los dos "poco escondido", que se utiliza actualmente para evitar el almacenamiento de los bits más significativos de la parte fraccionaria de un valor normalizado. La lengua tiene tres variables Plankalkül específicos para el desarrollo de un programa, entre ellas podemos destacar las letras V (el paso de parámetros), Z (el almacenamiento de los valores intermedios) y R (ver resultados). Uno de los mayores obstáculos para la aplicación del lenguaje Plankalkül se produjo debido al hecho de que la misma sintaxis para utilizar una difícil de entender, es decir, dado un desarrollador tomar mucho tiempo para entender las secuencias lógicas utilizadas en el programa. Por lo general, las variables en que el lenguaje utilizado en particular alrededor de cuatro líneas. La primera línea fue declarado algunas de las letras V, Z, o R, en la segunda fila se declara la variable del índice fue declarado en el tercer componente de la variable, y por último la cuarta línea es el tipo declarado de la variable, por ejemplo, 5.0 (cinco bits), pero también podemos encontrar ejemplos de programas escritos en forma lineal.

## Características

Este lenguaje de programación tiene, entre otros indicios de asignación, llamadas a funciones (subrutinas), la aritmética de punto flotante, matrices (arrays), matemáticas o lógicas sólo se pueden aplicar a las variables del mismo tipo, tipos de datos compuestos, el tratamiento excepción, entre otras características.
* Las operaciones lógicas o matemáticas se pueden aplicar sólo a las variables del mismo tipo.
* Estructuras condicionales.
* Estructuras de iteración.
* Las variables se declaran en el momento de su uso.
* El uso de tres variables específicas ---> V (Paso de parámetros), Z (Almacenamiento de valores intermedios), R (Mostrar resultados).

### Ventajas

* Los programas son funciones reutilizables.
* Las variables no necesitan ser especificadas en un lugar especial en el entorno de desarrollo.
* Estructura de datos jerárquica.
* Aritmética de punto flotante.
* Funciones no se pueden repetir.

### Desventajas

* Falta de una sintaxis fácil de interpretar.
* No se puede establecer un nombre para una variable;
* Konrad Zuse no estableció ningún comando específico para la entrada y salida de datos;
* Lenguaje único para el tratamiento con los números.
* El uso de un diseño de una dimensión y dos dimensiones.

### Otras características

* Introduce la operación de asignación, por ejemplo V1 + V2 = R1. El signo fue introducido en el ALGOL 60 GAMM-comité, pero el comité no decidió aceptarlo.
* Declaraciones comparativas del tipo: V1 = V2 => R1 , es decir, compara la variable 1 con la variable dos, y si son iguales le asigna el valor “verdadero” a la variable R1 y si no el valor “falso”.
* Planes de programación, llamadas a subprogramas y diferentes criterios de parada del programa.
* Es un lenguaje de programación imperativo de alto nivel.
* Declaraciones condicionales, pero sin introducir el “ELSE”.
* Las funciones no son recurrentes.
* Bucles (while).
* Los datos se escriben en: punto flotante, punto fijo, complejos.
* Operaciones con lógica de predicados y álgebra de Boole.
* Poderosas operaciones con listas y parejas de listas.
* NO hay recursividad.
* Manejo de arrays, registros, estructuras de datos jerárquicas y listas de parejas.
* Manejo de las excepciones aritméticas.
* Aplicaciones para jugar al ajedrez descritas en más de 60 páginas.