A programming language (e.g. Objective-C) is an artificial language designed to express computations that can be performed by a machine, particularly a computer. Or with another words, programming language is a vocabulary and set of grammatical rules for instructing a computer to perform specific tasks. The term programming language usually refers to high-level languages[1]. It can be used to create programs that control the behavior of a machine(e.g system programming), to express algorithms precisely, or as a mode of human communication, e. g. Applications, Utilities, Servers, Systems Programs .
More about: Programming Languages, About PL, Types and PL, Essentials of PL, Concepts in PL, PL Pragmatics

  1. Language implementation
  2. Languages Categorization
  3. Comparison of programming languages

Programmers of early 1950s computers, notably UNIVAC I and IBM 701, used machine language programs, that is, the first generation language (1GL). 1GL programming was quickly superseded by similarly machine-specific, but mnemonic, second generation languages (2GL) known as assembly languages or "assembler". Programming Languages Assembly languages are similar to machine languages, but they are much easier to program in because they allow a programmer to substitute names for numbers. Machine languages consist of numbers only. Later in the 1950s, assembly language programming, which had evolved to include the use of macro instructions, was followed by the development of "third generation" (3GL) refers to high-level languages , such as BASIC, FORTRAN, PASCAL, ADA, C, C++, COBOL, and JAVA, C#. Each language has a unique set of keywords (words that it understands) and a special syntax for organizing program instructions. High-level programming languages, while simple compared to human languages, are more complex than the languages the computer actually understands, called machine languages. Each different type of CPU has its own unique machine language. [2]

Programming Languages Lying above high-level languages are languages (1970s-1990) called fourth-generation languages (4GL) is a programming language (closest to human languages) or programming environment designed with a specific purpose in mind, such as the development of commercial business software. Some fourth-generation languages: Clipper, FoxPro, SQL, Oracle Reports, ABAP MATLAB, ColdFusion, and etc. The 4GL was followed by efforts to define and use a fifth-generation languages (5GL), which is a programming language based around solving problems using constraints given to the program, rather than using an algorithm written by a programmer. Most constraint-based and logic programming languages and some declarative languages are fifth-generation languages. Fifth-generation languages are used mainly in artificial intelligence research and neural networks. Some fifth-generation languages: Prolog, OPS5, and Mercury. 4GL and 5GL projects are more oriented toward problem solving and systems engineering. [2]

Programming language implementation

software development life-cycle Regardless of what language you use, you eventually need to convert your program into machine language so that the computer can understand it. [3] Programming language implementation, there are two ways to do this: 1. Compile the program, or 2. Interpret the program.
See more: Compilers and Interpreters, Differences, Courses, PL Processors in Java, Difference

What is the difference between interpreted and compiled languages? Interpreted computing languages are languages whose source code is processed by a software program called an interpreter that reads in the text and immediately acts upon the instructions defined by the text. Compiled computing languages are languages whose source code is processed by a software program called a compiler that converts the source code into a file which can then be run directly or indirectly by a computer operating system. See also, what is compiled or interpreted program?
There also exist hybrid languages, such as Java and Python, that have qualities of both compiled and interpreted languages. Java, for example, can be compiled into bytecode which must then itself be run by an interpreter referred to as a virtual machine. Since Java source code itself does not have an interpreter, it's reasonable to consider Java to be a compiled langauge. In comparison, Python source code can also be compiled into bytecode to be read by a virtual machine. However, Python source code can also be interpreted by an interpreter. So, it is reasonable to consider Python an interpreted language.

Languages Categorization (Taxonomies)

A given programming language does not usually have a single ancestor language. Languages commonly arise by combining the elements of several predecessor languages with new ideas in circulation at the time. Ideas that originate in one language will diffuse throughout a family of related languages, and then leap suddenly across familial gaps to appear in an entirely different family.
The task is further complicated by the fact that languages can be classified along multiple axes. For example, Java is both an object-oriented language (because it encourages object-oriented organization) and a concurrent language (because it contains built-in constructs for running multiple threads in parallel). Python is an object-oriented scripting language.

Some of the programming languages grouped by Category

In broad strokes, programming languages divide into programming paradigms and a classification by intended domain of use. More refined paradigms include imperative language, procedural programming, object-oriented programming, functional programming, symbolic programming and logic programming; some languages are hybrids of paradigms or multi-paradigmatic as in below table. See: Advanced topics, Advanced topics2,

Array languages 
Analytica, IDL, A+, R, Fortran , MATLAB, ...
Aspect-oriented languages 
AspectC++, AspectJ, CaesarJ, ObjectTeams, ...
Assembly languages 
ASEM-51, C--, COMPASS, GAS , MASM, ...
Authoring languages 
Bigwig, Coursewriter,
PILOT, TUTOR, ...
Command line interface languages
4DOS, Winbatch, SpiritShadow (2009),
Win PowerShell, sh, bash., ksh,..
Compiled languages
Ada, Basic, ALGOL, COBOL, Python, C, C++,
C# (compiled into Intermediate Language ),
Java (usually compiled into JVM bytecode), ...
Concurrent languages 
Ada, Concurrent Pascal,
Cilk - a concurrent C, Eiffel, Java, ...
Curly-bracket languages
AWK, csh ("C Shell"), C, C++, C#,
ECMAScript (ActionScript, Javascript),
Java (Groovy, JoinJava, X10), PHP, Perl, ...
Dataflow languages 
Hartmann pipelines, G (used in LabVIEW), Lucid
Prograph, WebMethods Flow, Monk,...
Data-oriented languages
Clarion, Clipper, dBase, SPARQL,
Visual FoxPro, Tutorial D, WebQL, ...
Data-structured languages 
Array-based, List-based, Stack-based
Declarative languages 
Analytica, Ant, MetaPost, Modelica, SQL, XSL,
DASL(partial declarative, partial imperative), Prolog, ...
Esoteric languages 
Befunge, Brainfuck, FALSE, LOLCODE, Qwertycode, Shakespeare, Var'aq, ...
Extension languages 
AutoLISP (specific to AutoCAD), Guile,
Python (Maya and other 3-D), S-Lang, SQL,
Ruby (Google SketchUp), Tcl,..
Fourth-generation languages 
ABAP, IBM Informix-4GL / Aubit-4GL, Oracle Express 4GL, Progress 4GL, Today, Visual FoxPro, ...
Functional languages, e.g.
APL, Charity,, Curl, Lisp, Mathematica,
ML -Alice, Poplog, ...
Interactive mode languages 
Clojure, Common Lisp, F#, Maple, MATLAB, PostScript, Ruby, S-Lang, Tcl,...
Interpreted languages 
Ant, AutoHotkey, Eiffel, Game Maker Language, Groovy, Haskell , Lisp (Tea), Maple, Ruby, Groovy, PostScript, S-Lang, ...
Iterative languages 
Aldor, CLU, Cobra, Eiffel, Icon, Python, ...
List-based languages - LISPs 
Joy, Lisp (Dylan, Arc, Logo), Tcl (Tea), TRAC, ...
Little languages 
apply, awk, SQL, ...
Logic-based languages 
Oz (Mozart Programming System),
Curry, Leda, Prolog (Mercury), ...
Machine languages 
ARM, Intel 80x86, IBM System/360,
National 32032, Motorola 680x, Sun SPARC, ...
Macro languages 
cpp (the C preprocessor), PHP, SMX,...
Metaprogramming languages 
C++, Curl, Lisp, Haskell, Lua, Pels, Python,
Smalltalk, XL (concept programming), ...
Multiparadigm languages 
BETA, C++, C#, Curl, PHP, SCALA,
Ruby, Tcl, XL,...
Numerical analysis 
Algae, AMPL, GAMS, MATLAB,
Seneca an Oberon variant, ...
Non-English-based languages 
ARLOGO - Arabic, Chinese BASIC - Chinese, Lexico - Spanish, Rapira , Glagol (Russian), ...
Object-oriented class-based languages 
Dylan, Goo, BETA, C++, C#, Chrome, Cobra, Java (Groovy, JoinJava, X10), PHP, Ruby, SCALA,...
Object-oriented prototype-based languages 
ABCL/1, ECMAScript (ActionScript, Javascript),
Lua, NewtonScript, ...
Off-side rule languages 
Ivy, Miranda-Haskell-Curry, XL,
ISWIM, ABC (Python, Cobra, Boo), ...
Procedural languages 
ADA, ALGOL, BASIC, C, C++, C#, ECMAScript (ActionScript, Javascript), Java (Groovy, JoinJava, X10), Lasso, Modula-2, MATLAB, Perl, Python, Rapira, S-Lang, X++, XL,...
Reflective languages 
Aspect-oriented, ECMAScript (ActionScript, Javascript), Java (Groovy, JoinJava, X10), Lisp,
Lua, PHP, Pico, Perl, Python, Rapira, Tcl, X++/XL,...
Scripting languages 
AppleScript, AWK, BeanShell, ColdFusion, ECMAScript (ActionScript, Javascript), PHP,
Game Maker Lang., Java (Groovy, JoinJava, X10),
Python, Ruby, Smaltalk, S-Lang, Tcl, ...
Stack-based languages 
Cat, Factor, Forth, Joy, Prolog, PostScript, Urq,...
Synchronous languages 
Argos, Averest, LEA, Lustre, SyncCharts,...
Syntax handling languages 
ANTLR, GNU Flex, lex, JavaCC, ...
Visual languages 
CODE, Eiffel, Prograph, Simulink, Vvvv,...
Wirth languages 
ALGOL W, Modula, Modula-2, Oberon,
Object Pascal (Borland Delphi),...
XML-based languages 
Ant, Cω, ECMAScript ECMAScript for XML, MXML, XPath, XQuery, XSLT, XMLmosaic,...

Comparison of programming languages

These days, programming languages are becoming more and more general and all-purpose, but they still have their specializations, and each language has its disadvantages and advantages. [4]
Some useful links: Measuring Popularity, Wiki-Compare, Wiki-Compare2, Comparing , Compare2, Compare3, Compare3, Compare4

References


  1. 1. Wiki quotes
  2. 2. Evolution of programming languages
  3. 3. Compilers and Interpreters
  4. 4. Languages Comparison
  5. Artificial Intelligence
  6. Brittanica