それは少し違うんじゃないかな

http://blogs.wankuma.com/nagise/archive/2008/05/10/137150.aspx
とりあえずメモ.

  • というのは、J「avaの静的オブジェクト指向というのは、クラスを設計する側の立場に立つと非常に苦労するものなのですが、クラスを使う側には非常に楽なものなのです。
  • 静的言語の制約の多さは、制約される側の立場、つまるところ淡々と実装作業をする側としてはわずらわしいものであると思うかもしれません。

いや,作る側からしても簡単ですよ.静的/動的というのは,クラス設計の難しさの本質ではないと思います.

初級者と中級者の間の壁

しかし、これはスペシャリストである設計者と凡庸な実装者の間に厚い厚い壁を作ることとなりました。

いやそれは違うだろと.「スペシャリストと凡庸な」ではなく「まともなプログラマーと初心者」との違いだろと.Javaのクラス設計もできない奴はプログラマーと呼ぶに値しない.そして,その壁はJavaが作ったものじゃなく,昔からあったものだ.その壁は自ら乗り越えるものであって,言語がなんとかしてくれる物でもない.

逆にJavaのような静的オブジェクト指向といのは初心者の軍を率いて戦うには向いていると思います。業務用システムのような、大量の仕様を人海戦術で捌かなければならない状況によくマッチする。

そんな都合の良い話は存在しない.ソフトウエア開発は属人的な技術であり,熟練者に依存する部分が非常に多いのだから,素人集団を率いた時点で敗北は決まっている.*1



http://www.rubyist.net/~matz/20080204.html#p01

で、これらの言語の仕様(文法や組み込みの機能)について思い返してみると

  • 機能は手続きベースでフラット
  • データ構造をユーザー定義する機能がない、または強調されない
  • モジュール化機能がない、または強調されない

というような感じに思える。(中略)
ここから「初心者向け言語が避けていること」言い替えれば「初心者が苦手なこと」が何であるかだいたいわかる。彼らは「抽象化」が苦手なのだ。

また、20数年前のBASICプログラムを思い出したり、U-20プロコンにおける若者のプログラムを見る限り、抽象度が低く(私のようなスレたプログラマには)理解が難しいようなプログラムでも力業でなんとかしてしまうのが、初心者、あるいは経験の少ないプログラマのようだ。*2

が、個人的にはそれはうまくいかないと思う。そのような言語では学ぶことを拒否する「自称初心者」はいつまでも抽象化機能を身につけず、質の悪いプログラムを生産し続けるだろう。

http://d.hatena.ne.jp/JavaBlack/20070525/p1
http://d.hatena.ne.jp/JavaBlack/20070602/p1

*1:現実はだいたいこんな感じだよね。 => http://d.hatena.ne.jp/vraven/20080511/1210513461

*2:あるある.それで地獄を見たことも何度か.orz