OK -- a bit of an undefined question (is the pattern of plugs in an Eniac plugboard a language ??) but contenders include:

  • Konrad Zuse's PlanKalkül (1940s) - never implemented (generally accepted as the first).
  • Whatever Ada Lovelace (1840s) programmed in (not Ada) -- if she is the first programmer, as everyone says, she must have used the first programming language, no? Again probably never implemented - but did Babbage have anything that could be called a language?
  • Turing's description of his Turing machine (1936 paper). In the paper he actually writes programs and simulates their execution mathematically - that makes it as good as (and earlier than) PlanKalkül in my book.
  • Autocode for the Machester Mark 1 computer (1952) -- compiled, high level, beats Fortan to the punch (?). Mr Turing again (!).

  • Fortran (Early 1950's) - beats out Lisp by a couple of years and undoubtedly passes the sniff test. But was it earlier than Mark 1 autocode ??

Tnx - Alanl


I would say that the first programming language actually used was the machine language of the first stored program computer, which I believe was Baby:

+2  A: 

I think we need to agree on a definition of "programming language" to answer this question in any useful way. Is directly manipulating machine code a programming language?

Chris Upchurch
I believe it is. It's not very user-friendly, but it is a language nonetheless, because in virtually every case a machine language is Turing-complete.
+12  A: 

The PBS series Connections made the argument that the holes punched in tiles to control the patterns created on looms (circa 1700s??) were the first programming "language".

These were followed by player piano scrolls: Codes, on paper, which are read by, and control the operation of a machine. That's a programming language, isn't it?

James Curran
I remember Connections (that was a great series). Though technically it was a BBC series that just got broadcast in the US by PBS.
Chris Upchurch
That is effectively a programming language, just not in the modern sense, however the term computer has changed over the last 20-30 years, so +1 for you.
Whether or not those qualify as programming languages depends on your definition. For mine, it's that the language is Turing-complete. I do not believe either qualify for that definition.
For there to be a category of "Turing Complete" programming languages, there must also be a category of "Not Turing Complete" programming languages, otherwise there would be no point to having "Turing Complete" as a category distinction, thus it can still be a programming language even if it is not turing complete.
@Breton: not so. One could merely define "programming language" as "notation for encoding computations to be performed by a Turing-equivalent system".
Derrick Turk
@Derrick-Turk you could, but is that the commonly accepted definition of programming language? Douglas Hofstadter in Godel Escher Bach proposes a programming language, Bloop, which is not turing complete, yet nevertheless is undeniably a programming language.
@Breton: to be honest, I don't think there is a commonly accepted (formal) definition of "programming language". I agree with you in principle: certainly languages for, say, total functional programming, which by design ensure termination and are thus not Turing-complete, count as "programming languages". I was just pointing out that one could consistently hold a definition based on Turing-completeness.
Derrick Turk
@Derrick-Turk I guess I see your point, but it seems a little nonsensical. If you define "Programming Language" as a computer notation specifying a computation in a domain which is turing complete, then saying "Turing Complete programming language" is a bit like saying, for example "Mammalian Human"- That is, the modifier is superfluous and part of the definition of the subject. It is strictly not against the rules of logic to have such a statement, but it implies the existence of non-mammalian humans, by demonstrating an apparent need for a differentiating modifier.
@Breton: Your analogy is not analogous, unless you hold that some people actually use a definition of "human" which includes "non-mammalian humans". We have a million or two years of agreement on what constitutes a "human". A formal, unanimous agreement on the definition of "programming language" is much more difficult. Hence the need for a little redundancy and disambiguation---to settle matters of definition before getting to the meat of a discussion.
Derrick Turk
@Derrick-Turkk yes exactly, I do not think we are in disagreement now. I picked the example of humans so it would stand out how redundant "mammalian human" is. When we hear "Turing Complete Programming Language", if it was a foregone conclusion that "Programming Language" included "Turing Complete". there would just as much point in adding "turing complete" as a prefix as there would be to adding "mammalian" to "human". Since this is the case, then "Programming Language" must then, as you have already concluded, NOT imply Turing Complete.
+4  A: 

Since Ada Lovelace is widely regarded as the first programmer, I'd investigate what she called the set of symbols she was using.

Update: You can read the notation that Lovelace used in her Notes on Sketch of The Analytical Engine Invented by Charles Babbage By L. F. MENABREA. Lovelace was the translator, but her notes describing the programming of the Analytical Engine ended up being about four times longer than the original publication.

Bill the Lizard
+2  A: 

Konrad Zuse's PlanKalkül (1940s) - never implemented

There was actually an implementation of the language published by Rojas et al. somewhere around the year 2000.

Konrad Rudolph
Konrad Zuse build the first computers and Plankalkül at least has a high chance to be the first programming language.
+9  A: 

DNA -- or does it have to involve silicon computers? ;-)

Juha Pohjalainen
<Laugh> I hope some day to meet the coder who wrote the first DNA app.
Onorio Catenacci
i guess that's kind of a religious question. is DNA and its code really a programming language? and where is the programmer?
Johannes Schaub - litb
Lets keep religion out of this. It is a philisophical question. I highly reccomend Godel Escher Bach, by Douglas Hofstadter if you want an in depth discussion about DNA as a programming language.

The language the analytical engine would have used was its own machine code, entered via punch cards indicating the operation to be performed and the columns (effectively registers) to perform it to. See these notes for some details.


Programming, at least in the declarative sense, comes down to combinations of sequence, alternation, and repetition. One might consider recipe authors as programmers, and therefore very early ones. Think about a recipe: it contains sequence (slice this, then chop that, then heat so and so...), alternation (if you want it moist then bake for 40 minutes, else if you want it "cakey" bake for 55 minutes), and repetition (while not stiff kneed the dough, repeat stirring until the batter is smooth). Recipes go back thousands of years.

They even support currying!
John the Statistician
+3  A: 

DNA -- or does it have to involve silicon computers? ;-)

Well, if you go down that road then the correct answer has to be RNA which existed before DNA. But then, do we have a Blind Programmer? ;-)

Konrad Rudolph
+1  A: 

Assuming a definition of "programming language" as "a textual notation used to describe/control the intended behavior of a digital computer", I think there's only one possible answer: raw (numerical) machine code.

Many of the other answers (e.g. recipes for cooking) are clever, but aren't about programming per se, but about description/control in a different context or more general sense.

+1  A: 

In the beginning there was Ada Lovelace , Then Bill said 'Let there be C#' And there was light !!

"I was blind, but now I C" :P