Believe it or not, not everything is based on C. There are current, shipping, commercial OSes written before C was invented, and now others in both newer and older languages that don’t involve C at any level or layer.
There’s tons of examples.
Believe it or not, not everything is based on C. There are current, shipping, commercial OSes written before C was invented, and now others in both newer and older languages that don’t involve C at any level or layer.
There’s tons of examples.
Indeed, and some of those on the article were once upon a time described here in the early days of OS News.
Unfortunely many teachers, books and unsound Internet advices are to blame for the urban myth that UNIX was the very first OS written in a high level language, and that C was the genesis of systems programming languages.
A good example of how history gets rewritten by victories.
For any student of computing history, it’s not news that many different languages were in use in systems work. The article gives a few examples, and here’s a few more off the top-of-my-head for some popular systems:
VAX/VMS was partially written in BLISS. BLISS wasn’t too popular outside DEC however.
CP/M – While the core BIOS and BDOS were 8080/z80 assembler, many of the utilities were written in PL/M, an abridged version of PL/1 created by Digital Research.
PRIMEOS – originally written in FORTRAN, later in PL/P, also a PL/1 derivative.
As memory spaces (and availability) grew in the 70’s and 80’s, the feasibility of using higher level languages also grew. System complexity also grew, and quicker and less error-prone development was essential in creating modern systems.
Not only was there a past before C.
The future of operating systems will be very likely based on Rust or other “safe” languages.
No, it isn’t.
Indeed, as computer hardware turns more and more complex (especially server and desktop hardware, but even embedded development is becoming a entangled mess), even moving away from existing established kernels is becoming harder and harder, let alone new languages, with smaller projects and companies struggling more than ever to even turn on basic functionalities on dated hardware.
Never underestimate the weight of legacy. And it only gets heavier with time.
CapEnt,
I agree with cybergorf that newer & safer languages have merit over C, but I also agree with you that C is entrenched in critical systems. Dominant operating systems are not likely to get replaced any time soon. We need to motivate everyone to change, but it’s hard to do when so many industries are heavily invested in C.
I’m surprised the article failed to mention MIT/GE Multics, written in PL/I during the late 60s. It was more directly responsible for modern OS and machine architectures than most of the early systems that were discussed.
I had a Multics account. Wonder if it still works. Does it have a password recovery service?
Everyone pisses on obj-c; But what choise did next have? They hired people next door friends as their comany went down,
Had BeOS on a technical point been better? YES and better than even osx today as it forced pervasive multithreading for large apps. I magine a desktop in 1999 that could and can use all 16 cores in almost all applications. That what was beos did.
Could BeOS win against modern OSX? Not likely, even thougfh it had many advantages like the 64bit file file sytem made by Giampalo and fully symmetric mulithreading. With the new kernel by Geist BeOS couls easily beat osx in any regard.
Haiku uses the geist kernel (NewOS), and so does fuscia by google. Both are vastly altered by either AxelD and many others as well as google employees to suit the purposes they suit fit.
The fuscia project explains the google funding of haiku to some sort. Geist is a google drone now afaik.
BeOS had somethings that were better than OSX, like the filesystem that is for sure. But it had a lot of shortcomings, like networking and security being total afterthoughts.
An OS being pervasively multithreaded doesn’t mean that serial applications become magically parallel and scalable. NT was pervasively multithreaded as well from the get go, and to this day many applications still don’t scale up at all.
It’s fascinating to see how operating system design and language design went hand-in-hand in so many cases. Modern application design still seems to be shaped by the imperative languages they’re written in.
Even though the author explicitly omits operating systems written in assembly, I’d like to give a mention to Arthur (“A RISC operating system by Thursday”). Probably the first public operating systems to run on ARM, the guts were written in assembly, but the desktop was written in BBC BASIC.