sts2007

STIC General Meeting

May 1, 2007 19:51:33.079

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:

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

In our consulting practice, we can observe no consistent, discrete, definitive relationship of logical source statements to function points that has universal application. ...
Just remember: as with so many other things in life, if it seems too good to be true, it probably is.

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.

"In Java with modern tools, I'd guess that I actually type less than one character out of twenty that shows up in the source, and I rarely retype anything. Bugs tend to congregate in places where I had to do the typing, and cluster especially strongly in places I had to retype."

IntelliJ

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:

aColl do: [:each | each doSomething]
 

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

   for (MyObject myObject : aColl) myObject.doSomething();

Re: typically do it like this now

[] May 4, 2007 12:59:02.740

Isaac,

Cool, I never even knew this.

 Share Tweet This
-->