| You're touching on the "Neat -vs- Scruffy" dichotomy in AI. (But it's not necessarily a dichotomy -- they can be combined!) https://en.wikipedia.org/wiki/Neats_and_scruffies From the "Scruffy" side, there's Charles Rich's classic work on "Programmer's Apprentice". https://dspace.mit.edu/handle/1721.1/6054 https://dspace.mit.edu/bitstream/handle/1721.1/6054/AIM-1004... >The Programmer's Apprentice Project: A Research Overview >MIT AI Lab Memo No. 1004, November 1987. >Rich, Charles; Waters, Richard C. >Abstract: The goal of the Programmer's Apprentice project is to develop a theory of how expert programmers analyze, synthesize, modify, explain, specify, verify, and document programs. This research goal overlaps both artificial intelligence and software engineering. From the viewpoint of artificial intelligence, we have chosen programming as a domain in which to study fundamental issues of knowledge representation and reasoning. From the viewpoint of software engineering, we seek to automate the programming process by applying techniques from artificial intelligence. https://dspace.mit.edu/handle/1721.1/41967 https://dspace.mit.edu/bitstream/handle/1721.1/41967/AI_WP_1... >Plan Recognition in a Programmer's Apprentice. Ph.D. Thesis proposal. >MIT AI Lab Working Paper 147, May 1977. >Rich, Charles >Abstract: Brief Statement of the Problem: Stated most generally, the proposed research is concerned with understanding and representing the teleological structure of engineered devices. More specifically, I propose to study the teleological structure of computer programs written in LISP which perform a wide range of non-numerical computations. The major theoretical goal of the research is to further develop a formal representation for teleological structure, called plans, which will facilitate both the abstract description of particular programs, and the compilation of a library of programming expertise in the domain of non-numerical computation. Adequacy of the theory will be demonstrated by implementing a system (to eventually become part of a LISP Programmer's Apprentice) which will be able to recognize various plans in LISP programs written by human programmers and thereby generate cogent explanations of how the programs work, including the detection of some programming errors. |
Funny that I would describe a solution based on machine learning as scruffy and a solution based on bayesian logic and knowledge databases as neat, whereas Wikipedia defines it the other way around.