Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Q: on hashes and counting

75 views
Skip to first unread message

The Glauber

unread,
Oct 18, 2000, 3:00:00 AM10/18/00
to
Suppose i have a text file and i want to count strings in it. Specifically,
the first 5 characters of each line in this file are a vendor code.
Then i want to ouptut all vendor codes and how many times
they show up in the input.

Here's what i did:
(let ((curv) (vhash (make-hash-table :test 'equal)))
(with-open-file (s "invdat.txt" :direction :input)
; read until end of file
(do ((l (read-line s) (read-line s nil 'eof)))
((eq l 'eof)
(maphash #'(lambda (k v) (format t "~A,~A~%" k v)) vhash))
; get the first 5 characters of each line
(setq curv (subseq l 0 5))
; if already in hash, increment count, else, create hash entry
(if (gethash curv vhash)
(incf (gethash curv vhash))
(setf (gethash curv vhash) 1)) )))

This is all straightforward, except for these lines:
(if (gethash curv vhash)
(incf (gethash curv vhash))
(setf (gethash curv vhash) 1))

What they do is, if there is already an entry in the hash, increment
the count. If there isn't, create one (with count set to 1).

Is this the best way to use a hash? In other words, do i really have to
do the (gethash key hash) twice? It feels wasteful.

In Perl, you do $hash{key}++ and the entry will get "magically" created if
it isn't there. (Of course, the Perl compiler may be doing the
double lookup behind my back).

The Perl version of this program runs a lot faster than the Lisp version
(6 times faster) (I'm using Clisp and AIX), but i'm assuming that
the main problem with the Lisp version is the fact that each line of text
is consed and thrown away to the garbage collector. I'm pretty sure
Perl would reuse the memory in this case.

Anyway, comparing Perl and Lisp is not the point here, i just want
to understand if i'm using the hashes right.

Thanks,

glauber


P.S.: the Perl version is a "one liner":
$c{substr($_,0,5)}++; END { foreach $x (sort keys %c) {print "$x,$c{$x}\n"}}
(very obvious, no? :-))
--
Glauber Ribeiro
thegl...@my-deja.com http://www.myvehiclehistoryreport.com
"Opinions stated are my own and not representative of Experian"


Sent via Deja.com http://www.deja.com/
Before you buy.

The Glauber

unread,
Oct 18, 2000, 3:00:00 AM10/18/00
to
I apologize for deja.com mangling both the Lisp and Perl code.
Here's another try:

Lisp:


(let ((curv) (vhash (make-hash-table :test 'equal)))
(with-open-file (s "invdat.txt" :direction :input)
; read until end of file
(do ((l (read-line s) (read-line s nil 'eof)))
((eq l 'eof)
(maphash #'(lambda (k v) (format t "~A,~A~%" k v)) vhash))
; get the first 5 characters of each line
(setq curv (subseq l 0 5))
; if already in hash, increment count, else, create hash entry
(if (gethash curv vhash)
(incf (gethash curv vhash))
(setf (gethash curv vhash) 1)) )))


Perl:


$c{substr($_,0,5)}++;
END { foreach $x (sort keys %c) {print "$x,$c{$x}\n"}}

--

Barry Margolin

unread,
Oct 18, 2000, 3:00:00 AM10/18/00
to
In article <8sl58e$ivq$1...@nnrp1.deja.com>,

The Glauber <thegl...@my-deja.com> wrote:
>Is this the best way to use a hash? In other words, do i really have to
>do the (gethash key hash) twice? It feels wasteful.

GETHASH allows you to specify a default value, so you can do:

(incf (gethash curv vhash 0))

>In Perl, you do $hash{key}++ and the entry will get "magically" created if
>it isn't there. (Of course, the Perl compiler may be doing the
>double lookup behind my back).

Actually, it's doing something more like the above code. If an entry in a
hash table doesn't exist, $hash{key} returns Perl's "undef" value, which
coerces to 0 in a numeric context.

>The Perl version of this program runs a lot faster than the Lisp version
>(6 times faster) (I'm using Clisp and AIX), but i'm assuming that
>the main problem with the Lisp version is the fact that each line of text
>is consed and thrown away to the garbage collector. I'm pretty sure
>Perl would reuse the memory in this case.

Perl is heavily optimized for string processing like this, since that's
primarily what it's used for.

--
Barry Margolin, bar...@genuity.net
Genuity, Burlington, MA
*** DON'T SEND TECHNICAL QUESTIONS DIRECTLY TO ME, post them to newsgroups.
Please DON'T copy followups to me -- I'll assume it wasn't posted to the group.

Raymond Wiker

unread,
Oct 19, 2000, 1:36:58 AM10/19/00
to
The Glauber <thegl...@my-deja.com> writes:

> This is all straightforward, except for these lines:

> (if (gethash curv vhash)
> (incf (gethash curv vhash))
> (setf (gethash curv vhash) 1))

(incf (gethash curv vhash 0))

--
Raymond Wiker
Raymon...@fast.no

Pierre R. Mai

unread,
Oct 19, 2000, 3:00:00 AM10/19/00
to
The Glauber <thegl...@my-deja.com> writes:

> Suppose i have a text file and i want to count strings in it. Specifically,
> the first 5 characters of each line in this file are a vendor code.
> Then i want to ouptut all vendor codes and how many times
> they show up in the input.

(with-open-file (stream "invdat.txt")
(loop with count-hash = (make-hash-table :test #'equal)
for line being the lines of stream
for product-code = (subseq line 0 5)
do
(incf (gethash product-code count-hash 0))
finally


(maphash #'(lambda (k v) (format t "~A,~A~%" k v))

count-hash)))

Of course this depends on an new LOOP clause. If you have a LOOP
macro that is based on the MIT LOOP code (e.g. CMU CL, ACL), you can
use the definition at the end of the article...

But to answer your original question: You can use the default value
of gethash to make incf just work on non-existant keys...

> (let ((curv) (vhash (make-hash-table :test 'equal)))
> (with-open-file (s "invdat.txt" :direction :input)
> ; read until end of file
> (do ((l (read-line s) (read-line s nil 'eof)))
> ((eq l 'eof)
> (maphash #'(lambda (k v) (format t "~A,~A~%" k v)) vhash))
> ; get the first 5 characters of each line
> (setq curv (subseq l 0 5))
> ; if already in hash, increment count, else, create hash entry

> (if (gethash curv vhash)
> (incf (gethash curv vhash))

> (setf (gethash curv vhash) 1)) )))

I'd write that as

(with-open-file (s "invdat.txt")
(do ((count-hash (make-hash-table :test #'equal))
(line (read-line s nil nil) (read-line s nil nil)))
((null line)
(maphash #'(lambda (k v) (format t "~A,~A~%" k v)) count-hash))
(let ((product-code (subseq line 0 5)))
(incf (gethash product-code count-hash 0)))))

There are two IMHO important differences between my version and yours:

- Don't ever use setq to set a variable when you can just as well use
let to bind it (setq of curv vs. let of product-code, where the last
one could be folded into the gethash).
- Don't use magic EOF values in places where a simple nil will do just
as well. Magic EOF values are only really required in read&co., not
in read-line.
- Use longer and more precise variable names... Yes, I'm often guilty
of using cryptic names myself... ;)

> The Perl version of this program runs a lot faster than the Lisp version
> (6 times faster) (I'm using Clisp and AIX), but i'm assuming that
> the main problem with the Lisp version is the fact that each line of text
> is consed and thrown away to the garbage collector. I'm pretty sure
> Perl would reuse the memory in this case.

Should this really turn out to be a performance problem (which I
doubt), you could write your own read-line which re-used an internal
buffer, and only returned the first 5 characters.

> P.S.: the Perl version is a "one liner":

> $c{substr($_,0,5)}++; END { foreach $x (sort keys %c) {print "$x,$c{$x}\n"}}

> (very obvious, no? :-))

Hmmm, my Perl might be quite rusty (which is a good thing), but you
seem to be missing the open, the while(<STREAM>) and close here, which
would add at least one line ;)

Regs, Pierre.

;;;; This defines a loop path for the lines of a stream.

(in-package :ANSI-LOOP)

;;; Syntax: loop for var being the lines of stream [split-by char]
;;; Syntax: loop for var being each line in stream [split-on char]

(defun loop-lines-iteration-path (variable data-type prep-phrases)
(cond
((cddr prep-phrases)
(loop-error "Too many prepositions!"))
((null prep-phrases)
(loop-error "Missing OF or IN in ~S iteration path."))
((null (cdr prep-phrases))
(unless (member (caar prep-phrases) '(:of :in))
(loop-error "Missing OF or IN in ~S iteration path."))
(unless (symbolp variable)
(loop-error "Destructuring is not valid for line iteration."))
(let ((stream-var (loop-gentemp 'loop-line-)))
`(((,variable nil ,data-type) (,stream-var ,(cadar prep-phrases)))
()
()
()
(not (setq ,variable (read-line ,stream-var nil nil)))
())))
;; We are splitting
((consp variable)
(let ((stream-var (loop-gentemp 'loop-line-))
(by-var (loop-gentemp 'loop-line-by-))
(line-var (loop-gentemp 'loop-line-line-))
(step-var (loop-gentemp 'loop-line-step-)))
`(((,variable nil ,data-type) (,stream-var ,(cadar prep-phrases))
(,by-var ,(cadadr prep-phrases))
(,line-var nil)
(,step-var nil))
()
()
()
(not (when (setq ,line-var (read-line ,stream-var nil nil))
(setq ,step-var (pmlib:partition ,by-var ,line-var
:remove-empty-subseqs t))))
(,variable ,step-var))))
(t
(let ((stream-var (loop-gentemp 'loop-line-))
(by-var (loop-gentemp 'loop-line-by-))
(line-var (loop-gentemp 'loop-line-line-)))
`(((,variable nil ,data-type) (,stream-var ,(cadar prep-phrases))
(,by-var ,(cadadr prep-phrases))
(,line-var nil))
()
()
()
(not (when (setq ,line-var (read-line ,stream-var nil nil))
(setq ,variable (pmlib:partition ,by-var ,line-var
:remove-empty-subseqs t))))
())))))

(add-loop-path '(line lines) 'loop-lines-iteration-path *loop-ansi-universe*
:preposition-groups '((:of :in) (:split-by :split-on))
:inclusive-permitted nil)

;;; This depends on the following partition function in package pmlib:

(in-package :PMLIB)

;;; The following functions are based on the versions by Arthur
;;; Lemmens of the original code by Bernard Pfahringer posted to
;;; comp.lang.lisp. I only renamed and diddled them a bit.

(defun partition (delimiter seq
&key (maximum nil)
(remove-empty-subseqs nil)
(from-end nil)
(start 0)
(end nil)
(test nil test-supplied)
(test-not nil test-not-supplied)
(key nil key-supplied))
"Return a list of subsequences in seq delimited by delimiter.
If :remove-empty-subseqs is true, empty subsequences will be discarded
from the result; otherwise they will be included.
If :maximum is supplied, the result will contain no more than :maximum
possibly empty subsequences. The second result value contains the
unsplit rest of the sequence.
All other keywords work analogously to those for CL:POSITION."

;; DO: Make keep-delimiters include the delimiters in the result(?).
(let ((len (length seq)))
(unless end (setq end len))
;; DO: Find a more efficient way to take care of :from-end T.
(when from-end
(setf seq (reverse seq))
(psetf start (- len end)
end (- len start)))

(loop with other-keys = (nconc (when test-supplied
(list :test test))
(when test-not-supplied
(list :test-not test-not))
(when key-supplied
(list :key key)))
for left = start then (+ right 1)
for right = (min (or (apply #'position delimiter seq
:start left
other-keys)
len)
end)
unless (and (= right left) ; empty-subsequence
remove-empty-subseqs)
if (and maximum (>= nr-elts maximum))
;; We can't take any more. Return now.
return (values subseqs (subseq seq left end))
else
collect (subseq seq left right) into subseqs
and sum 1 into nr-elts
until (= right end)
finally (return (values subseqs (subseq seq right end))))))

--
Pierre R. Mai <pm...@acm.org> http://www.pmsf.de/pmai/
The most likely way for the world to be destroyed, most experts agree,
is by accident. That's where we come in; we're computer professionals.
We cause accidents. -- Nathaniel Borenstein

Erik Naggum

unread,
Oct 19, 2000, 3:00:00 AM10/19/00
to
* The Glauber <thegl...@my-deja.com>

| Suppose i have a text file and i want to count strings in it.
| Specifically, the first 5 characters of each line in this file are a
| vendor code. Then i want to ouptut all vendor codes and how many
| times they show up in the input.

Here's my cut at that task:

(let ((hash (make-hash-table :test #'equal)))
(with-open-file (stream ...file-args...)
(handler-case
(loop
(let ((vendor (read-sequence stream (make-string 5))))
;; skip to end of line and consume
(peek-char #\newline stream)
(read-char stream)
;; real body of loop
(incf (gethash vendor hash 0))))
;; use conditions to simplify error handling
(end-of-file ())))
(dolist (key (sort (hash-table-keys hash) #'string<))
(format t "~A,~A~%" key (gethash key hash))))

| This is all straightforward, except for these lines:

| (if (gethash curv vhash)
| (incf (gethash curv vhash))
| (setf (gethash curv vhash) 1))
|

| What they do is, if there is already an entry in the hash, increment
| the count. If there isn't, create one (with count set to 1).

You have already been informed about the default value to gethash.

| Is this the best way to use a hash? In other words, do i really have to
| do the (gethash key hash) twice? It feels wasteful.

incf does one gethash to get the value and gethash's setf method to
set the value. If this is noticeably slow, you _may_ do better with
something like this:

(let ((entry (gethash vendor hash nil)))
(if entry
(incf (car entry))
(setf (gethash vendor hash) (list 1))))

| In Perl, you do $hash{key}++ and the entry will get "magically"
| created if it isn't there. (Of course, the Perl compiler may be
| doing the double lookup behind my back).

It is not unlikely that Perl, being a joke of a language around
over-powerful regexps and hash tables, has optimized this to death.

| The Perl version of this program runs a lot faster than the Lisp
| version (6 times faster) (I'm using Clisp and AIX), but i'm assuming
| that the main problem with the Lisp version is the fact that each
| line of text is consed and thrown away to the garbage collector.
| I'm pretty sure Perl would reuse the memory in this case.

Did you compile the Lisp code? Perl _always_ runs slower than Lisp
for me. Of course, I don't use a (good) toy Lisp like CLISP, but
Allegro CL, and I generally compile with high optimization settings.

| Anyway, comparing Perl and Lisp is not the point here, i just want
| to understand if i'm using the hashes right.

Why don't you ask whether hashes are right for the problem? If you
have decided to use Perl, regexps and hashes are the right solution
because you don't have anything else, but regexps are the wrong
solution to almost every problem, and hashes may be similar special
optimizations of particular cases.

I have a situation not dissimilar to yours, where I have ticker
codes for various financial instruments, and I found that it paid
off handsomely to use symbols. Some "modern" Lisp books tell us not
to use symbols, for the same reasons you should not use regexps and
hash tables in Perl, apparently: they are so easy to use that misuse
will be hard to combat, but nobody who uses Perl warns about Perl's
insane focus on bad tools -- those who take the warnings seriously
don't use Perl. So although symbold are expensive structures, they
do have enormous benefits language-wise in Lisp, and they should be
used if the alternative is more cumbersome. With symbols, the above
suggested speed-up becomes

(let ((symbol (intern string package)))
(if (boundp symbol)
(incf (symbol-value symbol))
(setf (symbol-value symbol) 1)))



| P.S.: the Perl version is a "one liner":
| $c{substr($_,0,5)}++; END { foreach $x (sort keys %c) {print "$x,$c{$x}\n"}}
| (very obvious, no? :-))

Perl looks the way it does because 110-baud Teletypes were once upon
the time the best people had on Unix, and with lousy typers who had
to correct their mistakes all the time, it made sense to abbreviate
everything down to one or two characters. Lisp has a different
heritage, to put it mildly: Better typers, better use of brainpower
than to remember thousands of subtly similar abbreviations, better
terminals. So we aren't as interested in one-liners with compact
syntax, but for people who still live their lives as if all they can
hope for is a 300-baud Teletype, the value of one-liners cannot be
underestimated.

On the other hand, loop constructs that walk through a file line by
line have been posted, as this seems a reasonable thing to do to
some people. People have regexp libraries for string hacking in
Lisp, too, even though the much better solution is to build a parser
that actually returns the stuctured information in the string. It
turns out that it doesn't take longer, in programmer-time, to write
and test a real parser than it does to write and test regexp-based
string hacking at the same quality level, it may in fact take a lot
shorter time, because the quality level in a parser is so readily
determinable, while people stop worrying about the regexp hacks
until it breaks at sufficiently infrequent random times because they
data never was designed to be hacked by regexps.

Of all the languages I have worked with over the past 20 years,
there's only one that stands out as the Wrong Solution to everything
it does, especially what it does well, and that's Perl. Quotably:

If Perl is the solution, you're solving the wrong problem.

#:Erik
--
I agree with everything you say, but I would
attack to death your right to say it.
-- Tom Stoppard

Peter Vaneynde

unread,
Oct 19, 2000, 3:00:00 AM10/19/00
to
Erik Naggum <er...@naggum.net> writes:

> * The Glauber <thegl...@my-deja.com>


> Here's my cut at that task:
>
> (let ((hash (make-hash-table :test #'equal)))
> (with-open-file (stream ...file-args...)
> (handler-case
> (loop
> (let ((vendor (read-sequence stream (make-string 5))))

(make-string 5) stream
not?


> ;; skip to end of line and consume

...


> (dolist (key (sort (hash-table-keys hash) #'string<))

hash-table-keys is not in the ANSI-spec, nor in ACL5. I guess it's a
new feature of ACL6?

I suppose it's quite a bit faster then:
(loop for key being the hash-keys in hash collect key)
?

> Did you compile the Lisp code? Perl _always_ runs slower than Lisp
> for me. Of course, I don't use a (good) toy Lisp like CLISP, but
> Allegro CL, and I generally compile with high optimization
> settings.

Your solution outruns the Lisp one on this old SPARC here...

> I have a situation not dissimilar to yours, where I have ticker
> codes for various financial instruments, and I found that it paid
> off handsomely to use symbols. Some "modern" Lisp books tell us not

Symbols in hash-tables or using the plists of the symbols? (I'm supposing
you want to store more then one property per symbol of course)

> I agree with everything you say, but I would
> attack to death your right to say it.
> -- Tom Stoppard

I've been dying to ask in what context this was said...

Groetjes, Peter

--
LANT nv/sa, Research Park Haasrode, Interleuvenlaan 15H, B-3001 Leuven
mailto:Peter.V...@lant.be Phone: ++32 16 405140
http://www.lant.be/ Fax: ++32 16 404961

The Glauber

unread,
Oct 19, 2000, 3:00:00 AM10/19/00
to
Thanks to all who answered. I learned a couple of important things.

Thanks to the folks who pointed to the default value of gethash, that's
exactly what i was looking for (i knew it had to be there!).

Thanks to Erik for an easy solution to the problem of consing the line each
time.

I don't want to get into a LispxPerl discussion. Perl is a nice thing to have
around when you need a quick answer; it processes text very fast, and it's a
good replacement for awk and sed. So i guess if Perl is a Bad Thing, at least
it allows me to avoid other Unix tools, right? :-) Lisp is a much more mature
language, of course, and more maintainable.

Someone asked, and yes, i compiled the CLISP with maximum optimization, and
it still ran 6 times slower than the Perl one-liner. I'm sure (well, almost
sure) this is because of the consing, and that if i implemented E.N.'s
version it would run at least as fast as Perl.

And here's the code as it stands now:

(let ((vhash (make-hash-table :test 'equal)))
(do ((l (read-line *standard-input*)
(read-line *standard-input* nil nil)))
((null l)


(maphash #'(lambda (k v) (format t "~A,~A~%" k v)) vhash))

(incf (gethash (subseq l 0 5) vhash 0)) ) )

By using the default value for gethash i can easily get rid of one variable.
This version is also reading from stdin and writing to stdout. If i run this
again, i'll put together a better way to print the results in sorted order.

I understand this code is still not 100% perfect, but it's as good as i need
it to be now, so don't waste more of your time improving on it (unless you
really want to! :-)).

Thanks again,

glauber

Erik Naggum

unread,
Oct 19, 2000, 3:00:00 AM10/19/00
to
* Peter Vaneynde <Peter.V...@lant.be>

| Erik Naggum <er...@naggum.net> writes:
|
| > * The Glauber <thegl...@my-deja.com>
| > Here's my cut at that task:
| >
| > (let ((hash (make-hash-table :test #'equal)))
| > (with-open-file (stream ...file-args...)
| > (handler-case
| > (loop
| > (let ((vendor (read-sequence stream (make-string 5))))
| (make-string 5) stream
| not?

Huh? Oh, the argument order. Please be a little more verbose. I
have no idea how that got in there.

| hash-table-keys is not in the ANSI-spec, nor in ACL5. I guess it's a
| new feature of ACL6?

Oops, sorry, it's my own, an internal function that knows how the
hash-table is laid out and does a quick scan through the keys vector
to collect keys.

| I suppose it's quite a bit faster then:
| (loop for key being the hash-keys in hash collect key)
| ?

That's exactly what I would suggest for the portable definition.

The internal function is twice as fast as this loop.

| > Did you compile the Lisp code? Perl _always_ runs slower than Lisp
| > for me. Of course, I don't use a (good) toy Lisp like CLISP, but
| > Allegro CL, and I generally compile with high optimization
| > settings.
|

| Your solution outruns the Lisp one on this old SPARC here...

I hope you meant "Perl", but couldn't bring yourself to type it. :)

| > I have a situation not dissimilar to yours, where I have ticker
| > codes for various financial instruments, and I found that it paid
| > off handsomely to use symbols. Some "modern" Lisp books tell us not
|

| Symbols in hash-tables or using the plists of the symbols? (I'm
| supposing you want to store more then one property per symbol of
| course)

I let the value slot of the symbols hold one of a variety of
objects, according to the type of the financial instrument.

I don't use symbols as the keys in hash-tables, I use strings, but
that's just an accident of history rather than a conscious decision.

| > I agree with everything you say, but I would
| > attack to death your right to say it.
| > -- Tom Stoppard
|

| I've been dying to ask in what context this was said...

:) Actually, I have no idea. Mark Morford picked this one for the
SF Gate Morning Fix one day. I found it hilarious. (He also uses
"If this is not what you expected, please alter your expectations"
in the disclaimer of the Morning Fix, but someone objected so
strongly to my using that as a .signature, I found it worthwhile to
pick another one.)

The Glauber

unread,
Oct 19, 2000, 3:00:00 AM10/19/00
to
In article <31809600...@naggum.net>,
Erik Naggum <er...@naggum.net> wrote:
> * Peter Vaneynde <Peter.V...@lant.be>
[...]

> | > I agree with everything you say, but I would
> | > attack to death your right to say it.
> | > -- Tom Stoppard
> |
> | I've been dying to ask in what context this was said...
>
> :) Actually, I have no idea. Mark Morford picked this one for the
> SF Gate Morning Fix one day. I found it hilarious. (He also uses
> "If this is not what you expected, please alter your expectations"
> in the disclaimer of the Morning Fix, but someone objected so
> strongly to my using that as a .signature, I found it worthwhile to
> pick another one.)


Bummer. I liked the "expectations" quote better.

The Hitch-hiker's Guide To The Galaxy has a disclaimer that says something
like "in case of discrepancy between what you see here and reality, reality
has got it wrong."

The Glauber

unread,
Oct 19, 2000, 3:00:00 AM10/19/00
to
In article <bruce-4CCA15....@news.akl.ihug.co.nz>,
Bruce Hoult <br...@hoult.org> wrote:
[...]

> No. You need to actually know and *understand* the fully-spelled-out
> Perl version before the abbreviated version is anything other than a
> magic incantation that you have no choice but to remember by rote. You
> still need the complete thinking process. Perl just lets you save a bit
> on the typing. And not even on that, quite often -- where is the magic
> shortcut incantation to iterate through the sorted keys of a hash,
> instead of having to spell that part out in full?

I agree with everything you said, and won't even attack you for saying it. :-)

(Sorry, i've been reading Erik Naggum.)

(Actually, the part about the Perl code being obvious to the eye was really a
joke.)

The Glauber

unread,
Oct 19, 2000, 3:00:00 AM10/19/00
to
In article <bruce-4CCA15....@news.akl.ihug.co.nz>,
Bruce Hoult <br...@hoult.org> wrote:
> In article <8sl58e$ivq$1...@nnrp1.deja.com>, The Glauber
> <thegl...@my-deja.com> wrote:
>
> > P.S.: the Perl version is a "one liner":
> > $c{substr($_,0,5)}++; END { foreach $x (sort keys %c) {print
> > "$x,$c{$x}\n"}}
>
> No, that's not the complete Perl source code. You forgot to mention the
> command line flags neded to run it, namely "-n", which means that your
> program is really:


It just occurred to me that if you're going to nit-pick things like what
happen when you use -n in the command line, you probably should
also expand all macros in the Lisp code too. Practical languages have
stuff in them to make it easier for you to get the job done. That's why
we have things like with-open-file. Of course any good programmer
with 6 months experience could code that, but why should we have to?

Also, you can do that same program in Lisp as a "one-liner" ... if
you happen to have the right initialization files!

These are just a couple of reasons why this kind of language competition
is not likely to lead to much enlightment. However, i still think that to be
a Good Programmer (whatever this means) one has to be comfortable
with more than one programming language (and i mean comfortable to
the point of writing "idiomatic" code, that is, Lisp code that looks like
Lisp and C code that looks like C). Incidentally, both Perl and TCL
(and probably Python, i haven't used it for a while) borrow heavily
from Lisp.

When i'm looking for programmers to hire, i always try to find the ones
who are comfortable in more than one language, but they are
surprisingly hard to find! There's a lot of "one language wonders"
out there.

I've never seen it put better than it was done by Peter Norvig:
http://www.norvig.com/21-days.html

Wayne Rogers

unread,
Oct 19, 2000, 3:00:00 AM10/19/00
to
Pierre;
I believe he is doing something like

#!/bin/perl -n -e '$c{substr($_,0,5)}++ ...' input_file

processes each line of the file using the execution statements in the -e
directive

Wayne


"Pierre R. Mai" <pm...@acm.org> wrote in message
news:878zrlp...@orion.bln.pmsf.de...

Bruce Hoult

unread,
Oct 19, 2000, 4:51:22 PM10/19/00
to
In article <8sl58e$ivq$1...@nnrp1.deja.com>, The Glauber
<thegl...@my-deja.com> wrote:

> P.S.: the Perl version is a "one liner":
> $c{substr($_,0,5)}++; END { foreach $x (sort keys %c) {print
> "$x,$c{$x}\n"}}

No, that's not the complete Perl source code. You forgot to mention the

command line flags neded to run it, namely "-n", which means that your
program is really:

LINE:
while (<>){


$c{substr($_,0,5)}++; END { foreach $x (sort keys %c) {print
"$x,$c{$x}\n"}}
}


Which would be better written as:

while (<>){
$c{substr($_,0,5)}++;
}

foreach $x (sort keys %c) {
print "$x,$c{$x}\n"
}

... which actually means ...

while ($line = <STDIN>){
$c{substr($line,0,5)}++;
}

foreach $x (sort keys %c) {
print "$x,$c{$x}\n"
}

... and in a program you intend to keep and maintain should be ...

#!/usr/bin/perl -w

use strict;

my %c = {};

while (my $line = <STDIN>){
$c{substr($line,0,5)}++;
}

foreach my $x (sort keys %c) {
print "$x,$c{$x}\n"
}


And now we're up to the same size program as it takes to do the same
thing in C++ or Lisp or Dylan or just about anything else with a decent
library of data structures.

Perl isn't really more compact than other languages, it just has more
special-case hack shortcuts that are *sometimes* useful (often even, for
the things Perl is usually used for), but that you'll have to spell out
by hand as soon as you start doing more complex things for which the
defaults aren't *quite* right.


> (very obvious, no? :-))

No. You need to actually know and *understand* the fully-spelled-out
Perl version before the abbreviated version is anything other than a
magic incantation that you have no choice but to remember by rote. You
still need the complete thinking process. Perl just lets you save a bit
on the typing. And not even on that, quite often -- where is the magic
shortcut incantation to iterate through the sorted keys of a hash,
instead of having to spell that part out in full?

-- Bruce

Bruce Hoult

unread,
Oct 19, 2000, 8:57:50 PM10/19/00
to
In article <8snsfg$pre$1...@nnrp1.deja.com>, The Glauber
<thegl...@my-deja.com> wrote:

> It just occurred to me that if you're going to nit-pick things like what
> happen when you use -n in the command line, you probably should
> also expand all macros in the Lisp code too. Practical languages have
> stuff in them to make it easier for you to get the job done. That's why
> we have things like with-open-file. Of course any good programmer
> with 6 months experience could code that, but why should we have to?
>
> Also, you can do that same program in Lisp as a "one-liner" ... if
> you happen to have the right initialization files!

I agree entirely.


> Incidentally, both Perl and TCL (and probably Python, i haven't used
> it for a while) borrow heavily from Lisp.

You think?

sub cons ($$) {
my ($car, $cdr) = @_;
sub ($) {$_ = shift;
/car/ && return $car;
/cdr/ && return $cdr;
}
}

sub car ($){&{$_[0]}(car);}
sub cdr ($){&{$_[0]}(cdr);}

my $x = cons(12, cons(3.1415, cons("hello world!", 78)));
print "the third element is '", car(cdr(cdr($x))), "'\n";
--------------------------------------------------------
the third element is 'hello world!'

> When i'm looking for programmers to hire, i always try to find the ones
> who are comfortable in more than one language, but they are
> surprisingly hard to find! There's a lot of "one language wonders"
> out there.

I usually seem to get told that I "can't be focussed enough" and that
"over here in the US there are so many good people that if you don't
specialize then you can't be a top performer at anything".

-- Bruce

Pierre R. Mai

unread,
Oct 20, 2000, 3:00:00 AM10/20/00
to
"Wayne Rogers" <way...@erols.com> writes:

> Pierre;
> I believe he is doing something like
>
> #!/bin/perl -n -e '$c{substr($_,0,5)}++ ...' input_file
>
> processes each line of the file using the execution statements in the -e
> directive

Right, I forgot about the nice command-line options that affect
program semantics in Perl. As if it's syntax weren't enough to
confuse people...

OTOH, this will use stdin, whereas the CL code was opening it's own
stream for a named file, so it seems hardly fair comparing the two.

Regs, Pierre.

The Glauber

unread,
Oct 20, 2000, 3:00:00 AM10/20/00
to
In article <bruce-44A383....@news.akl.ihug.co.nz>,

Bruce Hoult <br...@hoult.org> wrote:
> In article <8snsfg$pre$1...@nnrp1.deja.com>, The Glauber
> <thegl...@my-deja.com> wrote:
[...]

> > When i'm looking for programmers to hire, i always try to find the ones
> > who are comfortable in more than one language, but they are
> > surprisingly hard to find! There's a lot of "one language wonders"
> > out there.
>
> I usually seem to get told that I "can't be focussed enough" and that
> "over here in the US there are so many good people that if you don't
> specialize then you can't be a top performer at anything".


In a sense this is true, like it's true of those people who get Olympic
medals. So, i'll never run 100 m in under 10 seconds, big deal, i can get
there much faster by car! :-)

I think software creation is a multi-discipline activity, and not only you
gain by knowing other programming languages, but you gain by knowing other
fields as well. Programming is solving problems, and solving problems
sometimes requires being able to think outside the box.

Erik Naggum

unread,
Oct 20, 2000, 3:00:00 AM10/20/00
to
* The Glauber <thegl...@my-deja.com>

| I think software creation is a multi-discipline activity, and not
| only you gain by knowing other programming languages, but you gain
| by knowing other fields as well. Programming is solving problems,
| and solving problems sometimes requires being able to think outside
| the box.

How does this require multiple language skills? Must an author be
able to write great literature in multiple languages?

Put it this way: I hate it when people do reasonably smart stuff in
Perl, because it is just as incomprehensible to me as Umberto Eco's
great stuff in Italian. I'm annoyed by the fact that I have to work
with a translation, especially since I have no idea how good it is,
but I'm not going to call him a "one-language wonder".

The idea that one language cannot be all things to all people is
probably wrong, but the kinds of languages that have tried have been
all things to some people in abject disregard of most other people,
which may lead to the wrong conclusions. Designing a language that
is enabling and not restricting is very, very hard and requires so
much forethought and probably dissociation from one's own goals that
it will most probably grow into being rather than be designed from
the start. However, things that grow fall into two main categories:
weeds and produce. We have two particularly interesting examples of
weeds: Perl and C++. I consider Common Lisp a grown language, too,
as opposed to designed-to-be-everything-for-a-few-people like Scheme.

I fully agree that problem solving is not something you can do
without knowing the problems and their interrelationships with the
rest of the world. However, when most business schools churn out
generic managers, I suppose it will be harder to convince such
people that programmers actually need to understand the issues and
the problems they are facing. The era of designers and coders is
behind us, and all we know is it didn't work very well, but not why.
Perhaps if more of the people who call themselves programmers or
even software engineers these days were labeled coders and had
somebody else think for them, we would need far less of them simply
because they _can't_ think and therefore write so much miserably
buggy code, while the real thinking that goes into modern "apps" is
very sparse, indeed, compared to all the work required in coding, so
it could probably be handled by a relatively tiny group of people.

#:Erik
--

The Glauber

unread,
Oct 20, 2000, 3:00:00 AM10/20/00
to
In article <31809600...@naggum.net>,
Erik Naggum <er...@naggum.net> wrote:
> * Peter Vaneynde <Peter.V...@lant.be>
> | Erik Naggum <er...@naggum.net> writes:
> |
> | > * The Glauber <thegl...@my-deja.com>
> | > Here's my cut at that task:
> | >
> | > (let ((hash (make-hash-table :test #'equal)))
> | > (with-open-file (stream ...file-args...)
> | > (handler-case
> | > (loop
> | > (let ((vendor (read-sequence stream (make-string 5))))
> | (make-string 5) stream
> | not?
>
> Huh? Oh, the argument order. Please be a little more verbose. I
> have no idea how that got in there.


I still don't understand how this works. read-sequence returns a position,
not a string; "vendor" would be bound to the number 5, right?

> | hash-table-keys is not in the ANSI-spec, nor in ACL5. I guess it's a
> | new feature of ACL6?
>
> Oops, sorry, it's my own, an internal function that knows how the
> hash-table is laid out and does a quick scan through the keys vector
> to collect keys.


Here's my version (probably not very fast, but using only what i know of CL):

;;; Return the hash's keys, in no particular order
;;; NOTE: Don't modify the keys!
(defmacro hash-table-keys (hash)
(let ((key (gensym)) (val (gensym)) (keylist (gensym)))
`(let ((,keylist '()))
(maphash #'(lambda (,key ,val) (push ,key ,keylist)) ,hash)
,keylist
)
)
)

The Glauber

unread,
Oct 20, 2000, 3:00:00 AM10/20/00
to
In article <31810498...@naggum.net>,

Erik Naggum <er...@naggum.net> wrote:
> * The Glauber <thegl...@my-deja.com>
> | I think software creation is a multi-discipline activity, and not
> | only you gain by knowing other programming languages, but you gain
> | by knowing other fields as well. Programming is solving problems,
> | and solving problems sometimes requires being able to think outside
> | the box.
>
> How does this require multiple language skills? Must an author be
> able to write great literature in multiple languages?

Great example. There's very little empyrical evidence, of course, but i
believe that someone that can write great literature, say, in Russian, would
also write great literature in Portuguese, if he had to.

It helps not in the sense that knowing C will help you write better Lisp, but
in the sense that it opens up the mind to thinking in different ways. Someone
can probably be a great programmer and only know one language, but i prefer
to work with people that are more curious than this.

Whatever it is that makes someone a good programmer is not tied to the choice
of programming language. Most people can learn another computer language
easily. It's the problem solving thinking, the ability to analyse and
integrate, that's so hard.

I'm sure you'd be a great Perl programmer! :-)

[...]

glauber

Boris Schaefer

unread,
Oct 20, 2000, 3:00:00 AM10/20/00
to
Erik Naggum <er...@naggum.net> writes:

| How does this require multiple language skills? Must an author be
| able to write great literature in multiple languages?

I don't think one has to know multiple languages, but I consider
learning multiple languages rewarding because one usually learns new
concepts together with the new languages. I also believe that
learning new concepts makes better programmers.

The languages are not terribly important, but they are a good source
of inspiration.

--
bo...@uncommon-sense.net - <http://www.uncommon-sense.net/>

Because we don't think about future generations, they will never forget us.
-- Henrik Tikkanen

Barry Margolin

unread,
Oct 20, 2000, 3:00:00 AM10/20/00
to
In article <8sqa12$p6k$1...@nnrp1.deja.com>,

The Glauber <thegl...@my-deja.com> wrote:
>It helps not in the sense that knowing C will help you write better Lisp, but
>in the sense that it opens up the mind to thinking in different ways. Someone
>can probably be a great programmer and only know one language, but i prefer
>to work with people that are more curious than this.

Conversely, if someone only knows one language, and has trouble learning
other languages, they're probably not a "great programmer". The difficulty
they have in learning those other languages suggests that their thought
processes are wedded to the paradigms embodied in that language, a sort of
tunnel vision.

I probably wouldn't consider using BASIC, APL, or Prolog for any project I
was involved in, but I consider myself enriched as a programmer because I
know a little bit of them (there was a time when I was an expert BASIC
programmer, but the language has evolved quite a bit in the two decades
since then, and it would take me a few days to get up to speed on modern
BASIC).

Dirk Zoller

unread,
Oct 20, 2000, 3:00:00 AM10/20/00
to
Boris Schaefer wrote:

> I don't think one has to know multiple languages, but I consider
> learning multiple languages rewarding because one usually learns new
> concepts together with the new languages. I also believe that
> learning new concepts makes better programmers.

There has been a direction in philosophy which strongly emphasized
and carefully scrutinized the connection between language and thinking.
These people were so caught by the fact that the only way of expressing
their thoughts was language, that they finally didn't seem to see any
difference between philosophic thought and analysis of how language works.
AFAIR Wittgenstein was one of the first in that school of thought and
he was very influential throughout the first half of the last century.

Seems like many programmers feel alike with respect to their programming
languages.


--
Dirk Zoller Phone: +49-69-50959861
Sol-3 GmbH&Co KG Fax: +49-69-50959859
Niddastrape 98-102 e-mail: d...@sol-3.de
60329 Frankfurt/M
Germany

Tom Breton

unread,
Oct 20, 2000, 3:00:00 AM10/20/00
to
The Glauber <thegl...@my-deja.com> writes:

>
> Also, you can do that same program in Lisp as a "one-liner" ... if
> you happen to have the right initialization files!

Yes, exactly. All of the "how succintly can language X say *this*?"
challenges come down to library issues. (Except for some very poor
languages that can't even use libraries easily)

--
Tom Breton, http://world.std.com/~tob
Not using "gh" 1997-2000. http://world.std.com/~tob/ugh-free.html
Some vocal people in cll make frequent, hasty personal attacks, but if
you killfile them cll becomes usable.

Erik Naggum

unread,
Oct 20, 2000, 3:00:00 AM10/20/00
to
* The Glauber <thegl...@my-deja.com>

| I still don't understand how this works. read-sequence returns a position,
| not a string; "vendor" would be bound to the number 5, right?

It doesn't work because I blew it. I have this nifty little Emacs
hack that lets me edit Lisp code in an indirect buffer, but I must
have posted the code I jotted down first and discarded the code that
worked after improvements and testing.

The real code goes like this:

(let ((vendor (make-string 5)))
(read-sequence vendor stream)
...

The return value from read-sequence is discarded because it may be
less than 5 only when the end of the file has been reached, and then
we're going to hit the real end of file in the next read operations,
so testing for zero would have been necessary, but only a waste.

I have long been annoyed that read-sequence returns 0 on end of
file. That kind of braindamaged conflation between a "no can do"
whine (useless return value) and "read past the end of the file"
condition doesn't belong in a programming language, but rather in
some underdesigned little toy operating system like early 1970's
Unix. *sigh*

Thomas A. Russ

unread,
Oct 20, 2000, 3:00:00 AM10/20/00
to
The Glauber <thegl...@my-deja.com> writes:

> ;;; Return the hash's keys, in no particular order
> ;;; NOTE: Don't modify the keys!
> (defmacro hash-table-keys (hash)
> (let ((key (gensym)) (val (gensym)) (keylist (gensym)))
> `(let ((,keylist '()))
> (maphash #'(lambda (,key ,val) (push ,key ,keylist)) ,hash)
> ,keylist
> )
> )
> )

Any particular reason why this is implemented as a macro? It would seem
that a function would do just as well, and be simpler. Since you are
already doing a maphash, the function call overhead can't be worth
worrying about. [Hmmm, maybe this will spawn another premature
optimization thread??]


--
Thomas A. Russ, USC/Information Sciences Institute t...@isi.edu

Lieven Marchand

unread,
Oct 20, 2000, 3:00:00 AM10/20/00
to
The Glauber <thegl...@my-deja.com> writes:

> Here's my version (probably not very fast, but using only what i know of CL):
>

> ;;; Return the hash's keys, in no particular order
> ;;; NOTE: Don't modify the keys!
> (defmacro hash-table-keys (hash)
> (let ((key (gensym)) (val (gensym)) (keylist (gensym)))
> `(let ((,keylist '()))
> (maphash #'(lambda (,key ,val) (push ,key ,keylist)) ,hash)
> ,keylist
> )
> )
> )

Why did you make this a macro? It would be a lot simpler as a function
and there is no reason to make it a macro.

I'd do something like

;;; untested
(defun hash-table-keys (hash)
(loop for key being each hash-key of hash
collect key))

--
Lieven Marchand <m...@bewoner.dma.be>
Lambda calculus - Call us a mad club

Bruce Hoult

unread,
Oct 20, 2000, 6:38:03 PM10/20/00
to
In article <39F0BF12...@sol-3.de>, Dirk Zoller <d...@sol-3.de>
wrote:

> Boris Schaefer wrote:
>
> > I don't think one has to know multiple languages, but I consider
> > learning multiple languages rewarding because one usually learns new
> > concepts together with the new languages. I also believe that
> > learning new concepts makes better programmers.
>
> There has been a direction in philosophy which strongly emphasized
> and carefully scrutinized the connection between language and thinking.
> These people were so caught by the fact that the only way of expressing
> their thoughts was language, that they finally didn't seem to see any
> difference between philosophic thought and analysis of how language works.
> AFAIR Wittgenstein was one of the first in that school of thought and
> he was very influential throughout the first half of the last century.
>
> Seems like many programmers feel alike with respect to their programming
> languages.

Yeah, I've heard of those guys. Some sort of hypothesis or other,
wasn't there. And isn't that the same school that says things such as
"Specifications are for the weak and timid!" and "What is this talk of
'release'? We do not make software 'releases'. Our software escapes,
leaving a bloody trail of designers and quality assurance people in its
wake!".

Starts with "W", I think :-)

-- Bruce
Conflations R Us

Erik Naggum

unread,
Oct 20, 2000, 8:02:26 PM10/20/00
to
* Barry Margolin <bar...@genuity.net>

| Conversely, if someone only knows one language, and has trouble
| learning other languages, they're probably not a "great programmer".
| The difficulty they have in learning those other languages suggests
| that their thought processes are wedded to the paradigms embodied in
| that language, a sort of tunnel vision.

Well, this is obviously true, but it cuts both ways. Suppose you
are used to several _great_ languages and are asked to work in some
braindamaged language designed by someone whose design concepts
never got out of the 50's, how well could you do it? I have very
serious problems working with C++ for this simple reason: I have
this _overwhelming_ urge to redesign the language first. It is such
a phenomenally moronic _non-design_ anyone with exposure to a real
object-oriented language (such as Simula, on which Bjarne Stroustrup
based his desire to still use C while every other Simula programmer
in the world would have understood that C would be a good language
to implement the machinery needed to build a good Simula system at
best, not a good language in which constantly to reimplement said
machinery by hand) would have to shut off the alarms that go "it's a
trap! run! run!" (add scary movie soundtrack for best effects),
while trying not to think how it would be done in a real language.
Matter of fact, it was a project in C++ (and some class design that
stood the test of time) that caused me to look real hard at doing
something other than programming for a living for the rest of my
life, but then I finally wound up wanting to work with Common Lisp
after having studied several other interesting languages, including
Ada and Smalltalk.

I can't hack Perl, either. My brain starts to yell "This is wrong!
This is all wrong! Don't _do_ this to me!", I lose my concentration
_real_ quick and I start to need caffeine, rest, fresh air, water,
you name it, just about anything other than having to deal with that
Perl shit. I have pissed away _days_ when I was reimplementing some
200-line Perl insanity that used a freaking _database_ to store some
really simple values that would be perfectly happy just sitting in
the value slot of a symbol. What _really_ pisses me _off_ with Perl
is that people work so hard doing so terribl little while they think
they have worked very little doing something really nifty. Fools!

Using such inferior languages is like asking a chef who could have
done wonders with any kind of raw materials, to use a dirty kitchen,
a broken refrigerator with food that is about to die a second time,
broken tools, and brownish tap water that tasted of swamp land. His
first task would be to clean up the place. Creating food in there
would be the furthest from his mind. That's how I feel about Perl
and C++. I prefer to call it "good taste", not "tunnel vision".

I don't like rap, either. Call me intolerant.

Erik Naggum

unread,
Oct 20, 2000, 8:08:48 PM10/20/00
to
* Erik Naggum <er...@naggum.net>

| How does this require multiple language skills? Must an author be
| able to write great literature in multiple languages?

* Boris Schaefer <bo...@uncommon-sense.net>


| I don't think one has to know multiple languages, but I consider
| learning multiple languages rewarding because one usually learns new
| concepts together with the new languages. I also believe that
| learning new concepts makes better programmers.
|

| The languages are not terribly important, but they are a good source
| of inspiration.

Let me repeat the question: How does this require multiple language
skills?

Yes, multiple languages have benefits. Are those benefits tied to
multiple languages? I don't think they are. I think they are tied
to curiosity, creativity, never being fully satisfied that you have
found the best solution, and enough humility to listen to others and
their ideas too It would _not_ be a good thing for a programmer to
_have_ to learn multiple languages to be able to use new concepts,
yet that's exactly how I see most new language come into existence:
Some (relative) idiot can't bring himself to implement his concepts
(which may well be brilliant and truly new) in an existing language,
so he goes off discarding everything others spent years building so
he can have his pet concept easily expressed. That's nuts, really.

There are people who have to design their own alphabets or spellings
in order to feel able to express themselves, but I think we label
them "insane" rather than applaud them as "language designers".

Dirk Zoller

unread,
Oct 20, 2000, 8:45:35 PM10/20/00
to
Erik Naggum wrote:

> Yes, multiple languages have benefits. Are those benefits tied to
> multiple languages? I don't think they are. I think they are tied
> to curiosity, creativity, never being fully satisfied that you have
> found the best solution, and enough humility to listen to others and
> their ideas too It would _not_ be a good thing for a programmer to
> _have_ to learn multiple languages to be able to use new concepts,
> yet that's exactly how I see most new language come into existence:
> Some (relative) idiot can't bring himself to implement his concepts
> (which may well be brilliant and truly new) in an existing language,
> so he goes off discarding everything others spent years building so
> he can have his pet concept easily expressed. That's nuts, really.

Following your argumentation would mean that it is only due to "(relative)
idiot"s that we are not still programming in Assembler or FortranIV.

(If you think you're on the safe side as a Lisp user here, you are not.
Since where is the difference between extending and changing a language
and inventing a new one? You must ask yourself why you're not programming
in some ancient Lisp? Due to idiots which were unable to express themselves
in those dialects, obviously.)

It takes some repeated reconsideration and starting over again and again
from scratch while trying to keep the good stuff, get rid of the bad and
invent a few new bits.

Where what's "good" or "bad" or "desirable new stuff" is to a great deal a
matter of taste and therefore in the big picture -- random. Some languages
survive, most die as experiments. Looks like sheer darwinism. Nature has
achieved a lot by such mechanisms.

> There are people who have to design their own alphabets or spellings
> in order to feel able to express themselves, but I think we label
> them "insane" rather than applaud them as "language designers".

People are different. People express themselves in various ways. Some
discuss in newsgroups, others paint, some design programming languages.
People experiment. This does not mean they're insane, nor stupid, nor
incompetent idiots, nor does any other of Naggum's most frequently used
attributes apply.

--
Dirk Zoller
e-mail: d...@onlinehome.de
http://www.dirk-zoller.de

Christopher Browne

unread,
Oct 20, 2000, 10:38:32 PM10/20/00
to
In our last episode (Fri, 20 Oct 2000 20:30:25 GMT),

the artist formerly known as The Glauber said:
>In article <31810498...@naggum.net>,
> Erik Naggum <er...@naggum.net> wrote:
>> * The Glauber <thegl...@my-deja.com>

>> | I think software creation is a multi-discipline activity, and not
>> | only you gain by knowing other programming languages, but you gain
>> | by knowing other fields as well. Programming is solving problems,
>> | and solving problems sometimes requires being able to think outside
>> | the box.
>>
>> How does this require multiple language skills? Must an author be
>> able to write great literature in multiple languages?
>
>Great example. There's very little empyrical evidence, of course, but i
>believe that someone that can write great literature, say, in Russian, would
>also write great literature in Portuguese, if he had to.

Perhaps; perhaps not. The ability to write "great literature"
involves two major things:

1. Having a great story to tell. This part could _potentially_ be
usable in any language.

2. Having the ability to _express_ that story in some particular
language. The fact that I communicate well in English does not
establish that I can do the same in Russian.

"Great literature" requires both components, in substantial measure.

>It helps not in the sense that knowing C will help you write better
>Lisp, but in the sense that it opens up the mind to thinking in
>different ways. Someone can probably be a great programmer and only
>know one language, but i prefer to work with people that are more
>curious than this.

It is useful to know some different "styles" of programming as this
influences the ability to express yourself in whatever language you
use.

An obvious "retort" to this is that if a particular language (oh, say,
Common Lisp?) happens to be sufficiently expressive, there may be
little merit in "opening" your mind by learning some other _minimally_
expressive language.

>Whatever it is that makes someone a good programmer is not tied to
>the choice of programming language. Most people can learn another
>computer language easily. It's the problem solving thinking, the
>ability to analyse and integrate, that's so hard.

As with "Point #1" up above, there's a need to have a Good Story To
Tell. Knowing arcania of whatever language, whether Lisp, Latin, or
Perl, will do NO good if you can't grapple with the problem and don't
have some sort of "mental picture" of how to solve it.

>I'm sure you'd be a great Perl programmer! :-)

Heads will be exploding all over Scandinavia, no doubt...
--
(concatenate 'string "cbbrowne" "@" "acm.org")
<http://www.ntlug.org/~cbbrowne/lisp.html>
Rules of the Evil Overlord #171. "I will not locate a base in a
volcano, cave, or any other location where it would be ridiculously
easy to bypass security by rappelling down from above."
<http://www.eviloverlord.com/>

Christopher Browne

unread,
Oct 20, 2000, 11:25:00 PM10/20/00
to
In our last episode (Sat, 21 Oct 2000 11:38:03 +1300),

the artist formerly known as Bruce Hoult said:
>"What is this talk of 'release'? We do not make software 'releases'.
>Our software escapes, leaving a bloody trail of designers and quality
>assurance people in its wake!".

Oh, my... That's a .signature struggling to get below the "-- "!!!
--
cbbr...@acm.org - <http://www.hex.net/~cbbrowne/>
Rules of the Evil Overlord #190. "If my mad scientist/wizard tells me
he has almost perfected my Superweapon but it still needs more
testing, I will wait for him to complete the tests. No one ever
conquered the world using a beta version."
<http://www.eviloverlord.com/>

Bruce Hoult

unread,
Oct 20, 2000, 11:56:37 PM10/20/00
to
In article <slrn8v22un....@knuth.brownes.org>,
cbbr...@hex.net wrote:

> In our last episode (Sat, 21 Oct 2000 11:38:03 +1300),
> the artist formerly known as Bruce Hoult said:
> >"What is this talk of 'release'? We do not make software 'releases'.
> >Our software escapes, leaving a bloody trail of designers and quality
> >assurance people in its wake!".
>
> Oh, my... That's a .signature struggling to get below the "-- "!!!

It is actually, of course, from a list of "How to tell if one of your
programmers is a Klingon", which can be found in numerous places on the
net. It does bear a striking resemblance to a number of the places I've
worked, although I think it relates more to the management than to the
grunts.

I trust I don't need to explain the punning link between the Whorfian
(or Sapir-Whorf) Hypothesis and Klingons?

-- Bruce

vsync

unread,
Oct 21, 2000, 12:12:22 AM10/21/00
to
cbbr...@news.hex.net (Christopher Browne) writes:

> "Great literature" requires both components, in substantial measure.

Of course, many things that are called "great literature" and studied
in English class have neither, and are viewed as special simply
because they are old. Conversely, something having been written
recently does not diminish its value at all.

--
vsync
http://quadium.net/ - last updated Sat Oct 7 18:53:10 PDT 2000
(cons (cons (car (cons 'c 'r)) (cdr (cons 'a 'o))) ; Orjner
(cons (cons (car (cons 'n 'c)) (cdr (cons nil 's))) nil))

Erik Naggum

unread,
Oct 20, 2000, 9:55:03 PM10/20/00
to
* Dirk Zoller <d...@onlinehome.de>

| Following your argumentation would mean that it is only due to
| "(relative) idiot"s that we are not still programming in Assembler
| or FortranIV.

That would be "missing the point and wandering off into the mist",
not "following my argumentation".

| (If you think you're on the safe side as a Lisp user here, you are
| not. Since where is the difference between extending and changing a
| language and inventing a new one? You must ask yourself why you're
| not programming in some ancient Lisp? Due to idiots which were
| unable to express themselves in those dialects, obviously.)

Could you please calm down and _think_ before you try this again?

If you don't have to build a new compiler and runtime system and
support tools just because you had a new idea, you don't have a new
language. That's where the difference lies. This is pretty obvious
if you aren't dead set on disagreeing with everything I say just
because you feel obliged to spout some trivially obvious

| It takes some repeated reconsideration and starting over again and
| again from scratch while trying to keep the good stuff, get rid of
| the bad and invent a few new bits.

Really? Is that how it works?

| Where what's "good" or "bad" or "desirable new stuff" is to a great
| deal a matter of taste and therefore in the big picture -- random.
| Some languages survive, most die as experiments. Looks like sheer
| darwinism. Nature has achieved a lot by such mechanisms.

Nature is a murderer, not a nurturer. Nature does not achieve, it
destroys. Nature is what keeps each species from over-populating
their habitat. Natural selection doesn't mean the survival of the
fit, it means the death of the unfit. Whatever survives isn't fit,
either, it just wasn't unfit enough to die, and thus grow diversity
that may some time in the future determine fit and unfit. Whatever
Nature has done, it's sheer _accident_ heavily slanted towards death
and misery. Poverty and hunger is the natural condition. This goes
against a lot of mumbo-jumbo new-age mystic crap and those fools who
think there is a God figure holding a hand over them to make Nature
_not_ kill them at random and for no reason whatsoever. To Nature,
humanity is an over-populating pest. We have to _fight_ Nature all
the time to survive, because Nature is what comes up with Ebola and
AIDS and all kinds of diseaes and death. Human beings come up with
medicine and a reasonably decent way to organize society in order to
reduce, minimize, or remove the effects of Nature, like letting
people live long, rewarding lives in the blistering heat of Texas
(except those that George W. Bush ignores completely or executes,
also at random and for no good reason -- he's the Natural President)
or the death-trap cold of places like Norway.

Those who believe Nature is benevolent are insane. The benevolence
lies solely in the human capacities for compassion and intelligence
which we use to predict the course of Nature and shelter each other
from it, and to exploit the course of Nature and let each other
benefit from it. It's because we beat down Darwinism tha have the
kinds of societies we have. Social Darwinism means plunging all 6
billion people into disease-ridden poverty and a life expectance of
about 25 years at birth, so that a few could have a 50-year life and
heaps and heaps of whining little kids, about 90% of which would die.

Don't fucking talk to me about Darwinism, you undead misfit.

| > There are people who have to design their own alphabets or spellings
| > in order to feel able to express themselves, but I think we label
| > them "insane" rather than applaud them as "language designers".
|
| People are different. People express themselves in various ways.

Thank you, Dirk. I really had _no_ idea we weren't all identical.
Here I thought I could just ramble and rant and everybody would of
course agree with everything and nobody would for a second think of
coming up and tell me the Truth about People. But, Whoa! We're,
like, _not_ identical! Christ on a tricycle, I can't just assume
that everybody are _exactly_ like me? Man, that sucks. Really,
what would I _do_ without you to tell me these Important Truths?

What worries me most is actually that you think you have a point.

| Some discuss in newsgroups, others paint, some design programming
| languages. People experiment. This does not mean they're insane,
| nor stupid, nor incompetent idiots, nor does any other of Naggum's
| most frequently used attributes apply.

No, but they still apply to you. Thank you for demonstrating that.
Go play in traffic and be naturally selected, now. Thank you.

Dirk Zoller

unread,
Oct 21, 2000, 3:00:00 AM10/21/00
to
Erik Naggum wrote:

> Could you please calm down and _think_ before you try this again?

Thanks, but was and still am absolutely calm.

> | Where what's "good" or "bad" or "desirable new stuff" is to a great
> | deal a matter of taste and therefore in the big picture -- random.
> | Some languages survive, most die as experiments. Looks like sheer
> | darwinism. Nature has achieved a lot by such mechanisms.
>

> Nature is a murderer, not a nurturer. [...tonsof...]
> Those who believe Nature is benevolent are insane. [...even more...]


> Don't fucking talk to me about Darwinism, you undead misfit.

(LOL!)

You're again missing the point. For the programming languages out there,
what is the nature? The "nature" is all other programmers. Some programming
languages "live" on because they are used, others "die" because they're not.

There is nothing cruel about this. Unless you feel so compassionate towards
your language, that for you there lies cruelty in all those incompetent
other programmers out there not being a comfortable habitat for your pet
programming language.


(Now you please also calm down, Erik. I'm meanwhile used to your style
and won't enter into any further exchange of insults with you.
After all, those transport no interesting thought nor information but
only bad feelings, which I'd anyway have to pretend.)

BTW certain newsgroups are also sort of closed habitats and there are
some strange beasts to discover!

Boris Schaefer

unread,
Oct 21, 2000, 3:00:00 AM10/21/00
to
Erik Naggum <er...@naggum.net> writes:

| Yes, multiple languages have benefits. Are those benefits tied to
| multiple languages? I don't think they are. I think they are tied
| to curiosity, creativity, never being fully satisfied that you have
| found the best solution, and enough humility to listen to others and
| their ideas too It would _not_ be a good thing for a programmer to
| _have_ to learn multiple languages to be able to use new concepts,
| yet that's exactly how I see most new language come into existence:
| Some (relative) idiot can't bring himself to implement his concepts
| (which may well be brilliant and truly new) in an existing language,
| so he goes off discarding everything others spent years building so
| he can have his pet concept easily expressed. That's nuts, really.

I agree that _if_ language designers would not so easily go and create
completely new languages but instead would seriously try to implement
their ideas in an existing language then learning various languages
might not be as rewarding as I consider it to be. That's just not the
current state of the world.

I believe that you can only implement truly new concepts in an
existing language if that language allows you to treat its code as
data, and since the popular languages are not capable of this I doubt
that we will soon see the language designers become concept designers
and converge on some existing language.

| There are people who have to design their own alphabets or spellings
| in order to feel able to express themselves, but I think we label
| them "insane" rather than applaud them as "language designers".

This reminds me of Richard Feynman who wrote[1] that in high school he
once invented and used all new and different symbols for his math
which he considered superior, but which he discarded after having
noticed that he needed to communicate with others.

Boris

[1] `Surely You're Joking Mr. Feynman', Richard P. Feynman

The steady state of disks is full.
-- Ken Thompson

Boris Schaefer

unread,
Oct 21, 2000, 3:00:00 AM10/21/00
to
Dirk Zoller <d...@onlinehome.de> writes:

| For the programming languages out there, what is the nature? The
| "nature" is all other programmers. Some programming languages "live"
| on because they are used, others "die" because they're not.

Arguing from use to usefulness is not very useful. Most programming
is done in inferior languages after all.

On the whole, I'd rather be in Philadelphia.
-- W.C. Fields' epitaph

Erik Naggum

unread,
Oct 21, 2000, 3:00:00 AM10/21/00
to
* Dirk Zoller <d...@onlinehome.de>

| Thanks, but was and still am absolutely calm.

_Absolutely_, even? That would explain the absence of thought and
other brain activity. If you aren't even stirred the littlest bit
by what I told you, you are probably a dangerous lunatic who feels
as calm when actually killing as when just talking casually about
it. I'm not comforted by the fact that you post from Germany with
that emotional dysfunction.

| (LOL!)

At what other times to you laugh out loud when you don't understand
that you're talking about death and misery? Do you think _Darwin_
failed to realize that only by the death of the masses does the
species advance? He's acutely aware of it, and he was depressed
that people at home took his ideas about Nature to apply to humans.
But not a German idiot! No, no, no! Darwin is good for humans,
too! It's been only 50 years, but by God, keep the Germans in check
lest they advance their Social Darwinism ideas.

| You're again missing the point.

Do you think this is a game where the guy who last says that wins?

| For the programming languages out there, what is the nature? The
| "nature" is all other programmers. Some programming languages
| "live" on because they are used, others "die" because they're not.

And you think "Darwinism" is applicable in such an environment? Do
you at all understand what evolution is about? It's about accidents
of mutation and random changes that fall into the category "not
lethal before giving birth" while they are insignificant, but then
they may become what separates the living (as in: those most able to
have offspring -- individual _lives_ do not count in Darwinism) from
the dead some time long into the future relative to where they first
occurred. For this model to work with programming languages, first,
the languages would have to evolve on their own, languages spawning
languages randomly, and, second, they would have to be selected
according to some essentially random criteria by programmers, who
would not stick with a language, but choose a new one each time,
like you don't stick to eating some abstract "vegetables", you eat
different _physical_ ones each time. I'm sure this model fits your
very unevolved intellectual capacity, but if you think anyone who
understands the least bit about the process of evolution and
Darwinism beyond the slogan "survival of the fittest", which seems
to be your upper limit to appreciation, would find your idiotic
analogy useful, that's an insult to intelligence as a phenomenon.

Evolution works so well because about 99% of the offspring of each
generation dies before they can themselves give birth. After we
reach such incredibly advanced stages as human beings (yourself
excluded by your own admission), this process stops working because
the cost of giving birth to more and more complex beings takes more
and more resources and longer and longer time, which leads to that
anti-evolutionary concept of _caring_ for each offspring not just
while young and in need of parental shelter, but for life. Normal
people don't shoot and kill mentally retarded or sterilze them so
they won't have children. Some Germans who believed in what you
believe in did that, you know. You don't care about that, do you?

We humans, you excluded, obviously, don't "evolve". First, we keep
even the children whom Nature would have killed. Second, we try not
to engage in the enormous waste that is natural competition (the
closest we have is Microsoft's predatory romp through intelligent
life), but find that our resources are so sparse that we must think
carefully to avoid serious mistakes. This means we get a lot
further before a mistake kills something, which Nature does not. We
humans can do on purpose and with forethought in a single generation
what Nature requires millions of generations to produce by random
_because_ we don't wantonly kill everything at random, like you want
us to do because you were somehow spared that process and feel
charmed or something.

You see, Dirk Zoller, the idea of "individual" has actually made it
into the human meme pool. We no longer talk about the advancement
of the _species_ by sacrificing individual people. We deal with
individuals one by one. As an individual, that means you no longer
have that very easy escape of just dying if you make a mistake: You
have a responsibility (or should I say Pflicht to a German?) to do
more than comes "naturally", which would be to sit on your ass and
do nothing, least of all think, as long as the food comes basically
for free. This isn't about bringing the most genes to the next
generation, anymore, Dirk, it's about what you do in _your_ life.
This isn't about producing something new all the time, despite what
you see in the TV commercials, but what you do with what you have.

As it happens, all human endeavors are about what they do while
people are alive, because that's what's going to outlive us. We're
past the brutal, German philosophy of killing those who don't fit.
Except for the Middle East, most people on this planet have figured
out that it means more to have something to live for than something
to die for. This also includes working hard to save companies,
familes, values -- you don't just abandon them. This also means
caring for something, a concept that I'm sure is so foreign to you
that you have to laugh out load, again, when you see what people
care about: A cat, a programming language, an air gun or two
(Walther, of German make, btw), the intellectual property rights of
an employer's production of financial news, the violation of human
rights in the collection of taxes in Norway, the conservative
American response to FDA approval of RU 486, the failure of most
people to consider anything but the best possible scenario of the
application of their ideas. I care. You can't even _pretend_ to
feel, Dirk Zoller.

| There is nothing cruel about this.

Then you understand exactly nothing about what you're talking about.
Which is, like, today's biggest surprise. What's next? "The Origin
of the Programming Languages" by Dirk Zoller? At the very least
Charles Darwin was a scientist with respect for the scientific
method. You're just a nuthead who can't even read his theories.

| Unless you feel so compassionate towards your language, that for you
| there lies cruelty in all those incompetent other programmers out
| there not being a comfortable habitat for your pet programming
| language.

Now I know you are so fantastically devoid of intelligence that you
are forever prohibited from accepting input from the outside world.
This explains your need to laugh out loud when you should have made
the connection that explains why Germany _still_ is the culture on
this planet with the worst record and worst prospects when it comes
to _not_ understanding how an idea can turn into a killing machine.

| (Now you please also calm down, Erik. I'm meanwhile used to your style
| and won't enter into any further exchange of insults with you.

That you are "used to my style" means you _are_ an idiot. People
who have a grain of clue manage to figure this out and change their
ways to get a different style, that of respect for an intelligence
at work that learns. You are obviously not one of those, and you're
damn _proud_ of it, too. And, _surprisingly_, you're German, like
most others who are proud to be wrong, and who don't stop to think
what it means to be proud to be dead wrong.

| After all, those transport no interesting thought nor information
| but only bad feelings, which I'd anyway have to pretend.)

If you _had_ the capacity to feel, you would find both thought and
information -- if you don't feel and think at the same time, you
don't _learn_ anything. My style is one where I _want_ you to feel
pain, laugh, enjoy yourself, and cringe in horror, while your brain
is doing the hard work of thinking and making connections. You, and
some other one-trick morons, are so devoid of a working intelligence
that you think that if you feel anything at all, that's the whole
purpose. I have found my style _exceptionally_ good at identifying
your kind of pre-intelligent beings. But again, the German psyche.
Good old Immanuel Kant rearing his ugly head, stopping a whole
culture from evolving by disallowing and suprressing all feeling at
the outset, which leads to fewer mistakes that cause creative leaps,
except, of course, the _really_ big mistakes where not having human
feelings is the key.

| BTW certain newsgroups are also sort of closed habitats and there are
| some strange beasts to discover!

I'm glad you're enjoying yourself, but you're the clown. If you had
the capacity to feel shame, you would have stuck your head in the
nearest toilet and flushed it down by now. But I'm sure you're
still all laughing out loud and not getting a _single_ idea through
that wall that protects the part of you that would die instantly if
it were ever exposed to any _human_ feelings. Germans like you
actually scare me, because you _think_ so little about your ideas
and their effects on this world and on the lives of the people in it.

Go and actually read the works of Charles Darwin, Dirk Zoller. They
aren't about economics or social processes or programming languages
or how groups of people interact. If a connection is found between
biology and how we build societies, it is _not_ in the process of
natural selection. The economy is _not_ a part of nature that obeys
an extrapolation of the theories discovered to apply to evolution.
I also recommend all of what Richard Dawkins has published. In The
Blind Watchmaker, for instance, he uses simple computer programs to
show how evolution works over vast stretches of time. That might be
able to hold your attention, as you seem to be very narrowly focused
on one thing at a time, and now it's programming languages. Widen
your scope, Dirk Zoller. Don't just _pretend_ that you know about
the outside world. Feel, think, learn. Care. Be _human_. And
quit espousing ideas that, with just a little consideration of the
source and likely consequences in your specific culture, means you
felt nothing, did not think, did not learn, and do not care.

Or laugh out loud, again. At least you're good at that, Dirk Zoller.

Dirk Zoller

unread,
Oct 21, 2000, 3:00:00 AM10/21/00
to
Boris Schaefer wrote:
> | For the programming languages out there, what is the nature? The
> | "nature" is all other programmers. Some programming languages "live"
> | on because they are used, others "die" because they're not.
>
> Arguing from use to usefulness is not very useful. Most programming
> is done in inferior languages after all.

It was not my intention to argue this way. I was only making a trivial
observation in reply to a misunderstanding.

I just don't think it is a good idea to claim the evolution of programming
languages should stop because there are already good languages available.
Even excellent languages fail to attract programmers. Then again in some
sense lesser are invented in the hope to achieve some progress on a broader
base of users. This won't stop and why should it?

Dirk Zoller

unread,
Oct 21, 2000, 3:00:00 AM10/21/00
to
Erik Naggum wrote:

> | (LOL!)
>
> At what other times to you laugh out loud when you don't understand
> that you're talking about death and misery?

Let's get this right. You were denying the need of any further attempt
to invent programming languages. I made an analogy between such attempts and
Darwinism, comparing new languages with mutations and programmers with a
biotope which either allows for those languages to live (being used) or not
(being ignored).

No matter how appropriate this comparision was (I still think it is not too
bad), you got it wrong, and posted at your typical length something about the
cruelty of nature. Although I'd had some remarks about your perception of
cruel mother nature, I didn't reply to that. Instead I tried to point out that
I wasn't talking about anything cruel, but only about the evolution of ideas
as manifest in all those programming languages.

Your posting contained two remarkable sentences:

One:


> Don't fucking talk to me about Darwinism, you undead misfit.

Two:


> Go play in traffic and be naturally selected, now. Thank you.

Now you tell me: What is the appropriate reply to that?
If "LOL" is not ok, then what? Using your vocabulary? I'm tempted.


> And you think "Darwinism" is applicable in such an environment?

All analogies break down somewhere. Where is the point in determining
so exactly as you do, where my little analogy breaks down? A yes, it
allows you to write a huge posting with many of your favourite words
in it.

> Or laugh out loud, again. At least you're good at that, Dirk Zoller.

Not this time. The amount of hate I encounter here is saddening.
Again: Calm down Erik Naggum, precious resident of comp.lang.lisp!

Dirk Zoller

Erik Naggum

unread,
Oct 21, 2000, 3:00:00 AM10/21/00
to
* Dirk Zoller <d...@onlinehome.de>

| Let's get this right.

Now, _that's_ a good starting point if I ever saw one, except, of
course, you think whatever _you_ think is right and won't listen to
anyone or anything else. I'm waiting (like, _right_) for that last
part, where your fucking annoying arrogance and self-righteousness
has cooled off and you start to _listen_ and _think_ again. People
like you, who fail to listen and think, while espousing dangerous
ideas, are what makes this world much less than it could be. If we
can get rid of you (which is unlikely to happen) or at least get
some of your self-inflicted retarded arrogance chipped off, then
maybe we can engage in intelligent conversation again, and not have
to deal with morose trivialties and inane obviousness.

| You were denying the need of any further attempt to invent
| programming languages.

Just Plain Wrong. See, you made an _idiotic_ assumption and you
based your whole entire retarded tirade on something that wasn't
even true, but did you have the brainpower to figure out the need to
tell me what _you_ read me to have said before you got kicked around
real hard? No. So it _worked_ to kick you around, did it not?

Can you keep focused and keep thinking long enough at a time that
you can try and figure out what I really said instead of responding
to some of your stupid fears?

| Using your vocabulary?

Don't flatter yourself.

| Not this time. The amount of hate I encounter here is saddening.

The feeling you experience is that of being hated. This is good.
This means that you can feel _something_. I'm glad you have at
least stopped being that unfeeling moron you were to begin with.

Now, you don't _encounter_ hate. It was a deliberate attempt to
make you feel something that would actually affectน you. That
you're so fucking arrogant that you can't even see that how you feel
can have a vast number of possible causes, but have to go and choose
_one_ such cause (out of what? my guess: hatred) and assume it is
the only one possible, and then _blame_ someone for something you
have _no_ idea they intended or even did, _that's_ something else I
wanted you to show us. Thank you for demonstrating that you're the
kind of guy who thinks that just because you thought it up, it must
be right. That because you think the cause of your feelings is so
and so, then it must necessarily be _exactly_ that? No doubt in
sight. No desire to test your assumptions. And no inclination on
your part to improve the _accuracy_ of your assumptions, either.
Just lumber ahead like a 300-pound moron who thinks he's going in
the right direction. Basing actions on untested assumptions like
you _prove_ that you do, is the single best indicator of very low
intelligence there is, because it means you have never actually had
to revise any of your assumptions even after the actions you thought
would have a specific response failed to get it. Instead, you "get
used to my style"! Christ in a Volvo, that's impenetrably dense!
That's like driving a tank in heavy traffic and complaining about
the bumpy ride as you crush people's cars instead of slowing down or
getting a normal car. It isn't the rest of the world that's wrong,
Dirk Zoller, it's you who have based a bunch of your shit thinking
on unfounded, untested assumptions. Now, go test and revise them!

How you feel is your responsibility, _especially_ when you say you
don't feel anything at all. If you can't even take responsibility
for having repressed your own emotions and have to blame someone
else for how you feel when you suddenly do, after all, you really
should go play in traffic, because you're a dangerous lunatic.

| Again: Calm down Erik Naggum, precious resident of comp.lang.lisp!

And this from the moron who claims to be absolutely calm, himself.
I guess we all know just how calm _he_ is while he's saying he is,
now. Has it occured to you, you arrogant little shit-for-brains,
that you don't have the first clue how calm anyone else is? Here I
am, trying to kick-start your dormant thinking apparatus, and you
react like a toad, all frightened and reflex-bound. What kind of
dead meat are you?

Engage your brain, Dirk Zoller. Heck, electroshock it, whatever,
just get it running again. You were born with it, and even years of
disuse can't quite kill all of it. Start to _think_, damnit!

Now understand that I actually care about what you do with your
brain, because I think it's a crime to leave any brain unused, and
the only way to get some of you lazy bums to think is to kick your
butt so hard it feels like a hole appeared in your brain.

#:Erik
-------
น This is a correct usage of "affect".

Erik Naggum

unread,
Oct 21, 2000, 3:00:00 AM10/21/00
to
* Dirk Zoller <d...@onlinehome.de>

| I just don't think it is a good idea to claim the evolution of
| programming languages should stop because there are already good
| languages available.

Nobody ever claimed anything like that. You understood someone else
to have implied that, but that doesn't mean they _claimed_ it. Get
your frigging facts right before your lack of precision in blaming
people for something they didn't do gets someone killed or hurt.

You know what I _do_ hate, Dirk Zoller? Intellectual laziness.

Dirk Zoller

unread,
Oct 21, 2000, 3:00:00 AM10/21/00
to
Erik Naggum wrote:
> Nobody ever claimed anything like that. You understood someone else
> to have implied that, but that doesn't mean they _claimed_ it. Get
> your frigging facts right before your lack of precision in blaming
> people for something they didn't do gets someone killed or hurt.

Maybe you didn't. But why so dramatic? I didn't say 99% of what you seem
to hear either.

> You know what I _do_ hate, Dirk Zoller? Intellectual laziness.

Jou. Faß Dich an Deine eigene Nase!

Dirk Zoller

unread,
Oct 21, 2000, 3:00:00 AM10/21/00
to
Erik Naggum wrote:

> * Dirk Zoller <d...@onlinehome.de>
> | I just don't think it is a good idea to claim the evolution of
> | programming languages should stop because there are already good
> | languages available.
>

> Nobody ever claimed anything like that. You understood someone else
> to have implied that, but that doesn't mean they _claimed_ it.


Correct. Here's what you called most of the past attempts to come up
with new programming languages: "That's nuts, really."

And now what? Everything else I said still holds.


> Get
> your frigging facts right before your lack of precision in blaming
> people for something they didn't do gets someone killed or hurt.


Now this is really ridiculous. How many misunderstandings on your part
did you use as base for lengthy tirades alone today?

Lieven Marchand

unread,
Oct 21, 2000, 3:00:00 AM10/21/00
to
Dirk Zoller <d...@onlinehome.de> writes:

> Not this time. The amount of hate I encounter here is saddening.

Hate is a strong word where hostility would do. You could try posting
more on Lisp to avoid this.

> Again: Calm down Erik Naggum, precious resident of comp.lang.lisp!

Erik may be more energetic against idiots than most, but I've learned
a lot from him and do consider him a precious resident. It would be a
sad day for comp.lang.lisp if idiots like you drive away the more
knowledgeable posters like Kent Pitman and Erik.

Cor

unread,
Oct 21, 2000, 3:00:00 AM10/21/00
to
Dirk Zoller <d...@onlinehome.de> writes:

Some people just like to talk/post whether someone listens/reads
or not ....
It's just a way to keep traffic going or keeping themselves from the street
nor doing some real work as an afterthought.


pse defvar () to nil anything you do or do-not like as non-read,
since I am 'also' just ranting ....

cor

--
(defvar my-computer '((OS . "GNU Emacs") (Boot-Loader . "GNU Linux")))
/* If GNU/LINUX has no solution, you've got the wrong problem */
/* Never install Slackware.........You might learn to use IT */
/* pa3...@amsat.org http://clsnet.dynip.nl */


HÃ¥kon Alstadheim

unread,
Oct 21, 2000, 3:00:00 AM10/21/00
to
The Glauber <thegl...@my-deja.com> writes:

> Erik Naggum <er...@naggum.net> wrote:
> > How does this require multiple language skills? Must an author be
> > able to write great literature in multiple languages?
>
> Great example. There's very little empyrical evidence, of course, but i
> believe that someone that can write great literature, say, in Russian, would
> also write great literature in Portuguese, if he had to.

The more apt comparison would be that to be a really great novelist,
it helps if you also can grok short-stories, free verse and bound
verse. Not necessarily be able to write them yourself, but be able to
see the beauty in each and how the form allows for different kinds of
expressions. If the keywords/lexemes are in English or Swahili is just
a detail.

--
HÃ¥kon Alstadheim, Montreal, Quebec, Canada

Dowe Keller

unread,
Oct 21, 2000, 3:00:00 AM10/21/00
to
On Fri, 20 Oct 2000 20:49:28 GMT, Barry Margolin <bar...@genuity.net> wrote:
>
>I probably wouldn't consider using BASIC, APL, or Prolog for any project I
>was involved in, but I consider myself enriched as a programmer because I
>know a little bit of them (there was a time when I was an expert BASIC
>programmer, but the language has evolved quite a bit in the two decades
>since then, and it would take me a few days to get up to speed on modern
>BASIC).

You do, of course, realize that the term "modern BASIC" is a bit of an
oxymoron.

--
do...@sierratel.com http://www.sierratel.com/dowe
---
There is a limit to how stupid people really are -- just as there's a limit
to the amount of hydrogen in the Universe. There's a lot, but there's a
limit.
--- David C. Barber

Erik Naggum

unread,
Oct 21, 2000, 8:46:23 PM10/21/00
to
* Dirk Zoller <d...@onlinehome.de>

| Everything else I said still holds.

Only in your mind, where reality has yet to enter.

| Now this is really ridiculous.

The joke is on you. All the time. Now, get off your arrogant
ignorance and grow a clue.

| How many misunderstandings on your part did you use as base for
| lengthy tirades alone today?

None.

Robert Monfera

unread,
Oct 21, 2000, 10:51:22 PM10/21/00
to
Dirk Zoller wrote:

> If "LOL" is not ok, then what?

LOL _is_ an answer. I always thought it meant "laugh of losers".

Robert

Boris Schaefer

unread,
Oct 22, 2000, 3:00:00 AM10/22/00
to
Dirk Zoller <d...@onlinehome.de> writes:

| > Arguing from use to usefulness is not very useful. Most
| > programming is done in inferior languages after all.
|
| It was not my intention to argue this way. I was only making a
| trivial observation in reply to a misunderstanding.

Well, you also said this:

| Some languages survive, most die as experiments. Looks like sheer
| darwinism. Nature has achieved a lot by such mechanisms.

This was the point I based my comment on.

| I just don't think it is a good idea to claim the evolution of
| programming languages should stop because there are already good

| languages available. Even excellent languages fail to attract


| programmers. Then again in some sense lesser are invented in the
| hope to achieve some progress on a broader base of users. This won't
| stop and why should it?

Nobody said anything like this. If I understood Erik correctly his
point was more or less that new languages are not all that often
necessary if languages themselves can evolve. Of course there might
be some new concepts that are simply so revolutionary that no current
language can adapt to incorporate them, but if you have a flexible
language, then this situation will be rare and we would probably have
fewer but more powerful languages. This would be good.

I consider this a valid point and I think that creating completely new
languages is wasteful (nuts, as Erik put it) if you consider the time
spent on reimplementing parsers, compilers, libraries, etc. If you
have a flexible language you might be able to incorporate new ideas
without reimplementing all this stuff. This would be good as well.

Boris

If I don't see you in the future, I'll see you in the pasture.

Mark-Jason Dominus

unread,
Oct 22, 2000, 3:00:00 AM10/22/00
to
In article <87wvf37...@orion.bln.pmsf.de>,
Pierre R. Mai <pm...@acm.org> wrote:
>> #!/bin/perl -n -e '$c{substr($_,0,5)}++ ...' input_file
>
>OTOH, this will use stdin, whereas the CL code was opening it's own
>stream for a named file, so it seems hardly fair comparing the two.

No, that is not correct. In this example, Perl is opening a stream
for the named file 'input_file'. 'perl -n' only processes the
standard input if there are no additional command-line arguments.


Arthur Lemmens

unread,
Oct 22, 2000, 6:50:02 PM10/22/00
to

Pierre R. Mai wrote:

> ;;; The following functions are based on the versions by Arthur
> ;;; Lemmens of the original code by Bernard Pfahringer posted to
> ;;; comp.lang.lisp. I only renamed and diddled them a bit.
>
> (defun partition

[snip]

> ;; DO: Find a more efficient way to take care of :from-end T.
> (when from-end
> (setf seq (reverse seq))
> (psetf start (- len end)
> end (- len start)))

I've written a different version now for dealing with :FROM-END T.
It doesn't call REVERSE anymore, which makes it more efficient.
Also, I prefer the new semantics. Stuff like
(split #\space "one two three " :from-end t)
now returns
("three" "two" "one")
which I find a lot more useful than
("eerht" "owt" "eno")
If you prefer the latter, it's easy enough to use
(split #\space (reverse "one two three "))


Here it is (feel free to use this code any way you like):

(defun SPLIT (delimiter seq
&key (maximum nil)
(keep-empty-subseqs nil)
(from-end nil)
(start 0)
(end nil)
(test nil test-supplied)
(test-not nil test-not-supplied)
(key nil key-supplied))

"Return a list of subsequences in <seq> delimited by <delimiter>.
If :keep-empty-subseqs is true, empty subsequences will be included
in the result; otherwise they will be discarded.
If :maximum is supplied, the result will contain no more than :maximum
(possibly empty) subsequences. The second result value contains the
unsplit rest of the sequence.
All other keywords work analogously to those for CL:POSITION."

;; DO: Make ":keep-delimiters t" include the delimiters in the result (?).

(let ((len (length seq))
(other-keys (nconc (when test-supplied
(list :test test))
(when test-not-supplied
(list :test-not test-not))
(when key-supplied
(list :key key)))))

(unless end (setq end len))
(if from-end
(loop for right = end then left
for left = (max (or (apply #'position delimiter seq
:end right
:from-end t
other-keys)
-1)
(1- start))
unless (and (= right (1+ left) )
(not keep-empty-subseqs)) ; empty subseq we don't want
if (and maximum (>= nr-elts maximum))
;; We can't take any more. Return now.
return (values subseqs (subseq seq start right))
else
collect (subseq seq (1+ left) right) into subseqs
and sum 1 into nr-elts
until (<= left start)
finally return (values subseqs (subseq seq start (1+ left))))
(loop for left = start then (+ right 1)
for right = (min (or (apply #'position delimiter seq
:start left
other-keys)
len)
end)
unless (and (= right left)
(not keep-empty-subseqs)) ; empty subseq we don't want
if (and maximum (>= nr-elts maximum))
;; We can't take any more. Return now.
return (values subseqs (subseq seq left end))
else
collect (subseq seq left right) into subseqs
and sum 1 into nr-elts
until (= right end)
finally return (values subseqs (subseq seq right end))))))

Here are some examples of how you can use this:


CL-USER 2 > (split #\space "word1 word2 word3")
("word1" "word2" "word3")
""

CL-USER 3 > (split #\space "word1 word2 word3" :from-end t)
("word3" "word2" "word1")
""

CL-USER 4 > (split nil '(a b nil c d e nil nil nil nil f) :maximum 2)
((A B) (C D E))
(F)

CL-USER 5 > (split #\space "Nospaceshere.")
("Nospaceshere.")
""

CL-USER 6 > (split #\; "12;13;;14" :keep-empty-subseqs t)

("12" "13" "" "14")
""

CL-USER 7 > (split #\; "12;13;;14" :keep-empty-subseqs t :from-end t)

("14" "" "13" "12")
""

CL-USER 8 > (split #\space "Nospaceshere. ")
("Nospaceshere.")
""

glauber

unread,
Oct 23, 2000, 3:00:00 AM10/23/00
to
In article <31810753...@naggum.net>,
Erik Naggum <er...@naggum.net> wrote:
> * Barry Margolin <bar...@genuity.net>
> | Conversely, if someone only knows one language, and has trouble
> | learning other languages, they're probably not a "great programmer".
> | The difficulty they have in learning those other languages suggests
> | that their thought processes are wedded to the paradigms embodied in
> | that language, a sort of tunnel vision.
>
> Well, this is obviously true, but it cuts both ways. Suppose you
> are used to several _great_ languages and are asked to work in some
> braindamaged language designed by someone whose design concepts
> never got out of the 50's, how well could you do it? I have very
> serious problems working with C++ for this simple reason: I have
> this _overwhelming_ urge to redesign the language first.
[...]

I think this is exactly what you're meant to do in C++.

--
Glauber Ribeiro
thegl...@my-deja.com http://www.myvehiclehistoryreport.com
"Opinions stated are my own and not representative of Experian"


Sent via Deja.com http://www.deja.com/
Before you buy.

glauber

unread,
Oct 23, 2000, 3:00:00 AM10/23/00
to
In article <m3r95b4...@localhost.localdomain>,
Lieven Marchand <m...@bewoner.dma.be> wrote:
> The Glauber <thegl...@my-deja.com> writes:
>
> > Here's my version (probably not very fast, but using only what i know of CL):
> >
> > ;;; Return the hash's keys, in no particular order
> > ;;; NOTE: Don't modify the keys!
> > (defmacro hash-table-keys (hash)
> > (let ((key (gensym)) (val (gensym)) (keylist (gensym)))
> > `(let ((,keylist '()))
> > (maphash #'(lambda (,key ,val) (push ,key ,keylist)) ,hash)
> > ,keylist
> > )
> > )
> > )
>
> Why did you make this a macro? It would be a lot simpler as a function
> and there is no reason to make it a macro.

No, it should be a function. I did it as a macro then later thought better.


> I'd do something like
>
> ;;; untested
> (defun hash-table-keys (hash)
> (loop for key being each hash-key of hash
> collect key))


That was my first thought, but it didn't work. I probably got the loop syntax
wrong the first time. Thanks!

glauber

Barry Margolin

unread,
Oct 23, 2000, 3:00:00 AM10/23/00
to
In article <slrn8v50u...@localhost.localdomain>,

Dowe Keller <do...@krikkit.localdomain> wrote:
>On Fri, 20 Oct 2000 20:49:28 GMT, Barry Margolin <bar...@genuity.net> wrote:
>>
>>I probably wouldn't consider using BASIC, APL, or Prolog for any project I
>>was involved in, but I consider myself enriched as a programmer because I
>>know a little bit of them (there was a time when I was an expert BASIC
>>programmer, but the language has evolved quite a bit in the two decades
>>since then, and it would take me a few days to get up to speed on modern
>>BASIC).
>
>You do, of course, realize that the term "modern BASIC" is a bit of an
>oxymoron.

Actually, no. I haven't been following it closely, but my impression is
that when BASIC went through ANSI standardization, they improved it
significantly, adding a number of structured programming features. I think
recent BASICs may have even added OO features. Both BASIC and FORTRAN seem
to be trying to balance keeping up with the times with retaining their
original spirits.

--
Barry Margolin, bar...@genuity.net
Genuity, Burlington, MA
*** DON'T SEND TECHNICAL QUESTIONS DIRECTLY TO ME, post them to newsgroups.
Please DON'T copy followups to me -- I'll assume it wasn't posted to the group.

glauber

unread,
Oct 23, 2000, 3:00:00 AM10/23/00
to
In article <8t1frt$u13$1...@nnrp1.deja.com>,

glauber <thegl...@my-deja.com> wrote:
> In article <31810753...@naggum.net>,
> Erik Naggum <er...@naggum.net> wrote:
[...]

> > I have very
> > serious problems working with C++ for this simple reason: I have
> > this _overwhelming_ urge to redesign the language first.
> [...]
>
> I think this is exactly what you're meant to do in C++.


Sorry for the slight smart-alecky post. What i meant to say was, C++ is
mostly a rework of C aimed at allowing you to define your own types. The
classical example is, you can define a "rational number" type and then
overload all the mathematical operators so that your new type behaves just
like the old built-in types.

Of course this problem doesn't exist in Lisp.

The other thing C++ gives us is it makes obsolete the C preprocessor. The
preprocessor is C's macro language. It's very useful, but it's also an
ever-present source of errors and unreadable code (see CLISP).

Unfortunately, C++ extended the domain of C to things that are better handled
by a higher-level language like Lisp. By trying to be all things to all
people, it became so complex that few people actually understand all of it,
and commercial compilers have only recently caught up with the spec.

Perl is a "little language" (in the sense that Bentley uses this term in
Programming Perls) aimed at making sed, awk and Unix shell programming
obsolete. Think of it as compiled sed with some awk and C thrown in for free.
It's grown a lot in the past few years and now it's almost a real programming
language, but it retained its little language feel. The thing with Perl is,
there is only one implementation, and a lot of people (some even brilliant)
have worked very hard at making that implementation fast. It's hard to beat
Perl in speed. There's also a lot of freely available code of varying
quality. My favourite is the DBI library, which makes it possible to connect
to most of the databases available in a portable way. This is important to
me, because i do a lot of database work. In the Lisp world, there is an ODBC
library, so at least the Windows world is covered, but Unix is lacking free
Lisp database access.

Xenophon Fenderson the Carbon(d)ated

unread,
Oct 23, 2000, 3:00:00 AM10/23/00
to
>>>>> "Erik" == Erik Naggum <er...@naggum.net> writes:

Erik> There are people who have to design their own alphabets or
Erik> spellings in order to feel able to express themselves, but I
Erik> think we label them "insane" rather than applaud them as
Erik> "language designers".

I was going to mention two authors now (Tolkein and Le Guin), but I'm
afraid of tripping on a corollary to Godwin's Law. :)

--
UN-altered reproduction and DISSEMINATION of this IMPORTANT information is
ENCOURAGED

Erik Naggum

unread,
Oct 23, 2000, 3:00:00 AM10/23/00
to
* glauber <thegl...@my-deja.com>

| Sorry for the slight smart-alecky post. What i meant to say was,
| C++ is mostly a rework of C aimed at allowing you to define your own
| types. The classical example is, you can define a "rational number"
| type and then overload all the mathematical operators so that your
| new type behaves just like the old built-in types.

This is all in-language stuff. I don't want to use the language do
to these things, I want to make it unnecessary to do all the crap
that C++ requires before it becomes a usable environment. I mean, C
has an annoyingly underdesigned main (argc, argv) where you get to
implement your own command-line argument processor wrong (or at
least unlike every other program), or use some annoying in-your-face
implementation of a general option processor that isn't because you
don't have lambda lists in the language. In C++, you have to build
your classes and the way they interact from scratch, because all the
defaults are wrong and useless. It's like you live in this world
where you have to put everything together from loose parts every
time you need anything, but as soon as you're done, they revert to
loose parts, and every time you put something together, you have to
remember how to put it together, because there's no support for
anything except putting together. (In Lisp, macros help you keep
things together.) Hey, I loved LEGO as a kid, and the new robot
stuff they do is fantastic, but as a kid, I didn't take everything I
had built apart every night only to rebuild it slightly differently
the next day. If my LEGO buildings and stuff fell apart during the
night so I _had_ to rebuild everything every day, I'm sure I would
be almost as unhappy with LEGO as with C++.

| Of course this problem doesn't exist in Lisp.

No, it isn't, but not "of course". Lisp is for building things that
last. It is this that is out of vogue in the programming world more
than it is out of vogue anywhere else. "Innovation", remember? But
it takes more than not to remember how you did it the last time to
be innovative.

felix

unread,
Oct 23, 2000, 3:00:00 AM10/23/00
to

Lieven Marchand wrote in message ...

>
>Erik may be more energetic against idiots than most, but I've learned
>a lot from him and do consider him a precious resident. It would be a
>sad day for comp.lang.lisp if idiots like you drive away the more
>knowledgeable posters like Kent Pitman and Erik.
>


So being "knowledgeable" excuses any kind of behaviour/language in
comp.lang.lisp?

Is that what you are saying?


felix


Lieven Marchand

unread,
Oct 23, 2000, 3:00:00 AM10/23/00
to
xeno...@irtnog.org (Xenophon Fenderson the Carbon(d)ated) writes:

> >>>>> "Erik" == Erik Naggum <er...@naggum.net> writes:
>
> Erik> There are people who have to design their own alphabets or
> Erik> spellings in order to feel able to express themselves, but I
> Erik> think we label them "insane" rather than applaud them as
> Erik> "language designers".
>
> I was going to mention two authors now (Tolkein and Le Guin), but I'm
> afraid of tripping on a corollary to Godwin's Law. :)

At least Tolkien (why do English speakers misspell this more often
than they get it right?) should be applauded as a language designer.

Adam Sampson

unread,
Oct 23, 2000, 3:00:00 AM10/23/00
to
Lieven Marchand <m...@bewoner.dma.be> writes:

> [...] Tolkien (why do English speakers misspell this more often than
> they get it right?) [...]

Because English doesn't have as fine a distinction between the "ie"
and "ei" sounds as most other European languages do; it's hard to tell
how to pronounce a random word with "ie" in the middle, so it's
equally hard to tell how to write a random word with the "ie" or "ei"
sound in the middle.

--

Adam Sampson
a...@gnu.org

Lieven Marchand

unread,
Oct 23, 2000, 3:00:00 AM10/23/00
to
"felix" <fe...@anu.ie> writes:

No.

Christopher Browne

unread,
Oct 24, 2000, 12:30:52 AM10/24/00
to
In our last episode (Mon, 23 Oct 2000 21:45:10 +0100),

the artist formerly known as felix said:
>Lieven Marchand wrote in message ...
>>Erik may be more energetic against idiots than most, but I've learned
>>a lot from him and do consider him a precious resident. It would be a
>>sad day for comp.lang.lisp if idiots like you drive away the more
>>knowledgeable posters like Kent Pitman and Erik.
>
>So being "knowledgeable" excuses any kind of behaviour/language in
>comp.lang.lisp?
>
>Is that what you are saying?

No, the point is that he has the 'redeeming qualities' of not being an
idiot, and of often writing things that are _worth reading_.

On balance, I can reasonably easily kill off the annoying postings,
and benefit from those that are valuable.

There are enough valuable postings to make his presence "somewhat
precious," and they are sufficiently readily recognizable that it's
not hard to filter out what dross he produces.
--
(concatenate 'string "aa454" "@" "freenet.carleton.ca")
<http://www.ntlug.org/~cbbrowne/lisp.html>
Rules of the Evil Overlord #110. "I will not employ devious schemes
that involve the hero's party getting into my inner sanctum before the
trap is sprung." <http://www.eviloverlord.com/>

Christopher Browne

unread,
Oct 24, 2000, 12:53:53 AM10/24/00
to
In our last episode (Mon, 23 Oct 2000 14:41:38 GMT),

the artist formerly known as Barry Margolin said:
>In article <slrn8v50u...@localhost.localdomain>,
>Dowe Keller <do...@krikkit.localdomain> wrote:
>>On Fri, 20 Oct 2000 20:49:28 GMT, Barry Margolin <bar...@genuity.net> wrote:
>>>
>>>I probably wouldn't consider using BASIC, APL, or Prolog for any project I
>>>was involved in, but I consider myself enriched as a programmer because I
>>>know a little bit of them (there was a time when I was an expert BASIC
>>>programmer, but the language has evolved quite a bit in the two decades
>>>since then, and it would take me a few days to get up to speed on modern
>>>BASIC).
>>
>>You do, of course, realize that the term "modern BASIC" is a bit of an
>>oxymoron.
>
>Actually, no. I haven't been following it closely, but my impression is
>that when BASIC went through ANSI standardization, they improved it
>significantly, adding a number of structured programming features. I think
>recent BASICs may have even added OO features. Both BASIC and FORTRAN seem
>to be trying to balance keeping up with the times with retaining their
>original spirits.

When BASIC went through ANSI standardization, it moved _backwards_ towards
being more similar to what Kemeny and Kurtz had created in the 1960s.

When, in 1983, Kurtz became chairman of the ANSI Standard Basic
committee, this was out of he and Kemeny being "Appalled at what had
happened to their language." Consider that the book they released
on "Back to BASIC" was subtitled "The History, Corruption, and Future
of the Language" :-).

I remember when I first "did BASIC" on PCs in the 1970s that things
like matrix operations, described in the texts on earlier versions,
did not work on the "Spawn of Microsoft." Basically, when the 2 K's
bashed the "Corruption" of BASIC, there was just one main candidate
there responsible for the corruptive changes to the language.

Mind you, it's entertaining to see what languages Micro Soft has
left by _their_ wayside; Lisp, and APL, and FORTRAN. There is
rumor of Prolog being used internally, and Microsoft Research has
hired some of the top ML folk, probably with the main effect of
impeding the public progress of ML...
--
cbbr...@hex.net - <http://www.ntlug.org/~cbbrowne/languages.html>
He's not dead. He's electroencephalographically challenged.

Erik Naggum

unread,
Oct 24, 2000, 3:00:00 AM10/24/00
to
* xeno...@irtnog.org (Xenophon Fenderson the Carbon(d)ated)

| >>>>> "Erik" == Erik Naggum <er...@naggum.net> writes:
|
| Erik> There are people who have to design their own alphabets or
| Erik> spellings in order to feel able to express themselves, but I
| Erik> think we label them "insane" rather than applaud them as
| Erik> "language designers".
|
| I was going to mention two authors now (Tolkein and Le Guin), but I'm
| afraid of tripping on a corollary to Godwin's Law. :)

Sigh. Can't you read? IN ORDER TO FEEL ABLE TO EXPRESS THEMSELVES,
I wrote. Authors like Tolkien (spelling!) and Le Guin have
obviously been able to express themselves in an existing language
without inventing any new languages first. And what was Tengwar?
It was not the language Tolkien used to write his stories, was it?
It was part of the story and the very rich and complete world he
designed.

Sometimes I wonder if some of the people who respond to me with some
idiotic counter-example that isn't are actually devoid of a working
brain and not just so lazy it looks like they are. What does it
take for those of you who lack the ability to think or habitually
seek ways to avoid it, to grasp something that you do not already
agree with? Communicating thoughts to you sure is a waste of time
when your first inclination is to destroy your ability to understand
what people are telling you by responding with idiocy.

I have read about how people can get into this mental state where
input from the outside world must be blocked before it can be
processed. It happens when they have been exposed to something so
frightening and painful their brain has ceased working as a sort of
self defense. This is supposed to happen in real life to have that
effect, because it must happen under uncontrollable conditions and
progress far beyond the point where brain has said STOP!, so no
cases have been reported that _read_ themselves into this state, and
obviously so, because one would have to read and comprehend beyond
that stop signal. So how come you behave the same way to something
you read? If it is not voluntary brain shutdown, what is it?

Why are new thoughts to fantastically frightening to some of you
that you react as if the world were to collapse if you made the
little effort it takes to consider a contrary opinion or even fact
at least enough to counter it with a _real_ counter-example?

Why is it so fantastically important to some of you to reduce
everything that you do not understand or agree with to silly jokes
so there is no hope of ever understanding anything new? That kind
of "humor" as a self-defense mechanism is also pathological.

Granted that you are able to read a programming language newsgroup,
I believe that there is no excuse whatsoever to be so intellectually
lazy as some of you guys habitually are, and it certainly is no
accident (like blaming alcohol for a low-quality posting -- how low
is _that_?) which means you are here to post your drivel on purpose
and that your intention, to whatever extent you can express intent,
is to reduce the newsgroup to the level at which you are comfortable
-- meaning: whatever the intellectually comatose can deal with. You
have a TV set to watch if you want that, OK? You do not need the
Net if you are looking for one-way idiotic "humor" -- you'll feel
better with the canned laughter instead of laughing alone, too. If
you think you have out-grown Jerry Springer or Ricky Lake, please
try them again and leave the newsgroup alone.

Do something that fits your inellectual level, Xenophon Fenderson
the Carbon(d)ated. Your posting under that label means I have no
idea what could possibly be your level, but I'd recommend one of the
k12 groups. I'm sure they would have even more fun with your "name"
than you have.

Erik Naggum

unread,
Oct 24, 2000, 3:00:00 AM10/24/00
to
* "felix" <fe...@anu.ie>

| So being "knowledgeable" excuses any kind of behaviour/language in
| comp.lang.lisp?
|
| Is that what you are saying?

No, you'd have to do a lot more than just become "knowledgeable"
before you were excused.

Was that what you were asking?

Erik Naggum

unread,
Oct 24, 2000, 3:00:00 AM10/24/00
to
* Adam Sampson <at...@ukc.ac.uk>

| Because English doesn't have as fine a distinction between the "ie"
| and "ei" sounds as most other European languages do; it's hard to tell
| how to pronounce a random word with "ie" in the middle, so it's
| equally hard to tell how to write a random word with the "ie" or "ei"
| sound in the middle.

Why do you assume that the misspeller would pronounce it right?

Why not just assume that the misspeller didn't care to check that he
spelled it correctly? It is impossible not to make typos one way or
the other, but caring about the result requires that we at least go
over it afterwards to see if it _looks_ right.

Blaming the English spelling system for spelling mistakes is a sure
sign of a careless dolt who never _wanted_ to get his spelling right.

A book to recommend to people who care about spelling is Marilyn Vos
Savant: The Art of Spelling, ISBN 0-393-04903-5. From the back
cover: What kind of speller are you? Take this instant quiz to find
out!

A fair speller will know which of these words are _not_ spelled
correctly: (1) aquainted, (2) arguement, (3) cantalope, (4)
congradulate, (5) fourty.

A good speller will know which of these words are _not_ spelled
correctly: (1) counterfeit, (2) hygiene, (3) niece, (4) seize, (5)
accomodate.

An excellent speller will know which of these words are _not_
spelled correctly: (1) caterpillar, (2) changable, (3) harrass, (4)
hemorhage, (5) judgement.

She writes with a carefree humor that means you will probably want
to read this book somewhere people aren't likely to consider you a
lunatic for laughing about English spelling.

Xenophon Fenderson the Carbon(d)ated

unread,
Oct 24, 2000, 3:00:00 AM10/24/00
to
>>>>> "Erik" == Erik Naggum <er...@naggum.net> writes:

Erik> Sigh. Can't you read? IN ORDER TO FEEL ABLE TO EXPRESS
Erik> THEMSELVES, I wrote. Authors like Tolkien (spelling!) and
Erik> Le Guin have obviously been able to express themselves in an
Erik> existing language without inventing any new languages first.

Of course I can read. Whether I rightfully comprehend what I read is
apparently open to debate. Also open to debate (hopefully in a forum
where this is on topic) is whether the Lord of the Rings would be as
well expressed without the invention of Elvish. I think not. Tolkien
(the corrected spelling now added to ispell, thanks) set up the Lord
of the Rings (and even more so, the Quenta Silmarillion) as a kind of
archaeological find, and his published stories were "merely"
translations. The invented languages added a color to the stories
that I had never experienced before. Without this coloring, perhaps
the story is just as good, but not, I think, as believable or
enjoyable.

Or maybe I'm playing a game of definitions with you, Erik. Is English
without punctuation still English, or something else? The poet e e
cummings decided that he couldn't express himself correctly with
punctuation, so he did away with it. Or "is free verse still poetry?"
I think so, but I'm no literary critic. And so the discussion goes
further afield.

Or maybe the deep understanding of language (all language) that makes
it possible to invent new ones makes it possible to express oneself
well in one language in particular? But that's straying from the
topic at hand and the rest of you probably prefer not to hear me
ramble.

Erik> Sometimes I wonder if some of the people who respond to me
Erik> with some idiotic counter-example that isn't are actually
Erik> devoid of a working brain and not just so lazy it looks like
Erik> they are.

You said, `There are people who have to design their own alphabets or
spellings in order to feel able to express themselves, but I think we
label them "insane" rather than applaud them as "language designers".'
Several excellent authors have done just that, including Tolkien, Le
Guin, C. S. Friedman (in her Coldfire trilogy and especially in _This
Alien Shore_), to name a few within reach, and if the term "insane"
has crept into their labels, it is because they are "insanely great".

I now make the assumption (and feel free to comment on the validity of
same) that these authors "design[ed] their own alphabets or spellings"
because they felt that this was the best possible way of expressing
themselves (vis. to tell their stories), that to not do so would
somehow be inadequate. I assume this because I sincerely doubt these
critically-acclaimed authors would do less than their best.

(I think this is a valid counter example of your initial comment, but
I will confess that I don't remember the differences among counter
examples and contra examples and inverses and reverses and so on and
so forth, so I'm very probably wrong. Any suggestions on a good
discrete math book? My one copy was destroyed in a house fire some
time back.)

Again, my apologies to the newsfroup for going off topic. Too many
people talk about Tolkien (again, spelling noted), so much so that I
think one would be justified in adding a corollary to Godwin's law
that made comparisons with Nazis, Star Trek, Star Wars, Tolkien, and
D&D cause one to immediately lose a Usenet debate, regardless of
correctness. Obviously, my joke "I'm afraid of tripping on a
corollary to Godwin's Law" was funnier inside my head than posted to
this newsgroup, a frequent problem of mine (i.e. laughing hysterically
at something, while most people look on in confusion).

Erik> Why is it so fantastically important to some of you to
Erik> reduce everything that you do not understand or agree with
Erik> to silly jokes so there is no hope of ever understanding
Erik> anything new? That kind of "humor" as a self-defense
Erik> mechanism is also pathological.

It's _all_ a Joke, but by God you'll NEVER "get" the punch-line!

Erik> Do something that fits your inellectual level, Xenophon
Erik> Fenderson the Carbon(d)ated. Your posting under that label
Erik> means I have no idea what could possibly be your level, but
Erik> I'd recommend one of the k12 groups. I'm sure they would
Erik> have even more fun with your "name" than you have.

It's just some random name on Usenet. Why does it bother you so much?
It's not like I'm trying to hide my identity or anything, as it is
trivial to look up my complete contact information on the Internet,
using just that name. In fact, "Xenophon Fenderson, the
Carbon(d)ated" is so completely ridiculous that even I don't take it
seriously, so please, don't give yourself a coronary over some
wannabe's nome de plume.

What I think is even more ridiculous is that I've wasted over an hour
crafting this reply to you, Erik, all to justify myself in (obviously)
my own eyes (you sure aren't going to agree with any of this drivel,
and hopefully the rest of this newsgroup will ignore me). Maybe next
time I will be more mature and decide that I would really rather be
hacking on some choice bit of code than arguing with you over the
esoteric.

Robert Monfera

unread,
Oct 24, 2000, 10:45:34 PM10/24/00
to
Adam Sampson wrote:
>
> Lieven Marchand <m...@bewoner.dma.be> writes:
>
> > [...] Tolkien (why do English speakers misspell this more often than
> > they get it right?) [...]
>
> it's hard to tell
> how to pronounce a random word with "ie" in the middle, so it's
> equally hard to tell how to write a random word with the "ie" or "ei"
> sound in the middle.

By looking at kids' drawings with words like "becorse", I realized that
non-native speakers of English have a pronounced advantage in spelling.
Weird.

Robert

Erik Naggum

unread,
Oct 25, 2000, 3:00:00 AM10/25/00
to
* xeno...@irtnog.org (Xenophon Fenderson the Carbon(d)ated)
| Of course I can read. Whether I rightfully comprehend what I read
| is apparently open to debate. Also open to debate (hopefully in a
| forum where this is on topic) is whether the Lord of the Rings would
| be as well expressed without the invention of Elvish.

Why are you carping on the wrong point if you can comprehend what I
uppercased for you?

| Or maybe I'm playing a game of definitions with you, Erik.

Yeah, I think you're playing games, all right. You should be able
to join the special olympics any day, now.

| You said, `There are people who have to design their own alphabets or
| spellings in order to feel able to express themselves, but I think we
| label them "insane" rather than applaud them as "language designers".'
| Several excellent authors have done just that,

No, they haven't. Plain and simple. They were able to express
themselves _fully_ without inventing their own languages first, and
then went on to do language design. You seem dead set on missing
the point so that you can keep up this charade of yours. Quit it.

If you cannot even grasp that there are people who fall into a very
different category than your insipid insistence on authors, all your
games prove is that you aren't able to think outside of your silly
prejudices. How interesting is _that_ to show people?

| Again, my apologies to the newsfroup for going off topic.

Really? You were somehow _forced_ to do this? Man, you idiots give
ma a lot of power over you that I never even wanted to have. Now I
wonder, how can I put this to productive use?

| It's _all_ a Joke, but by God you'll NEVER "get" the punch-line!

Had it not already occurred to you that you aren't funny to anyone
but yourself? Yes, you're a joke all the way. Don't you think
people "get" this? What if you're a stupid joke, so stupid that
it's downright _annoying_? How long will you laugh when annoying
people? And what's the difference between _your_ "it's a joke!" and
any other annoying pests on the Net who claims to have been joking?

| It's just some random name on Usenet. Why does it bother you so
| much? It's not like I'm trying to hide my identity or anything, as
| it is trivial to look up my complete contact information on the
| Internet, using just that name. In fact, "Xenophon Fenderson, the
| Carbon(d)ated" is so completely ridiculous that even I don't take it
| seriously, so please, don't give yourself a coronary over some
| wannabe's nome de plume.

Look who's bothered into defending himself. Sheesh, dude.

| What I think is even more ridiculous is that I've wasted over an
| hour crafting this reply to you, Erik, all to justify myself in
| (obviously) my own eyes (you sure aren't going to agree with any of
| this drivel, and hopefully the rest of this newsgroup will ignore
| me). Maybe next time I will be more mature and decide that I would
| really rather be hacking on some choice bit of code than arguing
| with you over the esoteric.

Good, then I have at least accomplished _something_.

Adam Sampson

unread,
Oct 25, 2000, 3:00:00 AM10/25/00
to
Erik Naggum <er...@naggum.net> writes:

> | Because English doesn't have as fine a distinction between the "ie"

> | and "ei" sounds as most other European languages do; it's hard to tell


> | how to pronounce a random word with "ie" in the middle, so it's
> | equally hard to tell how to write a random word with the "ie" or "ei"
> | sound in the middle.
>

> Why do you assume that the misspeller would pronounce it right?

Most people can pronounce words that they're heard correctly even if
they can't spell them, even in other languages, but I've seen English
speakers who are learning German inconsistently misspell German words
that use the ie or ei sounds. But it is just a guess---I'm not a
linguist, and I'm sure that someone's done research into this already.

> Why not just assume that the misspeller didn't care to check that
> he spelled it correctly?

I wasn't assuming anything of the sort; I was trying to explain why
people who can't be bothered to check their spelling tend to misspell
words like "Tolkien" but spell other words that are equally uncommon
correctly.

> A book to recommend to people who care about spelling is Marilyn Vos
> Savant: The Art of Spelling, ISBN 0-393-04903-5.

Thanks for the recommendation---I'll have a look for it.

--

Adam Sampson
a...@gnu.org

Erik Naggum

unread,
Oct 25, 2000, 3:00:00 AM10/25/00
to
* Adam Sampson <at...@ukc.ac.uk>

| Most people can pronounce words that they're heard correctly even if
| they can't spell them, even in other languages, but I've seen English
| speakers who are learning German inconsistently misspell German words
| that use the ie or ei sounds. But it is just a guess---I'm not a
| linguist, and I'm sure that someone's done research into this already.

I have heard people mispronounce Tolkien even after being corrected
exactly the same way some people insist on misspelling some words
even when corrected. Considering the bewildering mess of British
(especially) dialects, I fail to see how it is even possible to talk
about one way to _pronounce_ something "correctly".

| I wasn't assuming anything of the sort; I was trying to explain why
| people who can't be bothered to check their spelling tend to
| misspell words like "Tolkien" but spell other words that are equally
| uncommon correctly.

People who can't be bothered to check their spelling will produce
random spellings if left to themselves and there's no point in
explaining their behavior beyond just "sloppiness". "How to go
wrong if you don't care what you're doing" is not a particularly
interesting thing to discuss, is it?

I find it much more interesting that people who are conscientious
about most things still make spelling mistakes at times.

glauber

unread,
Oct 25, 2000, 3:00:00 AM10/25/00
to
In article <31814828...@naggum.net>,

Erik Naggum <er...@naggum.net> wrote:
> * Adam Sampson <at...@ukc.ac.uk>
> | Most people can pronounce words that they're heard correctly even if
> | they can't spell them, even in other languages, but I've seen English
> | speakers who are learning German inconsistently misspell German words
> | that use the ie or ei sounds. But it is just a guess---I'm not a
> | linguist, and I'm sure that someone's done research into this already.
[...]


I have the same problem with my last name: Ribeiro. Even some of my friends
insist in writing Ribiero.

The explanation i was given is that American children are taught that "e"
always comes after "i" in their spelling lessons.

Lieven Marchand

unread,
Oct 25, 2000, 3:00:00 AM10/25/00
to
Erik Naggum <er...@naggum.net> writes:

> * xeno...@irtnog.org (Xenophon Fenderson the Carbon(d)ated)

> | You said, `There are people who have to design their own alphabets or
> | spellings in order to feel able to express themselves, but I think we
> | label them "insane" rather than applaud them as "language designers".'
> | Several excellent authors have done just that,
>

> No, they haven't. Plain and simple. They were able to express
> themselves _fully_ without inventing their own languages first, and
> then went on to do language design.

At least for Tolkien, the author himself disagrees.

The invention of languages is the foundation. The 'stories'
were made rather to provide a world for the languages than the
reverse. To me the name comes first and the story follows.(*) I
should have preferred to write in 'Elvish'.

(*) I once scribbled 'hobbit' on a blank page of some boring school
exam. paper in the early 1930's. It was some time before I
discovered what it referred to!

Tolkien, Letters, p. 219

He's also practically the only author that gets languages right (apart
from Tad Williams in "Memory, Sorrow and Thorn", but he cheated since
he calqued on Indo-European). All the others seem to invent tonal
languages if you count the number of phonemes versus the number of
concepts in their translations.

Adam Sampson

unread,
Oct 25, 2000, 3:00:00 AM10/25/00
to
Erik Naggum <er...@naggum.net> writes:

> I have heard people mispronounce Tolkien even after being
> corrected exactly the same way some people insist on misspelling
> some words even when corrected.

Yes---but if someone isn't bothering to check their spelling before
posting, they're unlikely to take too much notice of any corrections
given. If you've spelt a word the incorrect way for the last ten
years, it'll take more effort than many people are willing to spend in
order to change to the correct spelling.

> Considering the bewildering mess of British (especially) dialects,
> I fail to see how it is even possible to talk about one way to
> _pronounce_ something "correctly".

That's an interesting question. The major differences between British
dialects are in the way vowel sounds (rather than entire words) are
pronounced, and in the dialect words used; although someone who grew
up in Yorkshire will pronounce "discuss" and "understand" with
different "u" and "a" sounds from me, it's possible to translate from
a Yorkshire pronunciation to a Kent pronunciation without too much
difficulty---which presumably is why it's possible to indicate
pronunciations for words in dictionaries without having an alternative
phonetic spelling for each dialect on each entry, and why it's
possible for people with different accents to understand each other.

> "How to go wrong if you don't care what you're doing" is not a
> particularly interesting thing to discuss, is it?

Depends on your point of view. It's not what you meant, but looking at
how people make mistakes when writing can give some useful clues as to
how the brain deals with language; there's some extremely interesting
discussion about this in Douglas Hofstadter's "Fluid Concepts and
Creative Analogies".

--

Adam Sampson
a...@gnu.org

Erik Naggum

unread,
Oct 25, 2000, 11:39:42 PM10/25/00
to
* Adam Sampson <at...@ukc.ac.uk>

| Yes---but if someone isn't bothering to check their spelling before
| posting, they're unlikely to take too much notice of any corrections
| given.

So let's ignore them as hopeless cases and move on. I don't share
your dismal view of man, I'm happy to say. People usually care if
they are rewarded for it, rather than punished, which some cultures
do, and if you pardon a cultural stereotype, I regard the British as
particularly careless when it comes to their own language. This is
not true for Americans. That is, I see a lot more mis-spelled words
and weak to non-existent grammar in British writing than in American
-- coupled with a tendency to use slang so much that it becomes nigh
impossible for anyone but townsfolk to understand many people.

| If you've spelt a word the incorrect way for the last ten years,
| it'll take more effort than many people are willing to spend in
| order to change to the correct spelling.

There are people who write incorrectly on purpose and those who do
it by accident. The latter are more than likely _ashamed_ of the
discovery that they have mis-spelled a word for a decade, and that
shame translates into an impetus to correct it. I guess people who
don't care about much are so much part of your experience they have
become your standard view of people, but I beg to differ.

| The major differences between British dialects are in the way vowel
| sounds (rather than entire words) are pronounced, and in the dialect
| words used; although someone who grew up in Yorkshire will pronounce
| "discuss" and "understand" with different "u" and "a" sounds from
| me, it's possible to translate from a Yorkshire pronunciation to a
| Kent pronunciation without too much difficulty---which presumably is
| why it's possible to indicate pronunciations for words in
| dictionaries without having an alternative phonetic spelling for
| each dialect on each entry, and why it's possible for people with
| different accents to understand each other.

Well, I beg to differ. The only place I have _serious_ problems
understanding what evidently passes for "English" among the natives
is the United Kingdom. It could be because some dialects have found
that actually pronouncing most of the phonemes is unnecessary when
they have a vocabulary of about 1000 words, or it could be the very
low levels of education in major regions of the United Kingdom, but
I have virtually no problems understanding English-speaking people
from any of the colonies compared to the British Isles, and most of
the English spoken by people whose mother tongue is something else
entirely is better than the hopeless mess that is British English.
The extensive literature I have on the English language is also
filled to the brim with weird regionalisms in the United Kingdom,
while most other English-speaking regions of the world have come to
a sort of agreement on what "English" means. Good British English
is spoken by about 2% of the population, and the rest are hopeless
mispronouncers and manglers if you ask me.

| > "How to go wrong if you don't care what you're doing" is not a
| > particularly interesting thing to discuss, is it?
|
| Depends on your point of view. It's not what you meant, but looking at
| how people make mistakes when writing can give some useful clues as to
| how the brain deals with language; there's some extremely interesting
| discussion about this in Douglas Hofstadter's "Fluid Concepts and
| Creative Analogies".

I'll pick it up, but I generally don't care about people who don't
care. I figure it's the least I can do to ignore them completely.
I do not consider those who consider anything achievable without
effort to be worth talking about, because what happens to them is
clearly accidental and hence in a "natural" state that reminds me of
what happens to a language when you leave individual villages to
speak their own warped versions in isolation for hundreds of years.
(We have the same tragic development of Norwegian, only worse than
British -- at least you have _one_ authority; we have three.)

Harald Hanche-Olsen

unread,
Oct 26, 2000, 3:00:52 PM10/26/00
to
+ glauber <thegl...@my-deja.com>:

| The explanation i was given is that American children are taught
| that "e" always comes after "i" in their spelling lessons.

So *that* explains why some people write "wierd", eh?

--
* Harald Hanche-Olsen <URL:http://www.math.ntnu.no/~hanche/>
- Yes it works in practice - but does it work in theory?

Duane Rettig

unread,
Oct 26, 2000, 4:24:27 PM10/26/00
to
Harald Hanche-Olsen <han...@math.ntnu.no> writes:

> + glauber <thegl...@my-deja.com>:
>
> | The explanation i was given is that American children are taught
> | that "e" always comes after "i" in their spelling lessons.

The precise English rule we were taught is

"I before E, except after C
and in sounding like ay
as in neigbors and weigh"

Of course, that doesn't help us to pronounce/spell German words
and/or names we borrow, where the "ie" is pronounced "ee" (long E)
and "ei" is pronounced as "aye" (long I). Other dipthongs give us
even more trouble; My guess is that not many Americans on the street
can correctly pronounce "Euler", unless they have a math or science
background. But even then it then becomes an exception, and other
words from German are mispronounced. I assume that that is the reason
why Americans with German ancestry were nicknamed "dutch" in mid-century
slang, because of our mis-pronunciation of the word "Deutsch".

> So *that* explains why some people write "wierd", eh?

Another exception to the rule, unless you're from the South and
pronounce it "wayrd". I hear it pronounced w+ear+d, though, so
for my dialect it is an exception.

English is weird :-)

--
Duane Rettig Franz Inc. http://www.franz.com/ (www)
1995 University Ave Suite 275 Berkeley, CA 94704
Phone: (510) 548-3600; FAX: (510) 548-8253 du...@Franz.COM (internet)

Joe Marshall

unread,
Oct 26, 2000, 6:09:53 PM10/26/00
to
Duane Rettig <du...@franz.com> writes:

> The precise English rule we were taught is
>
> "I before E, except after C
> and in sounding like ay
> as in neigbors and weigh"
>

Except foreign words like Budweiser
and weird is weird.

--- microspam follows ---


-----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
http://www.newsfeeds.com - The #1 Newsgroup Service in the World!
-----== Over 80,000 Newsgroups - 16 Different Servers! =-----

Erik Naggum

unread,
Oct 26, 2000, 8:24:33 PM10/26/00
to
* Duane Rettig <du...@franz.com>
| English is weird :-)

It's the most fascinating language of all, if you ask me. The only
way to master it is to make up your own rules as you observe what is
correct or appropriate usage and what is not. It's the language you
can only master if you appreciate chaos and complexity. This is how
humans learn languages naturally. Many other languages have somwhat
of a "Scheme nature": Designed to fit some predetermined scheme or
even be _built_ using rules. Imposed rules are fragile. Rules that
we come to understand are _not_ fragile, because they don't try to
over-extend themselves or even pretend to be universal. Many small
rules (more like interrelated similarities) that have no exceptions
(because what is not similar is not covered) are _so_ superior to
the rules that have exceptions and no rule to the exceptions, which
means you have to base your understanding on grouping similirities,
anyway, so dispense with the imposed rules, already.

I personally believe the language English was a necessary condition
for the rise of individual rights and democracy. The other European
languages are still class-oriented, very rigid and rule-based, and
are used oppressively by the governments that back correct usage of
these languages. Ironically, English has been far more stable over
much longer periods of time than these class-controlled languages,
which are, obviously, subject to political mood swings as different
classes demand recognition, despite the idea that government control
over the languages lead to stability.

#:Erik, digressing, again...

Tim Bradshaw

unread,
Oct 27, 2000, 5:01:50 AM10/27/00
to
Erik Naggum <er...@naggum.net> writes:

> I personally believe the language English was a necessary condition
> for the rise of individual rights and democracy. The other European
> languages are still class-oriented, very rigid and rule-based, and
> are used oppressively by the governments that back correct usage of
> these languages. Ironically, English has been far more stable over
> much longer periods of time than these class-controlled languages,
> which are, obviously, subject to political mood swings as different
> classes demand recognition, despite the idea that government control
> over the languages lead to stability.
>

In the UK, English usage is very entangled with class. The relation
is not simple however, and I can't describe it briefly (or, perhaps,
at all).

--tim

glauber

unread,
Oct 27, 2000, 8:05:34 AM10/27/00
to
In article <31815950...@naggum.net>,

Erik Naggum <er...@naggum.net> wrote:
> * Duane Rettig <du...@franz.com>
> | English is weird :-)
>
> It's the most fascinating language of all, if you ask me. The only
> way to master it is to make up your own rules as you observe what is
> correct or appropriate usage and what is not. It's the language you
> can only master if you appreciate chaos and complexity.

[...]

Nah! you think so because you don't know Portuguese. :-)
(The neatest language that you can't learn.)

Erik Naggum

unread,
Oct 27, 2000, 11:07:03 AM10/27/00
to
* Tim Bradshaw <t...@tfeb.org>

| In the UK, English usage is very entangled with class.

Entangled, yes. "Very" I would reserve for France or Germany. As
everywhere, if you can see it with the naked eye, it is pretty mild.
The really gross and uncurable situations are hid deeply within the
population's psyche and does not show up, is not discussed, and will
never change unless an all-out war breaks out over it. Look at the
Balkans. People have lived in a different country for 10,000 years
or thereabouts, but they still cling to their "home land" language,
and are willing to go to war over how they spell a common syllable
in their family name. F*cking morons.

However, I do consider England fairly backward when it comes to
grappling with their class disease compared to most other English-
speaking countries (such as India).

#:Erik
--
Does anyone remember where I parked Air Force One?
-- George W. Bush

Erik Naggum

unread,
Oct 27, 2000, 11:29:29 AM10/27/00
to
* glauber <thegl...@my-deja.com>

| Nah! you think so because you don't know Portuguese. :-)
| (The neatest language that you can't learn.)

I thought that was Latin. (I have some family in Brazil.)

Gareth McCaughan

unread,
Oct 27, 2000, 5:34:58 AM10/27/00
to
Erik Naggum wrote:

> I personally believe the language English was a necessary condition
> for the rise of individual rights and democracy. The other European
> languages are still class-oriented, very rigid and rule-based, and
> are used oppressively by the governments that back correct usage of
> these languages.
>

> #:Erik, digressing, again...

A most subversive sentiment, and a very dangerous one.
I think #:Erik should be interned immediately to prevent
the unrestricted spread of such dangerous ideas.

--
Gareth McCaughan Gareth.M...@pobox.com
sig under construc

Gareth McCaughan

unread,
Oct 28, 2000, 8:00:26 PM10/28/00
to
Tom Ivar Helbekkmo wrote:

> Pipe, shipe, recipe and choir;
^^^^^
?

Dowe Keller

unread,
Nov 3, 2000, 1:20:33 AM11/3/00
to
On 27 Oct 2000 00:24:33 +0000, Erik Naggum <er...@naggum.net> wrote:
> It's the most fascinating language of all, if you ask me. The only
> way to master it is to make up your own rules as you observe what is
> correct or appropriate usage and what is not. It's the language you
> can only master if you appreciate chaos and complexity. This is how
> humans learn languages naturally. Many other languages have somwhat
> of a "Scheme nature": Designed to fit some predetermined scheme or
> even be _built_ using rules. Imposed rules are fragile. Rules that
> we come to understand are _not_ fragile, because they don't try to
> over-extend themselves or even pretend to be universal. Many small
> rules (more like interrelated similarities) that have no exceptions
> (because what is not similar is not covered) are _so_ superior to
> the rules that have exceptions and no rule to the exceptions, which
> means you have to base your understanding on grouping similirities,
> anyway, so dispense with the imposed rules, already.
>
> I personally believe the language English was a necessary condition
> for the rise of individual rights and democracy. The other European
> languages are still class-oriented, very rigid and rule-based, and
> are used oppressively by the governments that back correct usage of
> these languages. Ironically, English has been far more stable over
> much longer periods of time than these class-controlled languages,
> which are, obviously, subject to political mood swings as different
> classes demand recognition, despite the idea that government control
> over the languages lead to stability.

That's all well and good, but I sometimes wonder if it wasn't written
by Larry Wall :-)

--
do...@sierratel.com http://www.sierratel.com/dowe
---
There is a limit to how stupid people really are -- just as there's a limit
to the amount of hydrogen in the Universe. There's a lot, but there's a
limit.
--- David C. Barber

Erik Naggum

unread,
Nov 3, 2000, 6:09:23 AM11/3/00
to
* do...@krikkit.localdomain (Dowe Keller)

| That's all well and good, but I sometimes wonder if it wasn't
| written by Larry Wall :-)

That's really no excuse of inventing Perl. :)

Xah Lee

unread,
Nov 5, 2000, 3:00:00 AM11/5/00
to

Duane Rettig <du...@franz.com> wrote:
> | English is weird :-)

Erik Naggum <er...@naggum.net> wrote:
> It's the most fascinating language of all, if you ask me.

It's the most zany and not worth my feces language too, if you ask me.

> It's the language you
> can only master if you appreciate chaos and complexity.

Stick your banana in your own brain.

> Many other languages have somwhat
> of a "Scheme nature": Designed to fit some predetermined scheme or
> even be _built_ using rules

Scheme nature your rectum. Rather that most natural languages have somwhat
Common Lispy problem: no design but gradually fubar through the years.

> Imposed rules are fragile. Rules that
> we come to understand are _not_ fragile, because they don't try to
> over-extend themselves or even pretend to be universal. Many small
> rules (more like interrelated similarities) that have no exceptions
> (because what is not similar is not covered) are _so_ superior to
> the rules that have exceptions and no rule to the exceptions, which
> means you have to base your understanding on grouping similirities,
> anyway, so dispense with the imposed rules, already.

eh?

> I personally believe the language English was a necessary condition
> for the rise of individual rights and democracy. The other European
> languages are still class-oriented, very rigid and rule-based, and
> are used oppressively by the governments that back correct usage of
> these languages. Ironically, English has been far more stable over
> much longer periods of time than these class-controlled languages,
> which are, obviously, subject to political mood swings as different
> classes demand recognition, despite the idea that government control
> over the languages lead to stability.

hocus-pocus over my dead corpse. Am i in banana republic?

--

Philosophical doc Naggum, please try again. Be a bit more useful to the
public this time.

For your erudition:
http://home.bluemarble.net/~langmin/contents.html

Now, that's valuable writing.

> I agree with everything you say, but I would
> attack to death your right to say it.
> -- Tom Stoppard

I disapprove of what you say, but i will defend to the death your right to
say it. -- Voltaire (1694-1778)

... loons running around not knowing exactly what they are quoting...

Xah
x...@xahlee.org
http://xahlee.org/PageTwo_dir/more.html
Morality abets evil -- Xah Lee


Xah Lee

unread,
Nov 6, 2000, 3:00:00 AM11/6/00
to

The Glauber <thegl...@my-deja.com> wrote:
> | P.S.: the Perl version is a "one liner":
> | $c{substr($_,0,5)}++; END { foreach $x (sort keys %c) {print "$x,$c{$x}\n"}}

Screw you with your screwing "one-liner".

Erik Naggum <er...@naggum.net> wrote:
> Perl looks the way it does because 110-baud Teletypes were once upon
> the time the best people had on Unix, and with lousy typers who had
> to correct their mistakes all the time, it made sense to abbreviate
> everything down to one or two characters. Lisp has a different
> heritage, to put it mildly: Better typers, better use of brainpower
> than to remember thousands of subtly similar abbreviations, better
> terminals. So we aren't as interested in one-liners with compact
> syntax, but for people who still live their lives as if all they can
> hope for is a 300-baud Teletype, the value of one-liners cannot be
> underestimated.

Oh gee, Erik, thanks: Screw you with your knee-jerking lame-o defense.

I have a screwing problem with screwing Perl folks with their screwing
fatuous infatuation about "one-liners".

Mr Glauber, can you explain to me what does "one-liners" mean?

Does it mean a program with no line-breaking character?
Obviously not, because otherwise lots programs can instantaneously become
one-liners.
Does it mean a program with one syntactic block?
Not, obviously because slapping on a block structure coat doesn't cut it.
Does it mean the program is within 80 characters?
No, because that would be stupid, wouldn't it?

So it really cannot be defined syntactically, but with some conceptual
involvement. Perhaps a smattering of all of the above, plus that the data
flows through the program in some kind of one fell swoop idiom.

I'll tell you what: all programs in pure functional languages are all just
one big single line by principle, and much in practice. (lisp is one
example.)

your screwing one-liner hack done right should be:

(Sort[#,(OrderedQ@{Part[#1,1],Part[#2,2]})&]&)@
MapIndexed[({#2,StringTake[#1,5]}&),input]

or in FullForm:

Function[Sort[Slot[1],Function[OrderedQ[List[Part[Slot[1],1],Part[Slot[2],2]
]]]]][MapIndexed[Function[List[Slot[2],StringTake[Slot[1],5]]],input]]

The above example is from Mathematica. This cannot be done in Perl because
it lacks gazillion build-in _functions_. But if one forces, you get:

#/usr/local/bin/perl
use strict; #oh my god, superb correct obfuscation but using strict too!
map {print "$_->[0], $_->[1]\n";} sort {$a->[1] cmp $b->[1]}
@{ &{sub {my @result; for( my $i=0; $i < scalar @{$_[0]->[0]}; $i++)
{push @result, [$_[0]->[0]->[$i],$_[0]->[1]->[$i]]} return \@result}} (
&{sub {return [[1.. (scalar @_)], [@_]]}} (map {substr($_,0,5)} <>)) };
__END__
That's how stupid (and inefficient) Perl really is if you want to do things
correctly. (Note: in order to do a transposition on a 2D array, i couldn't
avoid the variables @result & the for loop with $i.)

And by the way: idiomatic programing is the most screwing moronic idea too,
and not so incidentally, very much exhorted by Perl-brain-washed retards.

I will have any perlers cut their own tongue, when they blurt out their
screwing ass ignorance with Perl.

Xah
x...@xahlee.org
http://xahlee.org/PageTwo_dir/more.html
"The three principle virtues of Perl programers: mundaneness, sloppiness,
and fatuousness"

> From: Erik Naggum <er...@naggum.net>
> Organization: Naggum Software; vox: +47 800 35477; gsm: +47 93 256 360; fax:
> +47 93 270 868; http://naggum.no; http://naggum.net
> Newsgroups: comp.lang.lisp
> Date: 19 Oct 2000 11:35:38 +0000
> Subject: Re: Q: on hashes and counting


glauber

unread,
Nov 6, 2000, 3:00:00 AM11/6/00
to
In article <B62BC7B7.3CBD%x...@xahlee.org>,

Xah Lee <x...@xahlee.org> wrote:
>
> The Glauber <thegl...@my-deja.com> wrote:
> > | P.S.: the Perl version is a "one liner":
> > | $c{substr($_,0,5)}++; END { foreach $x (sort keys %c) {print "$x,$c{$x}\n"}}
>
> Screw you with your screwing "one-liner".

I have 2 possible answers, don't know which one i prefer:

(1) You are a very angry person, aren't you?

(2) Use of offensive language won't get you anywhere in real life.

glauber

unread,
Nov 6, 2000, 3:00:00 AM11/6/00
to
In article <B62BA487.3CB7%x...@xahlee.org>,

Xah Lee <x...@xahlee.org> wrote:
>
> Duane Rettig <du...@franz.com> wrote:
> > | English is weird :-)
>
> Erik Naggum <er...@naggum.net> wrote:
> > It's the most fascinating language of all, if you ask me.
>
> It's the most zany and not worth my feces language too, if you ask me.


This guy is obviously trolling. He did another reply in this same thread
which was nothing but calling me names. Pretty entertaining, really.

Please avoid following up to this guy.

Erik Naggum

unread,
Nov 6, 2000, 3:00:00 AM11/6/00
to
* Xah Lee <x...@xahlee.org>
| Screw
| Screw
| screwing
| screwing
| screwing
| screwing
| screwing

You can just imagine the sound of having a screw loose.

Samantha Atkins

unread,
Nov 6, 2000, 3:00:00 AM11/6/00
to
Adam Sampson wrote:
>
> Most people can pronounce words that they're heard correctly even if
> they can't spell them, even in other languages, but I've seen English
> speakers who are learning German inconsistently misspell German words
> that use the ie or ei sounds. But it is just a guess---I'm not a
> linguist, and I'm sure that someone's done research into this already.
>
> > Why not just assume that the misspeller didn't care to check that
> > he spelled it correctly?
>
> I wasn't assuming anything of the sort; I was trying to explain why
> people who can't be bothered to check their spelling tend to misspell
> words like "Tolkien" but spell other words that are equally uncommon
> correctly.


Why don't we simply get civilized enough to use a universal phonetic
alphabet so to pronounce or hear pronounced correctly a word is to know
how to spell it and to read a word is to know how to pronounce it
regardless of language?

- samantha

Xah Lee

unread,
Nov 6, 2000, 11:42:10 PM11/6/00
to
Dear globular,

globular <thegl...@my-deja.com> wrote:
> This guy is obviously trolling. He did another reply in this same thread
> which was nothing but calling me names. Pretty entertaining, really.

Do you know what entertains me in newsgroups? Simpletons like you, of
course.

> Please avoid following up to this guy.

So you think you are an alert watch dog, eh?
Fearlessly barking loudly, for the sake of humanity, eh?

Run along and drop off the edge of earth.

Xah
x...@xahlee.org
http://xahlee.org/PageTwo_dir/more.html


> From: glauber <thegl...@my-deja.com>
> Organization: Experian: http://www.myvehiclehistoryreport.com
> Newsgroups: comp.lang.lisp
> Date: Mon, 06 Nov 2000 18:03:01 GMT
> Subject: Re: On comparing apples and oranges (was: Q: on hashes and counting)

Xah Lee

unread,
Nov 7, 2000, 12:00:58 AM11/7/00
to
dear globular,

globular <thegl...@my-deja.com> wrote:
> I have 2 possible answers, don't know which one i prefer:
>
> (1) You are a very angry person, aren't you?

Yes. Angrier than thou.



> (2) Use of offensive language won't get you anywhere in real life.

At least i got you to confess your stupid mentality, didn't i?

In real life, when i roar with wrath and hatred, it immediately get people's
attention and they cease doing things they should not.

Offensive languages -- for all practical and theoretical considerations --
serves important functions in real life. Got it?

Don't worry. I'm not angry with you yet. Be happy.

Xah
x...@xahlee.org
http://xahlee.org/PageTwo_dir/more.html


> From: glauber <thegl...@my-deja.com>
> Organization: Experian: http://www.myvehiclehistoryreport.com
> Newsgroups: comp.lang.lisp

glauber

unread,
Nov 7, 2000, 3:00:00 AM11/7/00
to
Hahaha! you're funny!
It is loading more messages.
0 new messages