James Iry
james-iry.blogspot.com · Personal blog · on HN since 2008
James Iry writes about programming languages, type systems, and software estimation, including a well-known satirical language history.
What HN saysCommenters call his Brief, Incomplete, and Mostly Wrong History of Programming Languages the best article on the subject, and quote it often.
143HN people shared it
68linked it in comments
89stories submitted
2.0Kstory points
3 months agolast shared
2008people per year2026
Most-shared posts
- 1A Brief, Incomplete, and Mostly Wrong History of Programming Languages84 people · 1.6K points · first shared 2009 · 45 comments on HN
- 2A Brief, Incomplete, and Mostly Wrong History of Programming Languages8 people · 11 points · first shared 2014 · 1 comments on HN
- 3Types (and Languages) à la Chart4 people · 30 points · first shared 2010 · 2 comments on HN
- 4Type Errors as Warnings4 people · 5 points · first shared 2012 · discussion on HN
- 5Why C Is Not Assembly3 people · 93 points · first shared 2010 · 54 comments on HN
- 6Erlang Style Actors Are All About Locking (2009)3 people · 3 points · first shared 2011 · discussion on HN
- 7How To Estimate Software2 people · 13 points · first shared 2010 · discussion on HN
- 8Why Eager Languages Don't Have Products and Lazy Languages Don't Have Sums2 people · 8 points · first shared 2011 · discussion on HN
- 9Type Systems: Bottom Type2 people · 8 points · first shared 2009 · discussion on HN
- 10Too Dense?2 people · 5 points · first shared 2012 · discussion on HN
- 11A Brief, Incomplete, and Mostly Wrong History of Programming Languages2 people · 2 points · first shared 2013 · 2 comments on HN
- 12A Brief, Incomplete, and Mostly Wrong History of Programming Languages2 people · 1 points · first shared 2013 · discussion on HN
- 13Monads are elephants part 12 people · first shared 2011
- 14A Brief, Incomplete, and Mostly Wrong History of Programming Languages (2009)1 people · 37 points · first shared 2014 · 13 comments on HN
- 15C Is Not Assembly1 people · 31 points · first shared 2010 · 14 comments on HN
What HN people wrote when they linked it
Bayart · 2021-11-05
If you not familiar with Guido van Rossum :
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.[0]
[0]: http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wron…
hhas01 · 2020-01-03
I make languages and I LOLed. Self-awareness, good knowledge of CS history, and a huge heaping helping of humility are all key prerequisites to inventing a language that is even marginally less appalling than all of its predecessors. “You will FAIL” is about the best advice a nascent language designer can receive, and they should embrace it.
Also Obligatory:
http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wron…
cesarb · 2018-05-23
> It is not weird, in fact it goes all the way back to Algol, a decade before C was invented.
As the classic "A Brief, Incomplete, and Mostly Wrong History of Programming Languages" (https://james-iry.blogspot.com.br/2009/05/brief-incomplete-and-mostly-… would say:
This criticism happens in spite of the fact that C has not yet been invented.
Avshalom · 2018-04-26
A Brief, Incomplete, and Mostly Wrong History of Programming Languages
Remains the best and most accurate article on programming languages available.
https://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wro…
slavak · 2018-04-18
> 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.
From the brilliant "A Brief, Incomplete, and Mostly Wrong History of Programming Languages": http://james-iry.blogspot.co.il/2009/05/brief-incomplete-and-mostly-wr… .
owenversteeg · 2015-12-30
I love how 6 years later, "A Brief, Incomplete, and Mostly Wrong History of Programming Languages" is still being submitted 6 times a year, getting 1243 points, and is the top post of 2015. Just goes to show how amazingly hilarious it is. I think anyone here should reread it, even if you already have several times.
http://james-iry.blogspot.ca/2009/05/brief-incomplete-and-mostly-wrong…
meric · 2015-08-24
"The Internet was built by people like me." - Eric S. Raymond
I guess that's kind of like if Tim Berners-Lee said:
"I built the internet."
Maybe this author can fit some Eric S. Raymond's content into his blog post:
http://james-iry.blogspot.com.au/2009/05/brief-incomplete-and-mostly-w…
If Eric S. Raymond doesn't spend wastefully, he should still have tens of millions:
http://www.zdnet.com/article/eric-raymond-how-ill-spend-my-millions/
He's a great software engineer, but I didn't like the tone of this campaign for monthly donations either.
steveklabnik · 2014-07-10
I love various Lisps, but I've always enjoyed http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wron… :
> 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].
Uchikoma · 2014-02-17
I refer you to the classic "
Erlang Style Actors Are All About Locking "
http://james-iry.blogspot.de/2009/04/erlang-style-actors-are-all-about…
pramalin · 2013-12-20
Have you read "Monads are Elephants"?
That helped me a great deal.
http://james-iry.blogspot.com/2007/09/monads-are-elephants-part-1.html
DanielRibeiro · 2013-10-07
This is an interesting post. I worry though that Odersky's point can make people think that there are only two kinds of type: static, or dynamic.
James Iry did an amazing overview of the nuances of various kinds of type systems on his Types à la Chart.
[1] http://james-iry.blogspot.com/2010/05/types-la-chart.html
dchest · 2012-06-26
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."
http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wron…
Once you're optimizing the runtime performance of Objective-C code, you're suddenly writing in C.
The "close to hardware" thing is an illusion created by the "-C" part.
skrebbel · 2012-01-18
It's lovely how you confirm the common prejudice:
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]"
(from http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wron…
msarnoff · 2011-07-28
Still my favorite: "A Brief, Incomplete, and Mostly Wrong History of Programming Languages"
http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wron…
gtani · 2011-04-06
For more correctness, scala has had interop hiccups
http://lampsvn.epfl.ch/trac/scala/ticket/2991
http://stackoverflow.com/questions/3313929/how-do-i-disambiguate-in-sc…
(and does Orig. Commenter have examples of clojure hiccups? Interop is very important to both (and F#). Maybe a more meaningful compare/contrast is haskell, scala and F# (which I can't do)
http://matt.might.net/articles/best-programming-languages/
---------------
http://james-iry.blogspot.com/2010/05/types-la-chart.html
(his league table of "Most Powerful Type Systems": Agda, epigram, scala, haskell
louthy · 2023-08-18
> none of it matters if you hope more people use and understand functional programming
On a personal level, I couldn't care less tbh. If people want to learn it, that's great, if not that's also fine. There's plenty of room for procedural, OOP, and FP to exist side-by-side. If one domain feels complex to you, don't do it (or put extra effort into learning it), but I'd argue that OOP is much more complicated - it's just that most devs tend to grow up with OOP and so the context switch to FP is more difficult.
> you overestimate how much people actually understand oop vs just winging it, in particular, inheritance and polymorphism
Forget 'polymorphism' for a second and think about 'object'. An object in the real world doesn't have behaviours attached to it. An object in the real world doesn't mutate, in-place, in a discreet portion of time. Objects in the real world have a immutable past, a present state, and multiple possible futures based on interactions with external events. Those interactions is literally how we define time. OOP (as it's commonly practiced) does away with time and has myriad complexities because of it.
The trivial OOP explanation "an object is like a thing in the real world. A rabbit is an object, a triangle is an object, etc." combined with the unbelievable complexity artefacts (in place mutation, hidden state, attached behaviours, etc.) - is much, much worse than the upfront cost of learning about: pure functions, monadic composition, etc.…
spider-mario · 2025-12-04
Obligatory: https://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wro…
> 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.
falcor84 · 2025-12-01
Absolutely agreed, and this gives me another opportunity to post the wonderful "Brief, Incomplete, and Mostly Wrong History of Programming Languages"
https://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wro…
Symmetry · 2025-06-20
The YouTube videos will never stop.
But I think the author missed a trick by not including that time one of our Spots got shot.
https://www.cbsnews.com/boston/news/boston-dynamics-robot-dog-shooting…
EDIT: And a link to the programming languages inspiration for this post if you haven't read it already.
https://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wro…
Hackbraten · 2024-12-06
> I don't think I mentioned a monoid of endofunctors or flatMap a single time in the post
I think GP was just quoting a meme there. See also [0], where the meme is said [1] to originate.
[0]: https://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wro…
[1]: https://news.ycombinator.com/item?id=33438586
samatman · 2024-07-05
I've long been partial to this formulation:
> 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.
Some of us learn to lean to the side right before pulling the trigger...
http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wron…
lenerdenator · 2024-04-11
Reminds me of the Haskell entry on the Brief, Incomplete, and Mostly Wrong History of Programming Languages [0].
"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?""
Math people: "What if we made software code more like mathematical proofs?"
Idk. What if you had dated before age 38?
[0] http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wron…
vkou · 2024-03-03
> 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.
http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wron…
ackfoobar · 2024-02-02
> They just released a proposal that effectively side-steps the problem of checked-exceptions-in-lambdas.
The main problem of checked exception in lambdas is that Java's type system does not allow expressing statements like "`forEach` throws whatever the lambda throws". Here are two links:
http://james-iry.blogspot.com/2012/02/checked-exceptions-might-have-th…
https://blog.jooq.org/javas-checked-exceptions-are-just-weird-union-ty…
The proposed syntax puts the exceptions on equal footing with the happy path. Not a bad idea, but irrelevant to the main problem.
AndrewOMartin · 2023-10-09
1964 - John Kemeny and Thomas Kurtz create BASIC, an unstructured programming language for non-computer scientists.
1974 - Kemeny and Kurtz go to 1964.
https://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wro…
tantalor · 2022-08-15
Sorry I think that joke went over your head.
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?"
http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wron…
omoikane · 2022-06-06
This is also the motto I learned. This would explain Python's motto of "There Is Only One Way to Do It".
(It's a joke due from this page: http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wron… actual motto is "there should be one -- and preferably only one -- obvious way to do it")
pjc50 · 2022-03-23
Yes, that's the joke, it's from http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wron… - but the joke is that advanced users of any concept have a tendency to explain it in terms of concepts that the audience also doesn't understand.
jasomill · 2021-08-25
“A monad is a monoid in the category of endofunctors, what's the problem?”
http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wron…
hyperpallium2 · 2021-08-12
Without {}, it's insufficiently C-like http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wron…