Linguagens de programação Von Neumann - Von Neumann programming languages

Uma linguagem de von Neumann é qualquer uma das linguagens de programação que são cópias isomórficas abstratas de alto nível das arquiteturas de von Neumann . A partir de 2009, a maioria das linguagens de programação atuais se enquadram nessa descrição, provavelmente como consequência do amplo domínio da arquitetura de computador de von Neumann durante os últimos 50 anos.

As diferenças entre Fortran , C e mesmo Java , embora consideráveis, são, em última análise, restringidas por todos os três serem baseados no estilo de programação do computador de von Neumann. Se, por exemplo, os objetos Java fossem todos executados em paralelo com a passagem de mensagens assíncronas e endereçamento declarativo baseado em atributos, então Java não estaria no grupo.

O isomorfismo entre as linguagens de programação de von Neumann e arquiteturas é da seguinte maneira:

  • variáveis ​​de programa ↔ células de armazenamento de computador
  • declarações de controle ↔ instruções de teste e salto de computador
  • instruções de atribuição ↔ instruções de busca e armazenamento
  • expressões ↔ referência de memória e instruções aritméticas.

Crítica

John Backus afirmou que as instruções de atribuição nas linguagens de von Neumann dividem a programação em dois mundos. O primeiro mundo consiste em expressões , um espaço matemático ordenado com propriedades algébricas potencialmente úteis: a maior parte da computação ocorre aqui. O segundo mundo consiste em declarações , um espaço matemático desordenado com poucas propriedades matemáticas úteis (a programação estruturada pode ser vista como uma heurística limitada que se aplica a este espaço, no entanto).

Backus afirmou que em 1978 existia na ciência da computação um ciclo vicioso onde a ênfase de longa data nas linguagens de von Neumann continuou a primazia da arquitetura de computador de von Neumann, e a dependência dela tornou as linguagens não-von Neumann antieconômicas e, portanto, limitou sua desenvolvimento posterior: a falta de linguagens não-von Neumann amplamente disponíveis e eficazes privou os projetistas de computadores da motivação e da base intelectual necessárias para desenvolver novas arquiteturas de computador.

Presença em sistemas modernos

Muitos processadores modernos agora contêm vários núcleos de processamento, e a programação multithread geralmente é a maneira mais eficiente de usar mais poder computacional em um único programa. Alguns processadores modernos são altamente otimizados com técnicas que incluem execução fora de ordem , mas com lógica complexa para detectar quando isso pode ser feito sem violar a semântica de von Neumann do modelo de programação lógica. Caches separados de instruções e dados são amplamente usados, tornando o hardware uma arquitetura Harvard modificada , mas novamente com lógica para detectar casos em que a otimização falha, para poder executar código de auto-modificação .

Alguns processadores especializados (incluindo GPUs ) são dispositivos MIMD muito largos . CPUs de uso geral geralmente têm vários núcleos, mas cada um é rápido o suficiente para que muitos programas sejam rápidos o suficiente sem paralelizar tarefas únicas. (Threads são comumente usados ​​para lidar com entradas ou saídas assíncronas, especialmente em uma GUI .) CPUs de uso geral são tecnicamente dispositivos MIMD, mas geralmente apenas o hardware projetado desde o início para a programação MIMD é referido como MIMD.

Muitas linguagens de programação amplamente utilizadas, como C , C ++ e Java , deixaram de ser estritamente von Neumann ao adicionar suporte para processamento paralelo, na forma de threads . No entanto, a maioria das linguagens categoricamente não- Von Neumann também são linguagens funcionais e não alcançaram uso generalizado.

Referências

Este artigo é baseado em material retirado do Dicionário Online Gratuito de Computação anterior a 1 de novembro de 2008 e incorporado sob os termos de "relicenciamento" do GFDL , versão 1.3 ou posterior.

  1. ^ A programação pode ser liberada do estilo de von Neumann? , John Backus, Communications of the ACM, Volume 21, Número 8, agosto de 1978
  2. ^ o link não está mais ativo.
  3. ^ Arquivos IBM: John Backus