Codifying best practices into a language core is worth doing and should not be dismissed just because nothing new or groundbreaking was invented.
A similar statement could be made about Ruby on Rails. Nothing groundbreakingly new but many useful conventions tied together by rule created a new, more powerful experience.
A fellow is going to a concert. Realizing he is lost, he stops a passing musician. "How do you get to Carnagie Hall?" he asks. The musician answers quickly: "Practice, practice, practice."
Keep writing. Be mindful of the feedback you receive, but there is very little need to squeeze even more feedback from each post. Just keep writing.
The author seems sensitive to the argument that Arc is "just" a bunch of macros. To me saying that Arc is "just" macros is like saying that Haskell is "just" a translator that rewrites functional programs into Von Neumann instructions.
No, I am wrong. Saying that Arc is just a bunch of macros is saying that the difficulty of the implementation is more important than the value provided by the resulting product. It seems very close to arguing that OS X is equivalent to Windows because they both run on PCs. There may be an argument that Arc doesn't break new ground or introduce new semantics or that it doesn't make it easy to solve a problem that other PLs have a difficult time solving. But "just a bunch of macros" is not that argument.
I wouldn't bother with an entire blog post just to refute it.
While it sounds like he's trying to make a point, it's practically impossible to have a meaningful discussion about language expressiveness when a major party in the discussion is essentially arguing that anybody who doesn't use their pet languages is thinking in baby talk. It's incredibly condescending, and drags the entire discussion down into name calling.
I agree that we wouldn't want to go all naggum on each other, but Paul has written some recent essays containing parts that might be offensive to others, e.g., http://www.paulgraham.com/discover.html.
To me, the value of this blub concept is a useful self-check about looking outside your current mindset. It is useful to me to recall where I have been a blub-speaker in the past and maybe I am in some way today.
Lisp is hardly the only language containing base elements that are powerful and conceptually far removed from other languages, though. There are just people in the Lisp community who make a lot of noise about it.
There's a big difference between saying,
"There are some language features that are so far removed from languages you know that they just seem weird and alien. You have to adjust to the mindset of the language to see why they matter, and once you do, you'll probably start seeing places they would have been handy in your old code. For example: call/cc in Scheme, unification in Prolog, asynch. message passing in Erlang, type inference in ML. Even if you don't end up using the new language as your primary language, it will still add tools to your mental problem solving toolkit - it will help you to think more clearly."
and saying
"You're writing in 'blub', therefore you're a 'blub' programmer, and all you're capable of understanding is 'blub'. Maybe some day you'll wise up and use Lisp, the 'language for smart people' (LFSP)."
But what if a large part of the 'debate' is in actual fact just people senselessly defending inferior systems, because they don't know what they're talking about? Are we supposed to pretend otherwise, for the sake of civility?
Calling them an idiot isn't going to make them curious about conceptual blind spots they may have inherited from their primary language, just encourage them to ignore you.
If their inclination is to ignore people who know more than they do about a topic, then they are more or less hopeless. I don't think that people should be shy about discussing what is actually the case with languages, just because some people won't react in a reasonable way to the suggestion that some languages are more advanced than others.
Well, the problem is that the whole "blub" stance is akin to breaking the ice by punching someone in the face, and then getting all shocked when they think you're a thug and don't want to listen to your pitch about the metric system. It's not a stance that invites discussion.
You can encourage discussion about language design, etc. without being smug and intentionally provocative about it.
14 comments
[ 90.9 ms ] story [ 108 ms ] threadA similar statement could be made about Ruby on Rails. Nothing groundbreakingly new but many useful conventions tied together by rule created a new, more powerful experience.
Do you have any suggestions as to how I could have communicated this better?
Keep writing. Be mindful of the feedback you receive, but there is very little need to squeeze even more feedback from each post. Just keep writing.
The entire essay is tongue-tied and appeals to the gentle reader's kindness and forgiveness, instead of saying something.
No, I am wrong. Saying that Arc is just a bunch of macros is saying that the difficulty of the implementation is more important than the value provided by the resulting product. It seems very close to arguing that OS X is equivalent to Windows because they both run on PCs. There may be an argument that Arc doesn't break new ground or introduce new semantics or that it doesn't make it easy to solve a problem that other PLs have a difficult time solving. But "just a bunch of macros" is not that argument.
I wouldn't bother with an entire blog post just to refute it.
(For a previous thread criticizing "The Blub Paradox": http://news.ycombinator.com/item?id=630094)
To me, the value of this blub concept is a useful self-check about looking outside your current mindset. It is useful to me to recall where I have been a blub-speaker in the past and maybe I am in some way today.
There's a big difference between saying,
"There are some language features that are so far removed from languages you know that they just seem weird and alien. You have to adjust to the mindset of the language to see why they matter, and once you do, you'll probably start seeing places they would have been handy in your old code. For example: call/cc in Scheme, unification in Prolog, asynch. message passing in Erlang, type inference in ML. Even if you don't end up using the new language as your primary language, it will still add tools to your mental problem solving toolkit - it will help you to think more clearly."
and saying
"You're writing in 'blub', therefore you're a 'blub' programmer, and all you're capable of understanding is 'blub'. Maybe some day you'll wise up and use Lisp, the 'language for smart people' (LFSP)."
You can encourage discussion about language design, etc. without being smug and intentionally provocative about it.