2日目
昨日の記事の続きです。
バベル案内(http://www.aoky.net/articles/steve_yegge/tour_de_babel.htm)
このSteve Yegge氏、当時はAmazon、現在はGoogleで働くエンジニアだそうです。
素晴らしい経歴ですね!
私はキャリアを持った人の意見に左右されやすい心の弱い人間なので、
C → Ruby(それかJava) → Lisp の順に学習するのが最強だと信じて疑わない。
Cからのステップアップについては、すらすらと書けて動的でいかしてる言語をやりたいならRuby、かたっ苦しくて頑強でコード量が多くなってだっさいけど保守するためには仕方ないと考えるならJava、といったところでしょうか?
仕事の取りやすさで考えるならば、今はまだRubyよりもJavaの方が圧倒的に多いと思います。
ところで、同氏によると、言語はおよそ15年おきに置き換わるものだそうで、C++が完全にJavaに置き換えられてから7年後には、Javaを置き換える言語が出現しているだろう、という予測でしたが、今はどうなんでしょうね。8年経っていますが、C++は完全に置き換えられたのか、Javaを置き換えるほど勢いのある新言語というのはあるのでしょうか。少なくとも、日本のサーバーサイドや、モバイル市場からJavaが完全に姿を消すのは、まだもう少し先になりそうな気がします。
多重継承
James Gosling は「もし1からJavaを設計し直すならば、インターフェイスは使わないだろう」と言ったそうです。
Steve Yeggeは「この年になって多重継承の価値を認めるようになった」と言っています。
私には多重継承よりもインターフェイスの方が便利(というよりも安全)に思えてしまいます。
インターフェイスよりも多重継承が優れている点は、単純に考えると、親クラスのコードを子クラスで共有できるかどうか、ということであり、その点についてはコンポジションで解決できる。
同じGoogleにいるはずのJoshua Blochも、Effective Javaの中で
「継承よりもコンポジションを選べ」と言っている。
むむむ。
Steve Yeggeが「この年になって」と言っていることから、これは単純に経験の問題なのでしょうかね。
この点については、つまり、熟練したハッカーは多重継承をうまく使うが、スキルがばらばらの寄せ集めの開発チームでそれを使うのは危険、という勝手な想像をしてみます。
「多重継承は最強だったが俺が最強じゃなかった」的な
今の私には理解できない。
だがいつかそれが分かるようになるよう精進せねば。
そうだ、Rubyを勉強しよう
ここでは、Steve Yegge氏がたまたま気分で書いたブログをどこまで信用するか、
その内容の質や真偽は置いておきましょう。
自分のこれからのスキルポートフォリオをどうしていくのか。
ここは先輩の意見を私は素直に受け取っておきます。
「Cは単純に知っておくべき」とした上で、
「Lispは最初と2番目に学習する言語としてはよくない」
と言っています。
では、2番目に学習するのに良い言語は何か。
明言はされていませんが、全体的な文章から読み取って、
C++よりはJava、PerlやPythonよりはRubyが良いということになるでしょう。
さて、私の場合、Lispは昔xyzzyを使っていたときに少しだけかじった程度で、Rubyは全く知りません。
CとJavaはそれなりに経験しているから、RubyとLisp、この2つを覚えれば、きっとステップアップできるはず。
そうすれば、来年入社してくる新入社員に、私の窓際デスクとiMacを奪われなくて済むのだ。くくく・・・しめしめ。
そしてRubyの入門サイトとにらめっこ。
しかし今日はもう遅い。明日も仕事だ。眠い。
仕方がない。
今日はここまでにしよう・・・明日から頑張る・・・
関連して
これもまた1年前くらいの古い記事ですが。。。
Steve Yegge 氏が Google 従業員向けに送信した Google+ への投稿が、同氏の操作ミスによって社外に公開された。