Why would anyone want to write something as complex as an operating system in something as clunky and old as C? Alta wants something different for her system, a new language for a more elegant operating system. She spends at least as much time on language design as on system design, in the hopes that if she can design the language to be clean enough and powerful enough, the system will simply fall into place. Or maybe you want to start with something else.
Elegant Notation for Elegant Design
There is no question that C is not the only choice for operating system programming. Many kernels have been written in assembly language, and languages as diverse as PL/1, Ada, Common Lisp, Forth, and Smalltalk have all been used successfully for OS projects. While it takes a great deal of work, implementing in a different language can pay dividends in the long run when you are designing the underlying abstractions of your system - or so the idea goes, at any rate.
To design a new language for the purpose of operating systems design is in some ways the logical extension of this, especially if you intend to tightly couple the language and the environment. Both Smalltalk-80 and most Forth systems were designed in this manner, and while they are not major players today, they were significant in their time, and still influence the way people program now. If you intend a really radical design, it is only natural to think that having an equally radical language to implement it in makes sense.
In addition to books on OS theory such as Modern Operating Systems by Tanenbaum, much of Alta's shelf space is dedicated to books on compiler theory and language design, such as the Dragon book (Compilers: Principles, Techniques, and Tools by Aho, Lam, Sethi and Ullman) and Advanced Programming Language Design by Finkel. There will also be books on the intricacies of her preferred programming paradigm(s), such as Type Theory and Functional Programming, Object-Oriented Programming: A Unified Foundation, or The Art of the Meta-Object Protocol.
Designing and implementing a compiler suitable for systems work is nearly as difficult as designing an operating system. Designing a new language is, if anything, even more difficult. By taking on all three tasks at once, you are creating an insurmountable hurdle. Furthermore, you'll be cutting off most of the help others could give you, both in design and debugging, leaving you working without a net - where most OS developers spend their time hunting bugs in their OS, you'll be trying to determine if the bug is in the OS, in the language translator, or a result of some flaw in the language itself.
- Kether by Schol-R-LEA (to be written in Assiah and Thelema)
- Bjarke Walling
- PHPOS by thePowersGang
- Lyric by Ferrarius
- cicada by xyh
- Lisp is just too tempting! --Alyssa
- BCOS by Brendan Trotter, though it also overlaps with Eleanore Semaphore
- Josh Wyant
- eekee intended to implement Forth for Kaph, but has recently become interested in Plain English Programming.
- PeterX only half (one half liking Scheme and perhaps Python, the other half using Assembler and C)
- Andrey Kapustin
- Oberon (which is both an operating system and a programming language)
- insert your names here