Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!cbatt!osu-eddie!paul From: paul@osu-eddie.UUCP Newsgroups: comp.lang.lisp Subject: Re: Against the Tide of Common LISP Message-ID: <3096@osu-eddie.UUCP> Date: Wed, 11-Feb-87 16:02:04 EST Article-I.D.: osu-eddi.3096 Posted: Wed Feb 11 16:02:04 1987 Date-Received: Thu, 12-Feb-87 19:12:51 EST References: <2565@well.UUCP> Reply-To: paul@osu-eddie.UUCP (Paul Placeway) Organization: The Ohio State University, CIS Dept. Lines: 47 In article <2565@well.UUCP> jjacobs@well.UUCP (Jeffrey Jacobs) writes: >(As a general rule of language design I agree that lexical is better; >dynamic scoping for LISP is both a personal prejudice and a >performance issue). I must take an anti-dynamic stand at this point. The main thing I have against dynamic scoping is that I ALLWAYS run the risk of having someone else's code do uncool things to my routine's variables just because the names are the same. The name is what I happen to call it, but if it is inside a routine, it should be THAT ROUTINE'S variable, and no one elses. Lisp just happens to be a language, but that shouldn't make any difference. >Say what??????????? > >The "value cell" is normally statically located at a known address!!! >No need to perform hash table lookup at all!!! All references are by >address. Not allways. What if I happen to be running a compiler that puts all local variables into REGISTERS, and only pushes them when they need to be saved (see _Structure and Interpretation of Computer Programs_ Abelson & Sussman, 1985 MIT Pres for a good example of register handeling). In that case, a local variable fetch is the fastest thing your machine can do. It is possible to make a dynamic code compiler use registers, but it is VERY much harder. As fror intrepeted code, what if your intrepter has an evaluate lambda routine that works by compiling the lambda body (ONLY if it hasn't done so allready) and then CALLing it? Note that CALLing might actually mean running a psudo-machine on the compiled code. If this part of the intrepter is written correctly, it will be just as fast as a normal intrepter for most code, and VERY much faster for loops. -- Paul Placeway Department of Computer and Information Science SNail: The Ohio State University 2036 Neil Ave. Columbus OH USA 43210-1277 ARPA: paul@ohio-state.{arpa,csnet} UUCP: ...!cb{osgd,att}!osu-eddie!paul -- -- Paul Placeway Department of Computer and Information Science SNail: The Ohio State University 2036 Neil Ave. Columbus OH USA 43210-1277 ARPA: paul@ohio-state.{arpa,csnet} UUCP: ...!cb{osgd,att}!osu-eddie!paul