Jump to content

Von Neumann programming languages

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Andreas Kaufmann (talk | contribs) at 09:07, 21 November 2010 (removed Category:Programming language topics; added Category:Programming language classification using HotCat). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

A von Neumann language is any of those programming languages that are high-level abstract isomorphic copies of von Neumann architectures [citation needed]. As of 2009, most current programming languages fit into this description, likely as a consequence of the extensive domination of the von Neumann computer architecture during the past 50 years [citation needed].

The differences between Fortran, C, and even Java, although considerable, are ultimately constrained by all three being based on the programming style of the von Neumann computer [citation needed]. If, for example, Java objects were all executed in parallel with asynchronous message passing and attribute-based declarative addressing, then Java would not be in the group.

The isomorphism between von Neumann programming languages and architectures is in the following manner:

  • program variables ↔ computer storage cells
  • control statements ↔ computer test-and-jump instructions
  • assignment statements ↔ fetching, storing instructions
  • expressions ↔ memory reference and arithmetic instructions

Criticism

Using a metaphor from John Backus, assignment statements in von Neumann languages split programming into two worlds. The first world consists of expressions, an orderly mathematical space with potentially useful algebraic properties: most computation takes place here. The second world consists of statements, a disorderly mathematical space with few useful mathematical properties (structured programming can be seen as a limited heuristic that does apply in this space, though).

Backus claimed that there exists now in computer science a vicious cycle where the long standing emphasis on von Neumann languages has continued the primacy of the von Neumann computer architecture, and dependency on it has made non-von Neumann languages uneconomical and thus limited their further development: the lack of widely available and effective non-von Neumann languages has deprived computer designers of the motivation and the intellectual foundation needed to develop new computer architectures.[1]

Some examples of non-von Neumann languages are: APL, FP, FL, J, Lucid, NGL, ZPL, Mercury, and Plankalkül.

References

This article is based on material taken from the Free On-line Dictionary of Computing prior to 1 November 2008 and incorporated under the "relicensing" terms of the GFDL, version 1.3 or later.