If you could make Slang suck less, what would you change?
On Oct 4, 2010, at 8:47 PM, Eliot Miranda eliot.miranda@gmail.com wrote:
On Mon, Oct 4, 2010 at 1:04 PM, Colin Putney colin@wiresong.com wrote:
On Mon, Oct 4, 2010 at 11:56 AM, Andreas Raab andreas.raab@gmx.de wrote:
In practice, there is a *huge* advantage for porting if all you need is a C compiler and a bit of knowledge about the underlying OS support.
This brings up a question that I've been wondering about for a while. How useful is Slang these days?
I can totally see how it would have been faster to get the new VM up and running in Apple Smalltalk in the first place, but I'm wondering if these days it's more trouble than it's worth. Most dynamic languages (eg, Ruby, Python, Perl, Javascript) are implemented in straight, idiomatic C and benefit a lot from the fact that many, many people already have the skills needed to work with the language and toolchain.
In contrast, the Squeak VM is written in a language that almost nobody knows, using tools that almost nobody understands. Outside of the current maintainers it's a very short list, and many of the people on it aren't active in the community anymore. "Implemented in its self" is kind of neat, but as a practical matter, Slang is not Smalltalk, and a developer skilled in both C and Smalltalk still has a lot to learn before he can contribute to the VM.
So here's a question to the folks that are actively hacking on the VM: is Slang still beneficial in your day-to-day work? Do you write and debug using the simulator? Is it worth the high barriers to entry for the uninitiated?
Slang sucks. Developing in Smalltalk is great. I like using Slang to being continually hit over the head by an ungiving guru; plenty of pain but no enlightenment. The problem is you write Smalltalk that works, push it out and when it doesn't work due to some internal Slang issue you're in a lot of pain. Do you try and fix Slang, do you mangle your Smalltalk to function within its limitations (and forget to comment why, e.g. ::
loadNewPlugin: pluginString | plugin plugins simulatorClasses | transcript cr; show: 'Looking for module ', pluginString. "but *why*??" (#('FloatArrayPlugin' 'Matrix2x3Plugin') includes: pluginString) ifTrue: [transcript show: ' ... defeated'. ^nil].
Seriously, if anyone knows why these two are disabled *please* let me know.
Yes I write and debug using the simulator. Yes it is worth the high barriers. But Slang is still a massive, fragile hack.
HTH Eliot
Colin