Computer programs are often described as “sets of instructions”,and computer languages are thought of by many as merely the syntax and vocabulary for providing these instructions.
From this point of view, different programming languages may have different grammars, or different vocabularies. Each may treat semi-colons a particular way, or require capitalization — but they are sort of the same underneath all that.
The reality of programming is much more complicated than that.
Programming Today
It’s weird to think of, but most of the really “big” ideas in computer programming were developed in the 1950s and 60s. Many new languages have developed since then, but none of them represent a truly novel approach to logic and computation.
The development of new programming languages in the last few decades has focused a lot on developer experience. This may mean trying to enable code that is easier to write (the driving force behind Ruby) or easier to read (Python), or making certain types of logical structures and modes of problem-solving more intuitive.
Some languages have been developed to solve particular problems in programming (PHP and SASS, for example), to manipulate certain types of systems (SQL), or to run in a particular environment or platform (Java and JavaScript). A number of languages have been developed for the purpose of helping newcomers learn programming (BASIC and Scratch are classic examples).
Since theories and practices around language design have (mostly) settled into a widely recognized orthodoxy, much of the new and interesting work in the development of programming practice currently centers around system architecture.
Relatively recent developments include concepts like SOA (Service Oriented Architecture) and MVC (Model-View-Controller), and frameworks like Ruby on Rails that enable programmers to easily work within these paradigms.
List of Coding Languages
A growing list of popular programming languages, markups, and protocols.
ABAP
Advanced Business Application Programming, or ABAP, is one of the two languages that are used to create SAP applications. SAP is one of the biggest enterprise resource planning systems in use today, and so is very important in the business community.
ActionScript
ActionScript is the programming language used to create Adobe Flash applications. Although Flash may be less important than it once was because of HTML5, it is still an exciting development system for creating graphics, animations, and games.
Ada
Ada is a programming language developed for the US Department of Defense for creating mission-critical applications. Although it isn’t widely used, it is the language of choice when safety is critically important like in air traffic control applications.
ALGOL
ALGOL was one of the earliest high-level languages. But unlike Fortran and COBOL, it isn’t much used. Just the same, it has been very important as a model for languages that came later.
Alice
Alice is a visual programming language, used to teach students basic computer science concepts. It uses 3D objects and a point-and-click interface to provide an easy way for students to get started with traditional programming..
APL
APL is short for A Programming Language, and it is indeed that. Although it was created in the early 1960s, it is still in use because of its power. Just the same, it is a very strange language.
ASP / ASP.NET
ASP is short for Active Server Pages. It was the first server-side scripting language for Microsoft’s IIS web server. ASP was replaced by ASP.NET, an open-source server-side framework. See: ASP hosting.
Assembly Language
Assembly language is the most fundamental kind of software development where the coder has complete access to the CPU. Whether used directly or as a way to better understand computers at the hardware level, assembly language programming is a powerful skill to have.
Awk
Awk is an enormously powerful text processing programming language that allows you to extract the data that you need from a file or other source and output it in any format you want. It is an old tool, but still as useful as ever.
BBC Basic
It might seem hard to believe but in the early 1980s, the television broadcaster BBC had a computer and programming language developed simply for the purpose of producing an educational series, The Computer Programme. And it was successful! Now its an amazing bit of computer history, but you can still get and use the language..
C
If you include its two derivatives, no language has had more use and more impact than C. It is especially important for the development of Operating Systems and other foundational software. Many compilers and interpreters for other languages are written in C.
C++
Originally “C with Classes,” C++ is, in many ways, simply a more advanced successor to C (though the situation is a lot more complicated than that). C++ was developed to add high-level programming paradigms to C, while retaining the low-level hardware-manipulation capabilities. Many of these additions have been added to C over the years, and the languages are more like two dialects of a single language.
C#
Used as the primary language for .NET programming, and much like C++, it is an extension of the C programming language with the major addition being object-oriented capabilities.
COBOL
COBOL is one of the oldest high-level programming languages. And many people think it is dead. But it is still in use throughout business and government doing mission-critical tasks. And that code still needs to be maintained and expanded. It offers an unusual opportunity for young software developers.
Cascading Style Sheets
Cascading Style Sheets (CSS) allow you to change the look of web pages. It’s usually the first thing you learn after HTML. CSS isn’t a traditional language, but it is an incredibly useful one. This article provides a complete introduction to CSS along with a section on writing efficient code and dealing with the very big subject of colors. It also includes a complete list of CSS color names.
D
Just as the C programming language came about because of deficiencies in the B programming language, D was designed to fix C. In particular, D makes C object-oriented. But unlike C++, which did the same thing, D is not backward compatible, and so doesn’t contain some of the weaknesses of C++.
Delphi
Delphi is an object-oriented version of the Pascal programming language. It’s been around for over 20 years and more popular than ever.
Dreamweaver
Dreamweaver is a powerful website building tool that allows the user to create visually without losing the complete control of hand coding.
Erlang and Elixir
Erlang is an old programming language, first designed to address telecommunications problems. But its emphasis on concurrent design has made it increasingly popular for the development of distributed applications like games and e-commerce applications.
Elixir is a functional computer language designed for creating large-scale concurrent and distributed applications such as social networks. Want to create the next Facebook? Elixir may be the language to use. Learn all about the language, its basis on Erlang, and functional programming generally.
F#
F# is a general-purpose programming language, designed to be extremely efficient. At first only a Microsoft language, it is now open-source and used on all platforms.
FORTH
Work began on Forth in 1968, and is commonly used on hardware that doesn’t have a traditional operating system. It is also widely used to control machinery.
FORTRAN
Fortran first appeared in 1957 and is still used today to solve some of the most complicated problems in modern science and engineering.
Functional Programming
Functional programming describes certain kinds of languages and an approach to programming. Get introduced to this system and find out how to learn more.
Go
The Go programming language, or golang, was released by Google in 2007. It was based on C and designed to remove some of the complexities out of C++. Although originally created as a systems programming language, it is now even used to create smartphone apps.
Haskell
Haskell is one of the most popular functional programming languages, in addition to being the basis for about a dozen others. It is widely used in business and academia and is a great language to get started with functional programming.
HTML
HTML is not a programming language, it is a markup language — a language for adding semantic and stylistic annotations to content. It is the primary language for web content, and is a fundamental skill for web designers and web developers, as well as for anyone (writers, editors) who produces content for the web. Learn some tips and tricks here: HTML cheatsheet.
IDL
IDL, or Interactive Data Language, is a computer programming language used primarily for data analysis and visualization. It is still widely used in aerospace and astronomy.
INTERCAL
INTERCAL is a parody computer language designed in the early 1970s. It was meant to make fun of the tendencies for programming languages to be overly technical and difficult to understand. But it’s still a real language that you can download and maybe even get to do things for you. This is assuming you are nice enough — but not too nice, because INTERCAL doesn’t like that either.
Java
Java is a high-level language designed to be used by the Java Virtual Machine. It has very few external dependencies, and was intended to be able to run on any physical machine. It is used a lot in network architecture and also in embedded devices, kiosks, and other in situ computing applications. See our detailed hosting guide to Java.
Javascript
JavaScript (which has no actual relation to Java), is a scripting language developed originally for use in web browsers. Because of that, it has a built-in facility for dealing with the Document Object Model, the in-memory representation of the content of a webpage. It is the primary programming language for front-end web development. Start your adventure here: JavaScript.
Node.js
Node.js is a runtime environment that allows JavaScript to be used to create server-side applications. Find out more: Node.js.
Bootstrap
Bootstrap is a popular front-end development framework that is JavaScript heavy.
jQuery
jQuery is a JavaScript library that makes writing code much easier and faster.
LabVIEW
LabVIEW is a graphical programming language especially designed to help scientists and engineers solve the problems they face. It is particularly focused on creating applications that interface with and control hardware.
Lisp
Lisp is one of the earliest high-level programming languages and is still actively use. It is a general-purpose language, but is most associated with work in artificial intelligence. There are a number of popular dialects of it.
Logo
Logo was one of the earliest teaching programming languages, and still probably the best known. It was famous for its turtle that children would cause to move around with computer commands. It is a fun way for kids to become familiar with programming.
MetaQuotes Language
The MetaQuotes language was developed for use with MetaTrader Software. It allows developers to create trading robots. But there are two competing, and rather different versions: MQL4 and MQL5. But if you want to get into financial trading programming, you needn’t worry. We have all the resources you need to figure it out.
ML
ML was originally designed as a meta-programming language: a language to be used to create other languages. But over time, it has come to be a general-purpose language, widely used in education as well as math, science, and even finance.
Modula-3
Although Modula-3 is not used much anymore, it is incredibly important in the development of programming languages. What’s more, there’s still plenty of Modula-3 code out there needing to be maintained.
MS Access
MS Access is a database system. Although it isn’t used that much anymore, it is still a great tool for small projects. And there is a huge number of legacy systems that depend upon MS Access. It can be critical to know.
MySQL
MySQL is one of the most popular database systems in the world. It is especially important as the basis of content management systems like WordPress. Find out about it and get the resources to learn more: MySQL Introduction and Resources.
NXT-G
The NXT-G programming language was designed to create and control robots using the LEGO MINDSTORMS NXT robotics kit. It is intended to introduce children to programming and robotics, but a lot of adults use the system too because it’s fun and interesting.
Object-Oriented Programming
This article provides you a good introduction to object-oriented concepts and then goes on to discuss the most popular object-oriented programming languages.
Objective-C
Another version of C, created in the 1980s to provide a fully Object-Oriented implementation of C. Its primary use now is on the Mac OSX and iOS operating systems. Until recently, iOS apps had to be written in Objective-C, but now Swift is an option as well.
OCaml
OCaml is an object-oriented functional computer language. In the tradition of ML, it is used a great deal for writing other programming languages and development frameworks.
Pascal
Pascal is a language much loved by programming purists. But that doesn’t mean it hasn’t kept up with the times and isn’t still used.
Perl
A very useful tool for almost any programmer. As an interpreted language it does not need to compile, and is sometimes referred to as the “swiss army knife” of scripting languages.
PHP
PHP is the most popular server-side language on the internet today. It is incredibly powerful yet easy to learn. Get started today: PHP Introduction.
PL/I
PL/I — or “Programming Language One” — dates back to the 1960s. Although never as popular as Fortran and COBOL, there is still PL/I code in use that needs maintaining and converting.
PL/SQL
PL/SQL is a procedural language build on top of SQL for programming for Oracle databases.
PostgreSQL
PostgreSQL is an advanced relational database system — the biggest open-source competitor to MySQL. Although not as popular as MySQL, PostgreSQL is generally more powerful.
PostScript
PostScript is a specialized programming language used primarily for describing graphics and page layouts. It is incredibly powerful.
PROLOG
Prolog is a logic programming language, designed to do natural language processing.
Pure Data
Pure Data is a unique visual programming language. It was created especially to allow users to create video, audio, and graphic works.
Python
Python is a high-level programming language. It is an interpreted (not compiled) language, also known as a “scripting language.” It is mostly used as a tool for performing ad hoc programming tasks such as task automation and data analysis. It has a strong set of tools for mathematical and scientific computing, and is frequently used by researchers. Learn more: Python Hosting Introduction.
R
R is a free and open-source programming language for statistical analysis and the creation of great looking data visualizations.
RapidWeaver
RapidWeaver is a website building tool. Written for the Mac, it has a number of advantages over online website building tools.
RavenDB
RavenDB is a NoSQL document-oriented database written especially for the .NET framework.
Rexx
Rexx is a scripting language written by IBM for its mainframe computers. But it became much more widely used.
Ruby on Rails
Ruby is a popular programming language. It is particularly associated with Rails, a web development framework for the Ruby programming language. It provides an MVC (Model View Controller) architecture, a database abstraction layer, and a lot of tools to speed the process of web application programming. Find out more: Ruby on Rails.
S-PLUS
S-PLUS is a commercial version of the powerful programming language S, designed for doing statistical analysis. The GNU project has its own version of S called R. We provide all the resources you need to learn S with an emphasis on S-PLUS.
SAS
SAS is a specialized language designed to analyze statistical data. It is widely used in government, academia, and business. For people who have a lot of data they need to make sense of, SAS is an obvious choice.
Scala
Scala is a relatively new language — more or less a new and better Java. It’s a great language for Java programmers who want to be more efficient, or people just starting out who want to learn a powerful language that won’t limit them in the future.
Sed
Sed is a powerful text processing tool and simple programming language that allows you to edit text files (or streams) using regular expressions.
SGML
Standard Generalized Markup Language (SGML) is the granddaddy of markup languages and the basis of HTML.
Simula
Simula is a very important language historically, as it was the first language to introduce the concepts which became the basis for Object-Oriented Programming.
Smalltalk
Smalltalk is a hugely influential object-oriented programming language. Over the years, it has become less widely used. But with the release of the development framework Seaside, Smalltalk has seen a resurgence in use, because it makes just about any Smalltalk implementation easy to use to create web applications.
SMIL
SMIL (Synchronized Multimedia Integration Language) is a tool for people who want to create and distribute presentations. It is especially useful if you want to create presentations that need to be updated from time to time.
SNOBOL
SNOBOL is a family of programming languages created in the 1960s especially for the purpose of processing text. Since then, more powerful tools have been developed, but it is still quite interesting, especially within the history of natural language processing and chatbots.
SQL
SQL is the Structured Query Language, a language used to communicate with Relational Database Management Systems (RDBMS). SQL allows a programmer to create data structures, insert and edit data, and query data.
SQLite
SQLite is the most popular database system in the world because of its widespread use in smartphone apps. Unlike MySQL, it is not a client/server but an embedded system, making it simple and fast for most applications.
SSI
Server Side Includes (SSI) is a simple language for adding dynamic elements to otherwise static websites. It also allows you to create easy uniformity and maintainability on your site.
Stata
Stata is a development environment and programming language for solving serious statistical problems. Although it’s been around a long time, it is still widely used by a very active community. If you do statistical work, Stata is a great tool to know.
Swift
Swift is a programming language developed by Apple for iOS, OS X, watchOS, tvOS, and Linux development. It is the language of the future for developers of programs and apps for Apple devices.
Tcl/Tk
Tcl is a powerful scripting language and Tk is the toolkit that allows programmers to create graphical user interfaces for their Tcl applications.
TeX and LaTeX
TeX and LaTeX are languages that allow coders to typeset documents. Using them is quite different from using a word processor, but far more powerful and easier for typesetting long documents like books.
Unified Modeling Language
Unified Modeling Language (UML) is a graphical modeling language used to design and visualize large computer systems. It is generally used before a project is started so that it can be better managed.
Unix Shells
This guides you through the major Unix (GNU/Linux) shells and shows you why you need one and which one you should use. Essential reading: Unix Programming Guide
Verilog
Verilog is a hardware description language — like a programming language, but for designing (and increasingly building) hardware. If you want to get into the computer chip design business, Verilog is one of the first places to start.
VHDL
VHDL is the other popular hardware description language. In fact, most professionals who know VHDL also know Verilog.
Visual Basic
Visual Basic is still one of the most popular languages for use with the Microsoft .NET framework. This article also discusses VBScript, still highly useful for scripting inside applications.
Visual FoxPro
Although no longer actively developed by Microsoft, Visual FoxPro is still a very popular database application development environment and programming language. There is a huge installed base of business applications that still need to be maintained, so programming professionals still use it.
VRML
Virtual Reality Markup Language (VRML) was created in the late 1990s as a way of describing virtual worlds. It created a lot of excitement for a time, but never really took off.
WAP/WML
WAP (Wireless Application Protocol) and WML (Wireless Markup Language) were two early technologies used to deliver and render webpages on mobile devices. Technology has made then unnecessary, but they are an important part of the history of today’s smartphones.
XML
XML is a highly structured markup language that is designed to be both human and machine readable.
XSL
More than advances in technology and manufacturing, the history of computer science is really about the development of programming and programming languages. It is more about advances in math and logic than about processors and megabytes.
List of Programming Tools and Libraries
Here is our growing list of in-depth guides to programming tools and libraries.
ADO.NET
If you develop database-driven applications using the .NET framework, then you need ADO.NET. It allows you to access data in a database-independent way.
AI Programming
Although not a specific library or tool, artificial intelligence (AI) is a special way of coding computers that is more and more common.
ASCII Encoding
Character encoding is one of the most basic aspects of computers and the internet. ASCII was the first widely used character encoding system. It has been superseded by UTF-8, but ASCII is still the basis for the vast majority of the internet today, and understanding it is critical for programmers. This guide also covers ISO-8859-1 and Unicode.
Backbone.js
Backbone.js is a flexible JavaScript library for creating single page web applications.
Books
There are thousands of great programming books. But we’ve put together 101 essential books that every programmer should have in their libraries.
CakePHP
CakePHP is a rapid-development framework for PHP. It is easy to use, even for PHP novices. What’s more, it uses MVC architecture to make maintaining code easier.
CGI
The Common Gateway Interface (CGI) is a way to run programs via the web. It isn’t a popular coding choice these days with alternatives like PHP. But it still has its uses.
Cocoa
Cocoa is an API for Mac OS X, and Cocoa Touch is the same thing for Apple iOS. Closely tied to the Objective-C and Swift programming languages, they are important parts of developing applications for Apple products.
CodeIgniter
CodeIgniter is a lightweight and easy-to-use PHP framework. There is a bit of wrinkle in that version 3 is not compatible with version 2.
Cookies
Cookies are a critical part of web programming.
CORBA
CORBA is a system for creating distributed applications that are language, OS, and hardware independent.
CVS
The Concurrent Version System (CVS) is a version control system. Although not as popular as it once was, it is still widely used.
DOM
The Document Object Model (DOM) is the tree-link structure of web pages. It is critical to understand in creating dynamic web pages.
Extreme Programming
Extreme Programming (XP) is an approach to coding that improves productivity at the same time that it creates better code.
FFmpeg
FFmpeg is a set of audio and video tools for creating multimedia content. It supports most media formats and codecs.
GATE
General Architecture for Text Engineering (GATE) is a suite of tools for the Java programming language that can be used for human language processing, analysis, and information extraction.
Git
Git is a popular distributed version control system. We’ve put together an introduction for it as well as simple command list.
GNUstep
GNUstep is a free, open-source application platform — very similar to Apple’s Cocoa platform. It allows programmers to develop applications for multiple computing platforms without much extra work.
ImageMagick
ImageMagick is a collection of command-line tools for doing graphics manipulation. But more important, it has an API with hooks into various programming languages. This allows languages like C++, Perl, and PHP to use its graphics algorithms in applications written with them.
JSON
JSON is short for JavaScript Object Notation, but it is used by most languages to transport data between browser and web server.
Laravel
Laravel is one of the most popular PHP frameworks on the internet. It is built with the MVC paradigm, so that not only is application development fast, but maintenance and upgrading are easy. See our Laravel hosting introduction.
Linked Lists
Linked lists are about the most basic form of dynamic data storage. They are really helpful to know in their own right. Additionally, they will make you much better at using pointers in your programs.
Machine Learning
Machine learning is a field of computer science researching a computer’s ability to learn autonomously.
MantisBT
Mantis Bug Tracker (MantisBT) is a free, open-source bug tracking system. Being web-based, it is a particularly compelling choice for a distributed group of developers.
MDN
The Mozilla Developer Network (MDN) is a collection of people, tools, and documents that help to maintain and improve the open internet.
Mercurial
Mercurial is a distributed version control system, similar to Git.
MPI
Message Passing Interface is a standard messaging protocol for passing messages between processes or programs. It has been implemented in a number of programming languages, including C, C++, Java, and Python. MPI has helped enable the rise of parallel computing.
MSXML
MSXML is a set of development tools for the Microsoft development environment for creating XML applications. It is not, however, consistent with the .NET framework and so is used less and less.
Ncurses
Ncurses is a library that allows text-based user-interfaces to be created that will be terminal independent. It’s still useful for lightweight applications and is used in many of the hacker’s favorite applications.
.NET
The .NET Framework is the base system for created applications for the Windows environment.
Network Programming
Network programming is the process of connecting computers together into networks, and building software systems that run across that network. A socket is a data endpoint for that connection, providing an interface (API) for communicating with the system from outside it. Most network sockets are internet sockets, which means that they use the Internet Protocol for communication.
NetCDF
Network Common Data Form, NetCDF, is a format for storing scientific data and libraries for manipulating and using it. Although quite old, it has kept pace with the times and is still widely used.
OAuth
You have doubtless used this system many times, but you may not know it. For example, some commenting systems let you log in with your Facebook or Google+ account. This is done with OAuth.
OpenCL
OpenCL is a C/C++ framework designed for creating applications that will run on various platforms. So the same code can create an application on Windows 10, Android 6, and (potentially) the Apple Watch.
OpenID
OpenID is a free system for letting users and applications authenticate with each other in a secure way.
OpenSSL
OpenSSL is a software library for creating secure websites using SSL/TLS.
OS Development
The Mount Everest of programming challenges is operating system development. If you want to prove to yourself that you can code anything, there is nothing better than writing your own operating system kernel and related tools. We provide you with an introduction and the resources to start you on your way. But beware: this is a journey for only the bravest and truest of programmers!
PHProjekt
Although no longer actively developed, PHProjekt is still widely used to manage projects.
Project Management
Creating software is about a lot more than just programming. This extensive resource will show you all you need to know to get started. Find out here: Project Management Software.
RegEx
Regular expressions, or regex, is a powerful system for text searching built into many programming languages and text editors. It’s a good system to know.
Robots
If you do website programming, eventually you will find yourself trying to control robots. There are two ways to do this. You can deal with them on a site-wide basis with the robots.txt file.
Sorting Algorithms
Sorting is one of the most basic things that computers do. In this resource, we go over five of the most popular sorting algorithms and provide information on learning more.
SSH
SSH, or Secure Shell, is a protocol that allows users to communicate with remote computers in a secure way. This article discusses the Putty implementation and alternatives to it.
SOAP
SOAP is a messaging protocol that allows computer programs to exchange data with each other. It is language-independent and allows web applications to use and present data to other websites or applications.
Subversion
Subversion is a free and open-source version control system. It is web-based with the repository centrally located so as to keep resource usage on coders’ computers to a minimum. Check out our hosting primer for Subversion.
URL
The Uniform Resource Locator (URL) is a critical part of the web and something that coders need to fully understand.
Vi
Vi is an old text editor that is still very popular among programmers — especially those working with Unix systems.
WCF
Windows Communication Foundation (WCF) is a Microsoft technology for creating service-oriented, connected applications.
WebKit Web Inspector
WebKit Web Inspector allows developers to remotely debug JavaScript on Safari and other WebKit-compliant browsers. It’s a great tool for dealing with tablets and phones.
Web Standards
The web wouldn’t work if we weren’t all speaking the same “language.” Web standards allow the same web page to display properly on a desktop computer, a tablet, a phone, and more.
WSDL
Web Services Description Language (WSDL) is an old XML-based system for describing web services. But it is still very popular and useful.
WSGI
The Web Server Gateway Interface (WSGI) is a specification that allows Python frameworks to work correctly with all web servers. It is built into modern frameworks, but critically important for people developing new frameworks.
YUI
The Yahoo! User Interface (YUI) library allows JavaScript programmers to more efficiently develop dynamic webpages. But it is no longer being developed.
Zikula
Zikula is a PHP framework for creating dynamic and maintainable websites and applications.
List of Programming Environments
A lot of programming is hardware specific. Check out our growing list of in-depth guides to operating systems and other environments.
Chyrp
Chyrp is a micro-blogging platform written in PHP. Although not a development platform, it is an excellent system to code for.
Drupal Coding Standards
If you want to become part of the Drupal coding team, you need to learn its coding standards. Get started here: Drupal hosting primer.
Linux Programming
Linux programming involves everything from shell scripting through applications development all the way to kernel development.
Mandriva Linux
Mandriva is a now-defunct Linux distribution. But there are a number of forks of it that live on.
MS-DOS
MS-DOS was the original Microsoft operating system for the IBM PC. It is no longer supported, but it is still around and used more than you might think.
MS-Windows
MS-Windows is still the most popular operating system in the world. See our MS-Windows hosting guide.
Raspberry Pi
The Raspberry Pi offers a great environment to get started creating specific hardware applications like MP3 players and drone controllers.
Ubuntu
Ubuntu is one of the most popular Linux distributions. It is designed to be especially easy to install and use. If you’d like to get started with Linux, Ubuntu is a good choice.
Umbraco
Umbraco is a .NET-based content management system written in C#. Find out all about using it and developing for it.
UNIX Programming
The breadth of Unix programming is great. It spans a range from administrative scripting to text-based coding to X Window development. More: UNIX Programming Resources.
Xaraya
Xaraya is a content management system (CMS) and a PHP framework. It is still used but development on it has slowed.
Related: Web Hosting Guide
Programming History and Timeline
Computer programming is, at heart, mechanical. The great challenge for early computing was figuring out how to mechanize logic and mathematical computation. Technological advancement — inventing new components and miniaturizing them — came much later. The first computer — Charles Babbage’s difference engine — was made out of gears, and powered by a hand crank.
But the problem with the difference engine is that it could only solve one kind of problem. In order to generalize the usefulness of this mechanical calculator, it needed to accept two kinds of input — data and programming. Babbage’s theoretical new machine, the Inference Engine, solved that problem.
Though Babbage’s Inference Engine was never built in his lifetime, the very first computer program was written to be run on it. Ada Lovelace, a Countess and hobbyist mathematician, wrote programs for Babbage’s computation device.
Modern Programming
In the 20th century, programming became a well-developed science — a branch of theoretical mathematics. This led to the development of modern programming languages.
There were several competing ideas about the nature of computer programming and how languages should be structured. The “winner” turned out to be a set of ideas promoted by John von Neumann — ideas which included logical control structures like IF and LOOP.
This so-called “von Neumann architecture” allowed for the advent of programming as we know it today, and the development of high-level computer languages. It has dominated the logic and structure of every major programming language since. Only a handful of non-von-Neumann languages (such Plankalkül) exist, and none of them have gotten any widespread use.
Timeline
1801
The Jacquard loom, which uses punch cards to store weaving designs, is invented. The idea of storing data on punched paper cards would later influence computer design. The first computers were programmed with punch cards, and punch cards continued to be used in some types of computing into the 1980s.
1842
Ada, Countess of Lovelace, develops an algorithm for Charles Babbage’s Analytical Engine. The algorithm computed Bernoulli numbers and made Ada the world’s first computer programmer.
1942
The Atanasoff-Berry Computer (ABC) was first tested. It was conceived in 1937 and then build by Iowa State University professor John Vincent Atanasoff and then graduate student Clifford Berry. It was arguably the first electronic digital computer. As with other early computers, it had many limitations. In particular, it could not be programmed.
The ENIAC computer was developed by the US Government. It could only be programmed by presetting switches and rewiring the system.
1943–1944
Plankalkul, a language designed for engineering a mathematical work, is developed by Konrad Zuse.
1945
John Von Neumann, working at the Institute for Advanced Study, conceived of two ideas which changed the course of computer programming. The first idea was that simple hardware should be controlled by complex instructions — that the “program” should be changeable without changing the hardware. The other idea was that computer programs should be broken down into small bits of conditionally executed code that could be jumped to from anywhere in the program. This allowed IF
, ELSE
and LOOP
structures to be written into computer programs.
Bernoulli numbers program
1949
Short Code, the first programming language, was developed, based on Von Neumann’s ideas. Unfortunately, it had to be “hand-compiled” — that is, someone had to translate the program in binary (1s and 0s) by hand.
1951
Grace Hopper, working for Remington Rand, begins development a compiler for Shortcode that automatically translates (“compiles”) code into binary.
1952
AUTOCODE, an early compiler, is developed by Alick E Glennie. He works on it in his spare time while attending the University of Manchester.
1954
The draft specification for FORTRAN, the first programming language to gain widespread use, is completed. The team that developed FORTRAN is headed up by John Backus, who later works on ALGOL and BNF. FORTRAN is still in use today, over six decades later.
People Working With the ENIAC Computer
1957
The first FORTRAN compiler is released.
The Short Code compiler developed by Grace Hopper is released by Remington Rand under the name MATH-MAGIC.
1958
Work begins on LISP, a language closely tied with the development of Artificial Intelligence. Versions of LISP are still in widespread use today.
The first specification for ALGOL is released.
1959
The Conference on Data Systems and Languages (CODASYL) creates COBOL.
1960
The first block-structured language, ALGOL 60, is made available.
1962
APL, a language with its own unique character set, requiring its own keyboard or input device, is released by Kenneth Iverson.
FORTRAN IV is released.
1964
APL60, a Terminal System for APL, is released.
BASIC, a programming language designed to help people learn how to write computer programs, was invented at Dartmouth University by John Kemeny and Thomas Kurtz.
1965
Fuzzy logic is introduced by Lotfi A Zadeh. This branch of logic and computation would later be used to control high-speed trains in Japan, naval helicopters, and auto-focusing cameras — among many other control systems.
1966
FORTRAN 66 is released.
LISP 2 is released.
Work begins on Logo.
1968
The ALGOL 68 is approved by the specifications committee that oversees the language, despite objections from several committee members. ALGOL 68 is much more complex than ALGOL 60, and turns out to be very difficult to implement.
ALTRAN, a FORTRAN variant, becomes available.
ANSI, the American National Standards Institute, officially defines COBOL.
Work begins on Pascal.
Simula, the first language using object-oriented concepts, is developed.
Early 1970s
Work begins on a number of new programming languages, including Forth, Prolog, and Smalltalk. Development of Smalltalk leads to the codification of object-oriented programming concepts.
1972
Konrad Zuse’s manuscript describing Plankalkül is published, thirty years after he developed it.
C, the language that will come to dominate operating system development, is developed by Dennis Ritchie.
Prolog is implemented by Alain Colmerauer and Phillip Roussel.
1974
The definitive reference manual for C is published.
ANSI releases another COBOL specification.
1975
An implementation of BASIC, called “Tiny BASIC,” is developed which can run on 2 KB of RAM. This leaves 2 KB available for a program to run on a typical 4 KB microcomputer.
Bill Gates and Paul Allen begin selling their version of BASIC to MITS, for use on their Altair microcomputer.
LISP dialect Scheme is developed by GL Steele and GJ Sussman.
The definitive reference manual for Pascal, the Pascal User Manual and Report, is published.
1976
Design System Language is released. This language has a major impact on PostScript.
1977
The first ANSI specification for MUMPS, which would later be renamed M, is released. The language was designed to handle Medical Records data and only recognizes the string data-type.
1978
The text-processing language Awk is released. It is named after its developers: Aho, Weinberger, and Kernighan.
ANSI releases the specification for FORTRAN 77.
1980
Smalltalk-80, Modula-2, and Franz LISP are released.
The early version of what would become C++, called “C with Classes” is developed by Bjarne Stroustrup.
1981
Work begins on Common LISP and Prolog.
1982
ISO Pascal and PostScript are released.
1983
Smalltalk-80: The Language and Its Implementation is published.
The DoD begins using Ada for all new “Mission Critical” applications. The language is named after Ada, Countess of Lovelace, the first computer programmer.
The first C compilers for microcomputers are released.
The first implementation of C++ appears.
Turbo Pascal is released.
Objective-C is released.
1984
A reference manual for APL2 is published.
1985
The wreck of the Titanic is found, using a submarine controlled by Forth.
Methods, a version of Smalltalk, is released.
1986
The first version of Smalltalk available for microcomputers, Smalltalk/V, is released.
Object Pascal for the Mac is released by Apple.
Turbo Prolog is released.
Actor and Eiffel, both object-oriented languages, are released.
1987
Perl is invented.
1988
The CLOS Specification (Common LISP Object System) is published.
Niklaus Wirth, who developed Modula-2, completes work on Oberon.
1989
ANSI publishes the C specification.
A draft reference C++ 2.0 is released. This version adds multiple inheritance, along with other features.
1990
The Annotated C++ Reference Manual, which details C++ 2.1, is published.
IBM Card Punch Station 029
Fortran 90 is released. Besides several new features, this version also changes the spelling away from ALL-CAPS.
1991
Visual Basic is introduced.
HTML is described for the first time, by Tim Berners-Lee.
Work begins on Java.
Python is invented.
1992
Dylan is released by Apple.
1993
ANSI releases a draft-proposal for object-oriented COBOL. The standard was supposed to be released in 1997, but was not finalized until 2002.
The first public specification of HTML is made available.
1994
Microsoft adds Visual Basic into Excel.
Dave Wood and Moti Schneider present a proof-of-concept paper at the IEEE World Congress on Computational Intelligence, using the FEST Fuzzy Expert System Tools shell to model helicopter landing.
PHP is invented.
1995
Ada 95 is released, adding support for OOP and real-time systems.
HTML 2.0 is released.
The first public implementation of Java is released.
JavaScript is invented. It was developed in a period of only 10 days, by Brendan Eich.
Ruby is invented.
The Gang of Four publish Design Patterns: Elements of Reusable Object-Oriented Software.
1997
HTML 4.0 is released.
PHP 3.0, the first version of the language recognizable to contemporary users, is released.
ECMA released the first JavaScript (ECMAScript) standard.
1998
ISO releases the first C++ standard.
HTML 4.0 is re-released without a version-number increment.
2002
Scratch, a visual programming language designed to teach programming concepts, is released.
2004
PHP 5, which is still in use, is released.
The Bizarre APL Coding Keyboard
2007
The SOA Manifesto Working Group publishes the SOA Manifesto, detailing a set of objectives and principles for Service Oriented Architecture.
Clojure, a dialect of Lisp, is released.
2009
Google releases Go.
CoffeeScript, an expansion of JavaScript that adds concepts borrowed from Ruby and Python, is released.
2010
Rust, sponsored by Mozilla, is released.
2013
Google releases Dart.
2014
HTML5 is published as a W3C recommendation.
Apple releases Swift, based on Objective-C.
Facebook releases Hack, based on PHP.
Future of Programming
It’s hard to say just where programming is going. In the short-term, we can probably expect more acceleration of the trends we’re already experiencing:
- Big data
- Virtualization
- “Internet of Things”
But long-term, it is notoriously difficult to make accurate predictions. Quantum computing may lead to a whole new paradigm of computer programming; computers may learn to program themselves, leading to the Singularity and the end of the human era; we may discover how to use programming to mimic biological intelligence, leading to transhumanism. Or we might just figure out how to make our phones smaller.
Whatever the future holds, it is more and more and clear that programming — being able to read and write code in a handful of common languages — is becoming the new business literacy. Familiarity with programming concepts and with the logic of computer systems and architecture is quickly becoming as important as basic business skills like sales, marketing, and design.
Further Reading and Resources
More programming guides, tutorials, and infographics related to coding and developer resources:
- Computer Careers: job descriptions and resources for career paths in computer technology.
What Code Should You Learn?
Confused about what programming language you should learn to code in? Check out our infographic, What Code Should You Learn? It not only discusses different aspects of the languages, it answers important questions such as, “How much money will I make programming Java for a living?”
IBM Card Punch Station 029by waelder (own work). Licensed under CC BY 2.5. APL Keyboard by User:Rursus. Licensed under CC BY-SA 3.0. All other images are in the public domain or owned by Digital.com.