Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!samsung!munnari.oz.au!comp.vuw.ac.nz!brian From: brian@comp.vuw.ac.nz (Brian Boutel) Newsgroups: comp.lang.misc Subject: RE: Dynamic typing (part 3) Message-ID: <1991Apr15.023422.6387@comp.vuw.ac.nz> Date: 15 Apr 91 02:34:22 GMT References: <1707@optima.cs.arizona.edu> <1991Apr11.053440.13401@comp.vuw.ac.nz> <12APR91.08192346@uc780.umd.edu> Sender: news@comp.vuw.ac.nz (News Admin) Organization: Computer Science, Victoria University, Wellington, NewZealand Lines: 63 Nntp-Posting-Host: antrim-hse.comp.vuw.ac.nz Originator: brian@antrim-hse.comp.vuw.ac.nz In article <12APR91.08192346@uc780.umd.edu>, cs450a03@uc780.umd.edu writes: [in response to something I said] |> |> (1) Since when are declarations not elementary statements? |> (2) While static typing does not require that you declare everything, |> it does require declarations. The kind of languages I prefer, e.g. ML, Haskell, do not require declarations of variables or functions. Types are inferred from the context. (It may sometimes be pregmatically desirable to include some declarations to limit the generality of deduced types for purposes of run-time efficiency). So there is really no difference between volumes of declarations required in these and in dynamic typed languages like Smalltalk. |> (3) Static typing tends to make expensive the kind of generalization |> that I've seen in high-level languages. |> I'm unsure what you mean. Are you saying that statically typed languages are not high-level? I would distinguish between "generalization" and "useful generalization". I'm sure you can show me some clever code, but do I need it at the cost of the additional safety that I get from using a language which disallows a large class of erroneous programs that might otherwise get into production. |> Just for fun, the software engineering aspects of this topic: |> |> (1) runtime vs purely static type checking |> (2) local declarations (e.g. functions) vs nonlocal declarations (e.g. |> storage allocation for later operations). |> (3) degrees of abstraction (can we look at operation blarg() as pure |> computation, or must it have side effects and/or be effected by |> other side effects). |> |> You can carry any of these concepts to heights of absurdity which I |> don't care to contemplate... |> |> Raul Rockwell Perhaps some more contemplation would help? Engineering is about reliability, about using established techniques with a solid underlying theoretical foundation, about safety margins. For me, these are the important issues. Nice new ideas have their place, but it is not in production systems. I'm not objecting to dynamic typed languages, in fact I quite like them, and occasionally use them. I do, however, react badly to some of the claims made about their superiority, claims which ignore the most important issues, and advocate use which, at the present time, increases the risk to the public of computer systems. --brian -- Internet: brian@comp.vuw.ac.nz Postal: Brian Boutel, Computer Science Dept, Victoria University of Wellington, PO Box 600, Wellington, New Zealand Phone: +64 4 721000 Fax: +64 4 712070