
A Brief, Incomplete, and Mostly Wrong History of Programming Languages (2009) - radicality
http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wrong.html
======
stevetrewick
2009, but always well worth a re-read, and if it's your first time, congrats
on being one of today's lucky 10,000 [0]

[0] [https://xkcd.com/1053/](https://xkcd.com/1053/)

~~~
TheLarch
Unsure why Diet Coke is always specified. My son and his friends tried grape
soda. Inside. It worked just fine.

~~~
zck
I've heard (but not tried) that Diet Coke is used because not having sugar,
it's less sticky when it dries.

------
bpyne
Still love "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....."

(On another note, James seems to have written a post back in March of this
year. It's been such a long time since he wrote anything I wondered if he ever
would again.)

Now back to writing an application in PL/SQL....

------
ar7hur
"Lambdas are relegated to relative obscurity until Java makes them popular by
not having them." hahaha

------
georgewsinger
This article is the origin of the infamous joke about Haskell:

> 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?" __

~~~
radicality
Hehe, that's actually how I ended up on this article, trying to understand
what is meant by that statement in more detail. I found that apparently the
original is from here [0]. :)

[0] [https://books.google.com/books?id=gfI-
BAAAQBAJ&lpg=PA138&dq=...](https://books.google.com/books?id=gfI-
BAAAQBAJ&lpg=PA138&dq=All%20told%2C%20a%20monad%20in%20X%20is%20just%20a%20monoid&pg=PA138#v=onepage&q=All%20told,%20a%20monad%20in%20X%20is%20just%20a%20monoid&f=false)

------
dang
[https://hn.algolia.com/?query=A%20Brief,%20Incomplete,%20and...](https://hn.algolia.com/?query=A%20Brief,%20Incomplete,%20and%20Mostly%20Wrong%20History%20of%20Programming%20Languages&sort=byDate&dateRange=all&type=story&storyText=false&prefix&page=0)

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

Or to not be polite to the compiler.

[https://en.wikipedia.org/wiki/INTERCAL](https://en.wikipedia.org/wiki/INTERCAL)

------
acheron
I can tell it's been a few years since I've read this, because:

 _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._

is both more and less funny than it used to be now that I have a two year old.

------
TheLarch
"Bjarne Stroustrup bolts everything he's ever heard of onto C to create C++"
was validating. A friend who has worked on desktop software in C for 30 years
has it figured out IMO: he uses the C++ compiler, but always defines no-op
constructors. Instead he defines an init() method on each class, which he
calls explicitly. Essentially his only use for the C++ compiler is to sort out
inheritance and build a correct function dispatch table.

~~~
eropple
This gives up the significant benefits of RAII, which are made significantly
safer and more useful through the use of references and std::unique_ptr. By
using initialization methods rather than constructor methods, you create a
situation where your destructors don't necessarily make _sense_ and can't be
relied on to be dealing with initialized objects (thus increasing the amount
of boilerplate code that can fail) or you don't use destructors at all (at
which point you regress to the "boy, I hope I scope-guarded correctly and
cleaned up along every path of execution!" state of C).

Writing C++ without using C++'s idioms is usually, if not _almost always_ ,
creating more technical and business risk for the writer and the consumer than
using C++'s idioms in the first place. (That some of these idioms are
conceptually very difficult is a very valid criticism of C++, and one that
Rust in particular seems well-positioned to be better about, but I'd take the
bear traps of C++ over the land mines of C almost any day.)

------
kazinator
Regarding "recursion and condescension", that's just an unfortunate back-
formation from a misunderstood pun.

In a lecture once upon a time, some famous Lisp hacker joked that, if you
will, to recurse over tree structure is to "cons descend". A blue-tied Fortran
programmer from IBM in the audience didn't get the joke, and walked away with
the idea that Lisp programmers are arrogant jerks who even program via
condescension.

------
DyslexicAtheist
oh yes James Iry :) must be this time of year again:
[https://thequickword.wordpress.com/2014/02/16/james-irys-
his...](https://thequickword.wordpress.com/2014/02/16/james-irys-history-of-
programming-languages-illustrated-with-pictures-and-large-fonts/)

------
VeejayRampay
Absolutely hilarious mix of trolling and absurd by someone that obviously
knows what he's talking about. Well played.

------
eximius
Hmmm, I wonder what would be said about Nim, Rust, Racket, Go.... I'm drawing
a blank, but those are some recent ones that come to mind.

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

>1965 - Kemeny and Kurtz go to 1964.

Brilliant

------
tambourine_man
Curious to read Rust and Swift entries.

------
jiyinyiyong
Every time I read it, it's as interesting as the first time!

------
snaky
APL never mentioned.

------
HoopleHead
I've probably read unfunnier articles in my time. But I'm having a hard time
remembering when

------
venomsnake
It needs more additions.

After all the only way Haskell could be conceived is after a very long LSD
(needed to grok monads) fueled BSDM (the type system) session.

Edit: Missed Haskell in the article. But I guess you could say the upper for
different reasons about angular, enterprise software and spring. Or anything
that transpires to JS, due to the build chain and difficulty debugging.

