Go! (プログラミング言語)

行く!
パラダイムマルチパラダイム並行論理関数命令型オブジェクトベース
デザイン:フランシス・マッケイブキース・クラーク
初登場2003 (2003年
プレビューリリース
9-30-07 / 2007年9月30日 (2007年9月30日
タイピングの規律強い
OSUnixライク
ライセンスGPLv2
影響を受けた
プロローグ[ 1 ]

Go!は、 Prologのような論理型プログラミング言語の伝統を受け継ぐエージェントベースプログラミング言語です。[ 1 ] 2003年に Francis McCabe とKeith Clark によって論文で発表されました。[ 2 ]

デザイン

Go! の作者たちは、Go! を「安全で実用品質のエージェントベースアプリケーションを開発するニーズに応えたマルチパラダイムプログラミング言語です。マルチスレッド、強い型付け、高階(関数型プログラミングの意味で)です。リレーション、関数、アクションプロシージャの定義を備えています。スレッドはアクションプロシージャを実行し、必要に応じて関数を呼び出し、リレーションを照会します。異なるエージェント内のスレッドは、非同期メッセージを使用して通信および調整を行います。同じエージェント内のスレッドは、Lindaスタイルのタプルストアとして機能する共有動的リレーションを使用することもできます。」[ 2 ]

著者らはまた、この言語が論理的関数的命令型のプログラミングスタイルを統合しているため、オントロジーを表現するのに適していると主張している。 [ 3 ]

次の例は、Go!の「オントロジー指向」の型と宣言のスタイルを示しています。[ 3 ]

性別::=男性|女性person <~ { dayOfBirth: [] =>. age :[] =>整数. sex :[] =>性別. name :[] =>文字列. home :[] =>文字列. lives :[文字列]{}}.person :[文字列,曜日,性別,文字列] $ = 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: [文字列,,性別,文字列] =>.newPerson ( Nm Born Sx Hm ) => $ person ( Nm Born Sx Hm )。
  • このルールは、データ コンストラクターのみを持つデータ型::=である新しい代数データ型を定義します。
  • この<~規則はインターフェース型を定義します。つまり、 の特性を示すとともに、これらの特性に対する型制約を与えます。は整数値を持つ関数型プロパティであり、 は文字列に対する単項関係であり、 は型 のオブジェクトである値を持つ関数型プロパティであるpersonことを記述します。agelivesdayOfBirthday
  • 型ルールは、型、、の 4 つの指定されたパラメータに基づいて型 の特性プロパティを定義する (つまり、インターフェイスを実装する)理論に対して$=、関数 を持つ理論ラベルも存在することを示します。personpersonpersonstringdaySexstring

Googleとの対立

2009年11月、GoogleはGoという似た名前のプログラミング言語(感嘆符なし)をリリースしました。マッケイブ氏は、Googleが「我々を圧倒している」と懸念し、言語名の変更を要請しました。[ 1 ] [ 4 ]この問題はテクノロジー系ニュースサイトで注目を集め、中にはGo!を「マイナー」と評するサイトもありました。[ 5 ]この件に関するスレッドは、2010年10月12日にGoogleの開発者によって「残念」というカスタムステータスでクローズされ、次のようなコメントが付けられました。「Goという名前のコンピューティング製品やサービスは数多くあります。リリースから11ヶ月間、この2つの言語の混同はほとんど見られませんでした。」[ 6 ]

参考文献

  1. ^ a b cクラバーン、トーマス (2009年11月11日). 「Googleの『Go』という名前が『邪悪』という非難を招く」" . InformationWeek . 2010年7月22日時点のオリジナルよりアーカイブ2009年11月14日閲覧。
  2. ^ a b Clark, KL; McCabe, FG (2003). 「Go! マルチスレッド型熟考エージェント」自律エージェントとマルチエージェントシステムに関する第2回国際合同会議議事録. pp.  964– 965. CiteSeerX 10.1.1.117.184 . doi : 10.1145/860575.860747 . ISBN  978-1581136838. S2CID  2047545 .
  3. ^ a b Clark, KL; McCabe, FG (2006). 「Go言語によるオントロジー指向プログラミング!」.応用知能. 24 (3): 189– 204. doi : 10.1007/s10489-006-8511-x .
  4. ^ 「第9号 - go - 私はすでに *私の* プログラミング言語の名前を使用しています」 2009年11月10日. 2009年11月14日閲覧
  5. ^ Brownlee, John (2009年11月13日). 「Googleはプログラミング言語に名前を付ける前に「Go」を検索しなかった」 . Geek.com.オリジナルより2012年5月6日アーカイブ。 2010年1月18日閲覧
  6. ^ 「私はすでに*私の*プログラミング言語の名前を使用しています · Issue #9 · golang/go」 . GitHub . 2019年7月4日閲覧

さらに読む