Jít!

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 11. prosince 2021; kontroly vyžadují 5 úprav .
Jít!
Jazyková třída vícevláknové
Objevil se v 2003
Autor Frances McCabe , Keith Clark
Byl ovlivněn prolog [1]
Licence GPLv2
Plošina Operační systém podobný Unixu

Jít!  je vícevláknový programovací jazyk vyvinutý Keithem Clarkem a Francisem McCabem v roce 2003. Multi-paradigma , zaměřené na bezpečné programování a distribuované aplikace (pomocí architektury agentů), se silným typováním . Existuje podpora pro definice funkcí a procedur, stejně jako vztahy mezi nimi. Vlákna podle potřeby provádějí procedury, volají funkce a požadují nezbytná připojení. Vlákna různých agentů spolu interagují pomocí asynchronních zpráv. Vlákna stejného agenta mohou mezi sebou vytvářet dynamická spojení a vytvářet jakousi sdílenou paměť.

Vzhledem ke své multiparadigmatické povaze má jazyk podporu pro logické a funkcionální programování, podporuje objektově orientované a imperativní styly programování a plně podporuje ontologické modelování , podobně jako typový systém používaný pro sémantický web . které třídy OWL lze reprezentovat jako typové systémy[ upřesnit ] [2] .

Kvůli spuštění vlastního programovacího jazyka Google Go , Go! se stal obětí pojmenovacího konfliktu a tento konflikt nebyl dosud vyřešen [1] .

Příklad

Následující příklad ilustruje 'ontologický' typ a deklarační styl přijatý v Go!.

Pohlaví ::= muž | ženský . osoba < ˜ { dayOfBirth : []=> den . věk : []=> celé číslo . pohlaví : []=> Pohlaví . jméno : []=> řetězec . home : []=> řetězec . žije : [ řetězec ]{}}. osoba : [ řetězec , den , pohlaví , řetězec ] $ = osoba . osoba ( Nm , Born , Sx , Hm )..{ dayOfBirth ()=> Born . věk () => rokyMezi ( nyní (), Narozen ). pohlaví ()=> Sx . jméno ()=> Nm . domů ()=> hm . žije ( Pl ) :- Pl = domov (). yearsBetween : [ celé číslo , den ]=> celé číslo . letMezi (...) => .. }. newPerson : [ řetězec , den , pohlaví , řetězec ]=> osoba . newPerson ( Nm , Born , Sx , Hm )=> $person ( Nm , Born , Sx , Hm ).

Pravidlo ::= definuje nový algebraický typ  , datový typ sestávající pouze z datových konstruktorů .

Pravidlo <˜ definuje typ rozhraní — říká přesně, jaké vlastnosti charakterizují osobu v tomto případě a také ukládá typická omezení (omezení) na tyto vlastnosti. To opravuje, že věk (věk) je vlastnost funkce s celočíselnými hodnotami a parametr 'žije s' (lives) je unární vztah pro řetězce a parametr 'Narozeniny' (dayOfBirth) je vlastnost funkce udávající den objekt.

Pravidlo jako $= říká, že existuje také značka jako teorie (předpoklad) označující konkrétní osobu; samotná teorie definuje vlastnosti typu osoby (tedy jakousi implementaci rozhraní osoby), vyjádřenou v daných čtyřech parametrech s typy: řetězec, den, Pohlaví a řetězec.

Poznámky

  1. 1 2 Google 'Go' Name přináší obvinění ze 'Zla' ​​- InformationWeek . Získáno 11. listopadu 2009. Archivováno z originálu 22. července 2010.
  2. Clark a McCabe, Applied Intelligence, 2006

Odkazy

Spor vyřešen. Google si ponechává název Go.