On Thu, Sep 16, 2021 at 06:10:11PM -0700, Jon Steinhart wrote:
You made a big assumption that I was suggesting tossing prior work and API
specs which I wasn't. Would you have wanted to have the 32 bit system call
API frozen because it worked and not wanted 64 bit versions? History shows
plenty of good work going into compatibility when the underlying technology
evolves.
Unfortunately, Implementing all of the old API specs is not easy if
you're starting from scratch as you create your new OS. As David
wrote in an earlier paragraph:
For a while, it was possible to have a “POSIX
emulation”
module/layer/whatever (was Mach the first to go this route?) as a
shortcut to this but the breadth of the APIs needed to run,
eg. Chrome/ium is again orders of magnitude more work than what was
needed to port vi/emacs/rn/etc.
And this is the same observation Rob Pike made in his cri du coeur in
2000:
* To be a viable computer system, one must honor a huge list of
large, and often changing, standards: TCP/IP, HTTP, HTML, XML,
CORBA, Unicode, POSIX, NFS, SMB, MIME, POP, IMAP, X, ...
* A huge amount of work, but if you don't honor the standards,
you're marginalized.
* I estimate that 90-95% of the work in Plan 9 was directly or
indirectly to honor externally imposed standards.
Don't know how much time you spend with "the
kids" these days. I make it a
point to do so when I can; SIGCOVID has cut into that unfortunately. One
can get a CS degree without ever taking an OS course at many respectable
institutions. Many are not so much making a choice as doing what they can
which is inadequate in my opinion.
Was discussing this with someone the other day. I'm glad that I have an
engineering degree instead of a computer science degree. And I'm also glad
that I prevailed with one of my mentees to double major in EE and CS when
he wanted to bail on the EE. While it's a generalization, as an engineeer I
was educated on how the universe worked - chemistry, physics, and so on. It
was up to me to figure out how to apply that knowledge - I wasn't taught how
to lay out a circuit board or to use a CAD package or to write an app. A
modern CS degree at many institutions is vocational training in programming.
It's not the same thing.
When I studied CS in the late 80's, MIT's EE/CS department required
all EE's and CS's to take 2 foundational CS classes, and 2
foundational EE classes. This meant that CS folks needed to
understand how to build op-amps from transitors (6.002) and descrete
and continuous FFT's (6.003). And EE folks needed to be able
understand Lambda calculus (6.001), and to build stack and general
register computers using 74XX TTL chips on a breadbroad (6.004).
Furthermore, CS students needed to take an OS course and/or a compiler
course, so by the time you graduated, you understood computers from a
"full stack" perspective --- from transitors, to AND/OR gates, to CPU
design, to compilers, to OS's, to systems issues around desining big
systems like Multics and the SABRE Airline Reservations systems.
These days, at MIT, one of things students are taught is how figure
out what an under-documented abstraction (implemented in Python),
partially by reading the code (but it's way too complex), so it's
mostly by deducing the abstraction by running experiments on the
Python Library code in question. Given how complex computers have
gotten, that's probably more realistic anticipation of what students
will need once they graduate, but yeah, it does seem a bit like
"vocational training in programming". And that's quite a change.
When I was an undergraduate, MIT was proud of the fact that they
didn't teach CS students the C language; after all, that would be
*way* too practical/vocational. The assumption was after you learned
Scheme and CLU, you'd be able pick up other languages on the fly.
(And they didn't really *teach* Scheme per se; the first lecture in
6.001 was about the Lambda calculus, and if you couldn't figure out
Scheme syntax from the reference manual so you could do the first
problem set, well, the EE/CS department was heavily over-subscribed
anyway, and it was a good way of filtering out the less committed
undergraduates. :-)
- Ted