Commits

camlspotter committed 108188e Draft

added stars

Comments (0)

Files changed (1)

 この文章では 2012年3月での関数型言語 OCaml によるプログラム開発における、必須・重要ツールを紹介する。
 まず、OCaml コンパイラ一式をインストールした際に付属する「公式」ツール群から解説する。
 
+★は重要度。五点満点。
+
 OCaml コンパイラ
 ==========================
 
 このところ OCaml のマイナーバージョンの変わるリリースは一年に一度位。
 バグフィックスパッチやリリースはより頻繁にある。
 
-ocaml toplevel
+ocaml toplevel ★★★★
 -------------------
 OCaml 対話環境。いわゆる REPL(Read-Eval-and-Print Loop)。
 入力は型推論の後 bytecode へとコンパイルされ VM により評価される。
 
 (Native code へとコンパイルする ocamlnat という対話環境も存在する。ただしまだ「非公式」)
 
-ocamlc bytecode compiler
+ocamlc bytecode compiler ★★★★★
 ----------------------------
 OCaml ソースコードを bytecode へとコンパイルするコンパイラ。
 Bytecode プログラムは native code と比べると遅いが、 ocamldebug を使ったデバッグが可能。
 
-ocamlopt native code compiler
+ocamlopt native code compiler ★★
 ---------------------------------
 OCaml ソースコードを native code (マシン語)へとコンパイルする。 
 Native code がサポートされているアーキテクチャで OCaml コンパイラソースコードディレクトリで make opt すると作成される。
 実はほとんど使わない。次の ocamlc.opt, ocamlopt.opt を参照のこと。
 
-ocamlc.opt ocamlopt.opt
+ocamlc.opt ocamlopt.opt ★★★★★
 ----------------------------
 Native code にコンパイルされた bytecode および native code コンパイラ。
 Native code コンパイルが可能な環境では通常このコンパイラを使う。
 
 ocamlc, ocamlopt 以外のツールにも、 .opt の postfix がついた native code バージョンが存在する。
 
-ocamldep
+ocamldep ★★★★★
 =================
 ocamldep は複数の OCaml プログラムファイル間の依存関係を抽出するツール。
 結果は Makefile の依存書式で出力される。通常は、
 OCaml では lex-yacc スタイルのパーサツールが標準で付属しており、
 このパーサによって OCaml の文法自体も定義されている。
 
-ocamllex
+ocamllex ★★★★
 -----------
 Multi-byte char を処理する場合は、 ulex を使うべきである。
 
 ocamllex は \*.mll というアクション等のコードを OCaml プログラムで記述できる。
 \*.mll の例は OCaml コンパイラソースの parsing/lexer.mll を参考にするといい。
 
-ocamlyacc
+ocamlyacc ★★★★
 ------------
 ほとんど上位互換で、エラーメッセージの読みやすい Menhir を使うべきである。
 
 ocamlyacc のほぼ上位互換 parser generator として Menhir という外部ツールがある。 Menhir は ocamlyacc と同じ \*.mly ファイルを受け取る上に、エラーメッセージが読みやすいなど良い点が多い。そのため、現在 OCaml で parser generator を使う場合は Menhir を使うことが推奨されている。
 (ユーザに Menhir をインストールさせるのが面倒だと思われる場合は、 Menhir で新しい機能を使わず、デバッグ開発を行い、リリース時には ocamlyacc に戻す、ということも可能。)
 
-Camlp4 pre-processor and pretty printer
+Camlp4 pre-processor and pretty printer ★★★
 =============================================
 Camlp4 (略称P4) は Pre-Processor and Pretty Printer の4つの P から P4 と呼ばれ、
 自分でパーサーをスクラッチから記述できるだけでなく、 
 
 P4 と P5 が何故ブランチしたか、はさまざまな事情があるがここで語るべきではない。
 
-ocamlmktop, ocamlmklib
+ocamlmktop, ocamlmklib ★★★
 ===========================
 まだ書いてない
 
-ocamldoc
+ocamldoc ★★
 =======================
 まだ書いてないよく知らない
 
-ocamlbuild
+ocamlbuild ★★★
 ======================
 まだ書いてないよく知らない
 
 ソースコードからビルドしている場合、 make install ではこれらの elisp ファイルはインストールされない。
 導入にはソースディレクトリ/emacs/README を読むこと。
 
-caml.el
+caml.el ★★★★★
 ---------------------
 OCaml プログラムのインデントとハイライトを提供する Caml-mode を提供する。
 外部ツールである tuareg-mode を好む人もいる。
 
-caml-types.el
+caml-types.el ★★★★★
 ----------------------
 任意の部分式の型を表示させることで型エラー解消などの作業を効率的に行うためのツール。
 
 
 caml-types.el は caml.el と独立しており、 tuareg-mode と一緒に使うこともできる。
 
-caml-debug.el
+caml-debug.el ★★
 ----------------------
 ocamldebug を Emacs で使うための elisp。現在実行中のソースコードの場所などを Emacs 中に表示できる。
 
 ほとんど使用されないツール
 ====================================
 
-バイトコードデバッガ ocamldebug
+バイトコードデバッガ ocamldebug
 ----------------------------------
 
 ごくたまに利用される程度である。
 
 ocamldebug では一旦進めたデバッグステップを巻き戻すことができるという、ちょっと変わった機能がある。とは言え… printf デバッグか、 gdb を使った native code プログラムのデバッグの方が判りやすい場合が多い。どうしてもプログラム挙動がわからない場合、念のために使われることが多い。これは ocamldebug が非力だからというのではなく、やはり静的に型付けされた関数型プログラムではキャストの誤りや NULL エラーが起こることがなく、あまりデバッグを必要としないからというのが大きい。
 
-バイトコードプロファイラ ocamlprof と ocamlcp
+バイトコードプロファイラ ocamlprof と ocamlcp
 ----------------------------------------------
 
 ほとんど利用されない。
 マニアックなツール
 ==================
 
-expunge
+expunge 
 --------
 
 ocamlobjinfo
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.