Thursday, September 11, 2008

Python: Bambi Meets Godzilla

I just re-read a blog post that I read a couple years ago called Bambi Meets Godzilla, and I enjoyed it just as much the second time around. It's a brief history of Smalltalk, Java, Perl, Python, and Ruby, and it talks about why hype is vitally important. It also spends a fair amount of time critiquing Python's culture. If you haven't read it yet, stop reading my post, and go read it instead ;)

It reminds me of The UNIX-HATERS Handbook, which I also love. The funny thing is that to some degree, he's right about Python's culture. I've seen it with my own eyes.

Don't believe me? If I were to admit that I preferred Ruby on Rails over Django, how long do you think it would take for someone to flame me in a comment calling me either an idiot, a troll, a loser, or a heretic, or to say something like "You can recognize good design by the inanity of its detractors"?


i0cus said...

Good rant, as you would expect from SY. It's a shame that he is still bashing Python in that piece -- all the ,,we, Ruby community, are so cool, maybe Python users will grow to our level someday'' bits sting a little, even if he adds ,,I really believe in them''. Yeah, he only forgot to mention how humble Ruby people are (more than Pythonistas, that's for sure ;-).

And his facts are, as usual, bent just a little to match his point -- like that piece about ,,proposing language changes'' that is in fact about incompatibile changes and the answer is ,,In general: no [+reasoning]'' (please feel free to use the Wayback Machine if you don't believe me, I did my best but failed anything else).

,,Erroneous'' and ,,confused'' parts are just low blows. When it comes to language spec and methodology there is no room for personal opinion (unless you're using PERL or you carry the title of BDFL). There is ,,the way it is done'' and all other ways, that are more or less incorrect. If someone is too touchy to hear ,,you're wrong'' then that person is not trying to learn anything, but is rather looking for acceptance (in all the wrong places). You loose this fine detail (meaning, you know, common sense and sanity) in between the lines about waiters and cultures. But the fact is that sometimes you're just wrong (in given context) and usually being wrong means that your way of thinking doesn't work the way you'd like it to (in given context). Because yeah, there are wrongs and there are rights (everywhere), and learning is in general about getting to see which is which.

I like Python because Python people are all about ,,batteries tested and included'', they walk-the-walk, not just talk-the-talk. I don't like Ruby because to me it's ugly, immature and if you try to say this in public you'll get bashed by this friendly community (,,... and this will get fixed in next version/VM X!''). So I would rather do Java than Ruby. It's not ugly, it's pro and its users know the difference between being frank and being dick. ;-)

(Sorry for ranting. On your blog. About his post. From 2006. Really sorry. Cheers.)

i0cus said...

Second paragraph should of course end with (I blame this little textarea ;-):

''I did my best but failed to find anything else.''

Noah Gift said...

I have to agree with this statement, "First, inferior languages and technologies are just as likely to win." This is how life is. Read the book, Myths of Innovation, it is an eye opener.

As I have mentioned before, hype, a.k.a, marketing, is really the most important part of web development. If someone doesn't have an "A" hype game, forget about writing a web framework.

Shannon -jj Behrens said...

> (Sorry for ranting. On your blog. About his post. From 2006. Really sorry. Cheers.)

Thanks for the comments.

1 said...

Hey JJ,

Thanks for reaching (via email) to an old Python enthusiast. It really is about the culture. By all measures I should be a rabid Pythonista:

1) I love whitespace
a) I wrote my first DBMS language using whitespace in 1979
b) I wrote my second Multimedia language using whitespace in 1992
c) I think Occam (the language) was cool for using whitespace
c) I think executable pseudocode can expand the "customer base"

2) I am vested in Python
a) I reconstructed the 2.4 language definition by hand
i) using a variant of BNF that used whitespace
ii) and then wrote a parser for said BNF in Python
b) I wanted to use Python as the backbone
i) for a non-programmer's media patchbay
ii) as a "my first language"
iii) that seamlessly transitions to the full version

3) I prefer “There should be one—and preferably only one—obvious way to do it” over TMTOWTDI
a) to allow other people to read my code with explaining it to them
b) to allow myself to read my code after forgetting it

And yet, I have resigned from the baypiggies list, because:

4) The Python community doesn't get Marketing
a) Python users are customers
i) you don't call your customers whiners when they complain
ii) I've heard Alex Martelli and Guido use the "whiner" epithet

b) I was turned off by the c[:]() discussion on
i) some posts pointed to some beautiful code
ii) other posters engaged in ad hominem attacks

6) My goals may be at cross purposes with Python
a) I like the utility of creating domain specific languages
i) which may be a closer fit to TMTOWTDI
b) I want to create a patchbay for non-programmers
i) for example, a twelve year old girl with an iPhone
ii) whom are welcomed by an open-minded community

In all fairness, I think that just about everyone that I've met at the Python meetups are a pure joy to be around. I even get a kick at the sometimes snarky comments. But, the community seems too defensive for the customers that I want to support.



Shannon -jj Behrens said...

Thanks for your comments.