Content deleted Content added
m Reverted edit by 102.158.251.34 (talk) to last version by Murray Langton |
No edit summary Tags: Reverted Visual edit Mobile edit Mobile web edit |
||
Line 10:
The first high-level programming language designed for computers was [[Plankalkül]], created by [[Konrad Zuse]].<ref>{{ill|Wolfgang Giloi{{!}}Giloi, Wolfgang, K.|de|Wolfgang Giloi}} (1997). "Konrad Zuse's Plankalkül: The First High-Level "non von Neumann" Programming Language". IEEE Annals of the History of Computing, vol. 19, no. 2, pp. 17–24, April–June, 1997. [http://doi.ieeecomputersociety.org/10.1109/85.586068 (abstract)]</ref> However, it was not implemented in his time, and his original contributions were largely isolated from other developments due to [[World War II]], aside from the language's influence on the "Superplan" language by [[Heinz Rutishauser]] and also to some degree [[ALGOL]]. The first significantly widespread high-level language was [[Fortran]], a machine-independent development of IBM's earlier [[Autocode]] systems. The [[ALGOL]] family, with [[ALGOL 58]] defined in 1958 and [[ALGOL 60]] defined in 1960 by committees of European and American computer scientists, introduced [[recursion]] as well as [[nested functions]] under [[lexical scope]]. ALGOL 60 was also the first language with a clear distinction between [[call by value|value]] and [[call by name|name-parameter]]s and their corresponding [[Semantics (computer science)|semantics]].<ref>Although it lacked a notion of [[call by reference|reference-parameter]]s, which could be a problem in some situations. Several successors, including [[ALGOL W]], [[ALGOL 68]], [[Simula]], [[Pascal (programming language)|Pascal]], [[Modula]] and [[Ada (programming language)|Ada]] thus included reference-parameters (The related C-language family instead allowed addresses as <code>value</code>-parameters).</ref> ALGOL also introduced several [[structured programming]] concepts, such as the <code>while-do</code> and <code>if-then-else</code> constructs and its [[Syntax (programming languages)|syntax]] was the first to be described in formal notation – ''[[Backus–Naur form]]'' (BNF). During roughly the same period, [[COBOL]] introduced [[Record (computer science)|record]]s (also called structs) and [[Lisp (programming language)|Lisp]] introduced a fully general [[lambda abstraction]] in a programming language for the first time.
Next
== [[Abstraction-Filtration-Comparison test|Abstraction]] penalty ==
High-level languages intend to provide features that standardize common tasks, permit rich debugging, and maintain architectural agnosticism; while low-level languages often produce more efficient code through [[program optimization|optimization]] for a specific [[Computer architecture|system architecture]]. ''Abstraction penalty'' is the cost that high-level programming techniques pay for being unable to optimize performance or use certain hardware because they don't take advantage of certain low-level architectural resources. High-level programming exhibits features like more generic data structures and operations, run-time interpretation, and intermediate code files; which often result in execution of far more operations than necessary, higher memory consumption, and larger binary program size.<ref>{{cite journal
|author=Surana P
|