🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.misc
Article #3570

Re: Run-time Type Errors in Smalltalk

#3570
From: Barry Margolin
Date: Thu, 18 Apr 1991 03:59
47 lines
2546 bytes
In article <8189:Apr1719:16:2091@kramden.acf.nyu.edu> brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes:
>Goofus uses dynamic typing. Gallant uses static typing.
...
>Management fires Goofus.

>
>Goofus says static typing catches so few errors that they probably all
>_would_ be caught by testing. Gallant simply catches all the errors.
>
>Goofus finds 95% of the typing bugs during testing. Gallant finds 100%.
>

Goofus uses dynamic typing with automatic runtime type checking.  Gallant
uses static type checking, with no runtime type checking (except perhaps
that explicitly programmed by Gallant, e.g. variant record discriminant
examination).

Goofus says static typing catches very few errors that aren't caught by
runtime type checks during testing, and doesn't catch any of the errors
that are not detectable statically (e.g. misuse of unions and pointer
casting).

Goofus finds 95% of the statically detectable typing bugs, and 95% of the
non-statically detectable typing bugs.  Gallant finds 100% of the
statically detectable typing bugs, and 5% of the non-statically detectable
typing bugs (the ones that happen to result in core dumps).

The winner depends on the style of the program.  Users of statically-typed
languages often limit themselves (perhaps unconsciously) to using the
subset of the language that is easy to check statically.  Then they declare
that dynamic checking isn't needed, because static checking is able to find
all their type errors.

I feel similarly about array bounds checking.

Actually, I think a good solution is a compromise, a la Common Lisp and
some polymorphic functional languages.  The programmer may include optional
type declarations, and the compiler should do type propogation.  Where the
compiler can prove type safety, it doesn't need to insert runtime type
checks; when it can't, it puts in the checks.  I've read about similar
schemes for optimizing away most array bounds checks.

--
Barry Margolin, Thinking Machines Corp.

barmar@think.com
{uunet,harvard}!think!barmar
Technical Details
Message-ID: <1991Apr18.035959.10795@Think.COM>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!think.com!barmar
References: <2023@optima.cs.arizona.edu> <8189:Apr1719:16:2091@kramden.acf.nyu.edu>

Show Full Headers
Complete Article Headers
Newsgroups: comp.lang.misc
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!think.com!barmar
From: barmar@think.com (Barry Margolin)
Subject: Re: Run-time Type Errors in Smalltalk
Message-ID: <1991Apr18.035959.10795@Think.COM>
Sender: news@Think.COM
Organization: Thinking Machines Corporation, Cambridge MA, USA
References: <2023@optima.cs.arizona.edu> <8189:Apr1719:16:2091@kramden.acf.nyu.edu>
Date: Thu, 18 Apr 91 03:59:59 GMT