11.07.2015 Views

Encyclopedia of Computer Science and Technology

Encyclopedia of Computer Science and Technology

Encyclopedia of Computer Science and Technology

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

390 PrologGiven the scope <strong>and</strong> pace <strong>of</strong> today’s business, scientific, <strong>and</strong>other projects, project management s<strong>of</strong>tware is <strong>of</strong>ten a vitaltool. However, using too elaborate a project tracking systemfor a relatively small <strong>and</strong> well-defined project may diverttime <strong>and</strong> energy away from the work itself. Fortunately, awide variety <strong>of</strong> project management programs are available,ranging from full-fledged products such as Micros<strong>of</strong>tProject or Primavera Project Planner to simpler sharewareor free products.Further ReadingMarmel, Elaine. Micros<strong>of</strong>t Office Project 2007 Bible. Indianapolis:Wiley, 2007.Muir, Nancy C. Micros<strong>of</strong>t Office Project 2007 for Dummies. Hoboken,N.J.: Wiley, 2007.Open Workbench: Open-Source Project Scheduling for Windows.Available online. URL: http://www.openworkbench.org/.Accessed August 17, 2007.“Project Management S<strong>of</strong>tware.” Wikipedia. Available online.URL: http://en.wikipedia.org/wiki/Project_management_s<strong>of</strong>tware. Accessed August 17, 2007.PrologSince the 1950s, researchers have been intrigued by thepossibility <strong>of</strong> automating reasoning behavior, such as logicalinference (see artificial intelligence). A number <strong>of</strong>demonstration programs have been written to prove theoremsstarting from axioms or assumptions. In 1972, Frenchresearcher Alain Colmerauer <strong>and</strong> Robert Kowalski at EdinburghUniversity created a logic programming languagecalled Prolog (for Programmation en Logique) as a way <strong>of</strong>making automated reasoning <strong>and</strong> knowledge representationmore generally available.A conventional procedural program begins by definingvarious data items, followed by a set <strong>of</strong> procedures formanipulating the data to achieve the desired result. A Prologprogram, on the other h<strong>and</strong>, begins with a set <strong>of</strong> facts(axioms) that are assumed to be true. (This is sometimescalled declarative programming.)For example, the fact that Joe is the father <strong>of</strong> Bill wouldbe written:Father (Joe, Bill).The programmer then defines logical rules that apply tothe facts. For example:father (X, Y) :- parent (X, Y), is male (X)gr<strong>and</strong>father (X, Y) :- father (X, Z), parent(Z, Y)Here the first assertion says that a person X is the father<strong>of</strong> Y if he is the parent <strong>of</strong> Y <strong>and</strong> is male. The second assertionsays that X is Y’s gr<strong>and</strong>father if he is the father <strong>of</strong> aperson Z who in turn is a parent <strong>of</strong> Y.When a program runs, it processes queries, or assertionswhose truth is to be proven. Using a process calledunification, the Prolog system looks for facts or rules thatapply to the query <strong>and</strong> attempts to create a logical chainleading to proving the query is true. If the chain breaks(because no matching fact or rule can be found), the system“backtracks” by looking for another matching fact or rulefrom which to attempt another chain.Prolog aroused considerable interest among artificialintelligence researchers who were hoping to create a powerfulalternative to conventional programming languages forautomating reasoning. This interest was further spurredby the Japanese Fifth Generation <strong>Computer</strong> Program <strong>of</strong> the1980s, which sought to create logical supercomputers <strong>and</strong>made Prolog its language <strong>of</strong> choice. Although some suchmachines were built, the idea never really caught on. However,Borl<strong>and</strong> International (makers <strong>of</strong> the highly successfulTurbo Pascal) released a Turbo Prolog that made thelanguage more accessible to students using PCs, although itused some nonst<strong>and</strong>ard language extensions.Despite its commercial success being limited, Prologhas been used in a number <strong>of</strong> areas <strong>of</strong> artificial intelligenceresearch. Its rules-based structure is naturally suitedfor expert systems, knowledge bases, <strong>and</strong> natural languageprocessing (see expert systems <strong>and</strong> knowledge representation).It can also be used as a prototyping languagefor designing systems that would then be recoded in conventionallanguages for speed <strong>and</strong> efficiency.Further ReadingBratck, Ivan. Prolog Programming for Artificial Intelligence. 3rd ed.Reading, Mass.: Addison-Wesley, 2000.Clocksin, W. F., <strong>and</strong> C. S. Mellish. Programming in Prolog: Usingthe ISO St<strong>and</strong>ard. 5th ed. New York: Springer, 2003.Fisher, J. R. “Prolog: Tutorial.” Available online. URL: http://www.csupomona.edu/~jrfisher/www/prolog_tutorial/contents.html. Accessed August 17, 2007.Sterling, Leon, <strong>and</strong> Ehud Shapiro. The Art <strong>of</strong> Prolog: Advanced ProgrammingTechniques. 2nd ed. Cambridge, Mass.: MIT Press,1994.SWI-Prolog [free Prolog for Windows, Linux, <strong>and</strong> Mac OS]. Availableonline. URL: http://www.swi-prolog.org/. AccessedAugust 17, 2007.pseudocodeBecause humans generally think on a higher (or moreabstract) level than that provided by even relatively highlevelprogramming languages such as BASIC or Pascal, itis sometimes suggested that programmers use some form<strong>of</strong> pseudocode to express how the program is intended towork. Pseudocode can be described as a language that ismore natural <strong>and</strong> readable than regular programming languages,but sufficiently structured to be unambiguous. Forexample, the following pseudocode describes how to calculatethe cost <strong>of</strong> wall-to-wall carpet for a room:Get room length (in feet)Get room widthMultiply length by width to get area (insquare feet)Get price <strong>of</strong> carpet per square footMultiply price/sq. foot by area to get totalcost.Pseudocode generally includes the basic control structuresused in programming languages (see branching

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!