Penguin
Diff: ProgrammingLanguage
EditPageHistoryDiffInfoLikePages

Differences between version 21 and predecessor to the previous major change of ProgrammingLanguage.

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

Newer page: version 21 Last edited on Wednesday, November 19, 2003 6:18:48 pm by AristotlePagaltzis Revert
Older page: version 15 Last edited on Friday, November 14, 2003 7:25:11 pm by CraigBox Revert
@@ -1,45 +1,57 @@
-!! This page is currently a mess while a great refactoring is rippling throughout programming language related pages in the wiki
+;: If the Tao is great, then the operating system is great. If the operating system is great, then the compiler is great. If the compiler is great, then the application is great. The user is pleased and there is harmony in the world. %%% %%% [[...] %%% %%% The Tao gave birth to machine language. Machine language gave birth to the assembler. The assembler gave birth to the compiler. Now there are ten thousand languages. %%% %%% Each language has its purpose, however humble. Each language expresses the Yin and Yang of software. Each language has its place within the Tao. %%% %%% But do not program in COBOL if you can avoid it . %%% %%% -- ''Geoffrey James'', The Tao of Programming  
  
-''There should probably be a ProgrammingParadigm page and one on programming goals (systems programming, application programming, teaching programming, fun with obfuscated languages etc) . This is a huge reorganisation I launched into here.. all descriptions should be merged from here into the respective language's page, and the lists should be replaced with category backlinks. Eventually there should be a web of mostly selfmaintaining category pages . --AristotlePagaltzis''  
+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
  
-''There has been some discusson lately regarding this refactor, which I now refactor. If you create a bunch of pages and link them all to !CategoryFooBar, then their only 'connection' to the wiki is through the !CategoryFooBar page. Therefore, they will show up if we build an !OrphanedPages listing, and it is one of my personal wishes to see that list tend towards zero.''  
+!!! Very high level general purpose languages  
  
-''Chances are, however, they probably link to one another, and may tend down the way of a Wiki:WalledGarden if anything. This was my concern. Also, there is no method for category listings to give a summary of the pages they are linking to. -- CraigBox''  
+<?plugin BackLinks page=CategoryVeryHighLevelProgrammingLanguages noheader=1 ?>  
  
-----  
+!!! Machine oriented general purpose languages  
  
-; : If the Tao is great , then the operating system is great. If the operating system is great , then the compiler is great. If the compiler is great , then the application is great . The user is pleased and there is harmony in the world. %%% %%% [[... ] %%% %%% The Tao gave birth to machine language . Machine language gave birth to the assembler . The assembler gave birth to the compiler . Now there are ten thousand languages . %%% %%% Each language has its purpose , however humble . Each language expresses the Yin and Yang of software . Each language has its place within the Tao . %%% %%% But do not program in COBOL if you can avoid it . %%% %%% -- ''Geoffrey James'', The Tao of Programming  
+<?plugin BackLinks page=CategoryMachineOrientedProgrammingLanguages noheader=1 ?>  
+  
+!!! Systems programming languages  
+  
+These languages are designed for low-level software : drivers , OperatingSystems , game engines , any code that has to go really fast . They tend to be simplistic languages that closely follow the [VonNeumann | JohnVonNeumann] architecture [CPU ]s are based on which allows skilled programmers to predict and control exactly how their code will be executed .  
+  
+<?plugin BackLinks page=CategorySystemsProgrammingLanguages noheader=1 ?>  
+  
+Strangely, to date they tend to be very "unsafe" languages too. In code written in [C], the SystemsProgrammingLanguage 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.  
+  
+!!! Imperative programming languages  
+  
+<?plugin BackLinks page=CategoryImperativeProgrammingLanguages noheader=1 ?>  
+  
+!!! 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 shortcircuiting their execution by looking up the return value of a previous call to a computationally expensive function for the same set of arguments in a cache . It also allows the computer to execute all parts of the program in arbitrary order to arrive and the desired result .  
+  
+<?plugin BackLinks page=CategoryFunctionalProgrammingLanguages noheader=1 ?>  
  
-A human-readable language to control computers . SourceCode written in a ProgrammingLanguage is commonly compiled into a [BinaryExecutable] or [ByteCode] by a [Compiler] , but it may be [interpreted|InterpretedLanguages]
+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
  
-__Machine Oriented General Purpose__: [C++], [Java ], [Pascal
+It has been theorised this preference for imperative programming is a result of most people learning imperative programming languages ( [C++], [BASIC ], [Java ] etc). If they even learn functional programming at all, it is usually much later and in much less depth, so they never really learn to think like a functional programmer. Perhaps if more programmers were taught to think in a functional style from their infancy we would see more applications written in functional languages.  
  
-[BASIC] [COBOL] [Fortran]  
+!!! Object oriented programming languages  
  
-<?plugin BackLinks page=CategorySystemsProgrammingLanguages ?>  
+As that page, ObjectOrientation is mostly a style and only to an extent a paradigm of programming, and so need not be supported by a ProgrammingLanguage to write programs in object oriented fashion. The following languages are ones which do support this style directly:  
  
-<?plugin BackLinks page=CategoryImperativeProgrammingLanguages ?> 
+<?plugin BackLinks page=CategoryObjectOrientedProgrammingLanguages noheader=1 ?> 
  
-<?plugin BackLinks page=CategoryFunctionalProgrammingLanguages ?>  
+!!! Obfuscated languages  
  
-<?plugin BackLinks page=CategoryObjectOrientedProgrammingLanguages ?>  
+These languages are not intended to be used for serious work, but to stretch the brain.  
  
-<?plugin BackLinks page=CategoryObfuscatedProgrammingLanguages ?> 
+<?plugin BackLinks page=CategoryObfuscatedProgrammingLanguages noheader=1 ?> 
  
-----  
+You might also be interested in PolyGlot.  
  
-!!! Very High Level General Purpose  
+!!! Special purpose languages  
  
-; [Python] : This is a good language to learn if you only program occasionally out of necessity. (E.g. if you are a WebMonkey who needs do odd things with text, [XML] and structured data every now and then.) Those who like it find Python code unusually easy to read, which is good if you are returning to a script you wrote 3 months ago; and it has a very complete standard library, so you don't have to start from scratch when working on common tasks. It's use of indentation as the only means of structuring source is not appreciated by everyone, though.  
+<?plugin BackLinks page=CategorySpecialPurposeProgrammingLanguages noheader=1 ?>  
  
-----  
- !!! Special Purpose  
+!!! Deprecated languages  
  
-; [sed] : a Stream EDiting language very useful for manipulating files larger than the avaliable [RAM]. A predecessor to [Perl].  
-; [AWK] : a line-oriented language with much the same syntax and features as the later [Perl].  
-; [Postscript] : Imperative language. Stack-based, so it resembles Forth, but allows a considerably higher level of abstraction. Although a complete, general purpose language, it was developed for typesetting and is accompanied by a complex, powerful graphical model. It forms the basis for [PDF].  
-; [TeX] : a language for laying out text and images on the pages of [DonaldKnuth]'s books. Lesser mortals use [LaTeX], a set of wrappers around it.  
-; [BST] : a language for laying out bibliographies, with special primitives for laying out names, part of bibtex( 1).  
-; [SQL] : a relation manipulation language used in [RDBMS]s.  
-; [XSLT] : a tree manipulation language used to manipulate [XML].  
-; [sendmail(8)] : a language for expressing mail routing. See also SendmailTuringMachine.  
+<?plugin BackLinks page=CategoryDeprecatedProgrammingLanguages noheader= 1 ?>