Gå!

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 11. december 2021; checks kræver 5 redigeringer .
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] .

Eksempel

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.

Noter

  1. 1 2 Google 'Go'-navn bringer anklager om 'ondskab' - InformationWeek . Hentet 11. november 2009. Arkiveret fra originalen 22. juli 2010.
  2. Clark og McCabe, Applied Intelligence, 2006

Links

Tvisten løst. Google beholder navnet Go.