I would call the “systems” you describe “algorithms”.
Looking at your examples, I see that your two “lists of tips” are slightly different. The first list is a combination of tips (aim for 22-30 workers) and facts about the situation (workers mine minerals; that’s how things work). The facts describe the problem you are designing an algorithm to solve. The tips describe solutions you would like your algorithm to aim for when those tips are applicable, but they are general goals, not specific actions. Your second list has no facts, only tips. And those tips are already expressed in the form of if-then statements (actions) that would be part (but just a part) of a larger algorithm.
Exactly, and Abelson & Sussman describe this problem eloquently in their book, Structure and Interpretation of Computer Programs (section 1.1.7):
The contrast between function and procedure is a reflection of the general distinction between describing properties of things and describing how to do things, or, as it is sometimes referred to, the distinction between declarative knowledge and imperative knowledge.
In the footnotes they further elaborate on this, but the important takeaway point is that in the general case there may be no way to convert declarative knowledge to imperative knowledge. Indeed, if there were an easy way to do this, the whole field of computer programming would be obsolete.
I would call the “systems” you describe “algorithms”.
Looking at your examples, I see that your two “lists of tips” are slightly different. The first list is a combination of tips (aim for 22-30 workers) and facts about the situation (workers mine minerals; that’s how things work). The facts describe the problem you are designing an algorithm to solve. The tips describe solutions you would like your algorithm to aim for when those tips are applicable, but they are general goals, not specific actions. Your second list has no facts, only tips. And those tips are already expressed in the form of if-then statements (actions) that would be part (but just a part) of a larger algorithm.
Exactly, and Abelson & Sussman describe this problem eloquently in their book, Structure and Interpretation of Computer Programs (section 1.1.7):
In the footnotes they further elaborate on this, but the important takeaway point is that in the general case there may be no way to convert declarative knowledge to imperative knowledge. Indeed, if there were an easy way to do this, the whole field of computer programming would be obsolete.