De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

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 . [1] A partir de 2009 , la mayoría de los lenguajes de programación actuales encajan en esta descripción [ cita requerida ] , 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. [ cita requerida ] Si, por ejemplo, todos los objetos Java se ejecutaran en paralelo con el paso de mensajes asincrónicos y el direccionamiento declarativo basado en atributos, entonces 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 [ editar ]

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 [2] afirmó que existe ahora en la ciencia de la computación un círculo vicioso donde 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 son de von Neumann sean antieconómicos limitó su desarrollo posterior: la falta de lenguajes distintos de von Neumann, ampliamente disponibles y eficaces, ha privado a los diseñadores informáticos de la motivación y la base intelectual necesarias para desarrollar nuevas arquitecturas informáticas. [3]

Presencia en sistemas modernos [ editar ]

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 manejar 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 el procesamiento paralelo, en forma de subprocesos . 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 [ editar ]

Este artículo se basa en material extraído del Diccionario de Computación en línea gratuito 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. ^ [theory.stanford.edu/~aiken/other/backus.pdf ¿Se puede liberar la programación del estilo von Neumann?], John Backus, Communications of the ACM, Volumen 21, Número 8, agosto de 1978
  2. ^ enlace ya no está activo.
  3. ^ Archivos de IBM: John Backus