leff@smu.UUCP (11/26/83)
#N:smu:10900002:000:689 smu!leff Nov 24 17:38:00 1983 Is anybody aware of study's on productivity studies for lisp. 1. Can lisp programmers program in lisp at the same number of lines per day,week,month as in 'regular' languages like pascal, pl/1, etc. 2. Has anybody tried to write a fairly large program that normally would be done in lisp in a regular language and compared the number of lines ratio. In APL, a letter to Comm. ACM reported that APL programs took one fifth the number of lines as equivalent programs in regular language and took about twice as long per line to debug. Thus APL improved the productivity to get a function done by about a factor of two. I am curious if anything similar has been done for lisp.
franka@tekcad.UUCP (11/28/83)
#R:smu:10900002:tekcad:3600002:000:799 tekcad!franka Nov 27 13:57:00 1983 I don't have any documentation, but I heard once from an attendee at a workshop on design automation that someone had reported a 5:1 productivity improvement in LISP vs. C, PASCAL, etc. From personal experience I know this to be true, also. I once wrote a game program in LISP in two days. I later spent two weeks debugging the same game in a C version (I estimated another factor of 4 for a FORTRAN version). The nice thing about LISP is not that the amount of code written is less (although it is, usually by a factor of 2 to 3), but that its environment (even in the scrungy LISPs) is much easier to debug and modify code in. From the truly menacing, /- -\ but usually underestimated, <-> Frank Adrian (tektronix!tekcad!franka)
marcel@uiucdcs.UUCP (11/30/83)
#R:smu:10900002:uiucdcs:32300010:000:740 uiucdcs!marcel Nov 29 19:04:00 1983 And now a plug from the logic programming people: try prolog for easy debugging. Though it may take a while to get used to its modus operandi, it has one advantage that is shared by no other language I know of: rule-based computing with a clean formalism. Not to mention the ease of implementing concepts such as "for all X satisfying P(X) do ...". The end of cumbersome array traversals and difficult boolean conditions! Well, almost. Not to mention free pattern matching. And I wager that the programs will be even shorter in Prolog, primarily because of these considerations. I have written 100-line Prolog programs which were previously coded as Pascal programs of 2000 lines. Sorry, I just couldn't resist the chance to be obnoxious.
Anonymous@uicsl.UUCP (12/01/83)
#R:smu:10900002:uicsl:15500018:000:683 uicsl!Anonymous Nov 30 10:25:00 1983 The most incredible programming environment I have worked with to date is that of InterLisp. The graphics-based trace and break packages on Xerox's InterLisp-D (not to mention the Lisp editor, file package, and the programmer's assistant) is, to say the least, addictive. Ease of debugging has been combined with power to yield an environment in which program development/debugging is easy, fast and productive. I think other languages have a long way to go before someone develops comparable environments for them. Of course, part of this is due to the language (i.e., Lisp) itself, since programs written in Lisp tend to be easy to conceptualize and write, short, and readable.
tjt@kobold.UUCP (T.J.Teixeira) (12/02/83)
I agree that the Lisp programming environment (i.e. support tools) is responsible for making Lisp highly productive, along with being an interpreted language and providing automatic storage management (i.e. garbage collection). At the same time, production Lisp's have avoided being mere toys by providing good compilers so that the interpreter is mainly used as a debugging aid for large programs. I can only think of two features of the language itself that explain why Lisp is the only major language supporting this type of programming environment: 1) Data types are associated with values, not variables, and are determined at run time. Without an interpretive environment, this is a bad idea (consider all the trouble you can get into in typeless languages such as assembly language or BCPL), and it is definitely worth while to include type declarations that can be checked at compile time. Using an interpreter (and incremental compiler) makes it very much cheaper to correct this type of mistake. 2) There is a unique, simple and obvious way of representing programs as data. I don't think the advantage is so much that Lisp is easy to parse (the reason that is usually expounded), but rather that the parse trees are easy to manipulate. For most other languages, if you have n different independently developed compilers, you will have as many different internal representations of parse trees. This makes it extremely difficult to build on previous work. -- Tom Teixeira, Massachusetts Computer Corporation. Westford MA ...!{ihnp4,harpo,decvax,ucbcad,tektronix}!masscomp!tjt (617) 692-6200
Kandt.pasa@PARC-MAXC.ARPA (12/13/83)
Jonathan Slocum (University of Texas at Austin) has a large natural language translation program (thousands of lines of Interlisp) that was originally in Fortran. The compression that he got was 16.7:1. Also, I once wrote a primitive production rule system in both Pascal and Maclisp. The Pascal version was over 2000 lines of code and the Lisp version was about 200 or so. The Pascal version also was not as powerful as the Lisp version because of Pascal's strong data typing and dynamic allocation scheme. -- Kirk