PostScriptをかじってみた

先日のサークル合宿でプログラミングコンテストをやったとき、PostScriptでICPCの問題をばりばり解いていた人がいて驚いた。PostScriptはわりとちゃんとしたプログラミング言語だという話は聞いていたのだけど、まさか標準入出力まで使えるとは思ってなかった。

つい先日プログラムから図を出力したいと思って、そのときはMetaPostで出力したのだけど、この機会だからついでにPostScriptもちょっとやってみようと思い立って書いたのがこれ。

hanoi.ps
hanoi.pdf
(追記 9/20: dictionaryをつかってみた) hanoi2.ps

pdfはn=10でps2pdfにかけてみたもの。

とりあえずプログラミング言語をはじめて触る時はハノイの塔を書いてみようと思っているので今回もそれに習って書いてみた。図で出力できると良いなあ。


感想。

  • 意外と普通に書ける。PostScriptを生で書く人なんて変態だとずっと思っていたけど偏見だった。
  • 後置記法なのが慣れないとつらいかもしれないけど、慣れるとそうでもない。ただ、書いている間はいいけど、後からコードを読むときには可読性にちょっと難がありそう。
  • 名前空間が知る限りでグローバルひとつしかないので、変数名の衝突に気をつけなきゃいけない。再帰するときは呼び出しごとに引数をスタックに保存する必要がある。
  • デバッグが大変。標準入出力を使ってインタラクティブに実行したり、スタックトレースを簡単に出力できるようにはなっているけど。エラーの起こったインストラクションの行番号を表示したりすることはできないのかな?
  • 関数はみんなマクロなので関数の引数/戻り値のチェックなど当然あるはずもなく、もしそれらの数を間違えたりすると目も当てられないことに。