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
- Objective-C. General purpose. OOP.
- Swift. Multi-paradigm (OOP, functional, imperative, block structured). Compiled. 2014.
- 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.
- SQL. For most databases like Microsoft SQL Server, MySQL, Postgres, Oracle.
- Not exactly languages but used a lot
- 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:
- C++, C#, Java for "work".
- Pick up other languages, tools, libraries, concepts as needed along the way.
Here is the history of programming languages compressed:
|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:
|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;||
|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).|
|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||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:
Here are some of the .NET languages so far:
|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.|