Thursday, November 02, 2006

Choosing Your Goggles: Ruby or Perl, Python or Rails

Choosing Your Goggles

Matz (Ruby), Larry Wall (Perl) , Guido van Rossum (Python) , DHH (Rails)

While listening to Yukihiro "Matz" Matsumoto, the creator of Ruby, I realized that the process of selecting a programming language has a brand new and highly important step, more important even than downloading the tutorials and experiencing with some sporadic scripting. This essential step is listening to the language's creator talking about his creation.

And why is that so important?

Because languages are far more than just tools; they are the operating systems of our thoughts, with each language forcing a different view of the world and allowing different thought processes to take place. While "language=reality" is an "old" idea in the natural languages realm it still got only loose associations to artificial and synthetic languages. But as our current era formidably proves (see notes), artificial languages, standards, and even tags, can and should be seen as Goggles that force a certain perception of reality.

Yukihiro "Matz" Matsumoto asserts in his talk that "language influences human thoughts more than you think. The important question is - do programming languages influence human thoughts as well?"

Assuming they do, it should be evident that listening to the programming language's creator, before opting in and using his/her language, is a necessity. Any language creator should be rightly viewed as a sociologist or as a philosopher, aspiring at the creation of a different world to live in. As potential residents of this new world, we must be aware of its credo.

So I listened to four language creators - Matz (Ruby), Larry Wall (Perl), Guido van Rossum (Python) and David Heinemeier Hansson, aka DHH (Rails) - in an attempt to figure out what do these creators actually want; how do they see their world and, more importantly, what role do they envision for their residents, i.e. the programmers: what are their rights and what are their duties; what is the degree of freedom and so forth.

The following is a summary of my personal impressions, whose value to others is questionable. Nevertheless, I think that the process described hereafter is meaningful and highly important.


Matz has a lovely personality. It's not that common, so this is a huge plus already. On the theoretical level, Matz is emphasizing what I call Simplexity: doing complex things the simple way.

Simplexity is, imho, an extremely important trait, as it acknowledges the existence of complexity rather than sweeping it under the carpet. Google is a great example of simplexity (and not of simplicity), providing a simple access to the complex information of the world. SOA is another great example for Simplexity, but this you already know.

I enjoyed getting to know the spirit of Ruby through Matz and his "Ruby Design Principles" talk. I feel that the Ruby world is human, realistic, cautious, helpful and... with a sense of humor. I'm in.


Larry Wall is a challenging intellectual. His talk, titled "Perl A to Z", works simultaneously on three parallel layers: the linguistic layer, where pragmatics (a linguistic theory) plays a major part; the philosophical layer, where post-modernism is used to explain different human, social and Perl-related behaviors; and lastly, the Perl language itself, which is used as a use case layer for the other two tracks. It's a challenging but fascinating talk.

As a true post-modernist, Wall believes not only in the paradoxical co-existence of usually contradicting forces (such as early and late binding), but also in the fragility and ephemeral essence of the entire "Perl world", when confronted with other language worlds, or point of views. From this inherent, post-modern fragility, comes a very interesting approach to future development of the Perl language. New versions of Perl do not seek to solve new technological challenges; rather their aim is to make Perl... survive. "I'm just trying to make Perl survive the next asteroid or plague", says Wall, in what I believe to be an existential position, rather than an opportunistic one.

It was only natural to re-encounter the concept of simplexity in Wall's talk, because Complexity, just like any other unclear, blurred, error prone and imperfect idea, should have its own legitimate space in the world. And if you keep on reading, you'll see that there are others who reject this approach.

As it turned out, I have been using Perl for more than a decade now so it would be just fair to suppose that… I'm in.


I wanted to learn Python since a friend of mine, who's a brilliant programmer, praised its clean, aesthetic, and robust features. He simply adores Python. I also know that Google is using Python quite extensively, and that Joel Spolsky thinks that Python has crossed the chasm. Briefly - high expectations.

But, the higher are the expectations, the greater is the disappointment. In his talk "Building an Open Source Project and Community", Guido van Rossum sounds like a crafted toolsmith that happened to have created an optimized version of other language worlds. OK, so? The only design-related information is heard in the beginning of the 2nd hour (!) and it is related to a Python's fans t-shirt that says on its back "There's only one way to do it", a contra to Perl's "There's more than one way to do it". Geeks' humor, I suppose.

As I couldn't figure out why Python has been created, I decided to leave it aside, until it would become clearer. So in the meantime, I'm out.


After listening to David Heinemeier Hansson's "Happy Programming and Sustainable Productivity with Ruby on Rails" I decided to never pursue any relations with Rails, because as crazy as this may sounds, I feel that there is a dark and totalitarian ideology behind and around this language (this might even be too much of a credit, as I suspect the whole Rails thing is nothing but a marketing scheme). Here's why:

The common sense and experience show us that every society develops a set of practices to cope with different aspects of life. As life goes on, these practices evolve, get modified, get fortified. This is true to societies as well as to programming language communities. Best practices evolve in every community to solve the problems at stake.

Now often these best practices are wrapped and packaged into ready-made memes, laws, processes, or libraries. This packaging is a common practice as well. There's nothing special here (to echo DHH's motto).

Rails sounds to me like another best practice, aimed at optimizing the development of web applications. There's nothing special here, and yet for one reason or another, Rails wants to be special. And for that reason, I think, an ideology and a system of beliefs have been established, exalting the pre-packaged best practice to the status of a Platonic ideal, or as DHH puts it: Rails is the Angel; it is Right, Beautiful, Clean, and Pure.

When these words are constantly, repeatedly and insistently used, there's clearly no place for the imperfect, for the one with the flaws. DHH explicitly identifies those fallen from grace with the devil, thus explicitly labeling any "other" world as evil, wrong, ugly, dirty and impure. I dare say that this is a linguistic racism.
If you think that these are "cool", harmless wordings, or that I'm seriously lacking a sense of humor, then you lack a sense of history and you are dangerously underestimating the power of words.

And then there's this sentence that sends back the entire talk, on direct rails, to the past: after killing flexibility (i.e. freedom) asserting that it is overrated, DHH says that conventions are constraints and that constraints are liberating.

Probably I'm over-sensitive here, so I'll just say, "no thanks; not my cup of tea".

The Shows:

1. Matz: Ruby Design Principles
2. Larry Wall: Perl A to Z
3. Guido van Rossum: Building an Open Source Project and Community, part 1, Building an Open Source Project and Community, part 2
4. David Heinemeier Hansson: Happy Programming and Sustainable Productivity with Ruby on Rails


1. On Tags as Goggles: you can listen to Clay Shirky's talk titled Ontology is Overrated, and read my commentary to have a better overview of the existential power of tags.
2. On standards and Goggles: the standards (conventions...) of the past have been deconstructed and reconstructed as small group and sometimes individual artifacts, that represent a viewpoint on reality. The best case to demonstrate this take is Dave Winer's RSS. A one-man, against the grain, unconventional wisdom, that changed our world.


Anonymous Anonymous said...

What about JavaScript/ECMAScript? I know those of us who recognize it as a viable server-side and desktop language are in the minority, but I think you are really just talking about scripting languages. Sure, there is a lack of some standard services, but not if you make the assumption that a Rhino (or Rhino-like) Java-based interpreter is being used. The world of Java system services is rich and open. I'd like to see the lines between the client-side and server-side, and the desktop-based or web-based, applications get blurred. A Java-based interpreter also allows for nearly instant portability (everything requires testing to know it works). Since JavaScript is the only language currently supported by all major web-browsers, I think it is the only language that can be used in all of those application domains: desktop-only, connected-client, and web-server.

I don't know of a central personality around the formation and promotion of JavaScript. Perhaps it is just a design-by-committee language and that gives it its personality. Alternatively, Douglas Crockford might be worth nominating as promoter #1. Give a listen to his presentation on Adavanced JavaScript and see if you'd be in or out.

--Jadon Kragner

5:28 PM  
Anonymous simon said...

Before I read your article I was thinking: Ruby no, Perl no, Python yes. And on instinct I was never in for Rails.
After reading your article, I feel exactly the same.
I've done "Learning Perl" twice. I started with the pragmatics' Ruby book before abandoning it. But it wasn't til I went to dive into python that I felt that here was a language I could work with.
It takes two to make a relationship work. It takes communication. It's about the give and take and that is down as much to the developer as to the language creator.
Still, you made me think. Nice one.

10:49 PM  
Anonymous RSL said...

Rails isn't a language. The language for Rails is Ruby. Interesting article other than that. :)

12:16 AM  
Blogger Muli Koppel said...

Thanks for the link to the JavaScript video - I'll look into it.
As for why I picked those languages and not others: that's simply because I didn't listen to all these podcasts now, but rather close to their publication date. And it was only when I listened to Matz (published last week in IT Conversations) that the idea to perform an analysis of the effect by listening to the cause occurred to me.

thanks for your insight. It takes two, I fully agree; but my suggestion is to take the creator to a virtual date (one-way iPodialogue in this case) before diving into the techie stuff. Might save you some time.

RoR positions itself as a world apart, with its own motivation and ideology. From that perspective, it’s a language. And that creates many interesting tensions between the Ruby and the RoR worlds, as they go in opposite directions – at least that’s what comes out from those podcasts.

6:12 AM  
Anonymous Dibau said...

Very interesting & useful post, thanks! (Programming) languages are indeed goggles & maintain the spirit of their creators.

Personally, as a programmer, I'm not so interested in the current languages, as they don't really offer any real simplexity. IMHO, true simplexity can only emerge from higher-level intelligent & knowledge-based architectures, which are not yet available. Till then it doesn't matter so much what language you use.

6:35 PM  
Blogger Muli Koppel said...


If you accept the goggle assumption, it will help you make up your mind, whenever you're in a need to choose. In your private case, this need will arise when knowledge-base architectures will emerge.

see u around

7:33 PM  
Anonymous yodke said...

Great post, which I find very teasing when I try to think about the historical nature of programming languages. To me personally, from a scholarly perspective (not a as a programmer), the historical background is even more interesting from the good ad-hominem questions you posed. Actually, though "programming language influences human thoughts", I believe first and for most "human thoughts (and action) influence programming languages". For example, how can we explain the rise of OOP in the 80s when the concepts of OO (and even OO languages) where available long before that? I once thought it had something to do with the emergence of the Mac and Windows GUI, but that leads the obvious question: why were they conceived when they did? Also, can we explain the rise of SOA historically? I mean is it just that we try to modulize everything ad-infinitum or is there some zeitgeist behind it? Well, for now, I am just glad someone is looking at programming languages as more then just tools of the trade.

6:58 PM  
Blogger Muli Koppel said...

Hello Yodke
(I assume you're the same Yodke from the comments on the Toolsmiths' post - so welcome back - I'm glad you're here)

You have touched many issues – which are all of great importance.

Why certain ideas – or memes – appear simultaneously in different places (there are, I believe, endless examples of this phenomenon)?

And why do they choose to appear at that particular time - not before, nor after?

And finally, who's playing the chicken and who's in the role of the egg?

Great questions.

Thanks for this comment.

7:32 PM  
Anonymous Anonymous said...

I like your existential approach. Your observation are actually quite typical of ideas/use in history. The tank and submarine was depicted by DaVinic. But were not used until much later. The microwave was produced for commercial use in 1946 but didn't become mainstream (in USA) until late 70s early 80's.

Greek scientists thought about natural selection and the origin of life. Anaximander believed that marine life was the first life on Earth and that changes happened to animals when they moved to dry land. Empedocles had the idea of chance combinations of organs arising and dying out because of their lack of adaptation. Way before Darwin. And I'm sure other peoples (Orient, Africa have made similar observations). Why one takes and not the other? Who knows (because it is varied) and who cares. It what we have is what we grow on.

7:46 AM  
Blogger Paul Jardine said...

Muli, I completely agree that the selection of the tools comes down to how you perceive the creator. I was first attracted to Perl because I liked Larry Walls philosophy and his reasons for creating the language. I'm also drawn to Ruby, because it has some philosophy behind it (I always think of those Japanese sand gardens).
Perhaps it's the difference between buying a well-engineered car compared to one that has a distinct character.
When people talk to me about languages they are always talking about how 'clean/pure' or how fast, or how portable. But if I want to buy a Mini, for example, I don't really buy it because it's the most efficient, or the fastest, or has the most gadgets. I just like the 'feel'.
As Matz says, we should never under-estimate the influence of language (aesthetics) on thought.
Python may be better engineered, but I feel nothing for it.
DHH is Danish, it's not an excuse, just an explanation. Rails should be like CPAN is to Perl, but it seems to think it has a higher function.

7:28 AM  
Blogger Muli Koppel said...

Hi Paul
It's great to hear from you again.
A good time to wish you a happy new year.

4:46 PM  
Anonymous Hafeez Bana said...

Hi Muli,

I am interested in your thoughts on Smalltalk. Here is the man, Alan Kay, himself speaking

and also here is a talk from OOPSLA by the same...


8:52 AM  

Post a Comment

<< Home