Entry

Ruby の10年と Java の10年をつれづれ

2008年06月22日

まつもとゆきひろ氏がいいこと言った!

そして両氏とも、ソフトウェア開発の本質は、どんなプログラミング言語を使うかというところにはないとも述べた。「向き、不向きは、どんなプログラミング言語を使うかというところではなく、人の確保や顧客の意向など、非技術的要因で決まる。ここ数年で、そういう非技術的障壁は埋まってきたなと思う」(まつもと氏)

Rubyは10年前のJava - @IT

今時のソフトウェア開発者,殊,実装要員としてのプログラマは,使用言語を選り好みしているようじゃ食っていけないんだと思います。Java はできるけど C は無理,とか,COBOL は得意なんだけど Ruby は若いもんに任せとけ,みたいなことを言っていると,本当に「いらない人」になってしまう。つまるところ,言語仕様の特性によって,パフォーマンスやら開発効率やらが大幅に変わるということはあまりなくなっているわけで,それよりもむしろ,開発要員を確保できるか,とか,言語に関する情報を入手しやすいか,とかいった,非技術的要因で使用言語が決められるんだと思います。

もちろん,こうした水物の論理がまかり通るのは,職人的プログラマからすると鼻持ちならないかもしれません。けど,この頃はむしろ,水物の論理に対して柔軟に対応できるプログラマが求められている,と言ってもいいんじゃなか,と。

もっとも,「Rubyは10年前のJava」とかいった,楽観的な歴史観を持っていていいんだろうか,とも思うわけです。というのも,その言語を取り巻く環境がまるで違うから。10年前の開発言語を取り巻く環境というのは,大体こんな感じだったと記憶しています。あまりよくは覚えてないんですが。

  • Java: JDK1.0 - JDK1.1 くらい
  • Perl: Perl4 から Perl5 への移行期
  • JavaScript: 無視
  • C/C++: 全盛(というか常識)
  • COBOL/FORTRAN: (よく知らない。古参のプログラマさんに聞くとよく使ってたみたい)
  • Smalltalk: 何気に情報系学部の研究室では使われていたんだとか(伝聞)
  • Shell Script: UN*X の人には常識(awk + sed の代わりに Perl を使おうな人が先進的だった)

つまるところ,当時はLL(Lightweight Language)の黎明期だったもんで,LLを使う場合,他に選択の余地がなかったように覚えています。あたしが Ruby を使い始めたのは,1998年くらいで,法学部でネットにある判例のプリティプリンタを作っていた覚えがあります。Perl は日本語の扱いが面倒っちかったもんで,Ruby は重宝しました。

また,LL を使ったソフトウェアの規模も,それほど大きなものじゃありませんでした。せいぜい BBS くらいでしょうか。大規模システム構築の代名詞は,言うまでもなく C/C++ だったわけで,C++ に代わる強力なオブジェクト指向言語として Java は登場したのでした。Java の黎明期はそういうもんだった。つまり,LL と Java は,規模やパフォーマンスといった,まさに「技術的要因」で棲み分けされていたのでした。

一方,現在の Ruby を取り巻く実装言語環境を考えると,LL の種類はやたらと多いし,開発規模も Web アプリブームに伴って,どんどん大きくなっています。選択の余地がなかった10年前と比べると,敵が多すぎる。目的としているタスクも複雑になっている。単純に「10年前のJava」とは言えないんじゃないか,と。

で,このことは,プログラマからしてみても,「Java ができたら全部オッケー」な世界から「Ruby ができるから全部オッケー」な話に移行するわけではない,ということを示しているんじゃないかと思います。つまり,「Java も Ruby もできなきゃいけない」世界になる,と……。個人的な印象ですけどね。つか,現にそうなっている印象があります。

また,お金の話をすると,学習曲線の緩やかな Ruby は,要員を確保しやすい分だけ単価が安くなるんじゃないかとも思います。工期も多分短め見積もられるような気が……。ここら辺は,Ruby の開発が定着していない分だけ弱みになりそうな感じがします。Ruby 技術者の単価を上げることを考えると,Ruby の技術要因を何かしらに特化させるのが手っ取り早いわけですけれど,そうすると,また最初に戻っちゃうわけですね。おとなしく棲み分ける。政治的にかっぱらっちゃうってのもアリかもしれません。OSS のデファクトスタンダードを Ruby にしちゃうとか(半笑い)。

で,おそらく多分,そういう(棲み分ける)ことにはならないはずだから,プログラマは結局 Ruby も Java も,そして他の言語にも精通していかなくちゃいけないんだと思います。まぁ,歌って踊れるプログラマってのは,そういうもんなじゃないか,とも思うんですが。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN