In article <email@example.com>,
Donal K. Fellows <firstname.lastname@example.org> wrote:
=>In article <334EDC93.email@example.com>,
=>Graham Matthews <firstname.lastname@example.org> wrote:
=>[ Replying to JO ]
=>> I would like you ask you a question. You claim that the "everything is a
=>> string" approach is the be-all-and-end-all, the way to go, etc, etc. Why
=>> then has Tcl8.0 moved away from this philosophy?
=>Semantically it hasn't. It just now has a rather neat behind-the-scenes
=>way of caching the results of converting the value from a string into
=>something else (like a list or number) in case it gets used like that
=>again. You never see this though. It is transparent to the programmer
=>(unless you are coding an extension in C and want to use the faster
=>programming interface - you don't have to though) and all the user
=>sees are (sometines significantly) faster programs.
I should point out that this is quite consistent with Ousterhout's
insistence that in operating systems everything is a file, as is
traditional in Unix. I was at SOSP 13, and he seemed rather stuck on
calling every possible OS interface a file (slight hyperbole), even if
it was useful to view it from another direction.
Not that string representations are a bad thing. The Demeter system
has a rather nice feature that lets you build an LL(1) syntax along
with your class graph, which automatically builds a parser and printer
for objects that fit the graph. This can be used for distribution and
persistence, but it was designed to let you change the class graph
without changing the syntax, so your objects maintain the same external
So I guess my point is that something may be a good idea, but any
good idea can be taken to an extreme.
Gary D. Duzan
Humble Practitioner of the Computing Arts