見出し画像

Retro-gaming and so on

ISLISPとは?

一回、ISLISPの事書いておかなきゃアカンな、ってんでザックリと書いておこうと思った。
ので書く。

ANSI Common Lispと言うアメリカローカルな規格書(日本で言うJISみたいなモノ)が制定されたのは1994年に遡る。
大体のトコ、C言語やらC++言語は先にANSIで制定されて、そのままISOに提案されて受諾、と言う流れが多い。
従って、ANSI Common Lispと言う規格はそのままISOに提出され、ISOに受諾される流れがアメリカ側から望まれたわけだ。
ところがここに物言いが付いた。何つったってANSI Common Lispはデカすぎる。そして、ここにフランスを中心としたヨーロッパ勢が噛み付いたわけだな。
フランスではEuLispとかLeLispと言うこれまた独特なLispの開発の歴史が長く、出来ればこっちの方を「国際規格」として標準化させたい、と言う思いがあった。当然ANSI Common Lispを国際規格としては受け入れさせたくない、と言う政治的意図があったわけだ。
結果、会議は紛糾して物別れに終わったわけだ。ANSI Common LispもEuLispないしはLeLispも「国際規格化」相成らず、となった。
ここで出てきたのが日本である。日本側から「Schemeのように小さなコア言語としてのLisp」が提案され、これがISOに採択される流れとなった。これがISLISPと言うLispである。
まぁ、でも結果、アメリカはメンツを潰されたようなカタチになり、ヨーロッパ勢も以下同文。それで嫌われたかどうか知らんが、あまり実装が揃わない、と言う状態のままで今に至ってるわけだ。

ANSI Common Lispはマルチパラダイムプログラミング言語と言ってよく、ベースは関数型言語のように扱う事も出来るが、いわゆる「副作用アリの破壊的変更もアリの」プログラミングスタイルでプログラムする事が可能だ。と言うか、そういうプログラミングスタイルを好む人が多い。そして超強力なオブジェクト指向の機構も内蔵している。
一方、ISLISPはどっちかと言うと純粋なオブジェクト指向言語としてデザインされている。この場合のオブジェクト指向は必ずしもC++的なオブジェクト指向を意味してないが、それでもCommon Lisp実験場で散々実験されてきたジェネリックで動的なオブジェクト指向を前面に押し出したようなプログラミング言語となっている。
仕様書は確か、150ページ前後の小さい仕様にまとまっている。下手すれば現行のSchemeの仕様書より小さいかもしれない(R7RS-largeって仕様がどうなるかは知らんが、少なくともR6RSよりは遥かに小さい)。

とまぁ、日本が提案したLispの仕様なのだが(と言うわけで、JISで唯一存在するLisp仕様である)、何度も書いてるが殆ど実装がない、ってのが実情である。いくつかJavaで書かれた実験的実装等が過去あったりしたが、実用性、って意味では「ほぼ無い」と考えて間違いないだろう。
日本だと沖電気工業が作ったOK! ISLispと言う実装がある。が、Windowsオンリーなんで、僕個人は触った事がない。
あと、最近、Easy-ISLispと言う実装がオープンソース化されたみたいだが、これも触った事が無いのでよく分からん。
いずれにせよ、Windowsでマトモに使える実装の存在はこの二つのみなのではなかろうか。


  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「プログラミング」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事