Thom Dixon said this while we were circle-jerking about how Python sucks (and why math is an incredible way to “program”). He said,
I guess I hate programming because it feels like not only am I fighting my own ignorance, but I’m fighting the language designer’s too.
I liked the quote and so should you. It really captures two things:
- why most programming languages are terrible,
- why most programmers are terrible (this is implied subtly I think), and
- why programming languages usually end up being a catalyst for people to make more languages.
Consider BCPL to C to C++ then to Obj-C/C#/D/Vala/etc. Yes languages can evolve and that’s not quite the issue, but — well, the Smug Lisp Weenies said it best:
No, we want that engineers stop bitching about the language, and start writing applications and libraries. It seems like a week doesn’t go by, when some young whipper-snapper doesn’t come out with some new-fangled programming language that is just some ho-hum rehash of something that came before. So predictable. They spend all their time working on “tools” or “productivity” enhancements, that the applications they could have written in Lisp will wait decades to see the light of day.
I guess this is why I personally like Lisp. Once you get past some of the idiosyncrasies, you realize it’s a tool-set for creating just about any abstraction. I know Lisp isn’t universally accepted due to its looks (you can read my criticisms about that in an earlier post) or whatever other reason (perhaps legitimate), but it at least covers the whole “add a feature if you need it”-base, which I’d say covers most of the issues language creators gripe about. As an example of the syntactic flexibility, see this and this, two pieces of code I write which allow you to use a friendlier array-element notation and a lambda function notation.
By the way, I only mentioned Vala in the list of C-derivatives above because it’s so terrible I had to mention it.