9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: Richard Uhtenwoldt <ru@ohio.river.org>
To: 9fans@cse.psu.edu
Subject: [9fans] efficient programs as distinct from humble programmers
Date: Sun, 25 Jun 2000 11:52:53 -0700	[thread overview]
Message-ID: <200006251852.LAA15335@ohio.river.org> (raw)
In-Reply-To: <200006251157.HAA19732@cse.psu.edu>

in the late 70s, Edsger Dijkstra and Tony Hoare advocated the
"humble-programmer" philosophy, which says that humans tend to
overestimate their ability to handle complexity in software and
consequently one should strive (in addition to one's other objectives)
to pessimize the complexity (measured in lines of code) of the software
one relies on.  often, this is achieved by finding a novel way of
viewing or conceptualizing the problem (like per-process namespaces).
they pointed out the programmer who can meet a set of requirements with
fewer lines of code is the better programmer because a smaller program
will usually be easier for the user to control, more likely to behave
the way the programmer thinks it will behave and easier for future
programmers to modify to do something the original programmer did not
provide for.

in summary, a "humbly-written" program will not unnecessarily waste the
time and the attention of the programmer trying to modify it or the user
trying to control it.

large (ie, rich, generally useful) humbly-written programs are rare. the
Plan 9 papers make it clear that the core designers of Plan 9 are humble
programmers: 3 or 4 times, I saw words to the effect "we were able to
provide this functionality in only XX,000 lines of code" (and yet Plan 9
appears to provide a rich, generally useful software environment).

it is important to distinguish between the aforementioned conserving of
human attentional resources and conserving memory, disk, bandwidth and
cpu resources.  memory size, disk size, bandwidth and cpu speed
double every few years.  the speed at which a person can learn or the
number of things a person can keep track of does not grow like that.

that is why I do not like the term "code bloat".  most Linuxers who use
that term are deploring the wasting of cpu or memory resources.  it would
be more clear if those people refer to "inefficiency".

some people --like dhog@plan9.bell-labs.com in the following quote-- use
the term "code bloat" to mean what I would rather call "gratuitous
complexity":

> > hate to see gnome ported and get 20meg staticaly linked
> > simple CD player
>
> So basically you want shared libraries to mitigate the effects
> of code bloat?  Why not do away with the code bloat instead?
> This is Plan 9's approach.

this use of "code bloat" managed to confuse at least one person,
who thought it referred to wasting memory:

>huh !?!
>
>i thought statically linking each and every application in the system
>IS code bloat

(note that I have not taken a position on shared libraries.)
--
Richard Uhtenwoldt


  reply	other threads:[~2000-06-25 18:52 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-06-25 11:56 [9fans] SO for plan9? forsyth
2000-06-25 18:52 ` Richard Uhtenwoldt [this message]
2000-06-26  9:03 ` Michael Dingler
2000-06-26 10:23   ` Nigel Roles
2000-06-26 14:22     ` Steve Kotsopoulos
2000-06-26 14:44       ` Nigel Roles
2000-06-27  8:31       ` Michael Dingler
2000-06-28  8:27         ` Steve Simon
2000-06-28  9:40           ` Nigel Roles
     [not found]             ` <ngr@9fs.org>
2000-06-28 16:50               ` Tom Duff
2000-06-29  8:29                 ` [9fans] Blit jerq etc - postscript Steve Simon
2000-06-30  8:24                   ` [9fans] 8088 compiling blit (was Re: Blit jerq etc - postscript) Russell Nelson
2000-06-29 12:59                 ` [9fans] SO for plan9? Douglas Fraser
2000-06-29  8:31           ` Douglas A. Gwyn
2000-06-26 13:53 ` James A. Robinson

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=200006251852.LAA15335@ohio.river.org \
    --to=ru@ohio.river.org \
    --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).