Gå! | |
---|---|
Sprog klasse | flertrådet |
Dukkede op i | 2003 |
Forfatter | Frances McCabe , Keith Clark |
Blev påvirket | prolog [1] |
Licens | GPLv2 |
Platform | Unix-lignende operativsystem |
Gå! er et flertrådet programmeringssprog udviklet af Keith Clark og Francis McCabe i 2003. Multi-paradigme , fokuseret på sikker programmering og distribuerede applikationer (ved hjælp af agent-arkitektur), med stærk indtastning . Der er understøttelse af definitioner af funktioner og procedurer, samt relationer mellem dem. Tråde udfører procedurer, kalder funktioner og anmoder om de nødvendige forbindelser efter behov. Tråde af forskellige agenter interagerer med hinanden ved hjælp af asynkrone beskeder. Tråde fra den samme agent kan etablere dynamiske forbindelser med hinanden og danne en slags delt hukommelse.
Grundet dets multi-paradigme karakter har sproget understøttelse af logisk og funktionel programmering, der er understøttelse af objektorienterede og imperative programmeringsstile , og ontologisk modellering er fuldt understøttet , svarende til typesystemet, der bruges til Semantic Web , pga. hvilke OWL - klasser kan repræsenteres som typesystemer[ præciser ] [2] .
På grund af lanceringen af Googles eget programmeringssprog, Go , Go! blev et offer for en navnekonflikt, og denne konflikt er ikke løst indtil videre [1] .
Følgende eksempel illustrerer den 'ontologiske' type og deklarationsstil, der er anvendt i Go!.
Køn ::= mand | kvindelig . person < ˜ { dayOfBirth : []=> dag . alder : []=> heltal . køn : []=> Køn . navn : []=> streng . hjem : []=> streng . liv : [ streng ]{}}. person : [ streng , dag , køn , streng ] $ = person . person ( Nm , Born , Sx , Hm )..{ dayOfBirth ()=> Born . alder () => årMellem ( nu (), Født ). køn ()=> Sx . navn ()=> Nm . hjem ()=> hm . bor ( Pl ) :- Pl = hjem (). yearsBetween : [ heltal , dag ]=> heltal . årMellem (...) => .. }. nyPerson : [ streng , dag , køn , streng ]=> person . nyPerson ( Nm , Born , Sx , Hm )=> $person ( Nm , Born , Sx , Hm ).::=-reglen definerer en ny algebraisk type , en datatype, der kun består af datakonstruktører .
<˜ reglen definerer typen af grænsefladen — den siger præcis, hvilke egenskaber der karakteriserer en person i dette tilfælde og pålægger også typiske begrænsninger (begrænsninger) på disse egenskaber. Dette fikser, at alder (alder) er en funktionsegenskab med heltalsværdier, og parameteren 'lives with' (lives) er en unær relation for strenge, og parameteren 'Birthday' (dayOfBirth) er en funktionsegenskab, der angiver dagen for objekt.
En regel som $= siger, at der også er et mærke som en teori (antagelse), der angiver en bestemt person; teorien selv definerer karakteristika for en persontype (det vil sige en slags implementering af persongrænsefladen), udtrykt i givne fire parametre med typer: streng, dag, køn og streng.