Many hackers are quite religious about their programming language of choice, but I’m not. Whenever possible I try to be rational about things that matter to me. For this reason you won’t hear me saying things like: “Ruby rocks, Java sucks!”. Indeed Ruby rocks, but it does so for me, for the kind of development that I love to do and for the way I like to think and express my thoughts in code.
I am quite confident that Ruby would be a great programming language for a broad audience of hackers worldwide, but this doesn’t mean that we should belittle those who happen to work with Java, C# or other “bureaucratic” language. On the web there are thousands of threads about “Java vs Ruby”, “PHP vs Rails”, “Python vs Ruby”, “C# vs Java”, and so on… this is mostly non-sense. Of course all these languages have differences that will determine your life as programmer, but you really need to go and try them out for yourself. Spend time selecting and learning your development platform, experiment, and if possible learn more than one language and framework. Different paradigms can be a huge gain for the programmer in terms of flexibility. I really love to work with drills, but sometimes you need a screwdriver, or just a hammer. “Buy some tools” keep them in your toolbox, and then use the ones that will let you do the job better. Or that are requested by the company were you work or by the client, or again that you enjoy using the most.
Some programming languages let you be more productive than others in particular circumstances, create a more maintainable code and so forth. Assembler is definetely less “human-friendly” than Python for example. But in the field of general purposes languages, the real bottleneck is often the programmer not the language! It’s your level of mastery of the language, that makes the difference in most cases. I love Ruby and it is in my opinion, a slightly better language than Python, but at the moment I am not half as productive in Ruby as Alex Martelli is in Python.
One day my wife asked me why I was so passionate about Ruby, while I used to be interested in C# a lot. She asked me what the difference is and the advantages are? Now, she is a very smart woman, but she hasn’t a programming background so I tried to explain to her without going into details like dynamic languages, meta programming, ORM, and so on. She mostly got what I meant but I was looking for a more effective and direct way of illustrating the concept.
A few days ago I remembered the funny photo that you can see on the top righthand side1. That’s probably the best answer: simplicity. Ruby doesn’t get in the way and it lets you express your ideas, because Ruby is as simple as possible but not simpler as Einstein would say. You don’t need a dozen books to master Ruby or Web development with Rails, you just need a couple of books, a brain and some practice.
(1) I’d like to give credit to the author of the photo, but I don’t know who originally took the picture. I’ve only added the Einstein quote and rounded the corners.