Go! (programming language): Difference between revisions

Content deleted Content added
No edit summary
Jonovision (talk | contribs)
Moved text out of summary to comply with Wikipedia:NOT_PAPER; removed dubious "influenced Erlang" sentence
Line 23:
}}
 
'''Go!''' is an [[Agent-based model|agent-based]] programming language in the tradition of [[Logic programming|logic-based programming]] languages like [[Prolog]].<ref>{{cite web|last=Claburn |first=Thomas |url=http://www.informationweek.com/news/software/web_services/showArticle.jhtml?articleID=221601351 |title=Google 'Go' Name Brings Accusations Of 'Evil' |publisher=InformationWeek |date=2009-11-11 |accessdate=2009-11-14}}</ref> It was introduced in a 2003 paper by Francis McCabe and [[Keith Clark]].<ref>Clark and McCabe, AAMAS'03, 2003</ref>
'''Go!''' is a [[concurrent programming language]], first publicly documented by [[Keith Clark]] and Francis McCabe in 2003<ref>Clark and McCabe, AAMAS'03, 2003</ref> and included as part of the Network Agents project at [[Sourceforge]]<ref>{{cite web|url=http://sourceforge.net/projects/networkagent/ |title=Network Agents |publisher=Sourceforge.net |date= |accessdate=2009-11-14}}</ref>. It is oriented to the needs of programming secure, production quality, agent based applications. It is [[multithreaded]], [[strong typing|strongly typed]] and [[Functional programming|higher order]] (in the functional programming sense). It has relation, function, and action procedure definitions. Threads execute action procedures, calling functions and querying relations as need be. Threads in different agents communicate and coordinate using asynchronous messages. Threads within the same agent can also use shared dynamic relations acting as memory stores.
 
Its nature as a multi-paradigm programming language, integrating logic, functional, object-oriented, and imperative programming styles,<ref name=informatica-survey>Bordini et al., Informatica, 2006</ref> is particularly applied to ontology-based modeling, as exploited for the [[Semantic Web]] in allowing a type system where [[Web Ontology Language|OWL]] classes can be represented in the type system.<ref>Clark and McCabe, Applied Intelligence, 2006</ref> The design of Go!, according to Bordini et al.'s survey,<ref name=informatica-survey /> also took into consideration critical issues such as security, transparency, and integrity, in regards to the adoption of logic programming technology. Agents in Go! contain both reactive and deliberative aspects, and coordinate using BDI structures,<ref>Fisher et al., Computational Intelligence, 2007</ref> and their style of expression has influenced the modeling of agent systems in [[Erlang (programming language)|Erlang]].<ref>Varela et al., Erlang Workshop'04</ref>
 
Google's programming language [[Go (programming language)|Go]] (note lack of [[exclamation point]]) has, since its 2009 release, been the subject of an as yet unresolved naming controversy with Go! due to its very similar name.<ref>{{cite web|last=Claburn |first=Thomas |url=http://www.informationweek.com/news/software/web_services/showArticle.jhtml?articleID=221601351 |title=Google 'Go' Name Brings Accusations Of 'Evil' |publisher=InformationWeek |date=2009-11-11 |accessdate=2009-11-14}}</ref><ref>{{cite web|url=http://code.google.com/p/go/issues/detail?id=9 |title=Issue 9 - go - I have already used the name for *MY* programming language |publisher=code.google.com |date=2009-11-10 |accessdate=2009-11-14}}</ref>
 
== Communication modelDesign ==
 
'''Go!''' is a [[concurrent programming language]], first publicly documented by [[Keith Clark]] and Francis McCabe in 2003<ref>Clark and McCabe, AAMAS'03, 2003</ref> and included as part of the Network Agents project at [[Sourceforge]]<ref>{{cite web|url=http://sourceforge.net/projects/networkagent/ |title=Network Agents |publisher=Sourceforge.net |date= |accessdate=2009-11-14}}</ref>. It is oriented to the needs of programming secure, production quality, agent based applications. It is [[multithreaded]], [[strong typing|strongly typed]] and [[Functional programming|higher order]] (in the functional programming sense). It has relation, function, and action procedure definitions. Threads execute action procedures, calling functions and querying relations as need be. Threads in different agents communicate and coordinate using asynchronous messages. Threads within the same agent can also use shared dynamic relations acting as memory stores.
 
Its nature as a multi-paradigm programming language, integrating logic, functional, object-oriented, and imperative programming styles,<ref name=informatica-survey>Bordini et al., Informatica, 2006</ref> is particularly applied to ontology-based modeling, as exploited for the [[Semantic Web]] in allowing a type system where [[Web Ontology Language|OWL]] classes can be represented in the type system.<ref>Clark and McCabe, Applied Intelligence, 2006</ref> The design of Go!, according to Bordini et al.'s survey,<ref name=informatica-survey /> also took into consideration critical issues such as security, transparency, and integrity, in regards to the adoption of logic programming technology. Agents in Go! contain both reactive and deliberative aspects, and coordinate using BDI structures,<ref>Fisher et al., Computational Intelligence, 2007</ref> and their style of expression has influenced the modeling of agent systems in [[Erlang (programming language)|Erlang]].<ref>Varela et al., Erlang Workshop'04</ref>
 
Threads within a single Go! process, hence in the same agent, can also communicate by manipulating dynamic relation objects, comparable with [[Linda_(coordination_language)|Linda]] tuple stores,<ref name=informatica-survey /> used to coordinate their activities. A related combination of tuple-based shared stores and Semantics has been taken up as the communication mechanism in the approaches of the [http://www.tripcom.org/ TripCom.org]<ref>[http://www.tripcom.org/docs/del/D6.5v2.pdf TripCom]</ref> and [[SOA4All]]<ref>[http://www.soa4all.eu/file-upload.html?func=startdown&id=77 Soa4al.eu]</ref> projects.