Author: Robert Hyatt
Date: 18:50:58 01/23/04
Go up one level in this thread
On January 23, 2004 at 12:44:47, Tord Romstad wrote: >On January 23, 2004 at 09:27:53, Robert Hyatt wrote: > >>On January 23, 2004 at 03:37:46, Tord Romstad wrote: >> >>>On January 22, 2004 at 22:58:00, Robert Hyatt wrote: >>> >>>>you know, when I was first introduced to Lisp a _long_ time ago, I looked >>>>the person right in the eye and said "that is a write-only language." >>>> >>>>My opinion has not changed. >>> >>>Then just go ahead and hack the readtable to your liking. Lisp is not called >>>a "programmable programming language" for no reason. The syntax, like most >>>other aspects of the language, is fully programmable. Readtables are >>>first-class objects and can be copied, manipulated, passed to and returned >>>from functions. You can even change it at runtime if you want. It won't >>>even break your macros. >> >>Why not also hack the BNF grammer for C to fix the things I don't like there? > >But then you are no longer programming in C. > >>oops. <portability> :) >> >>That is _still_ an important concept. > >It is. That is one of the many reasons your analogy is flawed. There is >no loss of portability if you define a new readtable. Your code is still >perfectly portable ANSI Common Lisp. The READ function and >readtables as first-class objects is not only part of the ANSI Common >Lisp standard, they are so fundamental that they could arguably be >said to be the defining feature of the language. > >Lisp has no fixed syntax. It is all fluid, and can be changed from >*within* the language. There is no way you can do anything even >remotely similar in C. Most (though not quite all) Lispers prefer to >keep the flexibility of the s-expression syntax, but it is not because >they are forced to do so. > >>>You may wonder why hardly anyone uses anything except the default s-expression >>>syntax. The reason is that all experienced Lisp programmers learn to love the >>>syntax, and find it to be one of the main attractions of the language. It is >>>not at all difficult to read, once you get used to it. I read Lisp code >>>much more easily and fluently than any of the more mainstream languages. >> >>I have done lots of lisp programming in the past. > >Considering your apparently very limited knowledge of Lisp, I would >assume that this was in the very distant past. Otherwise, your >instructors and/or books must have been very poor. Remember who you are talking to. I was teaching computer science in 1970. There _was_ no book or instructor. :) However, that does not mean that I am not familiar with lisp. It just means that I don't use it much any longer. I could say the same for a dozen other languages I have taught and used extensively in the past. FORTRAN, COBOL, PL/1, APL, SNOBOL, ALGOL, PASCAL, C, C++, Java, Basic, FORTH, etc., plus assembly for the IBM 1620, /360, /370, Xerox Sigma, Vax, Cray, Hewlett-packard, Sun, X86, etc. I've found myself to be adaptable enough to use the tool that best fits the situation. I simply commented that the overall syntax of Lisp sucks for casual code-reading. Being easy to write does _not_ imply being easy to read. > >>However I would never >>say that ((((((((((x))))))))))) is easier to read than well-written C that >>is indented reasonably... > >Comparing well-written C to horrible Lisp is not quite fair, is it? >your "code" above couldn't possibly occur in any well-written Lisp >program. > multiple levels of parens occur in most any program I have ever worked on, whether I wrote it myself or not... that was the point. Humans don't easily parse parens and notice what matches what... >>>>:) >>>> >>>>Thank goodness vi supports the % key. :) >>> >>>The editor friendlyness is one of the benefits of the syntax. Thanks to >>>the syntax, Lisp code is much easier and faster to write, manipulate >>>and navigate than code in other languages. When writing C code, I am >>>forced to take a very low-level approach to editing, and move around, >>>copy and delete code on a line or character basis most of the time. >>>When writing Lisp code, I can navigate by expressions rather than by >>>lines and characters. >> >>If you write C properly, moving stuff around is very easy. I do this all >>the time with no problem. It just requires some discipline in indenting so >>that when you move a block, you only move a block... > >To some extent it works, but it is too limited to be really useful. >Consider one of the simplest possible examples: If my cursor is at the >beginning of the C expression 3*a + 2*b + 4*c, and I try to execute a >keystroke which is supposed to delete (or copy, or mark, or whatever) the >expression directly following the expression, it is not possible for the >editor to know whether I want to do the operation on 3*a or the sum of all >the three terms. For the equivalent Lisp expression >(+ (* 3 a) (* 2 b) (* 4 c)), the behavior is perfectly well-defined. > >I have thousands of hours of programming experience in C as well as Lisp. >I read, write, debug and edit Lisp code several times faster than C code >for all non-trivial programming tasks. And this is *not* because I am >good, rather the reverse. I am a mathematician, not a programmer. >Experts like you might be able to write complicated programs in low-level >languages like C. Lisp is a tool which makes it possible for >uneducated amateurs like myself to make the computer do really >amazing things. The same was said by Iverson about APL. It has its place. But you won't ever see a LISP O/S implementation, for example, and that is my primary interest as far as a programming topic goes. (nor will you see an APL one either). > >Tord
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.