←back to thread

The programmers who live in Flatland

(blog.redplanetlabs.com)
107 points winkywooster | 5 comments | | HN request time: 0s | source
Show context
johnfn ◴[] No.46183213[source]
> Many point to “ecosystems” as the barrier, an argument that’s valid for Common Lisp but not for Clojure, which interops easily with one of the largest ecosystems in existence. So many misperceptions dominate, especially the reflexive reaction that the parentheses are “weird”. Most importantly, you almost never see these perceived costs weighed against Clojure’s huge benefits. Macros are the focus of this post, but Clojure’s approach to state and identity is also transformative. The scale of the advantages of Clojure dwarfs the scale of adoption.

> In that essay Paul Graham introduced the “blub paradox” as an explanation for this disconnect. It’s a great metaphor I’ve referenced many times over the years. This post is my take on explaining this disconnect from another angle that complements the blub paradox.

The blub paradox, and the author's "flatland" methaphors, function as thought-terminating cliches. They provide the author (and Lisp proponents) with a simple explanation ("Everyone else is stupid") that doesn't force them to reconcile with more difficult questions ("Is it possible that other intelligent people have considered Lisp and rejected it for good reasons?")

And, honestly, it's just an annoying line of reasoning to hear that the only reason <you> don't use <favorite technology> is because you're just not perceptive enough.

For instance, the suggestion that "ecosystem" problems are "misconceptions" that critics fail to reconcile seems inaccurate to me. Does Clojure have a package manager as simple and straightforward as npm/cargo? Does it have a type system as well-maintained as TypeScript? Does it have a UI library as good as (choose your favorite web UI library)? These are all ecosystem problems. Do you think these problems meant nothing to everyone who decided against Clojure? Or do they all live in Flatland?

> The ability to manipulate compile-time so effortlessly is a new dimension of programming. This new dimension enables you to write fundamentally better code that you’ll never be able to achieve in a lower dimension.

There are many such "new dimensions of programming". Macros are cool, don't get me wrong. But given the choice between a proper macro system or a proper type system, I know which one I'm choosing every time.

replies(2): >>46183226 #>>46185037 #
1. wrs ◴[] No.46183226[source]
In reality, most people, intelligent though they may be, don’t consider and reject Lisp, so that argument doesn’t really work. I know it irritates people who actually do consider and reject Lisp, but those people don’t realize that they’re a tiny elite who are not the target of these essays.

There are plenty of reasons it might be better not to use Lisp, but very few people actually get as far as considering them.

replies(1): >>46183315 #
2. johnfn ◴[] No.46183315[source]
Quite a lot of people have given Lisp a shot and determined, for one reason or another, that it doesn't work for them. Why wouldn't that be the case? There are no special forces that prevent people from giving Lisp a shot when every other popular language in the world was at one point in time was at Lisp's level of popularity, and overcome the barriers that Lisp could not.
replies(1): >>46183446 #
3. wrs ◴[] No.46183446[source]
The essay’s thesis is “most people don’t consider Lisp because they don’t know what’s different and special about it”. I think that’s unarguably the case. You equated that with “everyone else is stupid”, which is uncharitable and not at all what the essay says. Why would you even bother to write an essay if your audience is too stupid to understand what you’re saying?
replies(1): >>46184797 #
4. johnfn ◴[] No.46184797{3}[source]
Is it really that uncharitable? Yes, it's slightly hyperbolic, but I argue only slightly. Whether intended or not, the tone of the article is patronizing. Here are some examples.

> The programmers who live in Flatland

> Likewise, you cannot comprehend a new programming dimension because you don’t know how to think in that dimension

> the sphere is unable to get the square to comprehend what “up” and “down” mean.

All of this is patronizing. It implies that I am incapable of understanding the benefits of Lisp. If only I were able to lift myself out of the dull swamp I find myself in! But I am capable, and I do understand them, and I still don't like it! And I think most Lisp detractors do as well! I would argue that it is the Lisp proponents that live in Flatland - they need to understand that there's another dimension to criticisms of Lisp that aren't just "I don't like parentheses" and that there is substantive feedback to be gleaned.

replies(1): >>46191592 #
5. syklemil ◴[] No.46191592{4}[source]
> they need to understand that there's another dimension to criticisms of Lisp that aren't just "I don't like parentheses" and that there is substantive feedback to be gleaned.

I'm also somewhat reminded of the decline of Perl and how some people who love and still frequently use Perl don't really seem to even acknowledge the complaints people have about it, which seems to prove the claim about the decline being cultural. According to that kind of attitude, the lack of popularity is inexplicable, and we might actually be lucky that they're not resorting to conspiracy theories to "explain" the mismatch between their preferences and observable reality.

The Haskell motto of "avoid success at all costs" seems a lot healthier, as in, they know they might need to choose between going mainstream and getting to keep a language that suits them personally.

Lots of the Lisp advocacy also comes off as either entirely too vague, like this blog post, or stuck in the age of the `worse-is-better` talk (1989, so predates WWW and nearly all the programming languages in widespread general use). I don't care about comparisons to C, because the only places C is seriously considered for new projects these days are in places where a GC is unacceptable (and purposes Rust isn't certified for or whatever).