>
> OK, this is a bit of a tangential topic for this list.  But, what's the
> point of obsessing on UNIX history unless it's coupled with some effort
> to communicate the philosophy to a new generation of programmers?
>
100 times this.


A few hypotheses for why colleges teaching "theoretical programming"
(i.e. Computer Science).

- Universities, especially at the undergraduate level, have a mission
to teach students how to think, not how to do. This leads to more theory
and less practice.

- Universities are top down institutions with lecturers. Theory is easier
to teach in a top down institution than practical advice.

- Software engineering is evolving so quickly, it would be hard to put
together a software engineering program which had economic value.
CMU has a MS in Software Engineering, but their cirriculum is vague so it's hard to tell what they do.
If anybody here has taken it I'd love to hear what you thought of it.

- A lot of good work needs to be done that doesn't require breaking
the JVM, python, or JS abstraction layer. Cycles are cheap.
Memory is cheap.  And not all programs have latency or uptime requirements.
UNIX culture of course was lightyears ahead of knowing this and
economized for the most expensive resource of all: developer time.

To bring this back to TUHS, how did (and do) UNIX developers teach
the UNIX way? As someone younger than Linux, I was only lucky enough to
read The Art Of Unix Programming by ESR and read Kernighan's books.

 Tyler


On Wed, Nov 13, 2019 at 8:03 PM Jon Steinhart <jon@fourwinds.com> wrote:
arnold@skeeve.com writes:
> Norman Wilson <norman@oclsc.org> wrote:
>
> > I am very disappointed that programming education seems not to care
> > enough about this sort of thing, even today.
>
> I think this is the key. Universities focus (too much?) on the theory
> and not enough on the practice, and "learn how to program" courses
> and books focus on the mechanics (syntax, semantics) and not enough
> (or at all) on the practicum of writing code well.
>
> We continue to rely on the school of hard knocks, and we continue
> to pay for this reliance.
>
> I also think there's a sliding scale. The fancier or higher-end
> the university, the more the focus on theory, and vice versa. Sigh.
>
> Arnold

OK, this is a bit of a tangential topic for this list.  But, what's the
point of obsessing on UNIX history unless it's coupled with some effort
to communicate the philosophy to a new generation of programmers?

This has been a real concern of mine for a while.  As a friend of mine
put it, processors are getting so cheap that pretty soon we won't be
able to purchase pencils that don't contain them.  This puts us all
at the mercy of not-great programmers.  And of course, it's not just
pencils, it's stuff like airplanes too.

In my opinion, the root of the problem is that programming today is
being taught in the abstract - as if programs don't run on computers.
Programming today is taught as if it consists of importing libraries
and gluing function calls together.

I recently visited my daughter's college and attended a number of CS
related presentations.  Was surprised that CS is taught in Java with
some advanced work in Python.  One can almost get a CS degree there
without ever using a compiler much less learning how computers function.
Too be fair, other schools such as Dartmouth where Doug hangs out have
a better curriculum.

At the K-12 level, the stage is set by combination of the "everybody
must learn to code" curriculum with "no child left behind".  School
administrators dispense with any critical thinking about the value of
the curriculum in order to chase grant dollars.

I used to be able to get into my local schools to volunteer-teach
programming.  But, the learn to code curriculum has eclipsed that;
schools are led to believe that they're teaching the right stuff
(because Bill Gates says so) and aren't interested in anything else.

I recently turned my course notes into a book as an attempt to make
some small difference.  Too soon to tell if it will.

Anyway, my question for you all is, how do we as seasoned practitioners
leverage our experience to contribute to the state of the art?  Any of
you found a way to pass on your knowledge?

BTW, I'm doing my first messing around with the Linux kernel these days;
if anyone knows the guts of the generic filesystem code I could use a bit
of help.  Here's something that I came across on the way in <sys/mount.h>:

enum
{
  MS_RDONLY = 1,                /* Mount read-only.  */
#define MS_RDONLY       MS_RDONLY
  MS_NOSUID = 2,                /* Ignore suid and sgid bits.  */
#define MS_NOSUID       MS_NOSUID
  MS_NODEV = 4,                 /* Disallow access to device special files.  */
#define MS_NODEV        MS_NODEV
...
};

Can anyone explain the value of this programming style?  Is this just an
example of the result of how programming is taught today?

Be happy discuss this off-list.

Jon