Sometimes I encounter things on the web that make me think what’s wrong with people. Some just seem to have to much time to insist on some mostly irrelevant point they dislike and use it to judge a whole technology by it.
Take this little example:
Someone, let’s call him Sebastian Sastre ;-), blogs about the top ten reasons why he chose Smalltalk to implement one of his projects and why he’s absolutely happy about his decision. Shortly after that, somebody links to the story on reddit and there people start to discuss in great lengths about why Smalltalk is completely, totally dangerous and just about to sink the world because it doesn’t implement mathematically correct operator precedence.
I agree that the fact that Smalltalk will incorrectly calculate 2+3*5 as 25 instead of 17 is irritating and strange. No doubt about that.
People I introduce to Smalltalk in my courses shake their heads about that, because they are busy soaking up all that’s new about Smalltalk and its environment and not ready to swallow that pill also.
But once they see how clear and concise the “everything is an object” princible and the message precedence rules in Smalltalk are, they simply take a note to rather add a pair of brackets too much than too little and accept it as a Smalltalk weirdness. Later I ask them to explain how #ifTrue: works, and those who get it start being fascinated by Smalltalk and objects, you can literally see it in their eyes. At the end of the course, nobody says “all good and well, but I cannot accept that Smalltalk can’t calculate”.
In the end, most Software bugs have other reasons than the fact that Smalltalk has no operator precedence, and even if so, this kind of error is so easy to find that it’s not worth talking about.
The funny thing about this whole reddit thread (or at least of most of it) is that it concentrates on some fact about Smalltalk that is such a minor drawback of conciseness and can be overcome so easily by placing brackets around mathematical expressions (which in my opinion improves readybility anyways). It’s somewhat frightening to imagine important management decisions being made on the basis of Statements like “But if it can’t even calculate a simple term, how could it possibly run our business? And don’t forget it’s not typed!” 😉