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.
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.
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
!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
- Konstgjord arkitektur
- C (programmeringsspråk)
- Komposition (bildkonst)
- Beräkningskreativitet
- Logisk programmering
- Prolog
Vidare läsning
- M. Gazzelloni: CLACL design, introduzione alla Composizione Formale. (italienska)
- M. Gazzelloni: Guida alla scrittura i CLACL.(programmeringsmanual) (italienska)
externa länkar
- Officiell hemsida
- FORTIDEN GEOMETRI: Och designstandard
- Festival of Mathematics 2009 - CLAC-projektpresentation