fbpx
Wikipedia

Go! (programming language)

Go! is an agent-based programming language in the tradition of logic-based programming languages like Prolog.[1] It was introduced in a 2003 paper by Francis McCabe and Keith Clark.[2]

Go!
ParadigmMulti-paradigm: concurrent, logic, functional, imperative (object-based)
Designed byFrancis McCabe, Keith Clark
First appeared2003; 21 years ago (2003)
Preview release
9-30-07 / September 30, 2007; 16 years ago (2007-09-30)
Typing disciplinestrong
OSUnix-like
LicenseGPLv2
Influenced by
Prolog[1]

Design edit

The authors of Go! describe it as "a multi-paradigm programming language that is oriented to the needs of programming secure, production quality and agent-based applications. It is multi-threaded, strongly typed and 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 needed. Threads in different agents communicate and coordinate using asynchronous messages. Threads within the same agent can also use shared dynamic relations acting as Linda-style tuple stores."[2]

The authors also propose that the language is suitable for representing ontologies due to its integration of logic, functional and imperative styles of programming.[3]

Example edit

The following example illustrates the "ontology-oriented" type and declarations style of Go!:[3]

Sex ::= male | female. person <~ {dayOfBirth:[] => day. age:[] => integer. sex:[] => Sex. name:[] => string. home:[] => string. lives:[string]{}}. person:[string, day, Sex, string] $= person. person(Nm, Born, Sx, Hm)..{ dayOfBirth() => Born. age() => yearsBetween(now(), Born). sex() => Sx. name() => Nm. home() => Hm. lives(Pl) :- Pl = home(). yearsBetween:[integer, day] => integer. yearsBetween(...) => .. }. newPerson:[string, day, Sex, string] => person. newPerson(Nm, Born, Sx, Hm) => $person(Nm, Born, Sx, Hm). 
  • The ::= rule defines a new algebraic data type, a data type with only data constructors.
  • The <~ rule defines an interface type - it indicates what properties are characteristic of a person and also gives type constraints on these properties. It documents that age is a functional property with an integer value, that lives is a unary relation over strings, and that dayOfBirth is a functional property with a value that is an object of type day.
  • The $= type rule indicates that there is also a theory label, with the functor person, for a theory that defines the characteristic properties of the person type - implements the person interface - in terms of four given parameters of types string, day , Sex, and string.

Conflict with Google edit

In November 2009, Google released a similarly named Go programming language (with no exclamation point). McCabe asked Google to change the name of their language as he was concerned they were "steam-rolling over us".[1][4] The issue received attention among technology news websites, with some of them characterizing Go! as "obscure".[5] The issue thread opened on the subject was closed by a Google developer on 12 October 2010 with the custom status "Unfortunate" and with the following comment: "there are many computing products and services named Go. In the 11 months since our release, there has been minimal confusion of the two languages."[6]

References edit

  1. ^ a b c Claburn, Thomas (2009-11-11). . InformationWeek. Archived from the original on 2010-07-22. Retrieved 2009-11-14.
  2. ^ a b Clark, K.L.; McCabe, F.G. (2003). "Go! For multi-threaded deliberative agents". Proceedings of the second international joint conference on Autonomous agents and multiagent systems. pp. 964–965. CiteSeerX 10.1.1.117.184. doi:10.1145/860575.860747. ISBN 978-1581136838. S2CID 2047545.
  3. ^ a b Clark, K.L.; McCabe, F.G. (2006). "Ontology oriented programming in go!". Applied Intelligence. 24 (3): 189–204. CiteSeerX 10.1.1.117.184. doi:10.1145/860575.860747. S2CID 2047545.
  4. ^ "Issue 9 - go - I have already used the name for *MY* programming language". 2009-11-10. Retrieved 2009-11-14.
  5. ^ Brownlee, John (2009-11-13). . Geek.com. Archived from the original on 2012-05-06. Retrieved 2010-01-18.
  6. ^ "I have already used the name for *MY* programming language · Issue #9 · golang/go". GitHub. Retrieved 2019-07-04.

Further reading edit

  • Clark, K. L.; McCabe, F. G. (2003). "Ontology Oriented Programming in Go!" (PDF).
  • Clark, K. L.; McCabe, F. G. (2004). "Go!—A Multi-Paradigm Programming Language for Implementing Multi-Threaded Agents". Annals of Mathematics and Artificial Intelligence. 41 (2–4): 171–206. CiteSeerX 10.1.1.133.1069. doi:10.1023/B:AMAI.0000031195.87297.d9. S2CID 6992205.
  • R. Bordini; et al. (2006). . Informatica. 30: 33–44. Archived from the original on 2009-11-15.
  • M. Fisher; et al. (2007). "Computational Logics and Agents - A Roadmap of Current Technologies and Future Trends". Computational Intelligence. 23 (1): 61–91. CiteSeerX 10.1.1.114.6149. doi:10.1111/j.1467-8640.2007.00295.x. S2CID 3393868. Archived from the original on 2013-01-06.
  • McCabe, Francis G. (February 7, 2007). Lets Go!. Network Agent Press. ISBN 978-0-9754449-1-7.
  • C. Varela; et al. (2004). . ACM SIGPLAN Erlang Workshop '04. Archived from the original on 2009-11-15. Retrieved 2009-11-12.

External links edit

  • Github page
  • Code sample on 99-bottles-of-beer.net

programming, language, language, released, 2009, google, programming, language, agent, based, programming, language, tradition, logic, based, programming, languages, like, prolog, introduced, 2003, paper, francis, mccabe, keith, clark, paradigmmulti, paradigm,. For the language released in 2009 by Google see Go programming language Go is an agent based programming language in the tradition of logic based programming languages like Prolog 1 It was introduced in a 2003 paper by Francis McCabe and Keith Clark 2 Go ParadigmMulti paradigm concurrent logic functional imperative object based Designed byFrancis McCabe Keith ClarkFirst appeared2003 21 years ago 2003 Preview release9 30 07 September 30 2007 16 years ago 2007 09 30 Typing disciplinestrongOSUnix likeLicenseGPLv2Influenced byProlog 1 Contents 1 Design 2 Example 3 Conflict with Google 4 References 5 Further reading 6 External linksDesign editThe authors of Go describe it as a multi paradigm programming language that is oriented to the needs of programming secure production quality and agent based applications It is multi threaded strongly typed and 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 needed Threads in different agents communicate and coordinate using asynchronous messages Threads within the same agent can also use shared dynamic relations acting as Linda style tuple stores 2 The authors also propose that the language is suitable for representing ontologies due to its integration of logic functional and imperative styles of programming 3 Example editThe following example illustrates the ontology oriented type and declarations style of Go 3 Sex male female person lt dayOfBirth gt day age gt integer sex gt Sex name gt string home gt string lives string person string day Sex string person person Nm Born Sx Hm dayOfBirth gt Born age gt yearsBetween now Born sex gt Sx name gt Nm home gt Hm lives Pl Pl home yearsBetween integer day gt integer yearsBetween gt newPerson string day Sex string gt person newPerson Nm Born Sx Hm gt person Nm Born Sx Hm The rule defines a new algebraic data type a data type with only data constructors The lt rule defines an interface type it indicates what properties are characteristic of a person and also gives type constraints on these properties It documents that age is a functional property with an integer value that lives is a unary relation over strings and that dayOfBirth is a functional property with a value that is an object of type day The type rule indicates that there is also a theory label with the functor person for a theory that defines the characteristic properties of the person type implements the person interface in terms of four given parameters of types string day Sex and string Conflict with Google editIn November 2009 Google released a similarly named Go programming language with no exclamation point McCabe asked Google to change the name of their language as he was concerned they were steam rolling over us 1 4 The issue received attention among technology news websites with some of them characterizing Go as obscure 5 The issue thread opened on the subject was closed by a Google developer on 12 October 2010 with the custom status Unfortunate and with the following comment there are many computing products and services named Go In the 11 months since our release there has been minimal confusion of the two languages 6 References edit a b c Claburn Thomas 2009 11 11 Google Go Name Brings Accusations Of Evil InformationWeek Archived from the original on 2010 07 22 Retrieved 2009 11 14 a b Clark K L McCabe F G 2003 Go For multi threaded deliberative agents Proceedings of the second international joint conference on Autonomous agents and multiagent systems pp 964 965 CiteSeerX 10 1 1 117 184 doi 10 1145 860575 860747 ISBN 978 1581136838 S2CID 2047545 a b Clark K L McCabe F G 2006 Ontology oriented programming in go Applied Intelligence 24 3 189 204 CiteSeerX 10 1 1 117 184 doi 10 1145 860575 860747 S2CID 2047545 Issue 9 go I have already used the name for MY programming language 2009 11 10 Retrieved 2009 11 14 Brownlee John 2009 11 13 Google didn t google Go before naming their programming language Geek com Archived from the original on 2012 05 06 Retrieved 2010 01 18 I have already used the name for MY programming language Issue 9 golang go GitHub Retrieved 2019 07 04 Further reading editClark K L McCabe F G 2003 Ontology Oriented Programming in Go PDF Clark K L McCabe F G 2004 Go A Multi Paradigm Programming Language for Implementing Multi Threaded Agents Annals of Mathematics and Artificial Intelligence 41 2 4 171 206 CiteSeerX 10 1 1 133 1069 doi 10 1023 B AMAI 0000031195 87297 d9 S2CID 6992205 R Bordini et al 2006 A Survey of Programming Languages and Platforms for Multi Agent Systems Informatica 30 33 44 Archived from the original on 2009 11 15 M Fisher et al 2007 Computational Logics and Agents A Roadmap of Current Technologies and Future Trends Computational Intelligence 23 1 61 91 CiteSeerX 10 1 1 114 6149 doi 10 1111 j 1467 8640 2007 00295 x S2CID 3393868 Archived from the original on 2013 01 06 McCabe Francis G February 7 2007 Lets Go Network Agent Press ISBN 978 0 9754449 1 7 C Varela et al 2004 On Modelling Agent Systems with Erlang ACM SIGPLAN Erlang Workshop 04 Archived from the original on 2009 11 15 Retrieved 2009 11 12 External links editGithub page Code sample on 99 bottles of beer net Retrieved from https en wikipedia org w index php title Go programming language amp oldid 1195044746, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.