Daily Archives: 2018-12-04

24年前の著書の中の参照情報について

先日、24年前に出版した書籍について、出版社(岩波書店)から、その中に記載した参照情報について「読者からの問合せ」があったという連絡がありました。

その参照情報は、インターネット上から得るソフトウェアに関するものです。現在も(よりいっそう)インターネット上で公開されている参照情報の引用も多くなっていますので、今後に向けて考えることも必要でしょう。

その書籍というのは

  • 武市正人著「プログラミング言語」(岩波講座 ソフトウェア科学  4)
  • 1994年6月17日
  • ISBN4-00-010344-X C3355

です。

いまや多彩な「プログラミング言語」が存在しますが、執筆当時もそうでした。この本は特定のプログラミング言語について述べたものではなく、さまざまなプログラミング言語に見られる共通の概念を「プログラミング」によって示そうと試みたものです。すなわち、「プログラミング言語をプログラムする」(Programming Programming Languages)ことで「プログラミング言語」の基本を理解することを目指しています。その内容については「古典的」だといえるでしょう。この考え方をここで詳しく述べることはせずに、関心のある方には本書を見ていただくとして、ここでは、この本の読者の方から問合せのあったことについて書くことにします。

本書では、「・・・をプログラミングする」というのですから、当然、そのためのプログラミング言語を使っています。執筆当時にはGoferという関数型言語が一般的でした。また、その処理系が無償で配布されていて読者の方々にも使っていただけると考えてGoferを使いました。当時(から何度かの増刷の間)は、このGoferはYale大学のサイトで提供されていました。本書のpp.220-221には、参考書リストの末尾に「ソフトウェアの入手方法」を載せてあります。今とは違って、ftpによってアクセスしていたようで、そのアクセス法(と標準的なレスポンス)を書いてあります。

ところが、今はそのサイトにはアクセスできなくなっています。現在、関数プログラミングに携わっている方々でもGoferという名前を聞いたことがないかも知れません。実際、半年ほど前に、私自身が著書の中のプログラムを掘り起こして使おうとしたときには、Goferではなく新しい言語に書き直しました。24年前(の出版時よりも数年前)に使った言語から、今、使っている言語への(少しの)書き換えでしたが、昔、自分で書いたものですし、著書に説明も書いたのですからそれほど手間はかかりませんでした。

さて、現在、この本で使っているソフトウェアから現在のソフトウェアに移行するのはどうすればよいのでしょうか。Goferだけではありませんが、このような(Goferだけではなく類似の)言語の発展として、いまはHaskellが一般的だといえるでしょう。読者の方々にもこの情報を提供したいと考えてこの記事を認めています。実際、現時点でそのような環境を整えるには、インターネットで「Haskell インストール」で検索すれば多くの情報が得られるでしょう。大別すれば、Windows OS向けとMac OS向けでしょうか。手元のOSに合ったシステムを導入していただきたいと思います。具体的な手順については、それぞれの説明を参照していただくのがよいでしょう。

さて、24年前の本書に現れるGoferプログラムのコード(テキスト)についても、当時、安定的に提供できると考えていた著者の所属先サイトを示していました。7年ほど前にそこを辞した後、そのサイトも閉鎖されていますので、その対応も必要でしょう。上述のように、GoferプログラムがそのままHaskellで処理できるわけではなく、少し、手を入れる必要がありますが、それでもなお、もとのテキストがあるとないでは大違いでしょう。そこで、ひとまず、ここに掲載することにしました。

「プログラミング言語」の中のプログラム一式

zipファイルですが、ダウンロード後に解凍することによって各章のファイルが得られます。拡張子GSのついたファイルがGoferのプログラムで、拡張子LOGのファイルはGoferの処理系での実行結果です。さらに、GPという拡張子の付いたファイルでは、いくつかのGoferプログラムからなるプログラムの場合に関連するGoferのファイルを列挙したものです。活用いただければ幸いです。