初心者向けの

先日、プログラミング未習熟な人に「初心者向けのプログラミング言語って何か良いのありますか?」と聞かれた。「とりあえずjavaで」と答えておいたが、実際のところどうだろう。java,ruby,python,javascriptで考えてみた(perl,phpはパス)。
入門者(とりあえず文法を学ぶレベル)向けで重要なのは

  • 逐次実行できる
  • 状態が確認できる
  • エラー・メッセージが詳しい
  • 環境が整っている

といったところか。javaは前二項が弱いものの、後二項が非常に優れている。rubypythonjavascriptは前二項が強いものの、後二項がいまいちだ。
もうちょっとレベルが上がって初心者(簡単なものを作るレベル)になると

  • OOを学びやすい
  • 成果が得やすい
  • ライブラリが多い
  • 良い教科書がある

といったところだろうか。javaはクラス型OOの本流でライブラリも多く良い教科書も多いとこのレベルではほぼ隙がない。ruby,pythonは前二項では良いが、後二項では発展途上だ。javascriptはプロトタイプ型OOで一般的でなくライブラリも最近増えだしたばかりで教科書も少ないが、成果を得ることに関しては全言語の中でも最上位だろう。
さらにレベルが上がった中級者(ライブラリを作るレベル)になると

  • 実行速度が速い
  • C,C++親和性が高い
  • 実装・環境依存性が小さい
  • コミュニティが良い

というのでどうだろうか。javaはC,C++親和性を除いて実用レベルに達しているし、そもそもC,C++親和性がなくても構わないくらいの速度が出せる。rubypythonよりC親和性が高く、コミュニティ(日本語)もあるが、仕様が定まっていないという大きな欠陥がある。pythonrubyより実行速度が速くコミュニティ(英語)も大きいが、多バイト文字関連で環境依存性が大きい。javascriptに到ってはほぼ全滅だ。
結局のところjavaで良いと思う。javaの安全側に倒した仕様は初心者に適している。黒魔術師にとってはその仕様は足枷でしかないが、黒魔術師なら自力で枷を外せるだろう。