Merge! | |
---|---|
Clasa de limba | multifile |
Aparut in | 2003 |
Autor | Frances McCabe , Keith Clark |
A fost influențat | prolog [1] |
Licență | GPLv2 |
Platformă | Sistem de operare asemănător Unix |
Merge! este un limbaj de programare cu mai multe fire dezvoltat de Keith Clark și Francis McCabe în 2003. Multi-paradigma , axată pe programare sigură și aplicații distribuite (folosind arhitectura agent), cu tastare puternică . Există suport pentru definițiile funcțiilor și procedurilor, precum și relațiile dintre ele. Thread-urile execută proceduri, apelează funcții și solicită conexiunile necesare după cum este necesar. Firele de diferiți agenți interacționează între ele folosind mesaje asincrone. Firele aceluiași agent pot stabili legături dinamice între ele, formând un fel de memorie partajată.
Datorită naturii sale multi-paradigmatice, limbajul are suport pentru programare logică și funcțională , există suport pentru stiluri de programare orientate pe obiect și imperativ , iar modelarea ontologică este pe deplin suportată , similar cu sistemul de tip utilizat pentru Web-ul semantic , datorită care clase OWL pot fi reprezentate ca sisteme de tip[ clarifica ] [2] .
Datorită lansării propriului limbaj de programare Google, Go , Go! a devenit victima unui conflict de denumire, iar acest conflict nu a fost rezolvat până acum [1] .
Următorul exemplu ilustrează tipul „ontologic” și stilul de declarație adoptat în Go!.
Gen ::= masculin | femela . persoană < ˜ { dayOfBirth : []=> zi . vârstă : [] => întreg . gen : []=> Gen . nume : [] => șir . home : [] => șir . vieți : [ șir ]{}}. persoană : [ șir , zi , Gen , șir ] $ = persoană . persoană ( Nm , Born , Sx , Hm )..{ dayOfBirth ()=> Born . vârsta () => aniÎntre ( acum (), Născut ). gen () => Sx . nume () => Nm . acasă () => hm . trăiește ( Pl ) :- Pl = acasă (). aniÎntre : [ întreg , zi ] => întreg . aniÎntre (...) => .. }. newPerson : [ șir , zi , Gen , șir ] => persoană . Persoană nouă ( Nm , Born , Sx , Hm )=> $persoană ( Nm , Born , Sx , Hm ).Regula ::= definește un nou tip algebric , un tip de date constând numai din constructori de date .
Regula <˜ definește tipul de interfață - spune exact ce proprietăți caracterizează o persoană în acest caz și, de asemenea, impune constrângeri (constrângeri) tipice asupra acestor proprietăți. Acest lucru fixează că vârsta (vârsta) este o proprietate a funcției cu valori întregi, iar parametrul „locuiește cu” (trăiește) este o relație unară pentru șiruri, iar parametrul „Zi de naștere” (dayOfBirth) este o proprietate a funcției care indică ziua obiect.
O regulă ca $= spune că există și o notă ca teorie (presupoziție) care indică o anumită persoană; teoria în sine definește caracteristicile unui tip de persoană (adică un fel de implementare a interfeței persoană), exprimate în patru parametri dați cu tipuri: șir, zi, Gen și șir.