- John McCarthy (1927-2011)
- Gerald Sussman
- Richard Stallman (1953-)
- Bram Moolenaar (1961-)
- Linus Torvalds (1969-)
- Edgar Codd (1923-2003)
- Robin Milner (1934-2010)
- Steven Kleene (1909-1994)
- Ken Thompson
- Honorable mentions
- Rich Hickey
- Paul Graham
- John Backus
- Ronald Rivest
- Paul Falstad
- George Boole
- Haskell Curry
- George Zahariev, David Nolen, Evan Czaplicki
- On anti-heroes
“To be a hero, you have to learn to be a deviant, because you’re always going against the conformity of the group. Heroes are ordinary people whose social actions are extraordinary. Who act.” — Philip Zimbardo
The question of “who is your programming hero” comes up on episodes of [The Changelog], and it’s a good one. I have no means or aspirations to be asked, but it’s a fun question to answer, so here are my programming heroes…
John McCarthy (1927-2011)
For conceiving of Lisp.
For co-creating Scheme and making lisp more accessible to students through his development, writing, and lecturing.
Richard Stallman (1953-)
For GNU tools, Emacs, and indefatigable promotion of open source. And for being the one to really make us think different. https://stallman.org/
Bram Moolenaar (1961-)
Linus Torvalds (1969-)
https://en.wikipedia.org/wiki/Linus_Torvalds Linux and Git. Jeez.
Edgar Codd (1923-2003)
For his relational model which led to SQL.
Robin Milner (1934-2010)
Robin Milner created ML, and ran with the ideas of type inference.
Steven Kleene (1909-1994)
For basically inventing the regex. https://en.wikipedia.org/wiki/Stephen_Cole_Kleene
For putting the regex into practical use in editors. And for co-inventing UNIX.
My first year with Clojure (2012) — which was created by Rich — opened my eyes to the beauty of lisp.
After spending some more recent time with Racket, I believe Clojure is not a panacea. Racket is beautiful for its simplicity and regularity. It also doesn’t suffer from the bloat associated with sitting on top of the JVM.
Insights such as patterns being smells, the glory of Pride and Prejudice
for his work on language specification (BNF). And for his contributions to functional programming.
For voluminous contributions to literature on algorithms, and for giving us the security that we have today.
For creating Zsh, the shell that is both featureful and fast.
For having managed to get his name and logic into every programming language.
For getting his name and ideas into almost as many languages and Boole. https://en.wikipedia.org/wiki/Haskell_Curry
George Zahariev, David Nolen, Evan Czaplicki
I don’t think it’s productive to name names here, so use your imagination.
Despite the efforts of the heroes I’ve listed, many have come and been seen as heroes to the masses, and yet they often worked against the real heroes. Let us eschew the “heroics” of those who have pushed languages, operating systems, and tools in directions that have done harm. Some were great experiments, and much was learned, but they have errantly gone mainstream. I’m speaking of languages where everything is an object, mutability is the norm, parallelism nears impossibility, functions are not first-class, state and behavior are conflated, and where we tell the machines how to do things instead of what to do. Of opaque systems where we have no way to know what they’re doing on our behalves. Of tools that lock us into perpetual agreements and eventual compromises and pain.