[ From http://www.performancecomputing.com/features/9809of1.shtml ]
The Elements Of Style: UNIX As Literature
If there's nothing different about UNIX people, how come
so many were liberal-arts majors? It's the love of words
that makes UNIX stand out.
Thomas Scoville
In the late 1980s, I worked in the advanced R&D arm of the Silicon
Valley's regional telephone company. My lab was populated mostly by
Ph.D.s and gifted hackers. It was, as you might expect, an all-UNIX
shop.
The manager of the group was an exception: no advanced degree, no
technical credentials. He seemed pointedly self-conscious about it. We
suspected he felt (wrongly, we agreed) underconfident of his education
and intellect. One day, a story circulated through the group that
confirmed our suspicions: the manager had confided he was indeed
intimidated by the intelligence of the group, and was taking steps to
remedy the situation. His prescription, though, was unanticipated: "I
need to become more of an intellectual," he said. "I'm going to learn
UNIX."
Needless to say, we made more than a little fun out of this. I mean,
come on: as if UNIX could transform him into a mastermind, like the
supplicating scarecrow in "The Wizard of Oz." I uncharitably imagined
a variation on the old Charles Atlas ads: "Those senior engineers will
never kick sand in my face again."
But part of me was sympathetic: "The boss isn't entirely wrong, is he?
There is something different about UNIX people, isn't there?" In the
years since, I've come to recognize what my old manager was getting
at. I still think he was misguided, but in retrospect I think his
belief was more accurate than I recognized at the time.
To be sure, the UNIX community has its own measure of technical
parochialism and nerdy tunnel vision, but in my experience there
seemed to be a suspicious overrepresentation of polyglots and
liberal-arts folks in UNIX shops. I'll admit my evidence is sketchy
and anecdotal. For instance, while banging out a line of shell, with
a fellow engineer peering over my shoulder, I might make an
intentionally obscure literary reference:
if test -z `ps -fe | grep whom`
then
echo ^G
fi
# Let's see for whom the bell tolls.
UNIX colleagues were much more likely to recognize and play in a way
I'd never expect in the VMS shops, IBM's big-iron data centers, or DOS
ghettos on my consulting beat.
Being a liberal-arts type myself (though I cleverly concealed this in
my resume), I wondered why this should be true. My original
explanation--UNIX's historical association with university computing
environments, like UC Berkeley's--didn't hold up over the years; many
of the UNIX-philiacs I met came from schools with small or absent
computer science departments. There had to be a connection, but I had
no plausible hypothesis.
It wasn't until I started regularly asking UNIX refuseniks what they
didn't like about UNIX that better explanations emerged.
Some of the prevailing dislike had a distinctly populist
flavor--people caught a whiff of snobbery about UNIX and regarded it
with the same proletarian resentment usually reserved for highbrow
institutions like opera or ballet. They had a point: until recently,
UNIX was the lingua franca of computing's upper crust. The more
harried, practical, and underprivileged of the computing world seemed
to object to this aura of privilege. UNIX adepts historically have
been a coddled bunch, and tend to be proud of their hard-won
knowledge. But these class differences are fading fast in modern
computing environments. Now UNIX engineers are more common, and low-
or no-cost UNIX variations run on inexpensive hardware. Certainly UNIX
folks aren't as coddled in the age of NT.
There was a standard litany of more specific criticisms: UNIX is
difficult and time-consuming to learn. There are too many things to
remember. It's arcane and needlessly complex.
But the most recurrent complaint was that it was too
text-oriented. People really hated the command line, with all the
utilities, obscure flags, and arguments they had to memorize. They
hated all the typing. One mislaid character and you had to start
over. Interestingly, this complaint came most often from users of the
GUI-laden Macintosh or Windows platforms. People who had slaved away
on DOS batch scripts or spent their days on character-based terminals
of multiuser non-UNIX machines were less likely to express the same
grievance.
Though I understood how people might be put off by having to remember
such willfully obscure utility names like cat and grep, I continued to
be puzzled at why they resented typing. Then I realized I could
connect the complaint with the scores of "intellectual elite" (as my
manager described them) in UNIX shops. The common thread was
wordsmithing; a suspiciously high proportion of my UNIX colleagues had
already developed, in some prior career, a comfort and fluency with
text and printed words. They were adept readers and writers, and UNIX
played handily to those strengths. UNIX was, in some sense,
literature to them. Suddenly the overrepresentation of polyglots,
liberal-arts types, and voracious readers in the UNIX community didn't
seem so mysterious, and pointed the way to a deeper issue: in a world
increasingly dominated by image culture (TV, movies, .jpg files), UNIX
remains rooted in the culture of the word.
UNIX programmers express themselves in a rich vocabulary of system
utilities and command-line arguments, along with a flexible, varied
grammar and syntax. For UNIX enthusiasts, the language becomes second
nature. Once, I overheard a conversation in a Palo Alto restaurant:
"there used to be a shrimp-and-pasta plate here under ten bucks. Let
me see...cat menu | grep shrimp | test -lt $10..." though not
syntactically correct (and less-than-scintillating conversation), a
diner from an NT shop probably couldn't have expressed himself as
casually.
With UNIX, text--on the command line, STDIN, STDOUT, STDERR--is the
primary interface mechanism: UNIX system utilities are a sort of Lego
construction set for word-smiths. Pipes and filters connect one
utility to the next, text flows invisibly between. Working with a
shell, awk/lex derivatives, or the utility set is literally a word
dance.
Working on the command line, hands poised over the keys uninterrupted
by frequent reaches for the mouse, is a posture familiar to wordsmiths
(especially the really old guys who once worked on teletypes or
electric typewriters). It makes some of the same demands as writing an
essay. Both require composition skills. Both demand a thorough
knowledge of grammar and syntax. Both reward mastery with powerful,
compact expression.
At the risk of alienating both techies and writers alike, I also
suggest that UNIX offers something else prized in literature: a
coherence, a consistent style, something writers call a voice. It
doesn't take much exposure to UNIX before you realize that the UNIX
core was the creation of a very few well-synchronized minds. I've
never met Dennis Ritchie, Brian Kernighan, or Ken Thompson, but after
a decade and a half on UNIX I imagine I might greet them as friends,
knowing something of the shape of their thoughts.
You might argue that UNIX is as visually oriented as other OSs. Modern
UNIX offerings certainly have their fair share of GUI-based OS
interfaces. In practice though, the UNIX core subverts them; they end
up serving UNIX's tradition of word culture, not replacing it. Take a
look at the console of most UNIX workstations: half the windows you
see are terminal emulators with command-line prompts or vi jobs
running within.
Nowhere is this word/image culture tension better represented than in
the contrast between UNIX and NT. When the much-vaunted UNIX-killer
arrived a few years ago, backed by the full faith and credit of the
Redmond juggernaut, I approached it with an open mind. But NT left me
cold. There was something deeply unsatisfying about it. I had that
ineffable feeling (apologies to Gertrude Stein) there was no there
there. Granted, I already knew the major themes of system and network
administration from my UNIX days, and I will admit that registry
hacking did vex me for a few days, but after my short scramble up the
learning curve I looked back at UNIX with the feeling I'd been demoted
from a backhoe to a leaf-blower. NT just didn't offer room to move.
The one-size-fits-all, point-and-click,
we've-already-anticipated-all-your-needs world of NT had me yearning
for those obscure command-line flags and man -k. I wanted to craft my
own solutions from my own toolbox, not have my ideas slammed into the
visually homogenous, prepackaged, Soviet world of Microsoft Foundation
Classes.
NT was definitely much too close to image culture for my comfort:
endless point-and-click graphical dialog boxes, hunting around the
screen with the mouse, pop-up after pop-up demanding my attention. The
experience was almost exclusively reactive. Every task demanded a
GUI-based utility front-end loaded with insidious assumptions about
how to visualize (and thus conceptualize) the operation. I couldn't
think "outside the box" because everything literally was a box. There
was no opportunity for ad hoc consideration of how a task might
alternately be performed.
I will admit NT made my life easier in some respects. I found myself
doing less remembering (names of utilities, command arguments, syntax)
and more recognizing (solution components associated with check boxes,
radio buttons, and pull-downs). I spent much less time
typing. Certainly my right hand spent much more time herding the mouse
around the desktop. But after a few months I started to get a tired,
desolate feeling, akin to the fatigue I feel after too much channel
surfing or videogaming: too much time spent reacting, not enough spent
in active analysis and expression. In short, image-culture burnout.
The one ray of light that illuminated my tenure in NT environments was
the burgeoning popularity of Perl. Perl seemed to find its way into NT
shops as a CGI solution for Web development, but people quickly
recognized its power and adopted it for uses far outside the scope of
Web development: system administration, revision control, remote file
distribution, network administration. The irony is that Perl itself is
a subset of UNIX features condensed into a quick-and-dirty scripting
language. In a literary light, if UNIX is the Great Novel, Perl is the
Cliffs Notes.
Mastery of UNIX, like mastery of language, offers real freedom. The
price of freedom is always dear, but there's no
substitute. Personally, I'd rather pay for my freedom than live in a
bitmapped, pop-up-happy dungeon like NT. I'm hoping that as IT folks
become more seasoned and less impressed by superficial convenience at
the expense of real freedom, they will yearn for the kind of freedom
and responsibility UNIX allows. When they do, UNIX will be there to
fill the need.
Thomas Scoville has been wrestling with UNIX since 1983. He currently
works at Expert Support Inc. in Mountain View, CA.