October 15, 2015 history

'(Programming Heroes)

  1. John McCarthy (1927-2011)
  2. Gerald Sussman
  3. Richard Stallman (1953-)
  4. Bram Moolenaar (1961-)
  5. Linus Torvalds (1969-)
  6. Edgar Codd (1923-2003)
  7. Robin Milner (1934-2010)
  8. Steven Kleene (1909-1994)
  9. Ken Thompson
  10. Honorable mentions
    1. Rich Hickey
    2. Paul Graham
    3. John Backus
    4. Ronald Rivest
    5. Paul Falstad
    6. George Boole
    7. Haskell Curry
    8. George Zahariev, David Nolen, Evan Czaplicki
  11. On anti-heroes
  12. Resources

Audience: anyone

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

Gerald Sussman

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-)

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

Ken Thompson

For putting the regex into practical use in editors. And for co-inventing UNIX.

Honorable mentions

Rich Hickey

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.

Paul Graham

Insights such as patterns being smells, the glory of Pride and Prejudice

John Backus

for his work on language specification (BNF). And for his contributions to functional programming.

Ronald Rivest

For voluminous contributions to literature on algorithms, and for giving us the security that we have today.

Paul Falstad

For creating Zsh, the shell that is both featureful and fast.

George Boole

For having managed to get his name and logic into every programming language.

Haskell Curry

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

For their continued efforts to make JavaScript sane via LiveScript, ClojureScript, and Elm, respectively.

On anti-heroes

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.