Jesper Juellund Jensen      

Prolog-program til rytmemodeller

Introduktion


De fleste computersprog er „procedurale“, hvilket vil sige, at de består af en række instruktioner, der skridt for skridt fortæller computeren, hvad den skal gøre. Et eksempel på et proceduralt program kunne være en almindelig madopskrift. Eksempler på procedurale programmeringssprog er Basic, C, Pascal og Java. En anden type computerprogrammer er baseret på logik og tager kort fortalt udgangspunkt i en række relationer. Et eksempel på et sådant programmeringssprog er Prolog (programming in logic):

[Prolog] is a programming language for symbolic, non-numeric computation. It is specially well suited for solving problems that involve objects and relations between objects

Bratko 1986: 3

Prolog er således netop velegnet til løsning af problemer i forbindelse med et „objekt“ som en simpel melodirytme, der jo er defineret som en række relationer mellem toner, tonelængder, teksttryk osv.

For at få det fulde udbytte af de følgende overvejelser er et grundlæggende kendskab til programmeringssproget Prolog en fordel. Jeg vil dog bestræbe mig på at forklare de opstillede relationer, således at man også kan læse teksten uden. I øvrigt kan der henvises til Ivan Bratko: Prolog Programming For Artificial Intelligence (1986) for en introduktion til Prolog eller eventuelt Adventure in Prolog, der er en online introduktion til Prolog. Jeg skal også nævne, at jeg her har anvendt Matthias T. Kromanns Prolog-ordliste engelsk-dansk ved oversættelse af engelske Prolog-betegnelser til dansk.

Selv om Prolog i princippet blot er en række logiske udtryk, så de pointen selvfølgelig, at disse udtryk også kan anvendes til konkrete beregninger – f.eks. udformningen af musikalske rytmer til en given tekstrytme. Prolog-programmer kan således forstås på to måder: deklarativt og proceduralt (Bratko 1986: 40ff). Den deklarative mening er kort fortalt de logiske relationer, som programmet definerer. Den procedurale mening beskriver derimod hvilke handlinger, der skal udføres for at opnå et „mål“ (løse et problem). Jeg vil her udelukkende fokusere på den deklarative mening, dvs. hvilke logiske regler for rytmer, toner, synkoper osv. reglerne beskriver. Det betyder dog ikke, at jeg ikke har overvejet den procedurale mening, blot at jeg som regel ikke vil anføre disse overvejelser her.

Jeg har anvendt programmet Open Prolog™ til Macintosh, © 1986-98 Michael Brady, Trinity College, Dublin. Programmet kan findes på www.cs.tcd.ie/open-prolog/. Der skulle dog ikke være problemer med at anvende andre versioner af Prolog. En Prolog-implementation til Windows kan for eksempel findes på www.amzi.com/.