From: Stephen White Date: 2001-01-16T22:56:58+09:00 Subject: [ruby-talk:9375] Re: 101 Misconceptions About Dynamic Languages On Tue, 16 Jan 2001, Christian wrote: > Please describe to me the practical difference between an 'interpreted > language' and C++ with hot-swappable DLL's (without resorting to lame > excuses about compile times, given Mr Moore's hueristic). There's no point arguing about what each language can do and how each language implements its features. Languages are like meta-quines. It's possible to write a C++ compiler in Ruby, and it's possible to write a Ruby interpreter in C++. This is sufficient to demonstrate that any powerful feature named in one language can be replicated in the other, including speed. Languages are like vehicles. I love my motorbike. I'm passionate about them. I buy magazines and test ride all the new models that come out. The bike is so far superior to a car in any number of ways. The latest Ferrari is indistinguishable from a speck of fly shit in my rear view mirrors. I can go faster, stop faster and turn faster. Yet I still have a car for where a bike isn't suitable. When I go somewhere, I make a choice to ride or drive. My choice is based on the task I'm accomplishing. If I'm going to work, I'll take the bike. If I'm carrying a new TV home, I'll take the car. I'm biased. I'll take the bike when it would have been a bit easier to take the car. I want that extra speed and power. This all has a corresponding cost. To turn left, a Volvo driver lazily explores his nasal cavity with his forefinger and erratically turns the steering wheel to the left. For me to do the same requires me to shift my weight to the left, wait for the bike to settle, counter-steer the bike to the required angle of bank and balance myself on my left foot while holding with my right leg. This is a cost I'm prepared to pay on smaller rides. Given the task of getting from Adelaide to Melbourne and back, a round trip of about 1700km, I took the bike. My back was killing me, my bum was numb, and the mental and physical fatigue of the journey culminated in a highside which smashed my right leg up and stopped me from walking for a year. I drove to Melbourne and back in my car a couple of weeks ago. I sat back listening to Chris Isaak tapes, air conditioner going full blast, and erratically wobbled the steering wheel around as required, like a Volvo drive minus the spelunking. It was more boring, but it was easy. > template > void foo(const Ty& X) > { X.bar(); } > > template > void foo(Ty& X) > { X.bar(); } Squeeze the front brakes hard, apply back brakes, clutch in, rev engine to prevent stall, downshift 3 gears, match engine speed to gearbox, let out clutch, settle, tip bike over while releasing brakes, apex, rev up, change up gears while accelerating. > class UnnecessaryScopeGivenNamespaces > def foo(X) > X.bar > end > end Brake for corner, go around, accelerate. I'm even better on my feet. I can go around corners on on dirt, through water, uphill, up and down stairs, and in tight spaces that a bike can't fit into. But while my walking self is niftily zapping around corners, my bike riding self is exploring that outback country town, and my car driving self is covering the vast distances beyond. If I see you riding along while I'm driving interstate, I'll wish I was on a bike too. But I'll also know the back pain you've got, the tired eyes, the mental fatigue and the other aches and pains that you've come to expect as part of travelling. Try something different. It doesn't have to be that hard. -- steve@deaf.org