STIC General Meeting
Here we are at 6 PM on Tuesday, and it's time for the STIC event. Bob Nemec has introduced Georg Heeg, the new executive director of the council - you can read Georg's thoughts on this over here, on his blog. Here's his evening summary:
The STIC board is made up members from Cincom, Gemstone, and Instantiations. So - what does STIC do now?
- Organizes Smalltalk Solutions
- Provides Websites
- STIC does some level of user group coordination
STIC has a slightly different mission from user groups: STIC tries to raise the awareness of Smalltalk beyond the Smalltalk community. What are Georg's goals?
Improve awareness and visibility of Smalltalk in the industry
Bear in mind: STIC is a volunteer organization. What you do for STIC you do for Smalltalk in general. So back to Bob Nemec, for what happened over the last year.
A year ago, we had some issues - finances were messy, websites were stagnant or non-existant. The finances are now documented, and there are websites:
We lost stic.org - there were issues with our domain registrar. The new STIC site can take payments for individual members. Upstairs, there's a Squeak booth (set up with the help of Chris Cunnington, a complete Smalltalk newbie). Which points the way to the future: STIC can help mostly by getting help from the Smalltalk community :)
Next, a few words from each board member - my thoughts are all over my blog all the time, so no need to repeat them here :) Ed Klimas (Instantiations) spoke about the actual cost (in terms of function points) of converting an application from Smalltalk to something else (and, as I've said here before, such conversions are rarely justified, regardless of which languages and directions are involved). Ed has data behind that point, that come from a variety of sources - Steve McConnell and Capers Jones being two of them.
So using that, given a 3000 function point system, Smalltalk will take 50-60 person months, while Java will take 300 person months. The dollar cost differential there is obvious. At a micro level, Java will give you numbers on the order of 20 function points per man month, even for high end developers. Smalltalk can crank you as high as 100. Ed has discussed these numbers directly with Capers Jones, and he wasn't surprised. Moreover, Java and .NET developers aren't cheaper than Smalltalkers anymore :)
Crunching Ed's numbers, for a new application, Smalltalk will be 2x to 3x cheaper in terms of $$. What about conversion? Bear in mind that testing now consumes half of the development schedule - and in a conversion, testing is going to be a very big piece. Now we get to errors per function point:
- Smalltalk: 0.14 per function point
- Java: 0.50 per function point
Note how much "static typing" helps :) Further, Eiffel on that list was at 0.21 per function point (Haskell was at 0.18). So much for that. So: an experienced developer injects 100+ defects per KLOC. Only half will be found by a compiler - so in a typical conversion - you end up with more code (and thus, more errors). Which gets back to something I've said: a conversion forces you to stand still (feature-wise) for the duration of your conversion, and it adds errors you don't have now. Bottom line: Converting from Smalltalk to X (whatever X is) makes no economic sense. The slides will be available on the Instantiations site shortly.
Technorati Tags: smalltalk


Comments
It's the femoral artery. Putting a band-aid on it won't help
[Rick] May 1, 2007 20:08:59.000
Throwing around numbers that anybody can just make up isn't going to stop the bleeding. Smalltalk isn't evolving and that's why everybody is converting to Java and .NET. It's time for STIC to do some emergency triage, because the patient is fading fast.
nice and well
[Claus] May 2, 2007 3:49:23.000
However, Smalltalk suffers from one problem: no real Multi-Threading support.
Sure having separate images bound to separate cores (CPUs) does help, but it is something to be done manually hence slow. In Java, for instance, you just do "public class myClass implements Runnable" then call start() .
Something like that is missing, preferably in a generic way working for all Smalltalk dialects.
Claus
a typo in the third URL?
[] May 2, 2007 11:45:57.000
http://www.smalltalkindustrycouncil.com/
responds with: 502 Bad Gateway
caveat emptor
[Isaac Gouy] May 2, 2007 12:09:35.000
Here's part of the page-long caveat emptor listed on SPR's (Capers Jones') website
voodoo from 1999
[Isaac Gouy] May 2, 2007 14:42:48.000
errors per function point
Those are the same numbers Ed Klimas presented at Smalltalk Solutions '99 - were the lines of code per function point numbers the same as well?
Java vs Smalltalk
[] May 2, 2007 15:34:22.000
You are comparing the Java language to the Smalltalk language, and that is not how the comparison should be made any more. You need to compare the productivity of developers as they acutally work. This means Smalltalk with the Refactoring Browser, and Java with Eclipse. Smalltalk is a great language with a good IDE. Java is an ok lanaguage with a great IDE. I have found that Java/Eclipse is a very productive environment.
Sorry, guys.
Conditioning
[Patrick Logan] May 3, 2007 1:29:49.000
Problem is so many people are using the ok java language with eclipse that they begin to feel eclipse is great.
It's not. At least not if you've used smalltalk or other greater-than-ok languages.
Sorry guys.
Problem is ...
[Isaac Gouy] May 3, 2007 12:20:27.000
Patrick, the problem is desperately grabbing at voodoo lines of code per function point numbers as though Smalltalk has been written with Notepad over the last 30 years, as though Java code is written with Notepad now.
Re: STIC General Meeting
[ James Robertson] May 3, 2007 12:50:15.000
Comment by James Robertson
Regardless of who does the typing - you or the tool - more lines of code will mean more bugs. Just as more lines of prose will mean more grammatical errors...
More Lines of Code = More Bugs?
[] May 3, 2007 13:17:24.000
Maybe that's true in Smalltalk, where you have to type everything, and you don't see your errors until you try to run. In Eclipse, I don't have to type everything; Eclipse will type stuff for me. And if I make a mistake, Eclipse will tell me instantly what, and precisely where, my mistake is. You can trash static typing all you want, but it does reduce errors, and reduce development time. There may be more lines of code. I'll grant that. But it was long ago that we stopped measuring lines of code for anything. Didn't you guys get the memo?
Re: More Lines of Code = More Bugs?
[ Michael Lucas-Smith] May 3, 2007 14:12:06.000
Comment by Michael Lucas-Smith
We're not talking about typos here. We're talking about semantic/logical errors in what the program does. If you do a loop over a tree structure - did you get it right? .. if it's a single call to say "do the loop" then you're safe. If you hand code that loop every time you do it then you're not safe. It's about encapsulation of patterns. The more expressive your language is, the less code you have to write to achieve the same functionality with a lower likelihood of making a mistake.
Re: STIC General Meeting
[ James Robertson] May 3, 2007 14:20:51.000
I'm pointing out something simple - and if you care to deny that more actual lines of code will contain more actual bugs, I'll have to consider you delusional. Do you also believe that Eclipse and/or IntelliJ obviate the need for testing?
Re: More Lines of Code = More Bugs?
[] May 3, 2007 14:44:55.000
Ok, Michael, you are right. Every single IT manager on this planet who has made the decision to use Java, and not Smalltalk, in their shop, is totally wrong. Their thought processes are broken. They cannot see the obvious benefits of Smalltalk. They cannot see the obvious drawbacks to Java. They cannot see the obvious drawbacks to Eclipse. They should all be fired. Only the Smalltalk devotees are right.
And James, you are putting words in my mouth. Well, not in my mouth; in my comment box. Of course you need to test. Nobody has ever claimed differently. I am saying that the automatic while-I-type type checking that Eclipse provides will eliminate the syntactical testing I have to do. It eliminates a lot of the Homer Simpson "D-OH!" moments in my first few live tests, where I pass a Double into a method that expects a String. I still need to test to ensure that my program meets the requirements of the business. That is necessary regardless of what language you use. Obviously. Even Rails, the "Next BigThing"(tm), requires testing. Whoever comes up with a language that doesn't require testing, will become a billionaire overnight. Hasn't happened yet. I suspect it won't.
Herd Behavior...
[ James Robertson] May 3, 2007 15:05:13.876
Comment by James Robertson
Developers and Managers tend to engage in a lot of "herd" behavior - I suppose this extends beyond software, for that matter. "Whatever most people are doing" seems safer. Anything outside that box - regardless of the possible benefits - is too risky.
To be honest, most shops that fail regularly don't do so because they made a bad choice as to language/environment - they fail because their process sucks eggs.
Re: Re: More Lines of Code = More Bugs?
[ Michael Lucas-Smith] May 3, 2007 18:03:10.320
Comment by Michael Lucas-Smith
So thanks for putting words in /my/ mouth there 'anonymous'.
encapsulation of patterns
[Isaac Gouy] May 3, 2007 18:51:29.880
Michael Lucas-Smith wrote If you hand code that loop every time you do it then you're not safe. It's about encapsulation of patterns.
Thank you for giving a specific example.
Now why should we think that someone writing in Java would be more likely to "hand code that loop every time" (instead of writing an Iterator and using it) compared to someone writing in Smalltalk?
(Maybe the Java programmer would just use the Eclipse AbstractTreeIterator.)
STIC web sites
[ anonymous] May 3, 2007 21:15:06.029
Comment by anonymous
The correct URL is http://www.smalltalkindustrycouncil.org
Re: encapsulation of patterns
[] May 4, 2007 10:08:12.719
Isaac,
Probably because most Smalltalk programmers think the way you loop through a collection in Java is like so:
for (int ix0; ix < aColl.size(); ix++)
{ MyObject myObject = (MyObject)aColl.get(ix) ;
myObject.doSomething(); }
And that used to be the way it was done, because that's how it was done in C and Java descended from C. You typically do it like this now:
Iterator anIterator = aColl.iterator() ;
while (anIterator.hasNext() )
{ MyObject myObject = (MyObject)anIterator.next() ;
myObject.doSomething(); }
That seems much cleaner. And more object-oriented.
Re: STIC General Meeting
[ David Buck] May 4, 2007 11:37:58.038
Comment by David Buck
Equivalent Smalltalk:
It seems even cleaner and even more object oriented.
loop over a tree structure
[Isaac Gouy] May 4, 2007 11:57:40.121
David, I don't see how that helps demonstrate Michael's comment about encapsulation of patterns.
Re: loop over a tree structure
[] May 4, 2007 12:09:48.769
Neither do I. If your point is that Smalltalk can do the same thing in fewer lines of code, then let's just use Lisp and be done with it.
typically do it like this now
[Isaac Gouy] May 4, 2007 12:30:05.688
As Java 5 appeared in 2004, maybe these days a Java programmer would write something like
Re: typically do it like this now
[] May 4, 2007 12:59:02.740
Isaac,
Cool, I never even knew this.