
[ホーム]
[最新エントリー]
[あすなろBLOG]
[あすなろNEXTBLOG]
[あすなろカウンセラーBLOG]
[インタビュー]
[スペシャルコンテンツ]
[テックスペース]
|
|
次へ |
大谷 弘喜
2007年07月20日
今は昔,Cは高級言語と言われ,アセンブラで直接記述するより生産性が高いと言われていました。Javaの登場から10年がたち,メモリー管理はVMの仕事とされ,メモリの割当,解放は大多数のプログラマから意識されることがなくなりました。そして,Cは過去の言語に押しやられ,その地位を落としてしまいました。一部の誤解した人たちは,CもC++もC#でさえ,Cと言う文字を使っていると言うだけで同一視するようになりました。C#はJavaなんだが・・・。地に落ちたCは、Cの登場とともに地に落ちたアセンブラと同じところに落ちてしまいました。ひとたび転落が始まると,とどまるところを知らず,落ち着く先は決まったところだったようです。それは,一部の識者が語るCの本質についての誤解から始まったものかもしれません。そして,Cはアセンブラと肩を並べ,ほとんど同じものになりました。
世の中の常です。
一方のJavaはどんどん進化を遂げ,年をとりました。若かりし頃は,オブジェクト指向の純血種(実は純潔じゃないんだけど)だったものが,理想だけを目指していてはLLにその地位を奪われると感じたのか,スクリプトを取り込み,delegationをとりこもうとし、そしてレガシーな言語になろうとしています。
さて,CとJavaで何が違うのか、というか、開発者の生産性を一番左右する言語要素は何かというのを5年ぐらい前にとある人(現在はSkypeにうつちゃった岩田さん)と話した事があります。人によっては静的な型だとか動的な型だとか言います。そのあたりは僕には分かりません。ソフトウェア(または開発)の規模が大きくなったときに動的型言語でスケールするのか分かりません。Zopeのような巨大なソフトウェアの存在がやり方によってはスケールすると物語っています。一方でZope Interfaceのようなものが存在して,動的型言語に静的型言語のような要素も取り込もうとしています。
僕の結論はメモリー管理です。10年前からの意見です。生粋のCプログラマなら,その管理を自分の制御下におきたいと言うかも知れませんが,オートマ車がひとたび便利だと感じてしまえば,多少燃費がわるくてもマニュアル車には戻れません。それにCのコードは80%がメモリー管理のコードだったり,バグのほとんどがメモリー管理にまつわるものなので(誇張して言っています。実際はそこまでひどくないのでご安心を),その煩わしさから解き放たれロジックに集中できる言語は生産性に開きがあります。
ちなみに,「JavaからRubyへ」と言う本を最近読みましたが,JavaとCの生産性の違いが殆どなくって,LLは生産性がはるかに高いと書いていましたが,LLはともかく,JavaとCでの生産性に開きがあるはずです。もし、開きがない結果が得られるとしたら,Cのプログラマは優秀だから今も生き残っていて,Javaは大量に新しい人をいれたのでサンプルの人たちのレベルが低いからかも知れません。
結局Javaしか知らない人たちはCもアセンブラも、メモリ管理を自分でしないといけない言語は同じなのかも知れません。
|
|
次へ |
|
|
[ホーム]
[ブログコンセプト]
[個人情報]
[著作権]
