Functions are what something is for, as opposed to form. It isn't natural to think about their inputs and outputs.
It's quite possible my solutions are too blunt and problematic, but these seem like real problems.
Interesting, as I tried a quick brainstorm, I thought of a group of kids sitting together playing with the same toys. Actions that only one could do on a toy at the same time. Trying to convey the problems or exclusivity. Mentally came to problem of sharing. Then that people often borrowed toys temporarily then the owner checked up on them.
(lightbulb) Rust has a borrow-checker. And ownership. Now I wonder where they came up with that haha.
In Ada, "tasks" makes sense, but only because it is an abstraction that makes use of threads while managing all memory access and separation from the rest of the process.
How you like THAT! Maybe need a similar analogy closer to whats going on but the spirit of it seems accurate. Maybe factory workers on assembly lines or offics workers at desks.
Procedure however might be a good enough name, less connoted than Recipe.
Quoting the Elements of Programming by Alexander Stepanov:
"A Procedure is a sequence of instructions that modifies the state of some objects; it may also construct or destroy objects."
With the definition of Object as:
"An Object is a representation of a concrete entity as a value in memory"
As for functions, I think the term makes sense, even with the non-mathematical definition, and especially in the context of OOP:
> an activity or purpose natural to or intended for a person or thing. synonyms: purpose, task, use, role
The "purpose" part doesn't make much sense with the way that we use the word, but it's certainly an activity. For example, a function of a stove is boiling water, its input would be liquid water, and its output would be steam & hot water. In OOP, "stove" would be the name of the class, and "boil_water" would be the function.
I can see how the use of the term "arguments" could be confusing ("parameters" or "inputs" would make more sense), and "threads" is a rather tenuous metaphor for how scheduling works within a kernel, but all of the others mirror their real-world meaning pretty well. I'd be more worried about students needing to unlearn "containers", "ingredients", and "reagents" when they start reading material from outside of Mu, talking to other developers, or learning calculus (which uses functions, sets, and arrays).