Penguin
Diff: ProgrammingLanguage
EditPageHistoryDiffInfoLikePages

Differences between version 26 and previous revision of ProgrammingLanguage.

Other diffs: Previous Major Revision, Previous Author, or view the Annotated Edit History

Newer page: version 26 Last edited on Sunday, August 15, 2004 8:56:55 pm by ElroyLiddington Revert
Older page: version 25 Last edited on Wednesday, February 11, 2004 1:35:47 pm by AristotlePagaltzis Revert
@@ -3,9 +3,9 @@
 A human-readable language to control computers. SourceCode written in a ProgrammingLanguage may either be compiled into a [BinaryExecutable] or [ByteCode] by a [Compiler] or executed directly by means of an Interpreter. 
  
 !!! Very high level general purpose languages 
  
-These languages are highly abstract compared to how the machine actually executes them. Data types and data structures in these languages are often encapsulated in a large shell of metainformation that the programmer never gets (and indeed never needs) to see, managed by the language implementation on the fly behind the scenes to accomodate the code's needs. These languages are designed to make it easy for the programmer to express the problem at hand without much red tape. The complete opposite to systems programming languages, they're highly preferrable for userland applications that do not require execution speed over everything. Code written in these languages often is or can be much easier to maintain than a comparable lower level language implementation, if only due to its reduced size. Especially very simple tasks tend to have ludicruously high ratios of low level language code size to high level language code size. 
+These languages are highly abstract compared to how the machine actually executes them. Data types and data structures in these languages are often encapsulated in a large shell of metainformation that the programmer never gets (and indeed never needs) to see, managed by the language implementation on the fly behind the scenes to accomodate the code's needs. These languages are designed to make it easy for the programmer to express the problem at hand without much red tape. The complete opposite to systems programming languages, they're highly preferable for userland applications that do not require execution speed over everything. Code written in these languages often is or can be much easier to maintain than a comparable lower level language implementation, if only due to its reduced size. Especially very simple tasks tend to have ludicruously high ratios of low level language code size to high level language code size. 
  
 <?plugin BackLinks page=CategoryVeryHighLevelProgrammingLanguages noheader=1 ?> 
  
 !!! Machine oriented general purpose languages 
@@ -21,9 +21,9 @@
 These languages are designed for low-level software: drivers, [OperatingSystem]s, game engines, any code that has to go really fast. They are necessarily compiled machine oriented languages and allow quite precise control of the resulting MachineCode. 
  
 <?plugin BackLinks page=CategorySystemsProgrammingLanguages noheader=1 ?> 
  
-Strangely, to date they tend to be very "unsafe" languages too. In code written in [C], the systems programming language for [Unix], it's easy to introduce tiny bugs that mysteriously screw everthing up from time to time -- not something you want your OperatingSystem to do. [Modula2] is the exception to this rule. 
+Strangely, to date they tend to be very "unsafe" languages too. In code written in [C], the systems programming language for [Unix], it's easy to introduce tiny bugs that mysteriously screw everything up from time to time -- not something you want your OperatingSystem to do. [Modula2] is the exception to this rule. 
  
 !!! Imperative programming languages 
  
 Code in these languages is a series of instructions for ''how'' the computer does its work (as opposed to functional languages where the computer figures out the sequence of instructions and declarative languages where the computer is only given facts and figures out everything for itself). Most widely adopted languages fall in this category, even if they're not explicitly listed here. 
@@ -33,9 +33,9 @@
 !!! Functional programming languages 
  
 Functional programming is a __paradigm__ based loosely on the LambdaCalculus approach to ComputerScience, in which everything in a program is a function. 
  
-In pure functional programming, there are no side effects; you cannot assign a value to a variable more than once, only return values from functions. Therefor , a function's return value depends only on the parameters passed. As a result, you can even mathematically prove the correctness of a program. You can also easily "memoize" functions, ie shortcircuit their execution by look up in a cache the return value of a previous call to a computationally expensive function for the same set of arguments. Purely functional programming also allows the computer to execute all parts of the program in arbitrary order to arrive at the desired result by using LazyEvaluation and PartialEvaluation. 
+In pure functional programming, there are no side effects; you cannot assign a value to a variable more than once, only return values from functions. Therefore , a function's return value depends only on the parameters passed. As a result, you can even mathematically prove the correctness of a program. You can also easily "memoize(memorise?) " functions, ie shortcircuit their execution by look up in a cache the return value of a previous call to a computationally expensive function for the same set of arguments. Purely functional programming also allows the computer to execute all parts of the program in arbitrary order to arrive at the desired result by using LazyEvaluation and PartialEvaluation. 
  
 <?plugin BackLinks page=CategoryFunctionalProgrammingLanguages noheader=1 ?> 
  
 Programmers generally prefer imperative programming as they find it easier to understand and build practical applications with. Indeed, some things that depend on side effects and are easy in imperative programming are unreasonably hard to solve in pure functional programming - I/O is an example. However, problems that may seem terribly difficult in imperative programming are often trivial in pure functional programming.