Logic Programming can be broadly defined as “using logic to deduce computational steps from existing propositions” (although this is somewhat controversial). The focus of this paper is on the development of this idea. Consequently, it does not treat any other associated topics related to Logic Programming such as constraints, abduction, etc. The idea has a long development that went through many twists in which important questions turned out to have surprising answers including the following: Is computation reducible to logic? Are the laws of thought consistent? This paper describes what went wrong at various points, what was done about it, and what it might mean for the future of Logic Programming.