"Esposito, Anthony" <[EMAIL PROTECTED]> writes:

>    How would you convince someone that programming in Perl is better
>    than using the UNIX Korn Shell?

I wouldn't.  I use both.

Here's one argument -- the titles of my reference books for each.

    "Programming Perl", 3rd edition, Wall, Christianson & Orwant
    "Programming Perl", 2nd edition, Wall, Christianson & Schwartz
    "The KornShell Command and Programming Language", Bolsky & Korn

Perl is a programming language.
KornShell is a command language.

KornShell is also a programming language, but I only use the
programming language features as they pertain to a command language.

For me, that means that I use them in tandem: 
 -- Perl is my programming language.
 -- KornShell is my command processing language. 

I use KornShell to glue together my individual tools that I create out
from Perl.

For creating complex data structures, traversing them, and reporting
out, Perl is unlimited. KornShell's "data structures" are limited to
files, lines, and fields. No encapsulation. No inheritance. No
extensible types. In short, KornShell is not a programming language in
any modern sense of the word. But that's OK, it really wasn't meant to
be a complete programming language, only to add enough programming
language concepts to leverage the other parts that it's great at --
I/O redirection, file globbing, variable & command interpolation, job
control, process control, etc -- the kinds of things that are awkward
to do within a Perl program.

Sure, Perl can do scripting.  I just knew enough KornShell to avoid
having to do it in Perl.

Sure, KornShell can do programming. I made my living as a C programmer
at Bell Labs for much of the 80's and 90's by *avoiding* C to do it in
KornShell. (Some would say that I never was a C programmer since I
tried to avoid to so often.) I could get a lot of things done with a
little KornShell gluing together some Unix utilities with and a bit of
KornShell programming language magic. But this architecture it would
only scale so far. After that I'd have to use AWK, but that, too, had
limitations that prevented scaling my applications. I had almost
resigned my programming practice when I found Perl -- an elegant blend
of the strength of a programming language and the flexibility of a
scripting language.

Perl is a real programming language, despite it's original
appellation, often used belittlingly, as a scripting language. With
Perl, I never ran into the limitations I found with Korn or AWK. AWK
is gone from my list of active languages (though I'll maintain an AWK
script in AWK), but Korn and Perl are a great combination.

>    I need some `intellectual ammo' to convince my colleagues that
>    Perl is a better, more powerful language, to do our scripting.
>    Any suggestions?

In summary, Perl is better than KornShell and it isn't.

  Perl is a better *programming* language.
  KornShell is a better *command* language.

Use 'em both.

I hand out a quote card at the beginning of every programming language
class I teach. It's a computer scientist quoting a linguist. (Note
that Larry is *both* -- a useful combination in my mind -- for someone
who's designing a language for both computers and humans.) I use the
quote to launch a discussion that brings in all the other languages
the students have used and how they have used them. By painting a big
picture of the entire programming ecosystem, I then narrow the focus
to what the language-du-jour does well, what it doesn't do well, and
how it complements other languages in the students' repertoire. It
sets the context for the following few days where we concentrate on
one specific language, and it prevents some jihad with chants and
jibes of "my language is better than your language". Perhaps. Better
at what?

        Language shapes the way we think,
        and determines what we can think about.
          -- B. L. Whorf
            -- as quoted in the Preface to the First Edition of
               "The C++ Programming Language", Bjarne Stroustrup

    * If what you're thinking about is data structures, use a
    programming language like Perl (or C, or C++, or the "BASIC" in
    Visual Basic).

    * If what you're thinking about is a GUI, use a GUI tool or
    language (like TK, or the "visual" in Visual Basic).

    * If what you're thinking is rules based, use make or some
    declarative rules-based language.

    * If what you're thinking is business oriented, use COBOL.

    * If what you're thinking is (device driver|security|...) use

I happen to think that most of the problems I tend to solve can be
divided into two separate parts and that Perl and KornShell map nicely
into those two parts -- Korn is the shell that wraps my Perl, which
encapsulated the irritation (i.e. problem or business need).


Michael R. Wolf
    All mammals learn by playing!

Reply via email to