Subject: Re: superior(?) programming languages
From: Erik Naggum <news@naggum.no>
Date: 1996/12/20
Newsgroups: comp.arch,comp.lang.lisp
Message-ID: <3060051516499046@naggum.no>


* Adam Alpern
| Oh, wait a minute - add about 10 to that for the function I wrote to
| count the lines in every file.

I see.  but such numbers are wholly irrelevant.  the only lines _I_ could
have counted are ones that got saved into a file or otherwise committed
that was not immediately overwitten with a new version.

| You estimate that you've written about a million lines of code over 15
| years.

just for fun, let's see how irrelevant this can get.  if I hold down my
RETURN key, I can "write" a line of code every 18 ms once the autorepeat
kicks in.  it would take me 5 hours to produce a million lines at that
speed.  and if I wanted (god forbid!) to _cheat_, I could type C-x ( RET
C-u 1000000 C-x ) and have it done in about 2 seconds.

on a less useless note, you can measure somebody's typing speed in terms of
the number of keystrokes per second sustained average, and you can measure
it in terms of _successfully_ typed words per minute, where there are
penalities for mistakes, such as text saved on disk during a day.  writing
prose text in news articles, I generally average 7.5 keystrokes per second
while writing, and this is no big deal.  I make a small number of mistakes,
but I also rephrase myself several times over before I post, stop and
think, etc, so the average is down to 2 posted characters per second with
some articles.

I can't count all the throw-away code I have written any more than I can
(or will) count IRC or non-saved text in my literary production.  if you
write five drafts for a book before it's published, you haven't written
five books.  it's as simple as that.

| I've been coding in Lisp for 5 years, and I estimate I've written about
| 1/3 of a million lines - is it impossible to believe that someone else
| can code at the same speed you can?

not at all.  Lotus, Inc, has estimated that there is en order of magnitude
difference in coding speed between their _good_ programmers.  that is,
measuring code that the programmer gives somebody else.  this is like the
secretary standard for typing speed compared to the raw "hack speed" -- a
hacker may well type like a maniac (10 keystrokes per second is not _that_
unusual), but still end up with less effective speed than a secretary who
types only 30 words per minute but never makes mistakes.  (for purposes of
comparison, 1 keystroke per second is 10 words per minute.)

| You've obviously extrapolated quite a ways beyond my original sentence. 

no, I took it at face value, and then got _really_ disappointed.

| Published?  When did I say publish?  I said "written".  To have published
| that much code would indeed be a real acheivement, and I wish you luck.

thanks.  I wish you well, too, after this cleanup job, but please don't use
"written" to mean "typed".  that is not at all impressive.  you should also
work harder to _reduce_ the number of lines of code you write (and type).
it's not the number of lines that count, but what you get done in them.

example: a student I had the pleasure of guiding through her thesis on
abstracting a document type definition from an SGML document instance,
wrote her first major Common Lisp program to prove her point, and she wrote
about 12 000 lines.  I took over the code after that and worked a bit with
it to get it into production state.  it had been reduced to 1500 lines when
we were all done, and ran 70 times faster.  still, a naive reimplementation
of some of the functions in the admittedly procedural style she had used
required _twice_ the number of lines in Pascal!  if a Pascal programmer
worked his ass off, he would appear 4 times more proficient than a Lisp
programmer, as he would probably spend nearly the same time thinking about
the problem as we did.  Lisp gives the programmer more time to think, IMHO.

I saw a TV production about the Bill Gates imperium some time ago.  at some
point, IBM wanted everything measured in "KLOCs", and somebody (Paul Allen,
I think) said "if we work smarter and write fewer lines, we don't want to
be punished for that".  I agree with this sentiment, and thus find "lines
of code" to be a moderately useless measurement in the first place.

indeed, it can be construed that whoever writes too _many_ lines per unit
of time should stop expanding macros by hand and instead let the machine
write those lines.  not to mention the fact that your carreer may be
measured in a fixed number of keystrokes due to various strain syndromes,
not unlike every living animal supposedly lives for about the same number
of heartbeats (within an order of magnitude difference, anyway).

(as long as we count useless things, my pulse while coding averages 60.)

#\Erik
-- 
users should be computer-friendly.