Pic言語

Pic言語は、C言語の開発者の一人であるブライアン・カーニハンが、長方形とそれを結ぶ矢印でフローチャートのような図を自動的に作成するために考案した、プログラミング言語であるBrian W. Kernighan. PIC - A Language for Typesetting Graphics, Software Practice Experience 12 (1982), 1–20.。用途は図の生成に限られており、ドメイン固有言語である。pic言語のコンパイラは、pic言語で書かれたソースファイルを読み、具体的な描画命令に変換する。pic言語は手続き型言語であり、変数、変数への代入、マクロ、条件分岐、ループを備えている。小さな言語の代表例であり、元々 Unix 環境下で専業プログラマでない人の作業を簡素化することを目的として開発されたJ. Bentley. More Programming Pearls, Addison-Wesley (1988)。

最初は troff 処理のためのプリプロセッサとして実装され、現在でもそうして使われている。pic プリプロセッサはフィルタとして troff 原稿を処理し、pic言語で書かれた部分だけを実際の描画命令に変換し、他の部分は何も変更せずに出力する。

GNU 版の troff である groff にも picプリプロセッサが含まれている。その GNU pic は  原稿中の pic 言語部分を処理することができる。pic 言語部分には、任意の文字列を書いて groff や  に処理させることができ、また後処理を行うプログラム (post-processor) を文書整形処理の前にはさんでもよい。Dwight Aplevich による実装DPIC では、プリプロセッサとしての動作に加えて、直接 PostScript 形式の出力を行うこともできる。現在の主な pic 処理系の実装は3種類である。多くの Linux に含まれる GNU pic、dpic（この2つはフリー）、それと AT&T のオリジナルの実装である。

pic言語の処理系には、MetaPost や DOT言語 (graphviz) と共通した特徴があると言える。

 脚注 

 外部リンク 
Making Pictures With GNU PIC
Troff resources ("pic" section を参照)
ONLamp.com: In Praise of Pic
DPIC, Dwight Aplevich による pic 言語の処理系。PostScript 以外の出力形式もあり、また他にも改良点がある。

Picけんこ