From ... Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!newsfeeds.belnet.be!news.belnet.be!news.worldonline.be!nslave.kpnqwest.net!nloc.kpnqwest.net!nmaster.kpnqwest.net!nreader3.kpnqwest.net.POSTED!not-for-mail Newsgroups: comp.lang.lisp Subject: Re: In praise of Java. References: <3C0854B0.5CB67632@nyc.rr.com> <3216205787209641@naggum.net> <3c098358$1@nntphost.cis.strath.ac.uk> Mail-Copies-To: never From: Erik Naggum Message-ID: <3216248047172065@naggum.net> Organization: Naggum Software, Oslo, Norway Lines: 54 User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.1 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Sun, 02 Dec 2001 02:14:09 GMT X-Complaints-To: newsmaster@KPNQwest.no X-Trace: nreader3.kpnqwest.net 1007259249 193.71.66.49 (Sun, 02 Dec 2001 03:14:09 MET) NNTP-Posting-Date: Sun, 02 Dec 2001 03:14:09 MET Xref: archiver1.google.com comp.lang.lisp:21677 * Erik Naggum > C++ is a language that encourages such cheating and lying because you > _have_ to tell your compiler something you cannot possibly know, yet, > such as the type of all your variables and functions, and then you make > up a reality that fits the lies. * Thomas Stegen CES2000 | Are you proposing to start writing the code before you know where | the program is headed? No. How did you arrive at the rather peculiar position that I might? Hint: Just because you equate certain things does not mean they are even remotely connected, much less the same. | One should know all these things before one starts writing code. Wrong. How did you arrive at this rather peculiar value judgment? Hint 1: You may know you need a number, but whether it is a floating point number or an integer might not be known early. Hint 2: If you think you need an integer, you probably do not know its range, yet. Hint 3: If you need an integer without easy hardware representation, getting a type with sufficient range might require special libraries that impact a lot more than your specific algorithm, such as its interface to its callers, which will also have to use this library. | Of course this is not easy, and almost invariable will adjustments need | to be made. You are making my point, now. If you did not make statements about types prematurely, you could _narrow_ the type specification down as you went. In Common Lisp, we have the universal supertype t atop the _hierarchy_ of types, and many levels in the hierarchy, and we do not need to specify the lowest possible type in the hierarchy right away. Until classes came along in the C world, all of C's types were disjoint because they reflect hardware "types". This is simply bad programming language design. | But I don't believe this is not the case in Lisp as well. You can believe whatever you want for all I care, as you have obviously made up your mind, already, but please do not tell me what I believe. I make an effort to be precise and accurate in what I write. You could make the effort of paying attention in return. Where did you come from? Is there a C++ conference next door that sends out missionaries to defend their obviously broken language from critique? /// -- The past is not more important than the future, despite what your culture has taught you. Your future observations, conclusions, and beliefs are more important to you than those in your past ever will be. The world is changing so fast the balance between the past and the future has shifted.