Computer languages

Computer Languages
Not all computer languages are programming languages. Computer languages include:
 * Programming languages
 * Scripting language -- a type of programming language, used to automate what could be done manually. (e.g. Unix shell)
 * Mark-up languages -- not programming languages (e.g. )

Mark-up languages — html
Let us now learn a little html.

Visual programming
There have been may attempt to create visual programming languages, I have not seen many that I like. However they are good when learning to code, and for domain specific languages, that are used by non programmes.

Non Example
These are not visual programming languages, here visual is used as a marketing-word. When these languages where first marketed, visual programming was the “in thing”, so by adding the word visual, a lot of people that read that visual programming was the future, would jump on the visual basic/c♯ wagon. Now that they are on this wagon, it is difficult to tempt them off with the word visual, as they believe that they know what visual programming is. Having said that I do think that C♯ version 4 has become a reasonably good language, though a little verbose.
 * Visual C♯
 * Visual basic

Examples

 * http://scratch.mit.edu/

Programming languages classification
There are many types of programming language, and each language can fall into more than one category.

Other choices are:
 * Most languages are imperative: do this then do that ...
 * Declarative: describe what you want and the computer tries to work out how to do it, these are very good for some types of problem, very difficult to use for other types of problem. It is easier to prove the quality of code, but fewer people are happy using these languages. These languages have no concept of time (or where they have one it is not tied to the order of the program).
 * Functional: This is like functions in maths. Again much easier to prove. Very well suited to most problems, but breaks down badly for a few. Therefore they are less general purpose, however you can use the techniques in most languages. It is well worth learning, as if you can use this style most of the time, you will have less bugs.
 * Procedural: Often incorrectly used as a synonym for imperative. Procedural is imperative, imperative is not always procedural. For example Functional can be imperative. Procedural takes the do this then do that to an extreme. It is the simplest of styles, but breaks down with large programs, because of the heavy use of global variable.
 * Object Orientated: Allows programmer to break program into smaller chunks. Both functional, and procedural styles can be used. If chunks are kept small then procedural code may not be a problem.

There are many different ways to classify a language, languages do not always fit into neat categories. Another way to categorise is:
 * Domain specific vs General purpose

Have a read of these on wikipedia:


 * http://en.wikipedia.org/wiki/Programming_paradigm
 * http://en.wikipedia.org/wiki/Programming_language#Taxonomies