How to manage the conceptual complexity of devising controllers?
1) provide languages with which a programmer can specify a control program with relative easy, using high-level actions as primitives.
2) specify only goals (or an objective function) and use a planner to find courses of action that achieve those goals (or maximize the objective function).
Planning:
Programming.