Choosing Your Goggles: Ruby or Perl, Python or 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".
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.