Join GitHub today
GitHub is home to over 36 million developers working together to host and review code, manage projects, and build software together.Sign up
Excess of technical detail in episode 4 on processes #956
Quote from episode 4 on pipes and filters (emphasis mine):
I agree wholeheartedly! But later in the same lesson we do in fact get into some OS-level behind-the-scenes details that seem unnecessary. In particular, the stuff on processes, beginning with:
The term 'process' isn't used anywhere else in the lesson. For the purposes of this explanation, I feel like we could just continue to use either the term 'command' or 'program' (i.e. "the program's standard input"), since those terms are used throughout the lesson.
Also, I think this whole paragraph on the shell's implementation could be cut:
I don't really need to know that the shell is itself a program with a stdout and a stdin, rather than, say, a book of spells animated by dark magic. Do I?
I'm not sure the difference between a process and a program is "technical". Using them as if they were synonyms sets up learners for a very hard time when they get to the stage of running multiple processes of the same program. A typical stage where that's required is towards the end of a project, when time starts running out, and the final comprehensive analysis of all files accumulated throughout the project is required. Over the years, I've sorted out a considerable number of people who were stuck with a mental model suggesting to them that running multiple processes of the same program concurrently is unsafe, as data from one process might somehow spill into other processes.
I've also seen this misconception surface during shell trainings / intros, when learners ended up running more than one shell concurrently and struggled to understand how it can be that commands processed in one shell process make no difference to the other shell process.
For these reasons I'd like to keep the mention of process in the lesson, and I definitely recommend against any wording that could suggest to learners that "process" and "program" are interchangeable. I know the shell lesson is already packed as it is, so I'm undecided whether to suggest adding a proper introduction of the terms. But I do suggest leaving the term "process" in the lesson, as it is -- unless there's experience that it frequently confuses / trips up learners. I entirely agree that it's possible to complete the lesson and an entire workshop without differentiating these concepts, but those who end up continuing computational work will almost certainly need it at some point, and may benefit even from having a little seed planted during the lesson that may help them grasping the concepts.