A list of programming languages I watch:

  • C family
    • C. An imperative language by Dennis Ritchie between 1969 and 1973. Building block for other languages, OSes, embedded apps, systems, compilers.
    • C++. Intermediate level. By Bjarne Stroustrup 1973/1983. OOP. Firefox, Winamp, Adobe. Sys SW, App SW, high performance servers/apps, video games.
    • Go. Aka GoLang. A statically typed language by Google (Robert Griesemer, Rob Pike, and Ken Thompson [Unix, B]) in 2007 as an improvement on C/C++.
    • C#. A multi-paradigm language. Microsoft Windows. Enterprise.
    • Java. Classes. OOP. Imperative. Supposedly Write Once, Run Anywhere (WORA). Enterprise
    • Apple
    • Objective-C. General purpose. OOP.
    • Swift. Multi-paradigm (OOP, functional, imperative, block structured). Compiled. 2014.
  • JavaScript. Engines, Libraries, Frameworks. Hybrid imperative/functional.
  • Modern scripting
    • Ruby (and Ruby on Rails). A dynamic language. OOP. Scripting. Web and mobile. Scribd, GitHub, Groupon and Shopify.
    • Python. High-level. Server side scripting. Google, Yahoo!, NASA.
  • PHP. For the Web. Web. Server side scripting. Wordpress, Digg, Facebook, Wikipedia.
  • Perl. Dwindling mind share.
  • Visual Basic; VBScript; VBA; VB .NET. More by happenstance than choice.
  • Haskell. A functional language.
  • Julia. For data scientists.
  • Artificial Intelligence (AI) and the like
    • Lisp. Only fortran is older. Parenthesized RPN.
    • Logo
    • Prolog
  • SQL. For most databases like Microsoft SQL Server, MySQL, Postgres, Oracle.
  • Not exactly languages but used a lot
    • XML
    • JSON
    • ASCI
    • HTML
    • CSS
    • Bash. Unix/Linux commands like ls, grep, sort.

Learn by practice. Do real things not just theoretical stuff. One pathway for learning:

  • Start with some basic knowledge of Unix/Linux or Windows.
  • Then learn a lower language, like C, paired with a higher language:
    • JavaScript plus {PHP, Python, or PERL} for the Web.
    • C++, C#, Java for "work".
  • Pick up other languages, tools, libraries, concepts as needed along the way.

Here is a very nice chart that traces the roots of computer languages. It only goes to 2001 and it has some odd omissions (like PHP).
Chart tracing the roots of computer languages.

Here is the history of programming languages compressed:

Creator Creation Year Dialects Influenced Notes
1822 (Difference Engine) Charles Babbage     A changeable machine for adding decimal numbers.
1936 (Lambda Calculus) Alonzo Church     A formal system for exploring function definition & application, and recursion. Precursor to OOP and functional programming.
1936 (Turing Machine) Alan Turing     An abstract machine for defining algorithms. Not the same as the Turing Test where you try to distinguish between a conversation with a human or a machine.
1941 (Z3)       First freely programmable, fully automatic machine, i.e. computer.
1942 (ENIAC = Electronic Numerical Integrator And Computer)       First all-electronic computer.
1945 (ideas) John von Neumann.     Two ideas: 1. Computers should be reprogrammed by instructions (software) instead of physically (hardware). 2. Sub-routines, flow control, and libraries.
1949 Short Code       First programming language, an assembly language.
1951 (UNIVAC = UNIVersal Automatic Computer)       First U.S. commercial computer.
1952 A-0       First programming language with a compiler. Used for UNIVAC.
1954 FORTRAN = FORmula TRANslating system John Backus at IBM FORTRAN I-IV, 77, 90, 95, specialized and parallel-processing versions.   First major language. Developed IF, DO, GOTO, boolean, integer, real, and double-precision data types. Common extensions: Extensions: .cod, .f, .f77, .fd, .fi.
1956 LISP = LISt Processing John McCarthy [offsite] Common LISP (ANSI approved); Scheme; Logo; Functional programming. Polish notation (EG: + 1 2 instead of 1 + 2). The only data type was list. Mad with parentheses. Highly beloved. The only data type was list. In 1994, became the first ANSI programming language with object oriented programming. Sometimes interpreted, sometimes compiled. Weakly typed. Used in AI. Common extensions: .lsp, .l.
1957 GEORGE Invented by Charles Leonard Hamblin. Used Reverse Polish Notation. GEORGE is on this list primarily because my name is George.
1958 ALGOL = ALGOrithmic Language International scientists ALGOL 58 (aka IAL); ALGOL 60; ALGOL 68; ALGOL W (by Wirth); Pascal; Modula; C; C++; Java; Oberon; PERL; First block structured language. First to use BNF notation for describing its syntax. First to pass parameter to subroutine by either "call-by-value" or "call-by-name". Free-form language. Developed many other features now considered standard. Parent of Pascal, C, C++, Java.
1960 COBOL = COmmon Business-Oriented Language Grace Hopper at US DOD    

Used on mainframes everywhere. The world's most popular programming language until the 1990s. Whereas FORTRAN was for scientists, COBOL was for business. The primary Y2K culprit. A COBOL program normally consists of four divisions: identification, environment, data, and procedure. Block structured. Common extensions: .cbl, .cob.

1962 APL = A Programming Language = Array Processing Language Kenneth Iverson at Harvard APL2; J; K; NGL; An array programming language. Has its own character set. It has always been interpreted but only recently structured and modular.
1963 BASIC = Beginners All-purpose Symbolic Instruction Code John Kemeny & Thomas Kurtz at Dartmouth GW-BASIC QBasic; Visual Basic; Visual Basic .NET; The infamous GOTO n and GOSUB n control structures. Not intended for large-scale programming. Common extensions: .bas, .bld, .mak.
1964 PL/I. Pronounced "P L one". George Radin at IBM     Like a synthesis of ALGOL, COBOL, and FORTRAN.
1964 Simula Ole Dahl & Kristen Nygaard at NCC Olso   Smalltalks; C++; Java; Introduced OOP (object oriented programming). So good it was static for 30 years! First object-oriented language.
1966 Logo = Turtle Graphics (because the cursor was a turtle that would draw things) Wally Feurzeig & Seymour Papert Over 130 variations of Logo   Logo is LISP adapted to read easier, i.e. "LISP without the parentheses".
1966 MUMPS = M = Massachusetts General Hospital Utility Multi-Programming System Octo Barnett at Massachusetts General Hospital ANSI M   Originally dedicated for building and managing "post-relational" databases. Interpreted and looks like COBOL. Sort of like SQL for the M databases, of which the dominant one is Caché by InterSystems, but there is also the GT.M under the GPL.
1968 Pascal Niklaus Wirth   Modula (also by Wirth). Influenced nearly every block-structured language that followed it. Developed as a language for teaching programming. Pascal combined features of FORTRAN, COBOL, and ALGOL. Added the CASE statement. A small language (in comparison to say PL/1) but with access to large external libraries. Common extensions: .dta, .obj, .p, .pas, .pck, .psm, .tp, .tph, .tpl, .tpp, .tpu, .tpw.
1971 Forth Charles H. Moore     1977 formalized. 1994 standardized by ANSI. A very small, very fast, and portable language that makes great use of RPN, is stack based, and functional. A very lovable and great language.
1972 C Dennis Ritchie & Ken Thompson at Bell Labs K&R C; ANSI C = C89 = C1989; ISO C = C95 = C1995; C99;   Introduced systems programming. Since C was deeply involved in creating UNIX, C is great for creating operating systems. In 1973 they rewrote UNIX in C, hence C is deeply associated with Unix, although C has applications outside of Unix. The book The C Programming Language (aka K&R or the white book) (Brian Kernighan and Dennis Ritchie. Englewood Cliffs, NJ: Prentice Hall) was very influential: The 1978 first edition covered K&R C, while the 1988 second edition covered ANSI C (ANSI X3J11). C is considered a high-level language but C is closer to assembly language than other popular high-level languages. The "lowness" of C makes it powerful, flexible, fast, and efficient in its memory usage. On the other hand, the lowness makes it too detail oriented to deal with higher level systems. Part of the great power is C is its age and the vast libraries available to C programmers. Common extensions: .c, .c86, .lrf, .mrb, .pch, .ph, .pre, .qlb, .sts .
1972 Prolog = programmation en logique (French) = PROgramming in LOGic Alain Colmerauer and Robert Kowalski     Introduced logic programming, i.e. the syntax was more like logic than computer specific. Interpreted. Used for AI.
1972 Smalltalk Alan Kay, Dan Ingalls, Ted Kaehler, Adele Goldberg, et al. at Xerox PARC   Ruby; Python; OOP language used for making applications. Its object model was influential but even more so was its run time environment. Said to have started the OOP craze. First language to support a multi-window GUI. Used the MVC paradigm: Model held the data, View drew the display, and Controller handled events.
1975 Scheme Guy L. Steele & Gerald Jay Sussman     A functional programming language and dialect of LISP.
1976 AWK = Aho + Weinberger + Kernighan Alfred V. Aho, Peter J. Weinberger, & Brian W. Kernighan   NAWK; PERL; An interpreted string-processing language for UNIX. Focuses on strings, associative arrays, and regular expressions. Replaced largely by PERL. Influenced by C.
1978 ML = Meta Language Robert Milner   Standard ML (SML); SML/NJ; Caml; OCaml; F#; EML; Miranda; Haskell; Introduced functional programming. Provided a very practical set of aggregate data types (tuples, lists, arrays), and good facilities for defining new types. One of the most widely used functional programming languages. Manipulates other languages.
1978 Ada. Named in honor of Augusta Ada Byron, Countess of Lovelace, who developed the essential ideas of computer programming. She was also the daughter of Lord Byron and a friend and confidante of Charles Babbage. Jean Ichibah et al. at US DOD     Pascal-like syntax but strongly typed. Designed to support large-scale programming and promote software reliability.
1979 Rexx = Restructured Extended Executor Mike Cowlishaw at IBM ObjectRexx; NetRexx = compiles to Java byte code; Tcl; Python; Originally for mainframes and databases. Designed to be a macro or scripting language.
1980 Modula Niklaus Wirth Modula 2; Modula 2+; Modula 3;   Introduced modules, i.e. large chunks of modular code. More flexible than Pascal but not as overwhelming as Ada. Allowed the programmer to declare variables and other items nearer to where they are used.
1982 C++. Originally "C with Classes". Bjarne Stroustrup at AT&T Bell Labs     Added OOP to C. A statically typed free-form multi-paradigm language supporting procedural programming, data abstraction, object-oriented programming, and generic programming
1982 PostScript John Warnock et al. at Adobe Systems     A threaded interpreted language with stack-based semantics. Can be used for general programming but was designed to drive graphic devices such as printers.
1985 Miranda David Turner   Haskell A non-strict (lazy) purely functional programming language.
1985 Oberon Wirth and Gutknecht at ETH Zurich     A procedural, block-structured language with many object-oriented features.
1986 Eiffel Bertrand Meyers     An object-oriented language intended for general application programming with c-like syntax. Passed up by c++ and Java because no free versions available.
1986 HyperTalk Atkinson & Winkler at Apple Computer     The scripting language for Apple's information presentation system HyperCard. Influenced the niche area of multimedia scripting languages.
1986 Objective-C = ObjC = Objective C = Obj-C Brad Cox   Java A strict super set of C, i.e. C code can be compiled with an Objective-C compiler but not with a C++ compiler. Object oriented. Dynamically typed. For Mac OS X and GNUstep.
1987 PERL = Practical Extraction and Report Language Larry Wall v2 1988; v3 1989; v4 1991; v5 1994;   A text oriented language used for scripting, system administration, www, text, and strings. Part of LAMP (Linux, Apache, MySQL, PERL/PHP/Python). Common extensions: .ph, .pl. Influenced by C, csh, AWK. PERL has an enthusiastic following.
1990 Haskell. Named after Haskell B. Curry, a logician and mathematician who worked on function theory. committee     A non-strict (lazy), purely functional, sequential, and largely interpreted language.
1990 tcl = Tool Command Language. Pronounced "tickle". John Ousterhout et al. at UC Berkeley     An interpreted language used for scripting system administration, and applications.
1990 Visual Basic = VB   VBS (VBScript); VBA (VB for Applications, for macros esp. in MS Office apps) VB .NET (part of Visual Studio .NET) An event driven programming language that does RAD (rapid applications development).
1990 (WWW)        
1991 Python. Named after Monty Python's Flying Circus. Guido van Rossum Jython (compiles into Java bytecode)  

Looks PERL-ish. Very object oriented. Interpreted. Dynamically typed. Has some Functional. Open source. Reverts pre-free-form. Uses: scripting, application scripting, www, ASP. Influenced by Modula and C. Part of LAMP (Linux, Apache, MySQL, PERL/PHP/Python).

1993 Ruby Yukihiro Matsumoto et al     Very popular in Japan. Looks PERL-ish. Object oriented. Interpreted. Open source. Uses: scripting, application scripting, www.
1994 Clik Supercomputing Technologies Group at the MIT Laboratory for Computer Science     A general-purpose programming language designed for multi-threaded parallel programming and based upon ANSI C.
1994 Java. Originally called "Oak". James Gosling et al. at Sun Microsystems GCJ (Gnu Compiler for Java) Visual Studio .NET Introduced WORA over the Web. Still the cross-platform sweetie in spite of .NET. JSP is server-side like ASP. Object oriented. Uses: cross-platform applications, applets, www, e-commerce infrastructure. Influenced by C, Smalltalk, and Scheme.
1994 JavaScript. Originally called "Mocha", then "LiveScript". Brendan Eich at Netscape Communications Corporation ECMAScript = standardized JavaScript; JScript = Microsoft near-clone;   Dominates web scripts. Interpreted. Still the king of client-side scripting and perfectly usable for server-side scripting. Sorry VBScript! Prototype-based programming (classless object oriented programming).
1994 PHP = PHP: Hypertext Preprocessor Rasmus Lerdorf 1997 Zeev Suraski and Andi Gutmans rewrote PHP into PHP3.   Command or scripting. Interpreted. Open source. Object oriented (as of PHP 3). PHP is a scripting language that is embedded within HTML to run server-side code as was commonly done with CGI programs (Common Gateway Interface). In that sense PHP is much like ASP (Active Server Pages) except that PHP is open source and PHP can be used on almost all major operating systems, most web servers, and many databases. Influenced by C, PERL, and Java. Uses: web databases, embedded in HTML/XML. Part of LAMP (Linux, Apache, MySQL, PERL/PHP/Python). Common extensions: .php, .php3, .phtml.
1995 ColdFusion JJ Allaire & Jeremy Allaire Cold Fusion 1.0;   A tag/XML based language for server-side applications. ColdFusion is unlike ASP and PHP (which are interpreted), but like ASP.NET and JSP (partially compiled as bytecode for a virtual machine).
1995 Delphi = Object Pascal Anders Hejlsberg at Inprise/Borlan Delphi 2 in 1996; ...; Delphi 8 in 2003-12; C# Object oriented. RAD. Note that Anders Hejlsberg went on to be the chief architect of C#.
1999 Visual Studio .NET = VS .NET = (C#; VC++ .NET; VB .NET; J#; F#;) Microsoft     Microsoft's response to Java and web services. .NET = a CLI (Common Language Infrastructure) composed of various sub-languages (including C#) that are all translated into CIL (Common Intermediate Language) bytecode called PE (portable executable) files. The .NET CLR (Common Language Runtime) would in theory run the PE on any platform (just like like the JVM). Common extension: .cs.

Here are the main sub-languages for Microsoft .NET:

  • C#
  • VB .NET
  • Visual C++ .NET
  • J#
  • JScript .NET
  • F#. 1.0 as of 2005-04.

Here are some of the .NET languages so far:

  • COBOL for Microsoft .NET.
  • Perl for Microsoft .NET.
  • Eiffel for Microsoft .NET.
  • Python for Microsoft .NET.
  • Pascal for Microsoft .NET.
  • Mercury for Microsoft .NET.
  • Mondrian for Microsoft .NET.
  • Oberon for Microsoft .NET.
  • Salford FTN95 (Fortran) for Microsoft .NET.
  • SmallTalk for Microsoft .NET.
  • Standard ML (SML) for Microsoft .NET.
2000 Joy Manfred von Thun at Latrobe University     A simple functional programming language.
2005 F# Microsoft     A functional and imperative language for .NET. Like a mix of C# and Ocaml.


GeorgeHernandez.comSome rights reserved