Selfie: An educational platform for teaching systems engineering
github.com
github.com
Systems Engineering is a high level engineering discipline focused on the integration and coordination of multiple science and engineering fields to achieve an overall system development outcome.
Software is just one (sometimes small) part of systems engineering.
The project describes itself as:
> An educational software system of a tiny self-compiling C compiler, a tiny self-executing RISC-V emulator, and a tiny self-hosting RISC-V hypervisor.
But that would be too long for an HN title so I looked to this paragraph:
> The Selfie Project provides an educational platform for teaching undergraduate and graduate students the design and implementation of programming languages and runtime systems. The focus is on the construction of compilers, libraries, operating systems, and virtual machine monitors. The common theme is to identify and resolve self-reference in systems code which is seen as the key challenge when teaching systems engineering, hence the name.
And condensed it to:
> ... educational platform for teaching ... systems engineering ...
>"The common theme is to identify and resolve self-reference in systems code which is seen as the key challenge when teaching systems engineering, hence the name."
Could someone explain what is meant by "self-reference" here and why it is is seen as "the key challenge" in teaching systems engineering?
overview talk: https://www.youtube.com/watch?v=pt9ifXMJxb0
This is known as "self-hosting"[0], and is typically a desirable property of compilers that target their own runtime environment.
Hehe, I love reflections on trusting trust~
Bootstrapping vs self-hosting is a false dichotomy here.
[1] http://www.cs.cmu.edu/~rdriley/487/papers/Thompson_1984_Refl...