Ugh. again, if you're going to tear on something, please... at least be right about it.
For example, If your code base is 50 million lines in any language, you're doing it wrong, and it's going to be a pain to maintain. C++ has little to do with it.
He also seems to think Python is losing to Ruby -- Sorry, no. They're both going strong, and growing rapidly. Both of them are winning hard right now.
Also, his convolving of lisp and emacs is quite annoying. Emacs is not Lisp, and Lisp is not Emacs. Please don't confuse the two.
Overall, I think that this is a rather poor article. Although I've definitely seen worse.
He wrote that article quite a while ago (Sept. 2004), actually, and has a slightly more recent (Feb. 2005) follow-up that covers several more languages here (http://steve.yegge.googlepages.com/language-grubbing). Oddly, he acts as if he has no memory of writing the other thing.
He gives a much more informed opinion of Python here, I think. His overall impression is essentially, "Python is a really good language, but I already know Ruby, which is good at the same things, so I'll just stick with that." I feel the same, really, but favoring Python over Ruby.
Python is a really good language, but I already know Ruby, which is good at the same things
I was under the impression that Ruby was mostly used for webapps, with really little use in other areas. Is this not correct?
Python is used widely for a variety of purposes, like system programming.
Ruby is a general-purpose scripting language. It just has a reputation as being used mostly for the web because Rails is its most popular app.
I don't really use Ruby (I already know Python well, and while I've played with Ruby a bit, I think my studying time is better spent on languages that are more different), so I'm going to let Ruby-ists provide examples if they want.
I've used Ruby for quite a while. I don't use Rails, and I haven't touched a web application in a long time. I've used it for system scripts, GUI applications (JRuby), game development, data processing, automation of MS Office applications, testing, prototyping, distributed build and deploy scripts, middleware, etc. I use Ruby for anything and everything I can think of programming unless I need to get closer to the hardware or integrate with something written in a different language.
Ruby can be used and will be used anywhere that Python can. They're both great languages, but I prefer Ruby for a few small reasons that Yegge seems to cover.
It's understandable that you might have this confusion, though, since if you're not a Ruby user it's easy to get the impression that Rails is the programming language. I constantly have to educate people about that ("Repeat after me: Rails is not a programming language"). Sometimes I wish Rails wasn't so popular, because I believe Ruby can stand on its own. I'm tired of conversations like this:
"Have you heard of Ruby?"
"No."
"Okay, have you heard of Rails?"
"Oh, Rails! That's what you're talking about!"
"No, that is not what I'm talking about."
I get this from the standard folks who never venture outside of their C++/Java/C# pens, and they've heard of Python only because of Google (tip for language evangelists: a hot and trendy company does more for your language than a killer app).
I would expect, however, that people who use Python would realize that Ruby stands right beside it as a similarly beautiful and productive dynamic language. In this I am constantly disappointed. Maybe it's a sign that Ruby is losing the popularity contest and will fade away to the sidelines. There are too many clueless people who pick up Python and love it and swear by the gods that there is no language like it, even though their experience with languages is summed up with C++, Java, and now Python. It's the language that ropes in all the clueless people that eventually wins. Congrats to my Python brothas.
"There are too many clueless people who pick up Python and love it and swear by the gods that there is no language like it, even though their experience with languages is summed up with C++, Java, and now Python. "
To be fair, the same seems true of Ruby (mostly via Rails); they come from Java or PHP and declare Ruby the pinnacle of language design.
(I'd like to think, though, they are a mostly a noisy minority. There are a lot of Ruby, non-Rails Ruby, developers who just quietly go about their business.)
Some of these articles were originally part of an internal Amazon blog. Apparently Amazon did indeed have tens of millions of lines of C++, and the point of Stevey's rants was to point out that they were doing it wrong.
Those were also the days when any respectable application was written in C++. Stevey's other mission was to make it OK to say that C++ sucks without getting looks from everyone like you'd just slapped your mother.
These days, sensible people just post a link to the C++ FQA Lite and get on with writing useful code. There's less of a need to fight the machine.
In yet another article, presumably more recent, Stevey mentions that after losing faith in Java he started writing everything in Jython. The Ruby craze came later, and these days it's all about JavaScript/Rhino. But each blog rant focuses on the flavor of the week. Point being, these posts aren't "essays", they're propaganda. They're a reasonably well-informed programmer's way of blasting one opinion at a time onto a readership that's already fairly saturated with other kinds of hype -- no room for nuance; Language X is the Next Big Language, repeated for page after page. The language comparisons are just a trampoline for that message.
I find it annoying that people's only real criticism against Python is the white space. I love that feature, it's like high real estate prices, keeps the rif-raf out.
Python whitespace is a great shibboleth for screening out people who don't agree with the core philosophy of "one and only one obvious way to do something". You could argue that philosophy is the language's defining feature.
If there's any real barrier to Python adoption, it's the lack of a language-specific fad like Java applets or Rails to push it into a wider audience.
I also don't understand that critic. I have never ever had a problem with it and it is a big part of what makes Python so readable. I don't think there is any other language that comes close to Python in terms of readability.
What is the issue people have with it? They write code that writes code? That is the only issue I can come up with.
And self, yes it might seem a bit unaesthetic at first but it is not such a big deal.
You can write readable code in any decent language, and you can just as easily write unreadable code in Python. The important variable is the programmer's skill, not some language-imposed restriction. Besides, bad use of white space is rarely what makes code unreadable. It's usually poor organization, functions/modules that are too long, non-descriptive names, overly complex class hierarchies, etc. I think Python is a nice language but I disagree that its whitespace rules make it so much more readable than other languages.
When your working on cross multi-editor / multi-developer projects, you can do your tabs differently, (one might do tabs, another soft tabs, their soft-tabs are 4 spaces, another is 2, another is 8 (ack)) and you get irritating inconsistent tab errors. It can be quite annoying. Having to synchronize on such an irritating detail is even more irritating.
I read them because I find them entertaining, and I can even relate to a lot of the sentiments. A written piece labeled under the heading "Stevey's Drunken Blog Rants" is not intended to be a carefully crafted treatise. A drunken blog rant is a drunken blog rant. I do not understand why people think that a drunken blog rant has to follow a format that isn't at all representative of a drunken blog rant. It's funny. If the problem is that it's not funny to you, then that's a valid viewpoint, and I can respect that.
I'm curious as to how you define "worst." As someone who once upon a time studied English, I love this paragraph:
It's hard, though. It's a big jump. It's not sufficient to learn how to write C-like programs in Lisp. That's pointless. C and Lisp stand at opposite ends of the spectrum; they're each great at what the other one sucks at.
That's good writing. Summarizes the writer's opinion in an active voice without latinate verbs or excessively long sentences.
Short sentences and they're there for emphasis. I think it's in Strunk & White that they say "what do you do when you've shrunk your language so small that there's nothing left" - repetition! Say everything 3 times!
A restaurant review has more content than this. This is just a list of personal tastes, with virtually no addressable argument. A lot of what he does say is idiotic. His entire lisp section, for example, is about an elisp system, which has absolutely nothing to do with the merits of learning real lisp. "Perl OO never really caught on." Um, have you looked at CPAN or the core module APIs in the last 8 years?
Perl OO never really caught on because it isn't part of the core language. It's the same with Scheme. It's nothing to be embarrassed about or something that you want to try and correct.
Also, what pray tell is a "real" lisp? Last I checked, Emacs-Lisp has macros and much of what makes any lisp a "real" lisp.
Perl OO = library. Scheme OO = library. Library != language. The last time I tried to use Perl OO, CPAN had to download a bunch of stuff for Moose. That doesn't sound like it's part of the core language to me.
Has the situation changed? Are there OO things included with the default dist of Perl?
That explains so much.