CLACL

CLACL
Paradigm Logisk programmering
Designad av Mauro Gazzelloni
Utvecklare Mauro Gazzelloni
Dök först upp januari 2000
Stabil frisättning
1.04 / april 2013
Implementeringsspråk C++
OS Microsoft Windows
Licens proprietär programvara
Hemsida Projektwebbplats
Influerad av
Prolog , C

CLACL , som representerar CLAC-Language (där CLAC står för Logical Composition with the Assistance of Computers ) är resultatet av pågående teoretisk forskning som syftar till att ge en formell beskrivning av de logiska valen som är relaterade till definitionen av organisatoriska sammansättningsprocesser .

Logiken i CLACL är baserad på "spatial-relationell" information snarare än på bearbetning av numerisk information . Den genererar en logisk konfiguration och, med ett verktyg som kallas Plasma, formar den skapade domänen i en fysisk form som musik eller grafik .

CLACL är ett datorspråk som integreras i en produktionsmiljö för att tillhandahålla flera verktyg för att underlätta att skriva kod och representera den grafiskt.

Den första versionen (00.02.00) av språket gjordes tillgänglig för Internet år 2000 på projektplatsen. Versionen 00.06.00 distribuerades vid 2009 års matematikfestival i Rom, under vilken projektet CLAC presenterades.

Språkets egenskaper

Målanvändarna av språket är de som arbetar inom kreativa områden, inklusive design och musik.

Exempel på kreativ generering skapad med CLACL.

Varje design producerar en organism, där alla dess delar är relaterade för att skapa en komplex och komplett helhet. För en bättre förståelse, överväg den grafiska planeringen som är designen och förverkligandet av ett grafiskt mönster. De som har haft en chans att förbereda en komposition vet att varje element bör stå i exakt relation med de andra, och först när alla element är balanserade kommer kompositionen att anses vara komplett. Denna process kan bevisas och verifieras.

Eftersom kompositionsprocessen styrs av logiska val, är programmet centrerat på informationsvetenskapen artificiell intelligens. Det är av denna anledning som projektet nämns i inlägget Computational creativity External_links i Wikipedia, som ett av få exempel på tillämpningen av informationsvetenskap på kreativitet.

Den nära logikdrivna syntaxen, något utmanande för alla som inte är vana vid att arbeta inom området artificiell intelligens ( AI ), kompletterades med konstruktioner som var mer lättanvända i praktiken.

Som ett exempel, se beskrivningen av en cykel (loop) implementerad i Prolog och CLACL.

Med följande exempel i prolog är en loop en körning som skriver ut loopindex:

  
       
     
         
      loop  (  X  ,  Y  )  :-  !,  X  <  Y  ,  print  (  X  ),  X2  är  X  +  1  ,  loop  (  X2  ,  Y  ). 

I CLACL utförs en liknande process med följande kod:

@PRINT("$x $y",NL) FÖR ( $x, $y ) IN II[] { @PRINT($x,$y,NL) }

resultat:

$x $y !a !a !a !b !a !c !b !a !b !b !b !c !a !c !b !c !c

Bildandet av cykeln i CLACL utförs på ett mycket liknande sätt som C-Language . Språket antar en kombination av deklarativa och processuella paradigm. De två språken är Prolog och C-Language . Den deklarativa aspekten kommer från Prolog, och används i uttalanden och i scanning av alternativträdet ( backtracking) . Den processuella aspekten härleds från C-Language , och lyfts särskilt fram i kontrollstrukturerna för det processuella flödet.

Språkets struktur

Kommandona listas i ett skript, som utsätts för en tolk som genererar resultatet. Syftet med att utföra kommandokontroller är att skapa en logisk konfiguration av entiteter, och representera dem i grafisk form och, som en produkt av bearbetning, kommer den att generera en graf. Uppsättningen av enheter som utgör en del av grafen kallas en domän.

CLACL har tre grupper av uttalanden:

  • Deklarationer
  • Kontroller
  • Kommandon



Deklarationerna återspeglar domänens situationer och liknar mest Prolog . Kontrollerna implementerar konstruktioner för att kontrollera flödet av koden med loopar och uttryck . Kommandona kräver eller ställer in villkor på domänen .

Som med alla programmeringsspråk implementerar CLACL följande nyckelkoncept:

  • Variabel
  • Instruktion
  • Uttryck
  • Kontrollstrukturer
  • Underprogram
  • Informationsstrukturer

Dessutom kommer CLACL också att implementera specialistkoncept för domänen och de frågor som behandlar:

  • Uttalanden
  • Tester
  • stater
  • Kommentarer

Entiteterna som kan genereras via tolkningen av skriptet är:

Instans
En instans kan ses som en geometrisk punkt i planet, men vi är inte intresserade av dess position; vårt intresse är dess existens inom domänen och dess relation till andra enheter.
Relation
En relation beskriver relationen mellan olika instanser.
Modell
En modell tillåter beskrivning av komplexa relationer.
Form
Formen beskriver egenskaperna hos en logisk figur."
Figur
En logisk figur kan ses som en geometrisk figur.
Tillämpning av figurer realiserade med CLACL

Exempel

Generering av en instans:

exempel:a

eller

!a

Generering av en relation:

relation:rl1(instans:a, instans:b)

eller:

&rl1(!a, !b)

Definition av en modell som representerar en triangulär konfiguration:

definiera modell: tris(!a,!b,!c) { &rr(!a,!b) &rr(!b,!c) &rr(!c,!a) }

Implementering av en cykel:

FOR ($a$,b) i SET[] { @PRINT(“Instanser “,$a,” - “,$b,NL) }

Implementering av ett villkor:

CASE ($x == 0) { @PRINT(“Värdet på $x är noll“,NL) }

Definition av en funktion:

definiera funktion: switch($a$,b$,c) { CASE ($a == 1) { @PRINT($b," - ",$c,NL) } CASE ($a == 2) { @ PRINT($c," - ",$b,NL) } }

Några operationer på setet:

 def INSI1[4] // definition av uppsättningen av 4 poster 
 ST1[] = [ ST1[] + ST2[] ] // addera 
 ST1[] = [ ST1[] - ST2[] ] // subtrahera 
 ( ST1[] == ST2[] ) // är lika med 

Exempel på ett logiskt uttryck:

(( ST1[] == ST2[] ) OCH (( ST3[] == ST2[] ) ELLER ( ST4[] == ST1[] )) OCH pos(!a == !b))

Exempel på rumsligt uttryck

Använda rumsligt uttryck med CLACL
 !a !b model:modSquare4(!a,!b,!c,!d) #f=shape:frmSquare4(!a,!b,!c,!d) I[]=moln(!a,UNIFORM, 100,1) 
 @GRFILL(Röd) FÖR ($x) I I[] { CASE(pos(!$x IN #f)) shape:plate(!$x,20) } 

CLAC handledning

Se även

Vidare läsning

externa länkar

Exempelbilder