[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Gnu-arch-users] Re: arch roadmap 1 (and "what's tom up to")
From: |
Pierce T.Wetter III |
Subject: |
Re: [Gnu-arch-users] Re: arch roadmap 1 (and "what's tom up to") |
Date: |
Thu, 1 Jul 2004 17:32:46 -0700 |
On Jun 30, 2004, at 11:19 PM, Tom Lord wrote:
From: Andrew Suffield <address@hidden>
Does tcl have *any* redeeming features?
It used to. There were a couple of forks in the road, and the
otherwise very admirable hacker J.O. picked the wrong path, imo.
Hmmm... To be perfectly honest, I haven't done any TCL hacking in about
12 years now. I wonder if that was when the branch was...
I remember this was before OO-TCL.
Anyways, I'm mostly scripting language agnostic anyways. As people
have pointed
out to me, furth is the VM for micro-pika, and so it shouldn't matter
to me,
because really, the rules file will be in micro-scheme, and Furth is
just an
implementation detail for pika, not for arch per se. That is, if you
see a rules.pika
file and no rules.furth file, presumably arch will go call pika to turn
rules.pika
into rules.furth. You can then embed pika execution into a program by
embedding a
furth interpreter, while having a pika "compiler" around somewhere.
So that's not so bad, I won't have to program in furth, though I will
have to
learn scheme. (sigh)
I will comment, in my experience, for non-lisp hackers, lisp-like
languages are a different paradigm that can be somewhat hard to get
your head
around at first. I really thought Perl (for instance) was awful, until
I read
"Effective Perl", and realized how elegant it was actually. It still
requires me
to think differently then when I do C hacking. So I'm a little
skeptical that its
appropriate for a config file.
When CMU was working on the Andrew email program it had a really
minimal configuration mechanism that was almost freeform because it
wasn't done yet so it was more or less "syntax free".
Then they added a proper parser, which would reject badly formed
files.
Everyone complained, because the "syntax free" format was actually
easier to use.
Yes, that's the kind of bind which, as responsible hackers, we'll
avoid getting into.
You might not know that when Information Technology Center at CMU was
working on the Andrew email program, towards the end of the lifetime
of the Andrew project, they added a turing complete extension language
to the email program (a Scheme dialect) --- alas, by that time, it was
far too late to deploy much.
That's exactly what I'm talking about. What I had read that they found
was
that users didn't like the turing complete extension language. They
liked
the sort of ad-hoc thing they had before, because they never got:
"syntax error on line 30"
It just did something weird instead. :-) So they screamed, and they put
the old config language back, not because of legacy files, but because
it
was easier to use.
That seems strange from a programming point of view, but for a user
its much
easier to deal with:
option.foo.bar = 30 (dumb parser, read first string, then = ,
assign to second string)
then
option(blah(blah))=30; (note semicolon required, balanced
paranteses, etc...)
As programmers, compile time errors are much better then runtime
errors (one thing that
bugs me about Python, for instance). For users, sometimes simple and
stupid is often
better, because the user doesn't want to have to store in his brain ANY
information
about how to write a config file. For instance, while I have written
some complicated
makefiles, I actually can't at this moment remember how to write one.
That information
is stored offline on some dead trees.
When I worked at a video game company, one cool program we had was a
"programming for
artists" tool. It basically knew enough about syntax so that it would
only present enough
options to the artist at any moment so that the syntax was perfect.
That is, if you had a
blank page, you could choose from a list of possible statements:
assignment, if, while, for,
etc.
It was amazing some of the complex scripts these artists were able to
produce when they
were presented with a small list of choices at each juncture. For
instance, you were only
allowed to choose a variable if you'd already declared it, and if it
was the right type, etc.
Now these are artists, so they're very right-brained, and not generally
very verbal.
So anyways, I'm not sure that "turing complete" is better then "stupid".
Pierce