Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10 5/3/83; site rochester.UUCP Path: utzoo!linus!security!genrad!decvax!harpo!seismo!rochester!blenko From: blenko@rochester.UUCP (Tom Blenko) Newsgroups: net.lang.c Subject: Re: RE: Re: great quote about the "C" language Message-ID: <4087@rochester.UUCP> Date: Wed, 7-Dec-83 00:56:49 EST Article-I.D.: rocheste.4087 Posted: Wed Dec 7 00:56:49 1983 Date-Received: Fri, 9-Dec-83 05:27:06 EST References: <728@ulysses.UUCP> Organization: U. of Rochester, CS Dept. Lines: 45 If you don't think minimizing the number of reserved words is a good idea, try Lisp. At 1000 or more reserved words (the oblist), it's not always easy to avoid stepping on things, and the results of a collision are usually quite mysterious. Foul! There are very few reserved words in Lisp. The conflicts with the oblist are no worse that function name conflicts in the C library. The only cases that I can think of where strange things happen are when you re-bind some of the atoms that have special significance to the interpretor (input or output radix, for example). You can redefine a procedure and cause a system function to break, but you can also do the same thing to a function in the C library. The conflicts are an attribute of the large size of the support library, not of the language. Oh, come on! If you want to argue about reserved words in Lisp, the only argument is whether there are any reserved words at all. Maybe t and nil. The oblist contains names from the global name space. If you reference a variable without declaring it, it is treated as global. If you don't want to keep track of which global names are used by the interpreter, declare local variables (that's good programming practice anyway). Let's not make this any more complicated than it really is. As for the compiler "probably" doing the right thing, I don't think there's *any* existing portable language in which the compiler can be guaranteed to give consistent results - 36 bits is different from 32, no matter how you try to disguise it... Lisp is just such a language. It allows you to deal with abstract objects that have little relation to the underlying architecture. I wrote a fairly large language interpretor in Lisp in 1969. It ran under Lisp 1.6 on a PDP-10. I was able to port it to Franz Lisp on a VAX in 1983 with about one day's effort. The changes were to eliminate some non-standard function references that I shouldn't have used in the first place. The resulting code would run on the original PDP-10 system with only a few lines of changes. Fine. How about your floating point arithmetic? Lisp is more portable than many other languages. No, it's not perfectly portable. So what's new?