Evan de Riel scripsit:
Q: ... do you think the idea of "one tool doing
one job" has been
abandoned? ...
A: Those days are dead and gone and the eulogy was delivered by Perl.
I think his point is that what Perl and its friends--the other high-
level, interpreter languages like Python, Ruby, and maybe (ick) PHP--
have gotten to the point where they can be used as a single framework
for writing short, ad-hoc programs in these languages that replace
combinations of the whole mess of Unix utilities like grep, cat, sed,
awk, uniq, sort, column, rs, head, tail, and maybe even more complex
tools like wget or hexdumps.
Well, I don't have a problem with replacing the shell-and-utilities
framework with a more consistent one. The trouble is that the essential
idea of that framework, what I called "coarse-grained dataflow"
in the last posting, and which has been called "plumbing" since the
earliest days, gets lost in the process. Perl-level programming is only
incrementally better than C-level (admittedly the increments are good
ones, like garbage collection and simple strings and dynamic typing).
The only consistent framework I know of that preserves plumbing as a
functional programming approach is scsh <http://www.scsh.net/>, and much
as I love Scheme personally, it's just too alien to mainstream ways of
thinking to have a real chance of survival as anything but a niche of
a niche.
What I'd really like to see is something that merges Lua and rc(1), a
lightweight but powerful language with a lightweight but powerful shell,
in a clean way. I even messed around with constructing a unified Yacc
grammar to use them jointly, with the notion that a top-end parser could
compile the hybrid into pure Lua using a Posix library. But I got bogged
down and never went back there.
Lua might be *too* lightweight, though: Python comes with a big library
of useful stuff, is a fair approximation to Lisp (as Lua is also), and
could perhaps be transmogrified into a shell somehow, given how dynamic
everything in Python is (even the variable and function declarations
are really executable statements). I'll think on it further.
--
Barry gules and argent of seven and six, John Cowan
on a canton azure fifty molets of the second. cowan(a)ccil.org
--blazoning the U.S. flag
http://www.ccil.org/~cowan