Von Neumann programming languages
![]() | This article provides insufficient context for those unfamiliar with the subject.(October 2009) |
![]() | This article possibly contains original research. (August 2010) |
This article relies largely or entirely on a single source. (August 2010) |
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.
External links