Programming Levels - Dutton-Christian-Robotics/Learning-to-Code GitHub Wiki
One of the most important parts of programming a robot is being able to see that there are different levels or layers of how code functions and how that relates to the programmer's goals or intentions.
Basic Level
Control of a single motor—focused purely on how the motor functions, in terms relevant to the motor.
Coordination
Combination of individual controllable elements into something human-meaningful (e.g. "drive forward"). Code at this level is generally un-intelligent. For example, drive functions are based on executing for a certain period of time—which has clear limitations.
A benefit of moving away from the basic level is that code becomes far more reusable, in keeping with the principle of "Don't Repeat Yourself."
Intelligent Coordination
Code functions are augmented through sensory input and decision making. For example, information from wheel encoders allows the possibility of a "drive five feet forward" function.
Purpose Based (name pending?)
Information and code is structured so that programs can be written not in lower-level code but in higher-level code that focuses on what the programmer wants to happen. Instead of "drive five feet forward", the robot could be told "drive to the depot."
Competition Based (name pending?)
As code runs it stores match-specific information. What color is the alliance? What position is the randomization element? This allows OpModes to be written in a more clearly labeled way (e.g. whenBlueAlliance() )