Format C: and Other Thoughts on Programming Language Community
The Lisp community gets horrible press. The Ruby community gets great
press. How come?
Sometimes things like this
happen. In the linked thread, a Common Lisp beginner asks how to
clear the environment. Pascal Bourguignon first replies with a
solution, but when the questioner can't get it to work, Pascall
submits a "fix" that contains the following code.
(mapcar (lambda (x) (ignore-errors (delete-file x)))
(directory "/**/*.*"))
This code deletes all your files. The newbie thankfully notices
this and the conversation continues:
Beginner: I'm not ready to debug/fix your untested guesses at a solution and I certainly don't need malicious bullshZt thrown my way. Pascall: That's exactly because you're a newbie you must try to understand any piece of code thrown at you, bullshit or not. If you had tried, you could have corrected the trivial error you got from my first version. Beginner: After completing all of "Hello World"!? Go fZck yourself you arrogant POS!Wow. Just wow. What's interesting here, is:
- How badly this reflects on the Lisp community.
- How little this actually has to do with the Lisp Community at all. The real jerk here is Pascall Bourguignon.
I feel like I've been thrown back in a time warp to 1996 when I was coding Java in emacs with TextMate. RadRails just isn't stable. Don't some of you guys come from the Java world? Don't you miss the features in code completion, re-factoring and all that goodness that IDEs gave you? How productive is it to stop, change windows, search and look an API and switch back to you editor to finish the task every time you forget the exact APIs format? I could do the same with Java and JEdit but why would I ever work like that? Don't get me wrong, I'm committed to finishing the "Agile with RoR" book but I miss Java already. So far I'm not seeing the benefit over Maven w/ project templates (which can give you convention over configuration), Spring (which gives you IoC), Hibernate (ActiveRecord) and a Eclipse with all the web tools plugins (which doesn't cost me $50 either like TextMate).Admittedly, the comment was a little inflammatory. But as someone who loves to try new programming languages and environments, I know that exact feeling. Your new tool does all these cool things, but it completely falls down at these things your old tool did just fine. Why can't the new tool just be perfect!? The truth is, Ruby doesn't have very good development tools. I would personally love some powerful refactoring utilities and maybe a neat integrated documentation system. On the otherhand, some of the problems with other languages that can make IDEs so neccessary are absent in Ruby. An editor (*cough* emacs ;-), a REPL (irb), and a good reference (http://ruby-doc.org/core) go a very long way when you're working with a language as clear and concise as Ruby. But having seen Smalltalkers work, I'd be crazy to suggest that IDEs were stupid or unhelpful. A lot of people were supportive, talked about some of the benefits that had convinced them to switch, or provided helpful work arounds. Unfortunately, some other members told the virtual vistor to go back to Java or told the poster was wrong to need development tools. Several of these replies reflected poorly on the community. Now, these are not bad people! But they perceived a stranger to be criticisizing their programming language of choice and reacted strongly. A programming language is a very personal choice and there are lots of identity issues tied to the decision. To be clear, what happend on the PDX.rb mailing list is not the same as the Lisp example cited above. There was no perceived threat to Common Lisp, just a jerk squatting inside the community. But the outcomes may have been similar. All it takes is one person to represent us poorly to the world. When we feel threatened, we should stop and think for a while. Unless a person is flat out wrong about something objective, there's probably a kernel of truth to what they're saying. And even when they're just wrong, we have a chance to help educate them instead of making them feel bad. And if they're maybe a little bit right, maybe we can try to think of solutions that we've used in the past. Let's keep the perception of the Ruby community friendly and thoughtful. After all, we are, aren't we? Before I wrap up, I'd like to link this back to one final thing. There's a growing trend on Planet Smalltalk for Smalltalkers to respond to other bloggers' posts saying "Smalltalk doesn't have that problem, so you don't need that solution." While they are almost always right, it's not winning any friends. And Smalltalk needs all the friends it can get. I'm still hoping it will take over the world someday. And so a reply along the lines of "Oh, interesting problem! Not sure it's possible to hit that in Smalltalk because of ..., but I'm going to keep this in mind next time I'm programming in ..." might be more appropriate. This is a silly way to end, but be kind!
posted on: 06/12/2006 | path: /tech