Lenguajes de programación de Von Neumann - Von Neumann programming languages

Un lenguaje de von Neumann es cualquiera de esos lenguajes de programación que son copias isomórficas abstractas de alto nivel de las arquitecturas de von Neumann . A partir de 2009, la mayoría de los lenguajes de programación actuales encajan en esta descripción, probablemente como consecuencia del extenso dominio de la arquitectura informática de von Neumann durante los últimos 50 años.

Las diferencias entre Fortran , C e incluso Java , aunque considerables, están limitadas en última instancia por que los tres se basan en el estilo de programación de la computadora von Neumann. Si, por ejemplo, todos los objetos Java se ejecutaran en paralelo con el paso de mensajes asíncronos y el direccionamiento declarativo basado en atributos, Java no estaría en el grupo.

El isomorfismo entre los lenguajes de programación y las arquitecturas de von Neumann es de la siguiente manera:

  • variables de programa ↔ celdas de almacenamiento de computadora
  • declaraciones de control ↔ instrucciones de prueba y salto por computadora
  • instrucciones de asignación ↔ buscar, almacenar instrucciones
  • expresiones ↔ referencia de memoria e instrucciones aritméticas.

Crítica

John Backus afirmó que las declaraciones de asignación en los lenguajes de von Neumann dividen la programación en dos mundos. El primer mundo consta de expresiones , un espacio matemático ordenado con propiedades algebraicas potencialmente útiles: la mayor parte de los cálculos tienen lugar aquí. El segundo mundo consiste en enunciados , un espacio matemático desordenado con pocas propiedades matemáticas útiles ( aunque la programación estructurada puede verse como una heurística limitada que se aplica en este espacio).

Backus afirmó que en 1978 existía en la informática un círculo vicioso en el que el énfasis de larga data en los lenguajes de von Neumann ha continuado la primacía de la arquitectura informática de von Neumann, y la dependencia de ella ha hecho que los lenguajes que no pertenecen a von Neumann sean antieconómicos y, por lo tanto, limitó su mayor desarrollo: la falta de lenguajes distintos de von Neumann, ampliamente disponibles y eficaces, ha privado a los diseñadores de computadoras de la motivación y la base intelectual necesarias para desarrollar nuevas arquitecturas de computadoras.

Presencia en sistemas modernos

Muchos procesadores modernos ahora contienen múltiples núcleos de procesamiento, y la programación de múltiples subprocesos suele ser la forma más eficiente de usar más potencia computacional en un solo programa. Algunos procesadores modernos están altamente optimizados con técnicas que incluyen la ejecución fuera de orden , pero con una lógica compleja para detectar cuándo se puede hacer esto sin violar la semántica de von Neumann del modelo de programación lógica. Las cachés de instrucciones y datos separadas se utilizan ampliamente, lo que hace que el hardware sea una arquitectura de Harvard modificada , pero nuevamente con lógica para detectar casos en los que falla la optimización, para poder ejecutar código auto-modificable .

Algunos procesadores especializados (incluidas las GPU ) son dispositivos MIMD muy anchos . Las CPU de uso general suelen tener varios núcleos, pero cada uno es lo suficientemente rápido como para que muchos programas sean lo suficientemente rápidos sin paralelizar tareas individuales. (Los subprocesos se usan comúnmente para tratar con entradas o salidas asíncronas, especialmente en una GUI ). Las CPU de propósito general son técnicamente dispositivos MIMD, pero generalmente solo el hardware diseñado desde cero para la programación MIMD se conoce como MIMD.

Muchos lenguajes de programación ampliamente utilizados como C , C ++ y Java han dejado de ser estrictamente von Neumann al agregar soporte para procesamiento paralelo, en forma de hilos . Sin embargo, la mayoría de los lenguajes categóricamente no von Neumann también son lenguajes funcionales y no han logrado un uso generalizado.

Referencias

Este artículo se basa en material extraído del Diccionario gratuito de informática en línea antes del 1 de noviembre de 2008 e incorporado bajo los términos de "renovación de licencias" de la GFDL , versión 1.3 o posterior.

  1. ^ ¿Puede la programación liberarse del estilo von Neumann? , John Backus, Comunicaciones de la ACM, Volumen 21, Número 8, agosto de 1978
  2. ^ enlace ya no está activo.
  3. ^ Archivos de IBM: John Backus