ときどきの雑記帖 RE* (新南口)
PostScriptはプログラミング言語ではない?
postscript
前回の記事 の続き。 そう言えば例の記事の筆者は プログラミング言語大全 | クジラ飛行机 |本 | 通販 | Amazon って本を出していたっけなと思い出し、 手元にあるので見てみるとおまけ的な記載ではあるけれどもPostScriptも載ってた。
適当に抜き出して引用する。
PostScriptは、アドビシステムズが1980年代に開発したページ記述言語です。 ページ記述言語は印刷を前提としたような「ページ」を記述するための言語で、 PosrScriptはPDFの先祖ともいえる存在です。 PosrScriptは印刷用に文字の配置や図形などの描画と関連する計算ができ、 特定目的に特化しています。
PostScriptの構文は、逆ポーランド記法(後置記法)で一貫しており、 言語の名前も後置記法の「postscript」という意味に掛かっています。 こういった言語としては他にForthなどがあります。 プログラミング言語ではありませんが、チューリング完全を備えてしまっており、 複雑なプログラムが実行できます。 コンピューターとともに用いるプリンターの黎明期は、 通信速度の遅さがネックでプリンターの印刷品質に制限がありました。 PosrScriptはこの制限を回避するため、複雑な図形をデータとしては送らず、 プリンター内にプログラムを送り込んで生成することで、 高品質な描画を可能としました。
こっちでも通信速度云々て書いていたのか。 って「プログラミング言語ではありませんが、チューリング完全を備えてしまっており、 複雑なプログラムが実行できます。」 ってどういうこと? 「ページ記述言語」だから「プログラミング言語」ではない。ということなんだろうか。
あと、「後置記法」は英語で書いても postscriptにはならんと思うのだけど…
そう言えば PostScript - Wikipedia には
PostScript(ポストスクリプト)は、アドビが開発している、1984年に発表したページ記述言語。
スタック指向型のプログラミング言語で、様々な計算・処理と共に描画命令を実行することができる。 事前にデータをスタックに格納し、後の命令がデータを処理するというモデルで実行される。 そのために記述法が逆ポーランド記法で一貫しており、名前は「追伸」の英語「post script」に後置記法といった意味を掛けている。
とあるし、うぃきぺがネタ元? (でも「スタック指向のプログラミング言語」とはあるな)
ちなみに英語版だと
PostScript is a Turing-complete programming language, belonging to the concatenative group. Typically, PostScript programs are not produced by humans, but by other programs. However, it is possible to write computer programs in PostScript just like any other programming language.
と「(チューリング完全な)プログラミング言語」だとあるし、「後置記法といった意味を掛けている」というのは見当たらない。
言語設計者たちが考えること
もうひとつ別方向から。
10年くらい前に 言語設計者たちが考えること (THEORY/IN/PRACTICE) | Federico Biancuzzi, Shane Warden, 伊藤 真浩, 頃末 和義, 佐藤 嘉一, 鈴木 幸敏, 村上 雅章 |本 | 通販 | Amazon という本が出ていまして、
O’Reilly Japan - 言語設計者たちが考えること の記述によればこれは
C++、Python、APL、FORTH、BASIC、AWK、Lua、Haskell、ML、SQL、Objective-C、Java、C#、UML、Perl、PostScript、 Eiffel、そしてRuby。世界に多くの影響を与え、またソフトウェアの基盤を支えているさまざまなプログラム言語の 設計者たちへのインタビュー集です。彼らが何を考え、どんな考えに基づいて言語を設計したのか。 伝説的かつ著名な言語設計者たちが登場し、背景、動機、哲学、信念、秘話、教訓、課題を語ります。 対話を通してパイオニアたちの飽くなき探究心と思考プロセス、情熱、そして底知れぬエネルギーが見えてくるはずです。 日本語版には、Rubyのまつもとゆきひろ氏へのインタビューを追加収録しています。
という本で、引用部にあるようにPsotScriptも取り上げられているので その先頭辺りから引用してみる。
■PostScriptをどのように定義しますか?
Charles Geschke(以下Charles):PostScliptは、デバイスから独立した表現を用いて(印刷された) ページ内容を高レベルで記述することを主な目的とするプログラミング言語です。
John Warnock(以下Johm):PostScriptは単純な、スタック志向のバーチャルマシンをエミュレートす るインタープリタプログラミング言語です。ほとんどのプログラミング言語に見られる通常のオペレータに 加え、PostScliptは画像やグラフィック、フォントのレンダリングに関わる豊富なオペレータを備えていま す。PostScriptを使えば、アプリケーションは解像度から独立した様式でPostScriptコマンドを発行して、 印刷(あるいは表示)するページのデザインを定義できます。 PostScliptが成功したのは、大変柔軟で、明確に定義されたイメージモデルを背景に持つからだと思いま す。当時の他のプリンタプロトコルは、データ構造を使って静的にページを定義しようとしていました。そ のようなプロトコルは、直感的に単純な数ページを記述するだけでも常に失敗していたものです。
■なぜPostScriptをデータ形式ではなく言語として作ったのですか?プリンタはこれを解釈することにな りますが、言語とデータ形式の実効的な違いとういうのは何でしょう?
John:我々がXeroxPARCで働き始めたとき、JaMと呼ばれる言語がありました。我々はグラフィックに 関する研究をしていて、実験を素早く走らせて試すことができるインタープリタ言語と、当時のAltoのハー ドウェアやプログラミングインタフェースに対応するインタフェースを必要としていました。プログラミン グをして、プログラムをコンパイルして、アセンブルして、ロードして、というような時間のかかるサイク ルを何度も繰り返すことなくいろいろと実験したかったのです。我々はインタープリタ言語を使いました が、それは新しい多くのアイデアを試す上で非常に効果的だということがわかりました。
Charles:PostScriptを言語とすることで、もしもインタープリタ実行には適していないけれども自分に とって重要な機能が用意されていないことが後になってからわかった場合でも、新しいオペレータを導入し てその機能をより低いレベルで実装し、言語の効率を高めるといったことができるようになります。 実際のところ、言語のアイデア全体は、どのようなデバイスで、どのような環境で、そして印刷された ページの見た目をどういった方法で制御して記述するのかある意味では見当もつかなかったために生まれま した。そのため、データ構造からは決して生まれてこない究極の柔軟性を手に入れたのです。 PostScriptには他のチューリング完全な言語に含まれるものと同じオペレータや制御文がありますが、当 然ながらチャーチ=チューリングのテーゼによればその完全性を数学的に証明することはできません。
John:我々の業界には、完全なプログラミング言語ではないコマンドプロトコルの事例が大量にありま す。プログラミング言語として作ることは、我々の当時の判断でした。というのも、プロトコルがどう使 われるのかはいつでも制限がなく未知のことだからです。完全なプログラミング言語ならば、我々が忘れ てしまったり予期しなかったようなやり方でも使えるだろうと思えたからです。この「完全性」によって、 PostScliptは我々が予期しなかったほど長生きになりました。
オライリーの翻訳本
言語設計者たちが考えること (THEORY/IN/PRACTICE) | Federico Biancuzzi, Shane Warden, 伊藤 真浩, 頃末 和義, 佐藤 嘉一, 鈴木 幸敏, 村上 雅章 |本 | 通販 | Amazon って、Amazonの書籍データに
出版社 : オライリージャパン (2010/9/27)
発売日 : 2010/9/27
言語: : 日本語
大型本 : 536ページ
ISBN-10 : 4873114713
ISBN-13 : 978-4873114712
とあるようにオライリージャパンから出ていた本なのだけど、 オライリージャパンのサイトの O’Reilly Japan - 発行書籍一覧 を見ても見当たらない。 他にも CJKV日中韓越情報処理 | ケン ランディ, Lunde, Ken, 章, 小松, 克己, 逆井 |本 | 通販 | Amazon あたりもない。 探せば他にもいろいろあるんじゃないかと思う。
絶版状態(版元品切れ重版未定)は仕方のないことだけど、 カタログからも消すのはどうなんだろう。
…ひょっとして絶版状態じゃなくて正真正銘の「絶版」とか?
O’Reilly Japan Ebook Store にはあるので、紙の方だけないということか (CJKV本はこっちにもない)。