Thursday, May 7, 2009

A Brief, Incomplete, and Mostly Wrong History of Programming Languages

1801 - Joseph Marie Jacquard uses punch cards to instruct a loom to weave "hello, world" into a tapestry. Redditers of the time are not impressed due to the lack of tail call recursion, concurrency, or proper capitalization.

1842 - Ada Lovelace writes the first program. She is hampered in her efforts by the minor inconvenience that she doesn't have any actual computers to run her code. Enterprise architects will later relearn her techniques in order to program in UML.

1936 - Alan Turing invents every programming language that will ever be but is shanghaied by British Intelligence to be 007 before he can patent them.

1936 - Alonzo Church also invents every language that will ever be but does it better. His lambda calculus is ignored because it is insufficiently C-like. This criticism occurs in spite of the fact that C has not yet been invented.

1940s - Various "computers" are "programmed" using direct wiring and switches. Engineers do this in order to avoid the tabs vs spaces debate.

1957 - John Backus and IBM create FORTRAN. There's nothing funny about IBM or FORTRAN. It is a syntax error to write FORTRAN while not wearing a blue tie.

1958 - John McCarthy and Paul Graham invent LISP. Due to high costs caused by a post-war depletion of the strategic parentheses reserve LISP never becomes popular[1]. In spite of its lack of popularity, LISP (now "Lisp" or sometimes "Arc") remains an influential language in "key algorithmic techniques such as recursion and condescension"[2].

1959 - After losing a bet with L. Ron Hubbard, Grace Hopper and several other sadists invent the Capitalization Of Boilerplate Oriented Language (COBOL) . Years later, in a misguided and sexist retaliation against Adm. Hopper's COBOL work, Ruby conferences frequently feature misogynistic material.

1964 - John Kemeny and Thomas Kurtz create BASIC, an unstructured programming language for non-computer scientists.

1965 - Kemeny and Kurtz go to 1964.

1970 - Guy Steele and Gerald Sussman create Scheme. Their work leads to a series of "Lambda the Ultimate" papers culminating in "Lambda the Ultimate Kitchen Utensil." This paper becomes the basis for a long running, but ultimately unsuccessful run of late night infomercials. Lambdas are relegated to relative obscurity until Java makes them popular by not having them.

1970 - Niklaus Wirth creates Pascal, a procedural language. Critics immediately denounce Pascal because it uses "x := x + y" syntax instead of the more familiar C-like "x = x + y". This criticism happens in spite of the fact that C has not yet been invented.

1972 - Dennis Ritchie invents a powerful gun that shoots both forward and backward simultaneously. Not satisfied with the number of deaths and permanent maimings from that invention he invents C and Unix.

1972 - Alain Colmerauer designs the logic language Prolog. His goal is to create a language with the intelligence of a two year old. He proves he has reached his goal by showing a Prolog session that says "No." to every query.

1973 - Robin Milner creates ML, a language based on the M&M type theory. ML begets SML which has a formally specified semantics. When asked for a formal semantics of the formal semantics Milner's head explodes. Other well known languages in the ML family include OCaml, F#, and Visual Basic.

1980 - Alan Kay creates Smalltalk and invents the term "object oriented." When asked what that means he replies, "Smalltalk programs are just objects." When asked what objects are made of he replies, "objects." When asked again he says "look, it's all objects all the way down. Until you reach turtles."

1983 - In honor of Ada Lovelace's ability to create programs that never ran, Jean Ichbiah and the US Department of Defense create the Ada programming language. In spite of the lack of evidence that any significant Ada program is ever completed historians believe Ada to be a successful public works project that keeps several thousand roving defense contractors out of gangs.

1983 - Bjarne Stroustrup bolts everything he's ever heard of onto C to create C++. The resulting language is so complex that programs must be sent to the future to be compiled by the Skynet artificial intelligence. Build times suffer. Skynet's motives for performing the service remain unclear but spokespeople from the future say "there is nothing to be concerned about, baby," in an Austrian accented monotones. There is some speculation that Skynet is nothing more than a pretentious buffer overrun.

1986 - Brad Cox and Tom Love create Objective-C, announcing "this language has all the memory safety of C combined with all the blazing speed of Smalltalk." Modern historians suspect the two were dyslexic.

1987 - Larry Wall falls asleep and hits Larry Wall's forehead on the keyboard. Upon waking Larry Wall decides that the string of characters on Larry Wall's monitor isn't random but an example program in a programming language that God wants His prophet, Larry Wall, to design. Perl is born.

1990 - A committee formed by Simon Peyton-Jones, Paul Hudak, Philip Wadler, Ashton Kutcher, and People for the Ethical Treatment of Animals creates Haskell, a pure, non-strict, functional language. Haskell gets some resistance due to the complexity of using monads to control side effects. Wadler tries to appease critics by explaining that "a monad is a monoid in the category of endofunctors, what's the problem?"

1991 - Dutch programmer Guido van Rossum travels to Argentina for a mysterious operation. He returns with a large cranial scar, invents Python, is declared Dictator for Life by legions of followers, and announces to the world that "There Is Only One Way to Do It." Poland becomes nervous.

1995 - At a neighborhood Italian restaurant Rasmus Lerdorf realizes that his plate of spaghetti is an excellent model for understanding the World Wide Web and that web applications should mimic their medium. On the back of his napkin he designs Programmable Hyperlinked Pasta (PHP). PHP documentation remains on that napkin to this day.

1995 - Yukihiro "Mad Matz" Matsumoto creates Ruby to avert some vaguely unspecified apocalypse that will leave Australia a desert run by mohawked warriors and Tina Turner. The language is later renamed Ruby on Rails by its real inventor, David Heinemeier Hansson. [The bit about Matsumoto inventing a language called Ruby never happened and better be removed in the next revision of this article - DHH].

1995 - Brendan Eich reads up on every mistake ever made in designing a programming language, invents a few more, and creates LiveScript. Later, in an effort to cash in on the popularity of Java the language is renamed JavaScript. Later still, in an effort to cash in on the popularity of skin diseases the language is renamed ECMAScript.

1996 - James Gosling invents Java. Java is a relatively verbose, garbage collected, class based, statically typed, single dispatch, object oriented language with single implementation inheritance and multiple interface inheritance. Sun loudly heralds Java's novelty.

2001 - Anders Hejlsberg invents C#. C# is a relatively verbose, garbage collected, class based, statically typed, single dispatch, object oriented language with single implementation inheritance and multiple interface inheritance. Microsoft loudly heralds C#'s novelty.

2003 - A drunken Martin Odersky sees a Reese's Peanut Butter Cup ad featuring somebody's peanut butter getting on somebody else's chocolate and has an idea. He creates Scala, a language that unifies constructs from both object oriented and functional languages. This pisses off both groups and each promptly declares jihad.

Footnotes

  1. Fortunately for computer science the supply of curly braces and angle brackets remains high.
  2. Catch as catch can - Verity Stob

Edits

  • 5/8/09 added BASIC, 1964
  • 5/8/09 Moved curly brace and angle bracket comment to footnotes
  • 5/8/09 corrected several punctuation and typographical errors
  • 5/8/09 removed bit about Odersky in hiding
  • 5/8/09 added Objective-C, 1986
  • 5/8/09 added Church and Turing
  • 4/9/10 added Ada (1983) and PHP(1995)

708 comments:

«Oldest   ‹Older   601 – 708 of 708
Mason Wheeler said...

It's actually a direct knockoff of Delphi, rewritten to look like Java. (It's not so obvious in more modern versions, but if you look at .NET 1.0, it's pretty clear what it is you're looking at, even if you didn't know what Anders Hejlsberg was doing before he went to work for Microsoft.)


It's what Microsoft always does: realize their product is no good, look around, see who's producing something that actually works really well, and blatantly rip it off to produce their own version.

greyfade said...

Templates are not a C++ defect. They're a happy accident, and a powerful metaprogramming language, albeit with a few warts and an ugly syntax. Generics are a joke.

John Kennard said...

1976-present: John Chambers and a Dark Cluster originally from Bell Laboratories develop S, a vector-based language incorporating every statistical technique they could find or make up, pasting to it every graphic tool they could think of, and implementing the result in true linear-regressive fashion as R, with expectable tribe of independent learning curves, each user of which can now spend many happy hours learning how to do what she wants with one brief and simple call, only then to stumble into the capping of the classic C deadfall of misuse of assignment for comparison operator ("=" for "==") by the latter's returning a logical vector rather than single logical value. Some grounds exist for believing that S/R is a psychosociological stress experiment. (But the interactively-rotatable 3-D scatterplots are lovely.) (Cf. "cheese".)

ferruccio said...

>> It is a syntax error to write FORTRAN while not wearing a blue tie.



That is one of the funniest lines ever!

Emily powell said...

Am Emily Powell from Canada I never believed in spell casters until my life fell apart when my lover of 4 years decided to call it quit. I was so devastated that i had an accident that left me bedridden. After 7 months of emotional pain and languish, a friend of mine introduced me to a certain spell caster, this was after I have been scammed by various fake spell caster. I was introduced to DR ONIHA ( A Spell Caster). In less than 12 hrs i saw wonders, my Lover came back to me and my life got back just like a completed puzzle... am so happy.. Dr ONIHA have all kinds of spells from pregnancy to love,from employment to visa lottery winning. He has spell to stop divorce,spell to make someone look attractive and others. here's his contact for serious minded people only, it might be of help....onihaspiritualtemple@yahoo.com. wow Dr.ONIHA...thanks am so grateful as you saved my life.

Ralph Johnson said...

Objective-C and C++ were invented about the same time. Both were attempts to make C object-oriented, C++ was inspired by Simula, Objective-C by Smalltalk. I remember seeing them at OOPSLA'86 and thinking that Objective-C was better done and would probably win out in the long run. So much for my ability to predict the future.

Lennart Aspenryd said...

IF you dont can see the humor,
Its to serios.

John Kennard said...

Do you ever get the impression that we've made computers too easy to use?

Chris Rutherford said...

Meanwhile on the web, JavaScript grows up and takes over the world.

rubyist_madafaka said...

as a ruby programmer... i find this offensive

shayneo said...

Javascript never grew up, it just realised that as a Lanister, it could do whatever the f*** it wanted because it can, and wisdom be damned. Don't ask it about its parents.

spacemonkey82 said...

js is popular because of web. and on the web currently we only have one language that is supported in a cross browser way.


so its popularity says nothing about its design. in fact from design perspective, js is one of the weakest languages out there.

spacemonkey82 said...

fun fact - brenden eich designed js in a weekend totally crunked out

John D Salt said...

1967 -- Ole-Johann Dahl and Kristen Nygaard invent Simula, the first object-oriented language. However, as they do so in Oslo, nobody notices, even when Alan Kay invents the term "object-oriented" 13 years later.

1968 -- Adriaan van Wijngaarden invents the idea of specifying a language before implementing it. He presents the Algol-68 report. However, as he does so in Munich, nobody notices.

Jenny_Axe said...

This was also the time and place where lint was invented.

rubyist_hater said...

I'm so sorry, poor rubyist.

ynothere_ynotnow said...

Why you changed the part about Martin Odersky, it was funnier before (and maybe closer to reality).

ynothere_ynotnow said...

We are eagerly awaiting for Kotlin and Ceylon

Philip Machanick said...

Stop, you're getting me in stitches.

Philip Machanick said...

If he understood pizza, it would have been stairway to leaven

Philip Machanick said...

Nothing is heavier than C++.

Jenny_Axe said...

I'm sorry; I know I have a warped sense of humour...

WyattEpp said...

2014 - Apple engineers invent Swift. Swift is a relatively verbose, garbage
collected, class based, statically typed, single dispatch, object
oriented language with single implementation inheritance and multiple
interface inheritance. Apple loudly heralds Swift's novelty.

Andrés F. said...

You need to update the list with an entry for Apple's Swift. It must end with "Apple loudly heralds Swift's novelty" :D

Rubén Martínez said...

1980 - Alan Kay creates Smalltalk. [...] When asked again he says "look, it's all objects all the way
down. Until you reach turtles."
Does that mean that Smalltalk is made in Logo (1967)?

Bob Jarvis said...

If you are offended because someone said something humorous about a programming language that you use I suspect that you may be over-invested in this particular language and could, perhaps, benefit from looking at this from a different point of view. Repeat after me: it's just a programming language. It's not life. It's not truth. Using this doesn't make me a better person. Someone saying something less-than-perfectly complementary about it doesn't lessen me as a person. It's just a programming language. Really - IT'S JUST A F*CKING PROGRAMMING LANGUAGE!!!

DanK said...

JavaScript: this is not what it looks like this is.

blech said...

Objective C just objectified C in a way that only Apple can.

WyattEpp said...

_Automatic_ Reference Counting is garbage collection (cf. Jones and Lins, 1996).

Josh S said...

It's deeply flawed garbage collection.

Josh S said...

Or, I could add, pointers that can be changed from more than one thread.

WyattEpp said...

As you note, if it doesn't have a way to deal with cycles, the world becomes a very dire place indeed!

But there are places where it's worthwhile to make the trade-off of overall performance for simplicity and (generally) better determinism under memory pressure. It's a good fit for things that don't allocate much or often (like GUI applications), but tends to strongly constrain language design in terms of features you can support with reasonable performance. (Notice how Swift doesn't have exceptions? Yep.)

Josh S said...

By the way, not that I expect anyone to have used it but there's another chocolate-in-my-peanut-butter functional language: Curry is the functional logic language - like Haskell with a search (some versions let you choose what sort of search) that guesses values and backtracks...

Johndo said...

APL?

Wyatt Epp said...

1957 - Kenneth Iverson, a mathematician who had never heard of
programming languages, pioneered the "write-only language" by
independently inventing programming languages with a programming
language called "A Programming Language". IBM was finally able to forge
a type-ball capable of rendering APL in 1964, and inscrutable one-liners haven't been the same since.

Divyansh Prakash said...

Great read!

Jared Hoag said...

You, sir, are a comedic genius. I can't get enough of this.

Bob Jarvis said...

Ok, yeah, sure, hey, that's great - but let's try an IMPORTANT question - what PROGRAMMING LANGUAGE does Dr. Oniha use? Huh? Can't answer that, can ya? Can ya? Huh? Can ya? Huh? Huh?

Bob Jarvis said...

All the effin' time. I saw a picture today of Peter Sellers dressed up as his Group Captain Mandrake character from Dr. Strangelove, sitting at the console of an IBM 7090, and I thought to myself, "Yeah, man, those were the days - computers with the number-crunching capacity of an abacus that filled an entire BUILDING - sucking down enough electricity to power a medium-sized town through a cold winter's night - blinky lights - pushy buttons - twiddly knobs...ahhhh...those were The Days!". Makes you just want to take your iPhone 8, toss it out a 72nd floor window, and scream, "I'm mad as hell...and I'm not going to take it anymore!!!!". But wait, I just got a text so...I'll get back to you...

Bob Jarvis said...

No! No! The SUIT must be blue (and pin-striped)! The TIE must be RED! RED TIE!! RED TIE!!! RED TIE!!!! BWA-HA-HA-HA-HA-HA-HA-HA-HA-HA-HA-HA-HA-HA!!!!!


Ia! Ia! Cthulhu!!! Cthulhu fhtagn!!!!!!!!


(Well - somebody had to say it... :-)

Bob Jarvis said...

Ah, PL/I. Here's a go at it: "1966: IBM creates PL/I, their bastard stepchild...I mean, "delightful combination" of COBOL, Algol, Fortran, Swahili, and treacle. Sadly, PL/I never gains popularity, first because it causes critical depletion of the strategic keyword reserve, and second because no one can figure out how to pronounce it. Is it 'Pee Ell One', or 'Pee Ell lowercase ell', or 'Pee Ell Eye', or what..? And in a shocking display of bloody-minded corporate stubbornness, IBM continues to support PL/I even in 2014..."

Giampaolo Trapasso said...

Waiting for Swift ;)

Jason Ball said...

This is pure epic win lol

Jacob Reed said...

Now You can advertise your
products totally free

Free
Advertising

contradictioned said...

Yay, there are too few humorous things in computer science land. But you gave your ++ to this :)

jmrm01 said...

Given the subject, maybe you have a warped and woofed sense of humor.

Jessica Williams said...

What else can i say or do than to give thanks to Doctor Atete the spell
caster God used to reunite my marriage. Each day of my life i ask God to
bless Doctor Atete for he has make my life complete by using his good
luck spell to bring back my lovely husband to me and for this reason i
made a vow to my self that i will testify on the internet just to let
the world know that Doctor Atete is a God on Earth. My husband and i had
a fight for two days which led to our breakup and since then he left
the house living my son and i and i didn't seen or heard any thing about
him but one day i came across a testimony on the internet on how Doctor
atete use his Good luck spell to help people so i contact him and
explained to him via email and here i am so happy because he helped me
and my husband came back to me. Do you need help? contact Doctor Atete
today via email: doctoratetespelltemple@hotmail.com or via website http://drzazazworldofpowerfulspellwebscom.webs.com

Jenny_Axe said...

Maybe we should stop shuttling jokes back and forth...

bhjhui said...

njghuighughhjhjhgu

bhjhui said...

fghfdbhghbgfhbujgfbufghgjdnbjf

bhjhui said...

ddsfgdgbvfg

bhjhui said...

ffghff

bhjhui said...

fffffffffffffffffffffffffffff

bhjhui said...

fffffffffffffffffff

bhjhui said...

fffffffff

bhjhui said...

fffff

bhjhui said...

fffffffffff

bhjhui said...

ffffffffffqa`

bhjhui said...

fffff

bhjhui said...

r$GFDSA`C

bhjhui said...

sz`xZSVC

vvq said...

vv

vvq said...

./mjnhgvfsza\'[;-0u7h

vvq said...

ygtf5rq

vvq said...

zFR

vvq said...

FF

vvq said...

FFF

vvq said...

FF

vvq said...

FFF

vvq said...

FFFFFFFF

vvq said...

POOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOP

vvq said...

RTR

vvq said...

RRR

vvq said...

RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR

vvq said...

RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR

vvq said...

RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR

vvq said...

RRRRRRRRRRRRRRRRRRRR

vvq said...

RRRRRRRRRRRRRRRRRRRRR

vvq said...

RRRRRRRRRRRRRRRR

vvq said...

RRRRRRRRRRRRRR

vvq said...

RRRRRRRRRRRRRRRR

vvq said...

RRRRRRRRRRRRRR

vvq said...

RRRRRRRRRRRRRRR

vvq said...

RRRRRRRRRRRRRR

vvq said...

RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR

vvq said...

RRRRRRRRRRRRRR

vvq said...

RRRRRRR

vvq said...

RRRRRRRRRRRRRRRRRRRR

vvq said...

55

vvq said...

55RT5

vvq said...

TT

thoughtbox said...

Nice!

You're missing the uber of all into-languages to Ai and list processing: POP-11 :-)

Adam Fraser-Kruck said...

You forgot J++ and it's role in creating C#. Great work :)

sachin jain said...

http://www.phdindentistry.com


PHD
DENTISTRY ADMISSION IN INDIA


PHD Dentistry Admission in
India, Get admission in Phd in Dentistry in Top Universities in India, Phd
Dentistry admission in Jodhpur, Phd Dentistry admission in Jaipur, Phd
Dentistry admission in Delhi NCR Noida, Phd Dentistry admission in JNU, Phd
Dentistry admission in MVGU, Get details of admission procedure, fee
structure, exam patterns, eligibility etc.

ahamcell said...

Simply great.

Mary Tharpe said...

very interesting and useful post about programing languages.
download crack file

Annette Cooper said...

thanks for sharing a great information about history of programming languages.
pc software for windows

Jackal said...

Algol-60 and Algol-68 need to be in there somewhere after FORTRAN and before Schema. The former is the mother of all structured languages.

rio said...

I think the folks at SkyNet is calling foul...history has been changed by hackers in China which in the future is called Zone 9.

Reid Spencer said...

And to think that BANKS use this stuff to keep our money safe!

Hans Henrik Bergan said...

add Go!

Alessandro Ogheri said...

what about "APL" ??
probably one of the languages that ispired Perl ...at least for the symbols!

Alessandro Ogheri said...

1983 first appeared in 1996

Abhishek Srivastava said...

OMG.... is this good or what!

Jesica Paul said...

Informative post on Android mobile application
development!!! As the usage of iPhones keep on increasing, there is massive
demand for best performing Apps and Games for iOS platform. IOS
Training in Chennai

Ganesh said...

SAP stands for Systems Applications and Products in Data Processing. SAP is one of the leading ERP software in the world. SAP has been widely used by large to very large organizations and also by SMEs to manage their business processes. SAP Training Classes in Chennai
The modules in SAP Training are highly integrated in real-time, in the sense that information is shared across, and between the modules. Visit Us, SAP Training Institute in Chennai

Amirtha said...

well said

AZ_FJ said...

but well after 1984...

«Oldest ‹Older   601 – 708 of 708   Newer› Newest»