I’ve noticed some students asking a rather silly question:
what commands will i need?
What makes this question silly is that it is asked in “what is the minimum set of a programming language keywords required to complete a task?” type of sense. It usually has to do with some game project, and the student is looking for some “fix it all” type of answers. There isn’t one.
The thing is, computer programming is like LEGO. Having a list of a bunch of different commands is like having a bag of blocks — useless on its own, but with a potential to build something. Advanced commands are like specialty pieces, they can be used to achieve a higher level of detail, but often must be used in a creative way. Though the important point here, is that similar models can often be put together, just out of the basic pieces.
Basic variables, input/output, if statement, and a loop should be enough to do just about everything. Obviously this doesn’t guarantee efficiency, or speed of development, or maintainability. Some students don’t question this though, and blissfully type up 5000 lines of repeated code.
Alright, so a special block would have been useful, but the question is still backwards. A bag of new commands is always followed up with a “what do I do with any of this?” question, leaving the student more confused than before. One can’t just shake a bag of blocks and expect an assembled model to fall out. During the assembly, one needs to know what kind of a block needs to be attached next, and then find that block. Similarly one needs to figure out what task needs to be performed, before searching for a command that performs that task.
So the question is not “what commands will i need?”. It should be “what command performs this particular action?”. One is better off knowing what they are building, rather than shaking a bag of parts without a plan.