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] .
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.