Newsgroups: comp.lang.scheme
Path: cantaloupe.srv.cs.cmu.edu!bb3.andrew.cmu.edu!newsfeed.pitt.edu!gatech!newsfeed.internetmci.com!sgigate.sgi.com!sdd.hp.com!apollo.hp.com!lf.hp.com!news.dtc.hp.com!hplntx!hplntx.hpl.hp.com!gjr
From: gjr@hplgr2.hpl.hp.com (Guillermo (Bill) J. Rozas)
Subject: Re: The value of static type-checking
Sender: news@hpl.hp.com (HPLabs Usenet Login)
Message-ID: <GJR.96Mar6111947@hplgr2.hpl.hp.com>
In-Reply-To: shivers@ai.mit.edu's message of 05 Mar 1996 23:35:22 -0500
Date: Wed, 6 Mar 1996 19:19:47 GMT
Reply-To: gjr@hpl.hp.com
References: <4gc83r$617@news.simplex.nl> <4gfrfi$m7u@camelot.ccs.neu.edu>
	<leavens.824995212@larch> <4gi3p0$kvh@agate.berkeley.edu>
	<leavens.825012724@larch> <GJR.96Feb22191305@hplgr2.hpl.hp.com>
	<BLUME.96Feb27152646@zayin.cs.princeton.edu>
	<GJR.96Feb28133746@hplgr2.hpl.hp.com>
	<BLUME.96Feb29105552@zayin.cs.princeton.edu>
	<GJR.96Mar4102338@hplgr2.hpl.hp.com>
	<qiju402yh2t.fsf_-_@lambda.ai.mit.edu>
Nntp-Posting-Host: hplgr2.hpl.hp.com
Organization: Hewlett-Packard Laboratories, Palo Alto, CA
Lines: 37

In article <qiju402yh2t.fsf_-_@lambda.ai.mit.edu> shivers@ai.mit.edu (Olin Shivers) writes:

|   P.S. I frequently get into arguments about the worth of static typechecking
|   here at MIT.  I notice that most Scheme hackers who don't buy it have never
|   written even one medium-sized program in ML.

Interesting and subtle ad-hominem attack.  To be consistent you would
discount the opinion of an economist criticizing Soviet-style
communism if he had never lived under it, or the opinion of a heart
surgeon who had never undergone heart by-pass surgery, etc.

At any rate, I am interested in your anecdote and would like to hear
more about it from Franklyn.  In particular I'd be interested in
finding out if he believes that total development time was shortened
by the process.

Just because a program works the first time you run it (which is not
uncommon for me for 300-500 line programs in whatever language I write
them) it does not mean that you got to the end point sooner.  You may
have spent more time trying to get it to run.

In particular, I find that static type systems encourage bottom-up
design, while I personally prefer top-down design.
Furthermore, in my top-down design and develpment I often run
far-from-complete programs.  I write stubs that do nothing (in Scheme
I even avoid writing them since I can run a program with unbound
variables) and incrementally test the program as it is being built
rather than wait until it is complete before I can even submit it to
the compiler.

Yes, you can use some tricks to accomplish the same in
statically-typed systems, but they are cumbersome.

I find that this incremental testing as a program is built is the
surest way to reach a working endpoint quickly, and I will find
objectionable any programming language/system that makes this way of
operating more difficult.
