読者です 読者をやめる 読者になる 読者になる

おがさわらなるひこのオープンソースとかプログラミングとか印刷技術とか

おがさわらなるひこ @naru0ga が技術系で興味を持ったりなんだりしたことをたまーに書くブログです。最近はてなダイアリー放置しすぎて記事書くたびにはてな記法忘れるのではてなブログに移行しました。

クリエイティブ・コモンズ・ライセンス
特に断りがない場合は、本ブログの筆者によるコンテンツは クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスの下に提供されています。

The PostScript® Language Tutorial and Cookbook ハンズオン #1

Event PostScript ProgrammingLanguage

大田区の某所で秘密結社のようにやってきましたよ。

タイトルの通り、Adobe が公開している「The PostScript® Language Tutorial and Cookbook」という本がありまして、俗称 BlueBook ですね。
んで、これを愚直に読みつつ PS について理解しましょうと。

基本的には描画言語としての PS なんだけど、やっぱりぼくは言語オタクなので、スタック指向言語としての PS ってのにやっぱ興味があってですね。そこでそういう方向についても議論できたら面白いなぁって。

これもさらっと要約。

  • BlueBook は PS Level 1 から改訂されてないので、今のレベルに上がるにはちょっと補う必要がありそうですね。
  • でも言語仕様は大きく変わっていないはずなので大丈夫。
  • まぁページ記述言語としての PS が徹底して Path 指向だというのは知ってたので今更オドロキはなかったけど、より細かなグラフィックを描いていくと
  • roll ってオペレータでスタックの中身をぐるぐる回せたりするのってスタック指向としてはちょっと邪道だなって思ってたら、ここら辺のスタック操作オペレータは Forth にも普通にあったので、邪道どころは王道まっしぐらだったらしい。知りませなんだ。
  • PS には Dictionary って、平たく言えば連想配列があるってことは知ってたけど、ぼくはこれを普通のコンテナ的なものだと思ってた。
    • 違うんだわ。要はVariable名がキーで、格納するものがValue。Value には処理も突っ込むことができるから、プロシジャもこれで実現できちゃう。
    • さらに Dictionary はスタッカブルだから、ビルトインのオペレータを上書きできたりするし、それをコンテキストによって切り替えたりするのも自由自在。
    • cvx というキーワードを使えばメタプログラミングも可能だよ! こことかこことかみれ!
  • 以下ちょっと Ghostscript 話。
    • GS のプロンプトで長いコマンド打つときにはワンライナーで書いて Screen のコピーモード使うと吉。
    • GS を素で起動したときに出てくる画面は CurrentPage そのものなので、path を stroke したときにはその時点でにょろにょろ描かれる。showpage すると CurrentPage はデバイスに送られて消えちゃうので、画面をキレイにする、って意味で使ってよし。

まぁそんなわけで、ちーと内容的には初心者らしいハンズオンになってしまいましたが(つか、ぼく初心者だし……)、PS って言語としてもけっこうイケてない? ということが発覚。
うそかまことかしらねど、Ghostscript って一部のロジックは PS 自身で書かれているそうですが、なんかあり得る気もする……。

次回予告!

今度も大田区の某所でこそこそやります。

気になる人は来てね!