*BSD News Article 66838


Return to BSD News archive

Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!news.rmit.EDU.AU!news.unimelb.EDU.AU!munnari.OZ.AU!news.ecn.uoknor.edu!solace!nntp.uio.no!news.cais.net!newsfeed.internetmci.com!in2.uu.net!news.artisoft.com!usenet
From: Terry Lambert <terry@lambert.org>
Newsgroups: comp.os.linux.development.system,comp.unix.bsd.386bsd.misc,comp.unix.bsd.bsdi.misc,comp.unix.bsd.netbsd.misc,comp.unix.bsd.freebsd.misc,comp.os.linux.advocacy
Subject: Re: Historic Opportunity facing Free Unix (was Re: The Lai/Baker paper, benchmarks, and the world of free UNIX)
Date: Tue, 23 Apr 1996 19:05:17 -0700
Organization: Me
Lines: 135
Message-ID: <317D8C5D.EE043D9@lambert.org>
References: <NELSON.96Apr15010553@ns.crynwr.com> <31794DB6.7DE974DF@lambert.org> <y5aspdwo4fb.fsf@graphics.cs.nyu.edu> <317BEFB7.72D52E7@lambert.org> <4ljc18$cia@thing.demon.co.uk>
NNTP-Posting-Host: hecate.artisoft.com
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Mailer: Mozilla 2.01 (X11; I; Linux 1.1.76 i486)
Xref: euryale.cc.adfa.oz.au comp.os.linux.development.system:22214 comp.unix.bsd.386bsd.misc:816 comp.unix.bsd.bsdi.misc:3482 comp.unix.bsd.netbsd.misc:3335 comp.unix.bsd.freebsd.misc:18067 comp.os.linux.advocacy:46974

Malc Arnold wrote:

[ ... Systems vs. Applications Programming: Why there are free
      operating systems and tools but not free applications ... ]

] >It's less challenging because after a memory fault, you can
] >post-mortem the problem instead of having to repeat it up to
] >the point it occurs and remember what happened just before it
] >lost its mind... and then reboot.  For cascade errors, reboot
] >iteratively until you find the source of the cascade.
] 
] This is probably a valid view.  But these don't make the actual
] coding harder, they simply make finding and solving problems
] harder (OK, a *lot* harder).  I've worked on large apps with adb
] as my only debugger.  Does make it more challenging...

Well, I think there is an element of "in the zone" to be
considered here.  Once you are "in the zone", you are
focused on the application and not on the tools.

I think rebooting significantly interrupts the workflow...
you have to spend time waiting for the reboot, then spend
time reestablishing your environment, etc.... after which,
you're no longer "in the zone" and you have to spend time
getting back there as well.

A cognitive psychologist would call this establishing depth
of concentration.

It's no coincidence that Bill Gates rocks back and forth
with mild autistic rhythm when thinking about things...
he's *not* doing "the pee-pee dance".  ;-).

] >Aesthetics are a seperate problem, and usually reflects a need
] >to include a graphic designer, or at least tools which generate
] >code in strict conformance to style guidelines.
] 
] Well, either of those is a good way to produce *bad* apps.

Religiously following the style guidelines on, for instance,
A Window 95 control panel, makes the control panel look as
if it were an integrated part of Windows 95.

The same goes for installing standard fonts in shell extensions
for right-button-down, instead of picking a "more readable"
font.

For a user it is more important that the interface hang together
than if your new "click-list widget" would reduce the number
of controls he has to use.  None of the training he has had
previously, and none of the books on Windows 95 would tell him
what he's supposed to do with a "click-list widget".

You could "make his life easier" by reducing the number of
controls, but how often do you have to change the address
and ports used by your video card?


] It'll probably work a lot better if it's designed by a small
] group of people, with plenty of feedback from users through the
] development process (umm, hang on, that's more-or-less how Linux
] gets developed...).  The aesthetic and functional design of an
] app is most of the fun.  The rest is simply getting it out of
] your head and into the computer.

8-) 8-).

Doing the guts of a program is the most fun; once you know that
your design will work, painting the box is boring.


] >I don't think writing useful applications takes the same skills
] >(or as much skill, anyway) as writing good systems code.  Of
] >course, I'm a systems person, so I could be a teensy bit
] >prejudiced there.  8-).
] 
] I'll take a shot at a (friendly) rejoinder (as an apps
] programmer I'm a little prejudiced too, although I plan on
] getting into some systems work at some point).  I don't think
] either is particularly easy; although it's a lot easier to get
] away with doing it wrong in applications work.

Yes; this is a better way of saying it than what I said.


] On the other hand, you can ignore OS portability (as opposed to
] hardware portability, which also affects apps) in systems work.
] You don't need a fairly encyclopedic knowledge of what system
] calls and library functions you can rely on being there, which
] ones have different semantics on different systems, which ones
] you can emulate or do without, and so on.  POSIX helps, but if
] you want to be *really* portable you still need to be aware of
] other platforms, including older unices.

This assumes you even intend your application to run on a platform
other than Windows 95.  Most commercial products are not even
built with that intent in the background.  The resulting code
will fail to operate on Windows NT for Alpha or MIPS (assuming
it operates on Windows NT for Intel), just as it will fail for
UNIX, because of architecture portability issues.  API portability
is generally the least of their worries.

Which is why this subthread about the lack of UNIX applications
started in the first place.  8-).


[ ... ]

] OTOH, most system work (in a decently-designed system) tends to
] be confined to a small part of the system at a time (conceptually
] that is, not in terms of how widely the changes are spread).
] A device driver is often a relatively small chunk of code with a
] clearly-defined API to the remainder of the kernel.  Yes, there are
] some issues, like interrupts, which you don't have to worry about
] when you're writing an app, but then, remember how much *bigger*
] many apps are.

Compartmentalized design and API layering works for applications
as well.  It's only a problem if you skip your design phase and
go directly to code.  Again, application space is more forgiving
of this type of coding.

] In summary, systems and apps work require different skills, not
] different skill levels.  But the consequences of getting it
] wrong are *much* worse in systems than in apps.

I think skill is part of coming up with a good, architecture
neutral design... if it weren't, we'd have more of them.


                                        Terry Lambert
                                        terry@lambert.org
---
Any opinions in this posting are my own and not those of my present
or previous employers.