Von Neumann programovací jazyky - Von Neumann programming languages

A jazyk von Neumann je některý z nich programovací jazyky které jsou abstraktní na vysoké úrovni izomorfní kopie von Neumannovy architektury.[1] Od roku 2009, většina současných programovacích jazyků zapadá do tohoto popisu[Citace je zapotřebí ], pravděpodobně v důsledku rozsáhlé nadvlády nad počítačovou architekturou von Neumanna za posledních 50 let.

Rozdíly mezi Fortran, C, a dokonce Jáva, i když značné, jsou nakonec omezeny tím, že všechny tři jsou založeny na stylu programování počítače von Neumann.[Citace je zapotřebí ] Pokud by například byly všechny objekty Java prováděny paralelně s asynchronně předávání zpráv a deklarativní adresování založené na atributech, pak by Java ve skupině nebyla.

Izomorfismus mezi von Neumannovými programovacími jazyky a architekturami je následující:

  • programové proměnné ↔ počítačové paměťové buňky
  • řídicí příkazy ↔ pokyny pro počítačový test a skok
  • příkazy přiřazení ↔ načítání, ukládání instrukcí
  • výrazy ↔ reference do paměti a aritmetické instrukce.

Kritika

John Backus tvrdil, že příkazy přiřazení v jazycích von Neumann rozdělují programování na dva světy. První svět se skládá z výrazy, řádný matematický prostor s potenciálně užitečnými algebraickými vlastnostmi: většina výpočtů probíhá zde. Druhý svět se skládá z prohlášení, neuspořádaný matematický prostor s několika užitečnými matematickými vlastnostmi (strukturované programování lze považovat za omezenou heuristický to však v tomto prostoru platí).

Backus[2] tvrdil, že nyní existuje v počítačová věda A bludný kruh kde dlouhodobý důraz na von Neumannovské jazyky pokračoval v nadřazenosti von Neumannovy počítačové architektury a závislost na něm učinila neumanské jazyky neekonomické a omezila tak jejich další vývoj: nedostatek široce dostupných a účinných non-von Jazyky Neumann připravily počítačové designéry o motivaci a intelektuální základy potřebné k vývoji nových počítačových architektur.[3]

Přítomnost v moderních systémech

Mnoho moderních procesorů nyní obsahuje více procesorových jader a vícevláknové programování je obvykle nejúčinnějším způsobem, jak využít více výpočetního výkonu v jednom programu. Některé moderní procesory jsou vysoce optimalizovány včetně technik provedení mimo objednávku, ale se složitou logikou k detekci, kdy to lze provést, aniž by byla porušena von Neumannova sémantika modelu logického programování. Samostatné instrukční a datové mezipaměti jsou široce používány, takže hardware a Upravená harvardská architektura, ale opět s logikou pro detekci případů, kdy optimalizace selže, aby bylo možné provést samočinně se měnící kód.

Někteří specializovaní zpracovatelé (včetně GPU ) jsou velmi široké MIMD zařízení. Univerzální CPU obvykle mají více jader, ale každé z nich je dostatečně rychlé, aby mnoho programů bylo dostatečně rychlých bez paralelizace jednotlivých úkolů. (Vlákna se běžně používají k řešení asynchronních vstupů nebo výstupů, zejména v a GUI.) Univerzální CPU jsou technicky zařízení MIMD, ale obvykle se jako MIMD označuje pouze hardware navržený od základu pro programování MIMD.

Mnoho široce používaných programovacích jazyků, jako je C, C ++ a Jáva přestali být striktně von Neumannem přidáním podpory pro paralelní zpracování v podobě vlákna. Většina však kategoricky ne-von Neumann jazyky jsou také funkční jazycích a nedosáhly rozšířeného použití.

Reference

Tento článek je založen na materiálu převzatém z Zdarma online slovník výpočetní techniky před 1. listopadem 2008 a začleněno pod "licencování" podmínek GFDL, verze 1.3 nebo novější.

  1. ^ [theory.stanford.edu/~aiken/other/backus.pdf Může být programování osvobozeno od von Neumannova stylu?], John Backus, Komunikace ACM, svazek 21, číslo 8, srpen 1978
  2. ^ odkaz již není aktivní.
  3. ^ Archivy IBM: John Backus