言語の使えるレベル

http://www.kmonos.net/wlog/59.php#_1952060330

  1. 名前は知ってる
  2. ソースを見たら、その言語で書かれているということはわかる
  3. 他人のソースを参考にしながらならば、一応は何か書ける
  4. 標準的なライブラリやパッケージシステムについて、ざっと把握している
  5. 「その言語っぽい書き方」というのが感覚として掴めている
  6. 何も見ないでも文法的に正しいソースが書ける
  7. 言語の機能はだいたい全部理解している
  8. 何も見ないでも標準的なライブラリなどは結構使える
  9. ...(処理系のフルセットが書ける/1〜10までのドキュメントが書ける)
  10. ...(自分で書いた)

()内は、私が勝手に追記。

OCaml 6くらいかな。Functorとかクラスとかよくわかってないので、7は微妙。
Classic VB 8。DB以外なら、いけると思う。でももうずいぶん忘れちゃってるしなあ…
Ruby 6。を名乗って良いかは微妙。forとか書けんし。
Haskell 2。3年くらい2。
Scheme 3か4。
Perl 3か4。
C# 3か4。
C 5?switchの中のbreak忘れまくり。
C++ 5?
Java 4か5

まあ、こんなの書いても仕方ないですが。

で、開発環境やコンパイラが支援できるのはどこかというのを考えてみた。

まず、6。これは補完やインクリメンタルな構文解析で圧倒的に補助が可能。これがなかったら、C#C++でのプログラミングは(私は)絶対できない。もっと言えば、シンタクスハイライトがあるだけでも、(キーワードのスペルミスなんかが見つかって)相当違う。次に3か。私は使ったことがないのだが、VisualStudioなんかには「コードスニペット」なる機能があり、コード片を勝手に入力してくれる。つまりfor文なんかのシンタクスを覚えなくても良いし、ファイルを開いて…などという処理も勝手に書いてくれる(みたい)。gonzuiやその他のソースコード検索システムを使えば、「他人のソース」を検索することがらくちんになるだろう。4と8はどうだろう。それっぽいクラス名を叩けば補完候補が出てきて、それっぽいメソッドを選択することができ、簡単なドキュメントも表示されるというのは、かなりドキュメントを一から読む手間が省ける気はする。

ここまで考えると、本質的な差というのは「1,2,5,7」なんじゃないかと思うのです。

言語の存在そのものを知らないことはどうしようもないし、2も多分最低限度の知識として必要でしょう。5は、多分プログラミング言語の一番本質的ななにかでしょう。7は、こういうのが必要なのかどうかということをおいておいて、やはり人間の機能として考えるべきかな、と。

よくわからない文章ですが、とりあえずEmacsとmakeで開発するのなんて時代遅れなので、誰かOCamlIDEを作らないかなと思ってることですよ(他力本願)。