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.Ruby
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.Rails
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,
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
) 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.
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.
Rails isn't a language. The language for Rails is Ruby. Interesting article other than that. :)
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.
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.
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.