The last time Hackerfall tried to access this page, it returned a not found error. A cached version of the page is below, or click here to continue anyway

Lisp is still a secret weapon

In Paul Graham's 2001 essay Beating The Averages, he convinces you that:

  1. Viaweb succeeded because Paul Graham and Robert Morris were better at programming than the other guys.
  2. PG & RTM were better at programming than the other guys 'cuz Lisp.
  3. You should use Lisp to start shellacking the competition today!

So, 14 years later, what's changed? Can writing your company's product with Lisp still be an advantage?

open source

A huge difference between development today and in 2001 is the present abundance of high-quality open source libraries.

The rate of new open source code being written is at an all-time high. At the time of this writing, there are nearly 200k modules published on npm. One of them probably does what you need it to do. 14 years ago, the ratio of code-you-wrote to code-somebody-else-wrote was higher.

The # of published modules is a hockey stick for npm.

Common Lisp is as high-level and expressive as a programming language can be, but does that advantage outweigh frictionless access to a rich ecosystem of code written in the same language as your software?

I think the growth of open source in, for example, the JavaScript ecosystem diminishes Common Lisp as a "secret weapon," but Common Lisp isn't the only Lisp in town.

a challenger appears: Clojure

In 2007, a new lisp arrived on Earth. Straight outta Rich Hickey's hammock, Clojure hit the scene as a modern lisp that embraced the JVM. Clojure was born with more libraries for you to use than Java (since you could seamlessly use any Java code in your Clojure program, plus any libraries written for Clojure).

By now, Clojure is the de facto standard lisp for new applications. ClojureScript, released in 2011, lets you compile your Clojure code to JavaScript. Interop with Java or JavaScript libraries is seamless and comfortable with Clojure.

ClojureScript has all the libraries of node / npm / JavaScript. The tooling for it is stable (and awesome). And all along, you're using a Lisp, which PG shows[2] is the most powerful kind of programming language.

Want to use Express? Once your eyes adjust to the parenthesis coming first, it feels like home:

(def express (js/require "express"))

(defn beep! [req res]
  (.send res "boop"))

(let [app (express)]
  (.get app "/" beep!)
  (.listen app 3000 (fn []
                    (println "Server started on port 3000")))))

Clojure programming is fast, fun, and interactive. The functional programming / immutable data at the core of the language make it easy to reason about complex systems. All you have to do is get used to the parenthesis coming before the verb.

Clojure may be the best tool for writing software that's ever existed, but it's relatively unknown! Smells like opportunity.

is it secret? is it safe?

In a big company, you can do what all the other big companies are doing. But a startup can't do what all the other startups do. I don't think a lot of people realize this, even in startups.

If you do everything the way the average startup does it, you should expect average performance. The problem here is, average performance means that you'll go out of business. The survival rate for startups is way less than fifty percent. So if you're running a startup, you had better be doing something odd. If not, you're in trouble.

-- pg

As a startup, you need to set yourself apart. It's not enough to know that Clojure is simply the best language for writing your software. You need to know that Clojure is the best language for your software and none of your competitors are going to use it.

Are people using Clojure? It's barely in the top 20 most popular programming languages, ranked alongside programming stepchildren such as Visual Basic. That's exactly where we want it to be. There's a happy medium somewhere between "I wrote this lang and I'm the only one who uses it" and "Java."

There's a community from which to hire talented programmers, but it's a small enough community that a Google-figure could hire the whole set.

Clojure is a secret, and probably will stay that way because people hate the parenthesis. "Lisps are weird" is a popular opinion-- and should be music to your ears!

What important truth do very few people agree with you on?

-- Peter Thiel

Your business must be predicated on a secret. You'll probably need something more original about your company than the programming language you use, but more contrarian-truthfulness is always better than less.

I think of a company's ability to compete as an exponential function, and the sum of your secrets is your exponent.[3]

In my opinion, Lisp, in the form of Clojure, adds more to your exponent than 14 years ago, or ever before.

Oh crap, I probably shouldn't have told you.

[2] open Beating The Averages, cmd-F blub

[3] The base is how hard you work / how persistent you are.

[4] The syntax highlighter on this blog doesn't support Clojure / Lisp! I'm not going to search for another one because it supports my conclusion. LOLCODE support? check. Clojure? nah, weird parens.

Continue reading on