9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: Dan Cross <cross@math.psu.edu>
To: 9fans@cse.psu.edu
Subject: Re: [9fans] Awk or Limbo ?
Date: Thu, 26 Apr 2001 21:19:01 -0400	[thread overview]
Message-ID: <200104270119.VAA23482@augusta.math.psu.edu> (raw)
In-Reply-To: <20010426231220.A2383@localhostnl.demon.nl>

In article <20010426231220.A2383@localhostnl.demon.nl> you write:
>I have been following the discussion that has
>been taking place but have to admit to not
>knowing much about programming and the options
>that are available.
>
>What appears to be true is that C++ is not well
>received here. That comes a bit of a surprise
>because when I do wander through a bookstore in
>the computer section C is there in large quantity.
>
>Some people mention Limbo and AWK. Which is used
>daily by the Plan9'rs?

Well, I use awk every day for a variety of reasons.  Others use Limbo
on a daily basis.  The thing about programming languages is that
they're like shoes; one pair is simply not enough for every occasion
(for instance, try skateboarding in wingtips; try getting a job on Wall
St wearing sneakers; try doing string processing in COBOL, and you'll
see what I mean).

The backlash against C++ shouldn't be too surprising, really.  C++ goes
against everything that good programmers are supposed to strive for:
Simplicity, clarity, ease of understanding, ease of maintenance,
abstraction of complexity, attention to (the problem's) detail, privacy
of implementation, good engineering tradeoffs, etc.  It's ironic that
many of these things are supposed to be made `easier' by C++.

When one works in C++, one finds oneself spending more time worrying
about minutae of syntax and minisule details to make the compiler happy
than worrying about the problem.  The effect is rather like drinking from
a firehose; while you *ought* to be getting all the details, there's no
way you can, because there are too many, and you get bogged down.

Many programmers find the language so difficult that they throw the
``good'' parts out the window and don't even attempt to provide, eg,
abstraction through classes.  Plus, the object system is all wrong,
forcing bizarre constructs like templates on the programmer, without
which it would be impossible to build anything remotely resembling a
generic container.

As pointed out by Presotto, much of this is a result of C++'s heritage
as an `extension' of C.  Java, IMHO, makes a better go of it by forgoing
C compatability where it makes sense, but as Forsyth noted, it's
concurrency model is grounded in decades old tradition; hardly an
advance of the state of the art.  It also falls short in a few other
places, such as making a distinction between objects and native types.

Then again, Rob Pike has described Java as an industrial response to
C++.  I don't think that's inaccurate.

One likes a programming language to be expressive; a tool for
communicating an idea, if you will.  Any time one gets swamped in
details imposed by the language, one is as a matter of course less
expressive in that language.  The ideal language is one that allows
an individual to express his- or herself directly and succintly.
I don't know of a language that really provides that, but C does
a reasonable job in some problem domains.  Languages like Python
do well in others (I really like python, even if the module system
is a little much).

One of the things about C, though, is that (IMHO) it works best as a
systems programming language.  As an application development language,
it has all sorts of traps and pitfalls (indeed, Koenig wrote a book
by that name once, listing many of them), and other annoyances, like
the lack of built-in ADTs (why should I build a dictionary myself?
99% of the time, I just want to use it; I don't care about how it's
implemented).

One does wonder, however, if the Unix utilities had been written in
another language like Limbo if we would be whitnessing all the stupid
buffer overrun attacks that the kids are using for bypassing security
these days.

Okay, I've rambled long enough.

	- Dan C.



  parent reply	other threads:[~2001-04-27  1:19 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-04-26 23:12 William Staniewicz
2001-04-26 22:26 ` Boyd Roberts
2001-04-27  1:19 ` Dan Cross [this message]
2001-04-27  1:29   ` Boyd Roberts
2001-04-27  2:59     ` Dan Cross
2001-04-27  3:39       ` Boyd Roberts
2001-04-27  4:07         ` Dan Cross
2001-04-27 14:04   ` Douglas A. Gwyn
2001-04-27 14:56     ` Boyd Roberts
2001-04-27 16:31     ` Dan Cross
2001-04-30  9:23       ` Douglas A. Gwyn
2001-04-27  9:14 ` nospam
2001-04-26 23:46 geoff.9fans
2001-04-27  2:37 geoff.9fans
2001-04-27  3:09 ` Scott Schwartz
2001-04-27  3:37   ` Boyd Roberts
2001-04-27 14:40     ` Douglas A. Gwyn
2001-04-27  3:16 ` Dan Cross
2001-04-27  4:07 geoff.9fans
2001-04-27 19:09 geoff.9fans
2001-04-27 19:40 ` Boyd Roberts
2001-05-01  2:25 okamoto
2001-05-01  2:32 ` Andrey A Mirtchovski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200104270119.VAA23482@augusta.math.psu.edu \
    --to=cross@math.psu.edu \
    --cc=9fans@cse.psu.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).