Fog Creek Software
Discussion Board




productivity tip

"Developers with power tools like Lisp and Smalltalk are hundreds of times more productive than developers with Java." - Reginald B-L, http://greenspun.com/com/braithwaitelee/other.html

I thought this an interesting statement. First I wonder how many hundreds exactly (has a silver bullet been found?). Let's say it's 200. Second I want to know if the asserter still believes this. Third I want some documentation. Fourth I want to see some examples that showed an application required 200 times fewer developers of comparable skill or was delivered 200 times faster.

la la
Tuesday, December 09, 2003

And Reginald has provided his email address in numerous places.

Take up your religious war with him privately.

Just me
Tuesday, December 09, 2003

Religious war? I don't recall ever having talked to Reginald, so I hardly see how there could be a war.

Reginald recently posted. I looked at his site. A lot of talk lately on this board has been about competing with outsourcing where productivity gains of this order will be necessary if we are to have any chance at competing. Thus, that a participant here knows about a method that will definitely create productivity gains of many hundreds is fantastic news, if there is evidence and not mere speculation. I'm serious -- if Smalltalk or lisp can increase my productivity by even a mere 100 times, I swear to you that I will stop what I am doing and switch to Smalltalk or lisp tomorrow.

la la
Tuesday, December 09, 2003

so.....

why don't you just go & try it?

not mr. johnson
Tuesday, December 09, 2003

For the same reason I haven't joined the Shree Bagwan Rashneesh's compound in Oregon -- I haven't yet seen evidence that the claims they are making about the benefits of what they are offering have not been overstated. Are the Bagwhan's disciples really blissful and in good heath their entire lives? Can they really levitate? I'd need to see that these claims were true before inveting a lot of time in it.

Likewise for the folks who are being visited by space aliens. They say that the aliens are going to make the world a better place and I should go to their seminars and read their books and learn all about the space aliens. Before I do so, i'd like to see some evidence that the space aliens exists and that if they exist they really are here to help us.

la la
Tuesday, December 09, 2003

so youve posted to tell us that you are not going to try using lisp or smalltalk?

thanks for the update :)

<g> Ill wait with baited breath until tomorrow when you can share with us how you wont be testing....java maybe? ruby?  I can hardly dare to guess...

FullNameRequired
Tuesday, December 09, 2003

Well you guys are just posting useless information and telling me to shut hte hell up. What is so threatening about my question? It has been asserted that there is a great way to get productivity gains in the many hundreds of times. This should be happy news that every one is excited by. Do any of you have experience in the productivity gains and can share with me your happy news or are you just a bunch of forum facists who like to bully others from asking relevant questions while contributing nothing meaningful.

i didn't post to say i am not trying smalltalk and you know it -- I specifically stated I was ready to switch tomorrow if the claims being made could be sumstantiated. And you think that means the purpose of my post is to say I won't use it? Apparently Enrish is not your first language. Classes are available though.

Now, does anyone actually have any information showing that Smalltalk and or lisp are many hundreds of times more productive han Java? If you don't have information about this question, then this is probably not the thread for you.

la la
Tuesday, December 09, 2003

I didn't find much actual measurements and studies by googling and that's why I'm asking.

here's one quote:

"Smalltalk always has been about twice as productive with half the developers." - Paul Baumann, Software Engineer, GemStone Systems, Inc.

I'm not sure if he's saying its 2 or 4 times more productive though, or exactly how he got his measurements.

Will smalltalk work for device drivers and FPS games? Can I write commercial Palm Pilot programs in smalltalk?

I learned some smalltalk in school years ago but I've never been able to figure out how to write shrink wrap applications in smalltalk with adequate performance. Also, smalltalk tools are incredibly expensive. But if it's 200 times improvement and not just 2 or 4, it's worth the money! Still, I think it's reasonable to ask for some hard data proving the claims before shelling out time and money.

la la
Tuesday, December 09, 2003

Or here's a good article by a java developer saying he prefers smalltalk as being more productive. How much so he doesn't say but he does give specific examples of things that are easier:

http://www.whysmalltalk.com/articles/raab/productivity.htm

> I have gotten pretty productive in Java, but I know I will never be nearly as productive in Java as I was (and probably still am) in Smalltalk.  It just isn't possible.

Of course, the general agreement is that C is less productive than Java and it is even said that "The productivity of C++ programmers approaches zero." This is interesting to me because it implies that the development time and resorcues of all C++ programs approaches infinity. Since most commercial software is written in C++, if this claim is proven correct it gives strong evidence that a time manchine has been invented, otherwise it would not be possible to ever deliver C++ based products.

la la
Tuesday, December 09, 2003

Clearly, la la is not aware that 87% of all quoted statistics are made up on the spot.

Daryl Oidy
Tuesday, December 09, 2003

Here's a guy who at least thinks hes found some hard data:

>We found that the tables Jones provides in his seminal book on
"Estimating Software Costs" ISBN 0-07-913094-1,on predicting how long a software project will take, match very closely with actual
results. The book takes into account a number of variables in terms of software project type, (i.e. business software vs operating
system), team skill as well as lowest cost or quickest delivery. The models are based on SPR's database of thousands of projects.
Since the models Jones provides predict project man hours fairly accurately when compared with actual results, we can then use the
models to test various "what if" sceanrios including differences in programming languages. The models that Jones presents seem to
show that typical Smalltalk productivity is about 6x that of typical Java productivity for the same type of large project.

-- from http://forums.cookienest.com/mobile/thread.php?topic_id=55

Information about the study he referenced can be found at:

http://www.theadvisors.com/langcomparison.htm

la la
Tuesday, December 09, 2003

Anyway, unless anyone has a better study, I'm inclined to think that Capers-Jones has nailed it. Small talk has a productivity level of 15, Java 6, C 3 and Objective C 12. Given that Objective C has been proven by a study to be near the productivity of smalltalk and also can be used to write FPS games and standalone executable and has the same performance as compiled C++ code (none of which applies to smalltalk), I would say that people serious about productivity switch to Objective C as soon as possible. However, merely doubling their productivity from Java programmers and quadrupling it from C programmers may not be enough to be competitive with outsourcing, especially since many of the big development houses in India are now becoming very adept at Objective C programming.

la la
Tuesday, December 09, 2003

What's the productivity level of Visual Basic ?

Kentasy
Wednesday, December 10, 2003

Hm, no response to that. Here's more to chew on:

Perl and Unix shell scripts have been measured to have the exact  same productivity levels as Smalltalk. This matches my experience.

Visual Basic 5 and Objective C have the same productivity level. I think this is true as well.

The productivity of LISP, at level 5, is low compared to all modern languages. Coupled with the fact that LISP is not relevant for commercial apps due to its inability to be distributed standalone and its poor performance, means that LISP would only be a choice of someone who is not competant or does not value productivity or practicality.

la la
Wednesday, December 10, 2003

Oh Kentasy! Thanks for asking! I answered while you were asking. Yes, great metrics aren't these? Nothing better than empirical evidence. Frankly, Visual Basic is an excellant choice and Joel's decision to use it is a well-founded and intelligent one, according to this study.

la la
Wednesday, December 10, 2003

I am not going to explain much about lisp in a context where I might not be corrected by more experienced lispers.  I don't know much about Smalltalk, except it seems to have inspired common lisp to create a deep OOP system.

- Study
http://www.norvig.com/java-lisp.html
- The two Kent Pitman interviews
http://slashdot.org/interviews/01/11/03/1726251.shtml
http://slashdot.org/interviews/01/11/13/0420226.shtml
- Quality book-in-progress explaining it a bit
http://www.gigamonkeys.com/book/
- Paul Graham's polemic
http://www.paulgraham.com/avg.html
- Bunch of peoples' personal anecdotes
http://alu.cliki.net/The%20Road%20to%20Lisp%20Survey

Those are reasonably bias-free links, except the last two.  I personally tried answering this for myself once when I was still learning it, though I would explain it differently now:
http://groups.google.com/groups?dq=&hl=en&lr=&ie=UTF-8&oe=UTF-8&safe=off&threadm=5627c6fa.0311151254.40411781%40posting.google.com&rnum=59&prev=/groups%3Fq%3Dg:thl1517392331d%26dq%3D%26hl%3Den%26lr%3D%26ie%3DUTF-8%26oe%3DUTF-8%26safe%3Doff%26selm%3D5627c6fa.0311151254.40411781%2540posting.google.com%26rnum%3D59
(Hmm, that was less than a month ago.  Time stands still.  Definitely biased, but I was among friends.)

Tayssir John Gabbour
Wednesday, December 10, 2003

Thanks Tayssir, much interesting reading there.

la la
Wednesday, December 10, 2003

Really like this one as it has hard data to complement the other study:

http://www.norvig.com/java-lisp.html

Check it out everybody:

>His results show that the resulting Lisp programs ran faster on average than C, C++ or Java programs (although the fastest Lisp program was not as fast as the fastest C program), and that Lisp programs took less development time than the other languages.

So lisp is in the running!

Also that article references an earlier study that showed that:

> The conclusions showed that Java was 3 or 4 times slower than C or C++, but that the variance between programmers was larger than the variance between languages, suggesting that one might want to spend more time on training programmers rather than arguing over language choice.

VERY interesting to me that some studies are showing speed of development is slower in Java than C.

And of course it finishes with my favorite usual tidbit about programmer skill being the real overwhelmingly dominant factor in any comparison.

la la
Wednesday, December 10, 2003

Eh... wasn't he talking about efficiency?  It doesn't seem right that Java should be 3 to 4 times less productive than C/C++.  It sounds about right for efficiency.

I would reply to that article -- that sure is a stupid ass program to write if you're trying to prove something about workplace productivity.  Most programming is nothing like that.

Roose
Wednesday, December 10, 2003

I tell you what the deal is with the supposed productivity boost:

About an year ago, I wanted to try a powerful dynamic scripting language such as Perl and Python.

Perl and Python programmers say that they program very fast.

I have studied Python, which appealed to me because it's a very clean OOP language.

Indeed, it gives you a productivity boost.

But I'm a Delphi programmer, and I compared Delphi with Python.

When I write the guts of the application (internal code which contains algorithms, data processing, etc, but no user interface), then Python is faster.

Let's say that for code which in Delphi takes 100 hours, in Python it takes only 80 hours (and you get that fantastic feeling where you ask yourself - "what, is this program already done?").

But then I have to write the user interface, too.. and this is where Delphi shines.

What in Delphi takes 20 hours, in Python it make take 50 hours...

So, totals:

in Delphi, the project takes 100+20 = 120 hours

in Python, the project takes 80+50 = 130 hours

:(

So, Python still has lower productivity than Delphi.

The problem is - belive it or not, I don't want to start a religious war here - Delphi is way more productive than many other languages, so if you switch to Python (or Delphi) you may indeed get a productivity boost.

MX
Wednesday, December 10, 2003

http://www.paulgraham.com/paulgraham/avg.html

"Our hypothesis was that if we wrote our software in Lisp, we'd be able to get features done faster than our competitors, and also to do things in our software that they couldn't do. And because Lisp was so high-level, we wouldn't need a big development team, so our costs would be lower."

"What were the results of this experiment? Somewhat surprisingly, it worked. We eventually had many competitors, on the order of twenty to thirty of them, but none of their software could compete with ours."

and my favorite quote from this article:

"Our competitors had cgi scripts. And we were always far ahead of them in features. Sometimes, in desperation, competitors would try to introduce features that we didn't have. But with Lisp our development cycle was so fast that we could sometimes duplicate a new feature within a day or two of a competitor announcing it in a press release. By the time journalists covering the press release got round to calling us, we would have the new feature too."

www.MarkTAW.com
Wednesday, December 10, 2003

I agree that Delphi is excellent if you want to write a windows app. No question about it, it's bloody brilliant.

However, it seems the focus is less and less on windows apps, and more and more on web based apps.

Delphi's UI advantages don't come into the play there, and other languages/environments can beat it.

Also for writing a quick command line script to one off process data, Python or Perl or something along those lines is probably going to be much quicker than Delphi, since that's an area Delphi doesn't really aim for.

Sum Dum Gai
Wednesday, December 10, 2003

The thing about Paul Grahams claims is that he wrote the book on lisp (or at least wrote *A* book on Lisp) so is something of an expert and is therefore far more productive then say, me (who knows a little lisp but has never used it in anger).

Real productivity gains come from knowing your problem space inside out and knowing your chosen language equally well, the choice of language is really of secondary importance.

bil
Wednesday, December 10, 2003

Delphi 7 contains a full license of IntraWeb.

IntraWeb allows you to develop web sites in a very RAD manner - you drop components on a web form, write event handlers, etc - true RAD for the web, exactly like ASP .NET.

About Perl and Python being more efficient than Delphi when creating short command line utilities - I completely aggree with you.

However, my work consists mainly of applications which must also have a GUI, so Delphi is clearly a lot more productive.

MX
Wednesday, December 10, 2003

Claims for language productivity in software are somewhat like saying: "If you need a Vehicle, then a Volkswagen Golf Diesel is the best." This might be true if you're interested in fuel economy, but even then a hybrid vehicle might be better if you only ever drive in traffic. If you have a family of eight, then it's clearly not the 'best' car. If you need a vehicle in order to move 25 tonnes of concrete around every day, then you need a truck. If you need a vehicle to win the Formula 1 Grand Prix... etc.

The 'best' language will be a function of the problem space, the type of organisation employing it, the nature of the work the organisation does (for example, do you build one applicaiton as a product and revise it continually over the years, or do you build many one-off applications for diverse clients?), and so on. Additionally 'good' developers (developers who are skilled in a language, can follow a specification, can code defensively, can listen to a client, can think ahead...) are so many times more productive than less well rounded developers, that language choice (assuming comparing like with like, say Java and C# for web apps, not Java and COBOL) makes very little difference.

Software development means very different things to different people. That's why there is a place for Extreme Programming and a place SSADM in the world. That's why we *have* different languages.

mushroom
Wednesday, December 10, 2003

Language choice makes a HUGE difference for an individual.

For example, if I choose to use Delphi or Python, I will be a lot more productive for my normal tasks than if I choose FORTRAN, for example.

For an organization, choosing what language to develop in, and then either training developers in that language, or hiring new developers who know that language can mean a large productivity boost.

MX
Wednesday, December 10, 2003

I remember once seing the results of some big British Telecom study where they tested and measured productivity in various programming enironments. I can't remember their Java, Smalltalk or Lisp results, but I do remember that in the summary chart VB was way out in front of everything else.
Any BT persons here can give more details?

Just me (Sir to you)
Wednesday, December 10, 2003

Hehe, I can imagine it now, BT writing a huge monitoring system in VB. Even VB fans have to laugh at that.

Anyway, you can hardly put delphi and python side by side for a quick script, can you now? Best too for the job, to each their own and all that, but these threads to give some great articles that are worth reading, once the religious wars don't start they are ok.

fw
Wednesday, December 10, 2003

Capers Jones gives Lisp a low score, but what he's talking about is not modern Lisp. For that, you should look at the entry for CLOS, the Common Lisp Object System. It gets the same score as Smalltalk. Why does he put them both in? I don't know, but a fair guess is that he made the table at a time when the leading commercial Lisp vendor was trying desperately to avoid mentioning Lisp in their promotional materials; they talked instead about CLOS, "Dynamic Objects" and so on.

I'm pretty skeptical about Capers Jones's table, though. Note, for instance, that

"KL, CLOS, TWAICE, and FASBOL are examples of languages that were assigned tentative levels merely from descriptions of the language, rather than from actual counts."

I suspect that there are a *lot* more languages for which that's true.

And it's pretty vague about what programs were compared for the languages that were allegedly evaluated by more reliable means. For instance, he claims that "LISP" (whatever version of Lisp, exactly, he has in mind) "produce[s] the same source code count as COBOL" (for "the same program"). He says the same about APL, FORTH and Prolog. Where did he find a program in any of those languages that's doing the same as a COBOL program?? I'm afraid my bullshit detector goes off the scale at that.

Gareth McCaughan
Wednesday, December 10, 2003

Just remember, HTML is more powerful than all of the languages being discussed here, according to the linked survey.

Devil's Advocate
Wednesday, December 10, 2003

I wish someone had told me about his, I seem to have missed all the fun!

Reginald Braithwaite-Lee
Wednesday, December 10, 2003

Ah gee Reginald there's still time. May we assume that your figure of 'hundreds' was an outlandish exaggeration made in an unguarded moment? It's ok though, I've learned a bit trying to document your 'crazy talk' so it's made it all worthwhile. :)

---

> I'm pretty skeptical about Capers Jones's table, though.

Sure it's not perfect but remember - imperfect data are better than no data. I have a quote about that by a famous person somewhere actually...

> Note, for instance, that "KL, CLOS, TWAICE, and FASBOL are examples of languages that were assigned tentative levels merely from descriptions of the language, rather than from actual counts."

Sure dude, but he does disclose it and it's irrelevant because no one in the world has ever heard of those languages anyway. TWAICE? FASBOL? What the heck? It's like one of those lists that shows how to say 'hello' in 7000 different spoken languages, 6900 of which you've never heard of. We can understand that for some of the ancient ones, the pronunciation is speculative, but it's ok since they're dead languages.

>I suspect that there are a *lot* more languages for which that's true.

The languages I'm discussing here that are relevant, I                      believe his data to be based on something real. I don't have his book. Should I order it on amazon and get back to you with the footnotes or would you like to? In any case, certainly we have some real empirical data that shows that productivity differences between languages might be on the order of 2-10 times and 10 only for highly domain specific languages (Excel has a level 50 - I do believe that I can do spread sheet stuff 10x faster in Excell than C++, but I can't write a video game 50x faster in Excel than in C++).

Seems like most modern languages are 6-15 and the differences could be easily overwhelmed by programmer experiece, skill, and how tired they are that day.

Other factors abound too, these numbers are going to be domain specific (did the 'large' projects evaluated by Jones have a UI? Were they real time games? I bet they were all accounting systems, but even so, the differences might still be relevant for that non-UI coding part of the task, which is maybe 5% of expended total project effort, which knocks down the total gains possible pretty considerably.)

Has a study been done on differences between equally qualified teams working to make a UI-intensive shrink wrap app usiing Delphi, VB, Objective-C, Smalltalk and Lisp, all using the best versions available with te most modern IDE? I would bet money that with a large enough sample, the total effort productivity differences between all of these would be less than 3, and the range would have so much overlap that you couldn't draw any corclusions other than use the best language for the task at hand, which is probably use the language that your developers are personally most expert at.

la la
Wednesday, December 10, 2003

the real question is: which software development forum is most successful at curtailing programmer productivity? joel on software? slashdot? good ol' usenet comp.* groups?

_
Wednesday, December 10, 2003

"it's irrelevant because no one in the world has ever heard of those languages anyway" -- no, one of the languages in that list is CLOS, which is what Capers Jones is calling modern Lisp, which is one of the languages we're discussing right here in this thread.

I completely agree that the differences between languages can be overwhelmed by differences between programmers. Give me a real wizard writing in plain ol' C over a moron in Smalltalk or Common Lisp, any day. I'm not trying to defend the "hundreds of times more productive" claim, which might be true for some very specific parts of some very specific sorts of application but is certainly untrue for realistic problems.

It's also true that not all of a software development project is actually concerned with designing and writing code, so even if you got a 1000x improvement in productivity on those parts you might have trouble showing (say) a 5x improvement, or even a 2x improvement, in overall cost or time.

I agree with "la la"'s guess that the programs studied were all doing accounting and similar tasks. Which isn't exactly designed to give a fair view of (to take a few very different languages) C, Lisp, Forth or Prolog.

"use the language that your developers are personally most expert at" -- yes, definitely, but what if the question isn't "what shall we use for this project that needs doing right now?" but "what shall I learn now so as to be able to be more productive in a couple of years' time?"? If you're fixed firmly on the present then you should just use whatever you work best with. If you're considering the future, you should think about learning new stuff. (Or perhaps, in the case of Smalltalk and Lisp, not-so-new stuff that's been neglected.)

Gareth McCaughan
Thursday, December 11, 2003

Oops! You're right - he should have done better on CLOS than to make speculations since there are CLOS applications out there to gather metrics from. Keep forgetting that CLOS is CLOS.

Hey, I only learned Objective C a few years ago when I and to do some NeXT stuff and here it is making a comeback, so I'm not adverse to productivity increases from learning new languages. I sort of doubt that improving my ssmalltalk or lisp skills, or investing in environments for same is going to get me more productive than I am now overall. Actually, what I learned from this thraed is that I am going to tackle VB next -- I had no idea it was so productive. Looks like its the best way to go for medium sized apps. Or maybe Delphi I guess. I do know pascal and Delphi can go right up to the big projects from what I've heard (agree with the common window that Delphi can handle large projects whereas VB can not?) So you'll be seeing me on them vb forums for the next year learning a new highly productive language.

Sigh - only last week I was one of the rabid vb-haters but I'm going to check it out.

la la
Thursday, December 11, 2003

*  Recent Topics

*  Fog Creek Home