Mike is currently…

snowboarding in Banff

Pragmatic Version Control Using Subversion

[ subversion book ]

obligatory book plug

[ syndicate ]

rss 2.0 feed for boy meets world

[ contact ]

drop me a line

[ about ]

this is mike mason's weblog

[ eskimoman.net ]

original web pages


Thu, 13 Nov 2003

This is an archived blog post. I've switched to using WordPress as my blogging software and have not migrated all my old posts. I believe strongly in not letting an old link die, so this page continues to work. Please do visit mikemason.ca/blog to read newer posts.

If it barks like a dog…

I’ve been playing around with some new languages recently. I started learning Ruby, mainly because lots of people whose opinions I respect think it’s great, and because the guys are using it for the DamageControl build system. I started learning C# when I went on a .Net training course a couple of weeks ago, and I’ve also taken up Spanish.

The connection between all of these languages is that they were designed. Ruby was produced by a lone-genius-programmer in Japan, C# by a committee in Redmond, and Spanish by a bunch of priests in the middle ages. The differences in heritage are certainly reflected in each language. Ruby’s clean, concise, and really very nice to work with, once you get your head around some of its constructs. C# is, well, lots nicer than C++, has some features that Java really should have had, but overall has a bunch of cruft that is simply there to satisfy the vast set of customers Microsoft has. Doesn’t make for the cleanest overall design, and certainly means you can write very bad code that’s unreadable by others (but then that’s true of most languages). Spanish was invented by Catholic priests, is related to Latin, and was actually designed not to be too easy to learn – the Church didn’t want just any old peasant being able to pick it up. Must have been weird, inventing a language and then teaching yourself to speak it – Esperanto anyone?

Unlike Java or C#, Ruby doesn’t have interfaces and is dynamically typed. Because of this, you can’t go casting objects in the traditional sense. Given an Animal, you can’t check if it implements Dog or Cat, it just sits there waiting for you to ask it to do stuff (which you do by calling methods on it, or as the Ruby metaphor would say, sending it messages). I was discussing this with a colleague, and realised that in the past I’ve been very rigid and unhip in my thinking. If I ask you for a dog, and the thing I get back looks like a dog, barks like a dog, and smells like a dog, do I really care if it implements Dog? I’d probably be upset if it miaows, however…

Posted 10:31, 13 Nov 2003.  

Mon Tue Wed Thu Fri Sat Sun

[ tim bacon ]

musings of an xp coach

[ ian bourke ]

enhancing core competencies since 1976

[ martin fowler ]

a cross between a blog and a wiki

[ alan francis ]

agile != good

[ paul hammant ]

part of the problem…

[ darren hobbs ]

the blog formerly known as pushing the envelope

[ mike roberts ]

on life and technology

[ chris stevenson ]


[ joe walnes ]

joe's new jelly

[ rob baillie ]


Powered by Blosxom

Registered plugins: SmartyPants, antispam, bloglinks (v0.2), calendar (v0+6i), pluginfo (v1.0), and userstatus (v0.1)
This work is licensed under a Creative Commons License.