Information Technology Reference
In-Depth Information
Want to read more?
This chapter explained how to write computer programs in Prolog, that is, how to
represent knowledge in a form that can be used effectively by back-chaining. This
skill is applied throughout the rest of the topic.
This chapter is as close as this topic gets to traditional computer science. Because
Prolog is a somewhat unusual programming language, it is almost never taught as a
first language in computer science courses. While there is an excellent introductory
programming text that uses Prolog [21], most computer science departments start
with languages like Java, Python, or Scheme, for which there are many introductory
textbooks. The sort of programming studied here is called logic programming , which is
often taken up as an advanced topic, using textbooks such as [18, 19, 20, 22].
Computer science goes well beyond programming, however, and one of the topics
studied in detail is the notion of scalability . How can one manage extremely large com-
puter programs without getting lost in the details? Some of the very large computer
programs (such as the program for Microsoft Word, for instance) are among the most
complex artifacts ever built by people. How can a team of programmers work on a
project of this size without stepping on each other's toes?
In another dimension of scale, it is not just programs that become large; the inputs
to the program can also be gigantic. For example, there might be a program that ana-
lyzes an enormous geographic database or a genome sequence from biology. A major
concern in computer science is efficiency . How can one write computer programs that
deal with large inputs like these without taking too long or using too much computer
memory?
The approach to programming in this chapter was quite informal. Computer sci-
entists learn how to prove mathematically that their programs have certain desirable
properties, for example, that a certain algorithm will eventually produce an expected
result or that it is as good a way as any to calculate a desired result. Mathematical
induction often plays a role in this. One of the main topics of theoretical computer
science is the analysis of computational tasks themselves, dividing them into tractable
ones (for which algorithms exist that will scale well as the input grows) and intractable
ones (for which there are no good algorithms). As noted at the end of chapter 1,
there are tasks that are not even computable , for which there is no algorithm that is
guaranteed to terminate at all.
 
Search WWH ::




Custom Search