Reading this is somewhat akin to listening to a bunch of Grannies yacking about a friend who’s dared to suggest blue rinse doesn’t look quite as good as everyone says and chose pink rinse instead.
Seems that the real mistake Joel’s made was to dare to say anything but “it rocks” about Ruby.
A valid criticism might be he’s based is concerns on second hand sources, although that Ruby has performance issues above and beyond what you’d expect for a dynamic language is something like an accepted wisdom.
But it strikes me that performance wouldn’t be the biggest issue for running FogBugz on Ruby: bigger (given earlier posts) would be that customers need to install something else (mod_ruby, mongrel, lighttpd / FastCGI, whatever), that they’re not already using, to allow the app to run. Beyond that, there’s really nothing (technical) that justifies the lynch mob cries of “lunatic”.
“You couldn’t possibly have heard it, but that was the sound of fifty thousand programmers’ heads simultaneously exploding. Writing your own language is absolutely beyond the pale.”
If we did a straw poll of those 50,000, what percentage do you think we’d find have written some kind of HTML templating language that ended up being Turing complete? What about the really smart guys who hid SQL behind their ORM api, then invented their own object query language, looking suspiciously like SQL then run around na ked whooping “mini languages rock!”?
Given that Wasabi seems to be a superset of VBScript, it may well have been relatively easy to implement. It’s easy to find freely available VBScript grammar rules, you can use as a starting point ( for example a href="http://www.notebar.com/GoldParserEngine.html"http://www.notebar.com/GoldParserEngine.html/a - at the bottom). And being a superset of VBScrip eliminates 99% of the language design questions. It’s “just” a matter of adding cool functional language features - and Joels not the only one e.g. a href="http://chumsley.org/jwacs/"http://chumsley.org/jwacs//a
“1. I don’t see how Wasabi-- a language that, per Joel, compiles down to VBScript on Windows-- could actually be faster than Ruby.”
To me it’s not entirely clear if Wasabi is directly executable or whether it only produces VBScript / PHP that you execute.
But if it is directly executable and it’s executing under .NET, it could very well be faster than Ruby (as in C-Ruby). The Phalanger guys, who re-implemented PHP from scratch to run under .NET (are they nuts?) claim significant performance gains: a href="http://www.php-compiler.net/Benchmarks.htm."http://www.php-compiler.net/Benchmarks.htm./a
And from everything Joel’s said, Wasabi isn’t actually shipping to customers - it’s the generated VBScript / PHP that ships. So if it is executable and slow, it’s only annoying the developers.
“2. If performance is so critically important in this section of the code, why wouldn’t Joel simply build that section of the code in a compiled language and call it from the other language? Am I missing something here? Is there some law that states all code for a web application must be in the same exact language?”
Yes you’re missing something and yes there is a law: if customers have to install something non-standard, think carefully. To grasp that point, you really need to look at something like this: a href="http://freshmeat.net/projects/saxy/"http://freshmeat.net/projects/saxy//a
“The primary goal of SAXY is to provide PHP developers with an alternative to Expat that is written purely in PHP. Since SAXY is not an extension, it should run on any Web hosting platform with PHP 4 and above installed.”
These guys re-implemented a PHP C extension in PHP because they couldn’t rely on it being always available. Kind find a thousand more examples of that nature…
And Joel states the aim of platform independence - that compiled libary needs to work under Win32 / IIS and LAMP. So what are be talking here? Some C that can be compiled both into COM component and a PHP extension? For drawing graphs? Writing Wasabi starts to look like a walk in the park by comparison.
“3. Justifying any language choice based on one tiny section of the code makes no sense whatsoever. […] How does this make any business sense whatsoever?”
It’s generating a chart right? Who likes charts most? Managers and bean counters - you know - the kind of people that control budgets / pay for software. Go figure.