Show HN: Tiny Shell
github.com
github.com
More seriously though it is really useful for people who are going into embedded or systems programming to write a command line interpreter at some point in their studies. It blends a couple of disconnected courses (data structures and parsing) into something tangible and useful.
I wonder if there is a good canonical list of chunks that you should be able to create from a blank sheet of paper in order to demonstrate mastery of CS. I would put an interpreter, a database, a CLI (shell), a compiler, a scheduler, and a device driver as the list but there might be others.
Maybe add something to cover graph theory. But it's hard to think of a tool as useful on a small scale (one person, not big data) as the ones you've named.
I found an example demonstrating the approach here: http://www.tenouk.com/Module43a.html
http://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-ar...
* oilshell - An ambitious project to build a shell that is compatible with bash (to completely replace it), but also better. * xonsh - A Python shell * elvish - A modern re-imagining of the shell with objects and pipelines
All very cool.
I never had to build another shell in my life, but the process I had to go through to learn the OS well enough to build one gave me invaluable insights for a future career in backend.