I just read again Prof. Franz Baader‘s old lecture manuscript of Logic Based Knowledge Representation course. He taught this course in the International Master Programme in Computational Logic at Technische Universität Dresden during 2005’s Summer Semester. There is an interesting passage that compares the so-called classical programming against knowledge-based programming. Classical programming is essentially the computer programming that you usually learn the first time you enter a computer science undergraduate program. On the other hand, knowledge-based programming is the programming that you typically do when you want to build an “intelligent” application. These are the differences between them according to him:
Classical programming is characterized with the following properties:
- a specialized program that is tailored to a specific application;
- knowledge about the problem domain and additional constraints are implicit in the structure of the program;
- therefore, knowledge is “introduced” by the programmer;
- if there are changes in the application, the program has to be rewritten.
On the other hand, knowledge-based programming has the following properties:
- use of general problem solvers that are independent of the specific domain;
- knowledge about the application domain is represented explicitly in a knowledge base;
- this knowledge can be acquired by a knowledge engineer, independent of the problem solvers;
- if there are changes in the application, only the knowledge base need to be changed, not the problem solver.
So in essence, there is a clear separation between the problem solver and the problem specification itself. The logic that leads to a solution to a problem in a specific domain is not encoded in the program, but rather, it is encoded as logical inferences which uncover implicit knowledge within the problem specification. This is what drives research in (logic-based) knowledge representation, the field of which is where I am working on. There are plethora of methods and formalisms on how to actually represent knowledge. One of them is Description Logic, which has found its way to applications in the Semantic Web. I am excited to be part of it, and hopefully this research area will also be picked up by more Indonesian researchers in the future.