←back to thread

The programmers who live in Flatland

(blog.redplanetlabs.com)
107 points winkywooster | 2 comments | | HN request time: 0s | source
Show context
RodgerTheGreat ◴[] No.46183322[source]
A sadly typical flavor of essay: a lisp enthusiast who believes that learning lisp has made them into a uniquely Very Smart Boy who can think thoughts denied from programmers who use other languages. The "blub" paper asserts that there exists a linear hierarchy of goodness and expressiveness in languages, where lisp, by virtue of its shapelessness, exemplifies the pinnacle of expressiveness.

This is a profound misapprehension of the nature of language design. Languages exist within contexts, and embody tradeoffs. It is possible- common, even- to fully grasp the capabilities of a language like lisp and still find it inappropriate or undesirable for a given task. Pick any given context- safety-critical medical applications, constrained programming for microcontrollers or GPUs, livecoding environments where saving keystrokes is king- and you can find specialized languages with novel tools, execution models, and affordances. Perhaps it never crossed Paul Graham's mind that lisp itself might be a "blub" to others, in other situations.

The idea of a linear hierarchy in languages is the true flatlander mindset.

replies(4): >>46183896 #>>46184010 #>>46184033 #>>46189903 #
chihuahua ◴[] No.46184010[source]
It would also be a lot more persuasive if the article provided even a single example of how Lisp enables superior solutions.

Instead, it's just an ad-hominem attack based on the idea that non-Lisp programmers are too limited in their thinking to appreciate Lisp.

Show me a convincing example of something that's simple/clear/elegant/superior in Lisp, and how difficult/complicated/ugly/impossible it would be to do the same thing in Java/C++/Ruby/Python.

In the absence of that, the entire article can be refuted by quoting The Big Lebowski: "Yeah, well, you know, that's just, like, your opinion, man."

replies(6): >>46184130 #>>46184635 #>>46184907 #>>46185835 #>>46190832 #>>46191196 #
evdubs ◴[] No.46184907[source]
> Show me a convincing example of something that's simple/clear/elegant/superior in Lisp, and how difficult/complicated/ugly/impossible it would be to do the same thing in Java/C++/Ruby/Python.

Serialize and deserialize data. You're currently using something like XML or JSON for a human readable data serialization format in those languages. JSON and XML are not first class components of those languages. S-expressions are a better version of JSON and are first class components of Lisp.

replies(1): >>46185340 #
bccdee ◴[] No.46185340[source]
That's a bad thing, though. You should not be `eval`-ing your config file, much less untrusted messages.
replies(2): >>46185489 #>>46186320 #
1. evdubs ◴[] No.46185489{3}[source]
I am not so sure how it works, but you can define your own evaluation handler for `eval` which, I assume, can be as restrictive as you need if you're dealing with untrusted data.
replies(1): >>46185923 #
2. bccdee ◴[] No.46185923[source]
Seems simpler just to use `json.load`.