(Translated by https://www.hiragana.jp/)
GNU Guile - Wikipedia コンテンツにスキップ

GNU Guile

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』
GNU Guile
開発元かいはつもと Free Software Foundation
リポジトリ ウィキデータを編集
対応たいおうOS GNUプロジェクト
規格きかく R5RS
種別しゅべつ プログラミング言語げんご
ライセンス GNU Lesser General Public License
公式こうしきサイト http://www.gnu.org/software/guile/
テンプレートを表示ひょうじ

GNU Guile は、プログラミング言語げんご Schemeインタープリタ/バーチャルマシン1993ねんはじめてリリースされた[1]GuilePOSIXシステムコールのモジュールされた拡張かくちょうAPL アレイ機能きのうなどをふくみ、オブジェクト[2] ライブラリとしてパッケージングされている。「Libguile」を使つかうことで、Guileプログラムなかんで、 言語げんごとの密接みっせつ統合とうごう可能かのうインターフェースとして使用しようすることができる[3]

名前なまえGuile」は「GNU's ubiquitous interactive language for extension」からている。こうけのものではないが(ちゅう参照さんしょう公式こうしきウェブページの冒頭ぼうとうにあらわれたのは2011ねんはるごろである[4]

GuileGNUプロジェクトの「公式こうしきの」 拡張かくちょう言語げんごであるが、 2006ねん時点じてんで、人気にんきのあるプロジェクトのなかでこの言語げんご使つかっているものは十指じっしたない。その名称めいしょうについては、Usenetでの議論ぎろんなかで、リー・トーマス[5]によって提唱ていしょうされた。 基本きほんてきなアイデアは、「開発かいはつしゃ基本きほんてきアルゴリズムデータ構造こうぞうCC++実装じっそうし、機能きのうかたをインタープリタようのコードにエクスポートする。アプリケーションはインタープリタが統括とうかつするプリミティブのライブラリとなることで、コンパイルされたコードの効率こうりつとインタープリタの柔軟じゅうなんせい双方そうほうそなえることができる。」というものである[6]

Scheme標準ひょうじゅんへの遵守じゅんしゅ

[編集へんしゅう]

その歴史れきしおおくの部分ぶぶんにおいて、GuileScheme標準ひょうじゅん厳密げんみつしたがっていたわけではなかった。

The Guile version of Scheme differs from standard Scheme ([Clinger]) in two ways. First, in Guile Scheme, symbols are case sensitive. Second, in Guile Scheme, there is no distinction made between the empty list and boolean false (between '() and #f).[7]

現在げんざいGuileでは、そらのリストとブーリアンがた#f区別くべつされる。シンボルの大文字おおもじ/小文字こもじ区別くべつされるが、Guileのレキシカルスキャナけんパーサである reader procedure における分岐ぶんきにより、Guileはシンボルでの大文字おおもじ/小文字こもじ区別くべつをやめることができる。最近さいきん採用さいようされたScheme標準ひょうじゅんR6RSは、R5RS以前いぜん標準ひょうじゅんからはなれて、大文字おおもじ/小文字こもじ区別くべつをデフォルトとして採用さいようしている。

Guileとアプリケーションとの密接みっせつ連携れんけいにはコストがともなう。Scheme再帰さいき頻繁ひんぱんおこなうので、末尾まつび再帰さいき最適さいてきした実装じっそう要求ようきゅうするが、ほとんどのテクニックは相互そうご運用うんようせいそこなうものである。Guileは、純粋じゅんすいScheme関数かんすうやプログラムのなか末尾まつび再帰さいき最適さいてきするよう妥協だきょうし、C言語げんご関数かんすう視野しやはいったときは末尾まつび再帰さいきをあきらめるということをいられる[8]Scheme標準ひょうじゅんのもうひとつの要求ようきゅうであるcall/cc英語えいごばん実装じっそうも、不満足ふまんぞくなものである。— C言語げんご継続けいぞくあつかうには、C言語げんごスタック全体ぜんたいヒープにコピーすることが必要ひつようになる[9]ガベージコレクションもまた、効率こうりつてきなものとはなりえない。C言語げんごのコードはSchemeのコードへのポインタつことができなければならないからだ。必要ひつようconsセルの消失しょうしつけるためには、Guileのガベージコレクタは保守ほしゅてきなものにならざるをず、さい利用りようされる可能かのうせいのあるセルをうしな可能かのうせいがある[10]

歴史れきし

[編集へんしゅう]

Guileリチャード・ストールマンによってはじめられた(のちに「Tcl戦争せんそう」とばれることになる)白熱はくねつした議論ぎろんにその起源きげんはっする。ストールマンは、Tclはアプリケーションを記述きじゅつするには力不足ちからぶそくだとし、GNUのアプリケーションを拡張かくちょうするためにふさわしい言語げんごとしてScheme提唱ていしょうして、その結果けっかGuileプロジェクトがはじめられた[11]当時とうじ適当てきとうSchemeインタプリタがなかったため、Guileは「隙間すきま」をめるために開発かいはつされた。(のちにarch開発かいはつしゃとなる)トム・ロード[12]シグナスソリューションズ[13]はたらいているあいだGuile開発かいはつふかくのめりこんだ。初期しょきのバージョンは、1995ねんよりも以前いぜんにSIOD(えい: Scheme In One Day[14])やSCMインタープリタ[15]から派生はせいした[16]

Guile目標もくひょうのひとつは、言語げんごからSchemeさらにはポータブルバイトコードへの翻訳ほんやく可能かのうにすることである。そうすることで、Guile効果こうかてき言語げんご中立ちゅうりつのランタイム環境かんきょうとなることができる。この目標もくひょうはいまだ達成たっせいされていないが、おおくの努力どりょくがなされてきた(C言語げんご類似るいじする構文こうぶんたないほかScheme方言ほうげんからの、Emacs Lispからの、TkWWWの関係かんけい実装じっそうされたTclからの、そしてLOGO類似るいじ言語げんごからの変換へんかん報告ほうこくされている)。

Guile SchemeXMLXPathXSLT を(SXMLSXPath、SXSLT それぞれにおいて)サポートしている。 SしきもとづいたXML処理しょりguile-lib によって提供ていきょうされている。

GuileはポータブルなSchemeライブラリSLIBをサポートする。

Guile使用しようしているプログラム

[編集へんしゅう]

脚注きゃくちゅう

[編集へんしゅう]
  1. ^ Blandy 1997, p. 102.
  2. ^ Strictly speaking, Guile is an object library, not an executable.」 、Blandy、1997ねん, p.89.
  3. ^ To encourage customization, Guile provides extensive interfaces, allowing C code to interact with the Scheme world. C code can freely create, access, and mutate Scheme objects; C functions may call Scheme functions and vice versa; C code may add new types to the Scheme world and take advantage of Guile's garbage collection… Most of the standard Scheme procedures are implemented by C functions, visible to Guile clients; for example, applications can call the C function scm_cons, which is the underlying implementation of the Scheme procedures cons.Blandy、1997ねん, pp. 94, 96.
  4. ^ Internet Archive Weyback Machine で確認かくにん。2011ねん1がつ1にちのスナップショットにはいが、同年どうねん5がつ14にちのアーカイブにはある。1997ねん7がつGNU's Bulletin, vol. 1 no. 23確認かくにんできるので、こうけではない。
  5. ^ The name Guile was first suggested in a Usenet discussion by Lee Thomas.」、Guile Scheme 1995ねん
  6. ^ Blandy 1997ねん、pp 87.
  7. ^ An Anatomy of Guile, The Interface to Tcl/Tk」、1995ねん
  8. ^ Blandy 1997, p. 99.
  9. ^ Because Guile allows C functions and Scheme functions to call each other freely, a Guile continuation may include both C and Scheme stack frames. For simplicity, Guile's implementation of call/cc copies the entire C stack into the heap; invoking a continuation copies the stack back from the heap and uses the longjmp function to reactivate it. This implementation has a number of drawbacks…Blandy、1997ねん、p. 99.
  10. ^ Blandy、1997ねん、pp. 99–100.
  11. ^ Tcl war.
  12. ^ えい: Tom Lord
  13. ^ えい: Cygnus Solutionsのちレッドハットによって買収ばいしゅうされた。
  14. ^ SIOD.
  15. ^ It's hard to determine just who designed Guile. A large share of the credit surely belongs to Aubrey Jaffer whose excellent Scheme interpreter, SCM, forms the core of the implementation. The module system was designed and built by Miles Bader…」、 An Anatomy of Guile, The Interface to Tcl/Tk、1995ねん
  16. ^ Here is a very, very brief history of this interpreter. I hope that people involved in its past will contribute more to this document. SIOD: George Carrette wrote SIOD, the earliest version. Although most of this code as been rewritten or replaced over time, the garbage collector from SIOD is still an important part of Guile. SIOD is still actively developed and freely available (search for "siod"). It has a very small footprint.Guile Scheme、1995ねん
  17. ^ The rules for the games have been coded for your pleasure in the GNOME scripting language (Scheme).
  18. ^ GnoTime
  19. ^ It is written in pure Guile, and allows configuration files to be written in scheme (as well as Vixie's original format) for infinite flexibility in specifying when jobs should be run.」GNUプロジェクト mcron
  20. ^ OpencCog

参考さんこう文献ぶんけん

[編集へんしゅう]
  • Guile Scheme」— 仕様しよう履歴りれき © FSF(1995ねん12がつ
  • An Anatomy of Guile, The Interface to Tcl/Tk」(1995ねん)
  • Blandy, Jim (1998). Peter H. Salus. ed (英語えいご). Guile: An Interpreter Core for Complete Applications, Handbook of Programming Languages : Functional and Logic Programming Languages. Volume IV (1st ed.). Indianapolis, IN: マクミラン・テクニカル出版しゅっぱん. pp. 87–104. ISBN 1-57870-011-6. OCLC 426167659 

外部がいぶリンク

[編集へんしゅう]