Disclosure: Your support helps keep the site running! We earn a referral fee for some of the services we recommend on this page. Learn more

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 varying grammar or vocabulary. Each may treat semicolons a particular way or require capitalization — but they are somewhat similar underneath. The reality of programming is much more complicated.

Key takeaways:

  • In the last few decades, creating new programming languages has focused mainly on developer experience. Some languages solve programming problems.
  • There are dozens of programming languages; we will go over 100 of the most common ones.
  • Numerous programming tools and libraries exist, from ADO.NET to Git and Simple Object Access Protocol (SOAP).
  • The history of programming dates back to 1804 when the Jacquard loom, which uses punch cards, was invented.

What Is Programming Today?

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 represent a truly novel approach to logic and computation.

Creating new programming languages in the last few decades has focused much 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: Hypertext Preprocessor(PHP) and syntactically awesome style sheets (SASS), for example. Also, it can mean manipulating certain types of systems (SQL) or to run in a particular environment or platform like Java and JavaScript. A number of languages have been developed to help 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 developing programming practice centers around system architecture.

Relatively recent developments include concepts like Service Oriented Architecture (SOA) and Model-View-Controller (MVC), and frameworks like Ruby on Rails that enable programmers to work within these paradigms easily.

What Are Some Popular Coding Languages?

Here is a growing list of popular programming languages, markups, and protocols.

ABAP

Advanced Business Application Programming, or ABAP, is one of the two languages used to create SAP applications. SAP is one of the biggest enterprise resource planning systems in use, and is 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 U.S. Department of Defense for creating mission-critical applications. Although it isn’t widely used, it is the language of choice when safety is seriously 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 used much. Still, it is an important model for languages that came later.

Alice

Alice is a visual programming language 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, though it is a 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.

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, it 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 producing a successful educational series, The Computer Programme. Now it’s 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 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). 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 that many people think 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.

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 is more popular than ever.

Dreamweaver

Dreamweaver is a powerful website-building tool that allows the user to create visually without losing 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 in 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 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 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 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 actually a markup 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.

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 tendency for programming languages to be overly technical and difficult to understand. But it’s still a real language you can download and maybe even get to do things for you. This assumes 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 few external dependencies and was intended to run on any physical machine. It is used extensively in network architecture and 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.

Node.js

Node.js is a runtime environment that allows JavaScript to be used to create server-side applications.

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 problems. 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 used. It is a general-purpose language but is most associated with work in Artificial Intelligence (AI). There are several popular dialects.

Logo

Logo was one of the earliest teaching programming languages, probably the best known. The language 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, we have all the necessary resources to figure it out.

ML

ML was originally designed as a meta-programming language used to create other languages. But over time, it has become a general-purpose language, widely used in education, math, science, and even finance.

Modula-3

Although Modula-3 is not used much anymore, it is incredibly important in developing programming languages. There is still plenty of Modula-3 code 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 a huge number of legacy systems 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 (CMS) 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 many adults use the system because it’s fun and interesting.

Objective-C

Another version of C, this was 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

This is a useful tool for almost any programmer. As an interpreted language it does not need to be compiled, 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. 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 built 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 an incredibly powerful specialized programming language used primarily for describing graphics and page layouts.

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 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 mathematical and scientific computing tools and is frequently used by researchers.

R

R is a free and open-source programming language for statistical analysis and creating great-looking data visualizations.

RapidWeaver

RapidWeaver is a website-building tool. Written for the Mac, it has several advantages over online 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 a Model View Controller (MVC) architecture, a database abstraction layer, and a lot of tools to speed up the process of web application programming.

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 recent 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 an important language historically, as it was the first language to introduce the concepts which became the basis for OOP.

Smalltalk

Smalltalk is a hugely influential OOP 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

Synchronized Multimedia Integration Language (SMIL) 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 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 for a long time, it is still widely used by an 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 another popular hardware description language. 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 to describe virtual worlds. It created a lot of excitement, but never really took off.

WAP/WML

Wireless Application Protocol (WAP) and Wireless Markup Language (WML) were two early technologies used to deliver and render web pages on mobile devices. Technology has made them unnecessary, but they are an important part of the history of today’s smartphones.

XML

XML is a highly structured markup language designed to be both human and machine-readable.

What Are Some 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, you need ADO.NET. It allows you to access data in a database-independent way.

AI programming

Although not a specific library or tool, AI is a special way of coding computers that is becoming 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 superseded 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.

CakePHP

CakePHP is a rapid-development framework for PHP. It is easy to use, even for PHP novices. Also, 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 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 a wrinkle in that version 3 is incompatible with version 2.

CORBA

Common Object Request Broker Architecture (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 to create 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.

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 importantly, 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 most languages use it to transport data between the 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 application development is fast, and maintenance and upgrading are easy. See our Laravel hosting introduction.

Linked lists

Linked lists are nearly the most basic form of dynamic data storage. They are 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 (MPI) 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

This 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 online ones, using the Internet Protocol (IP) 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 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.

SSH

Secure Shell (SSH), is a protocol that allows users to communicate with remote computers in a secure way.

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 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 is critically important for people developing new frameworks.

YUI

The Yahoo! User Interface (YUI) library allows JavaScript programmers to more efficiently develop dynamic web pages. It is no longer being developed.

Zikula

Zikula is a PHP framework for creating dynamic and maintainable websites and applications.

What Are Programming Environments?

A lot of programming is hardware-specific.

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 application development all the way to kernel development. You can find out everything we know in our Linux Resource.

Mandriva Linux

Mandriva is a now-defunct Linux distribution. But there are several 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 CMS 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.

Xaraya

Xaraya is a CMS and a PHP framework. It is still used but development on it has slowed.

Related: Web Hosting Guide

What Should You Know About Programming History?

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 difference engine could only solve one kind of problem. 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 the 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 that included logical control structures like IF and LOOP.

This so-called “von Neumann architecture” allowed for the advent of programming as we know it, 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 have gotten any widespread use.

Timeline

1804

Jacquard loom cards.
Punch cards used by Jacquard loom

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, which continued to be used in some types of computing into the 1980s.

1842

Ada Lovelace develops an algorithm for Charles Babbage’s Analytical Engine. The algorithm computed Bernoulli numbers, making Ada the world’s first computer programmer.

1942

The Atanasoff-Berry Computer (ABC) was first tested. It was conceived in 1937 and then built 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 U.S. Government. It could only be programmed by presetting switches and rewiring the system.

1943–1944

Plankalkul, a language designed for engineering mathematical work, is developed by Konrad Zuse.

1945

John von Neumann, working at the Institute for Advanced Study, conceived of two ideas that changed the course of computer programming. The first concept was that simple hardware should be controlled by complex instructions — that the “program” should be changeable without altering 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.
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” — someone had to translate the program in binary (1s and 0s) by hand.

1951

Grace Murray Hopper, working for Remington Rand, begins the development of a compiler for Shortcode that automatically translates (“compiles”) code into binary.

1952

Autocode, an early compiler, is developed by Alick 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 Fortranis was headed up by John Backus, who later works on Algol and BNF. Fortran is still in use today, over six decades later.

Two people working with the ENIAC computer.
People working with the ENIAC computer

1957

The first Fortran compiler is released.

Remington Rand releases the Short Code compiler developed by Grace Hopper under the name MATH-MAGIC.

1958

Work begins on LISP, a language closely tied with the development of AI. 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 and LISP 2 are 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 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 several new programming languages, including Forth, Prolog, and Smalltalk. The development of Smalltalk leads to the codification of OOP concepts.

1972

Konrad Zuse’s manuscript describing Plankalkül is published 30 years after he developed it.

C, the language that will come to dominate operating system development, is created 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 2KB of RAM. This leaves 2KB available for a program to run on a typical 4KB microcomputer.

Bill Gates and Paul Allen begin selling their version of BASIC to MITS for use on their Altair microcomputer.

GL Steele and GJ Sussman develop LISP dialect Scheme.

The definitive reference manual for Pascal, the Pascal User Manual and Report, is published.

1976

Design System Language is released, which 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 Department of Defense uses Ada for all new “Mission Critical” applications. The language is named after the countess Ada, 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.

Apple releases Object Pascal for the Mac.

Turbo Prolog is released.

Actor and Eiffel, both object-oriented languages, are released.

1987

Perl is invented.

1988

The Common LISP Object System (CLOS Specification) 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 machine.
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 Fuzzy Expert System Tools (FEST) shell to model a 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 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.

APL coding keyboard.
The bizarre APL coding keyboard

2007

The SOA Manifesto Working Group publishes the SOA Manifesto, detailing a set of objectives and principles for SOA.

Clojure, a dialect of Lisp, is released.

2009

Google releases Go.

CoffeeScript is released, an expansion of JavaScript that adds concepts borrowed from Ruby and Python.

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.

The future of programming

It’s hard to say 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 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 the logic of computer systems and architecture is quickly becoming as important as basic business skills like sales, marketing, and design.

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 discusses different aspects of the languages and answers important questions such as, “How much money will I make programming Java for a living?”

Frequently Asked Questions About Programming Languages

What are the five main programming languages?

The top five programming languages are JavaScript, Python, Java, C/C++, and C#.

What is the No. 1 programming language?

Worldwide, Javascript is the most popular programming language.

What is the most widely used programming language?

JavaScript is the most common coding language around the world because most web browsers use it, and it’s one of the simplest languages to learn.

What are the seven high-level programming languages?

Python, JavaScript, Visual Basic, Delphi, Perl, PHP, and ECMAScript are among the most high-level programming languages.

Is C++ used anymore?

C++ is versatile and still in high demand amongst professionals, such as software developers, game and backend developers, and C++ analysts.