Algorithm = Logic + Control An algorithm can be regarded as consisting of a logic component, which specifies the knowledge to be used in solving problems, and a control component, which determines the problem-solving strategies by means of which that knowledge is used. The logic component determines the meaning of the algorithm whereas the control component only affects its efficiency. The efficiency of an algorithm can often by improving the control component without changing the logic of the algorithm. We argue that computer programs would be more often correct and more easily improved and modified if their logic and control aspects were identified and separated in the program text. CACM July, 1979 Kowalski, R. Control language, logic programming, nonprocedural language, programming methodology, program specification, relational data structures 3.64 4.20 4.30 5.21 5.24 CA790705 DH September 24, 1979 5:08 PM 1989 4 3154 2060 4 3154 2155 4 3154 2179 4 3154 2406 4 3154 2698 4 3154 2710 4 3154 2715 4 3154 2716 4 3154 2717 4 3154 2718 4 3154 2765 4 3154 2817 4 3154 2888 4 3154 2901 4 3154 2921 4 3154 2957 4 3154 2959 4 3154 2965 4 3154 3087 4 3154 3154 4 3154 3154 4 3154 3154 4 3154 2046 5 3154 2110 5 3154 3133 5 3154 3154 5 3154 3154 5 3154 3154 5 3154 3154 6 3154