5 ms·
Selfie: An educational platform for teaching systems engineering
- forgotmypw17 4y agoHomepage: http://selfie.cs.uni-salzburg.at/ http://selfie.cs.uni-salzburg.at/
- JoeyBananas 4y ago"Systems engineering" and "systems programming" are different. Systems programming is a specific niche while systems engineering is a vague catch-all term.
- eddsh1994 4y agoSystems engineering is defined by INCOSE, but it is a very broad discipline
- kaycebasques 4y agoI might have munged the description a bit. 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 ...
- whydoineedthis 4y agoI think "An education platform for Compilers, Risk-V emulation and hypervisor" would be more accurate and would draw the right crowd.
- avgcorrection 4y agoThat’s what I expected as well. I expected this https://en.wikipedia.org/wiki/Systems_engineering https://en.wikipedia.org/wiki/Systems_engineering
- TedDoesntTalk 4y agoWhat does it mean for something to be able to compile itself?
- LoganDark 4y agoIt means that the compiled binary can be used to compile updated versions of its own source code, so you no longer need to keep around a secondary compiler for that purpose. This is known as "self-hosting"[0], and is typically a desirable property of compilers that target their own runtime environment. [0]: https://en.wikipedia.org/wiki/Self-hosting_(compilers) https://en.wikipedia.org/wiki/Self-hosting_(compilers)
- pabs3 4y agoUnfortunately self-hosting breaks the ability to bootstrap solely from source code, so it is usually recommended to keep that secondary compiler working (or included it as part of the build process for your compiler) so you can trust the compiler binaries aren't tampered with. https://bootstrappable.org/ https://bootstrappable.org/
- LoganDark 4y ago> so you can trust the compiler binaries aren't tampered with. Hehe, I love reflections on trusting trust~
- dmytrish 4y agoFor the record: C* is a subset of C. Selfie is trivially bootstrapple by any C compiler. Moreover, it's very easy to implement the subset of RISC-V used by Selfie if you don't trust its emulator. Bootstrapping vs self-hosting is a false dichotomy here.
- pabs3 4y agoGood to hear. Usually self-hosting means the maintainers will drop bootstrapping, thanks for being the exception to that rule. If you aren't verifying bootstrapping works in your CI, it might be worth adding that.
- jschveibinz 4y agoI hate to be one of these people, but we can’t just keep redefining entire technical disciplines into subsets of software development. 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.
- deleted 4y ago[deleted]
- Dowwie 4y agoThe book: https://github.com/ckirsch/book https://github.com/ckirsch/book overview talk: https://www.youtube.com/watch?v=pt9ifXMJxb0 https://www.youtube.com/watch?v=pt9ifXMJxb0
- blackerby 4y agoJust started reading the book and it is wonderful. A kind, generous, and humane intro to computer science. It reminds me of https://www.nand2tetris.org/ https://www.nand2tetris.org/ but feels more approachable and appealing.
- bogomipz 4y agoThe README states: >"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?