ぱろっと・すたじお

技術メモなどをまったりと / my site : http://parrot-studio.com/

ある種の言語コンプレックス?

そもそも「言語の優劣」が客観的・定量的には決まらないってのは、
誰もが認めるところでしょう
もし決まるなら、とっくに世の中の言語は一つの流れに収束しているわけで


特に言語はその「環境」に左右されます
実行環境だけでなく、開発者が属する集団(主に会社)に大きく影響を受け、、
どんなに言語仕様がエレガントで美しくても、それが常にベストとは限りません


個人の趣味なら好きにすればいいのですが、
「プロ」である以上、その環境にあった技術を選び出してなんぼです
そのためには多くの選択肢を知っていなければならないのも当然のことです


ということで、新しい選択肢を増やすために・・・

[完全版] 究極のC#プログラミング ~新スタイルによる実践的コーディング

[完全版] 究極のC#プログラミング ~新スタイルによる実践的コーディング

・・・この本を買ってみたのですが、読んでいて少々イラっとしましたщ(゚Д゚щ)


勘違いしないでほしいのですが、この本はいい本です
C#3.0を「それらしく」書くための手法が満載です
やはり、言語は想定された書き方をするのが一番ですし


問題は、筆者が少々偏っているというか・・・
筆者がC#至上主義なのは別にかまいませんが、
だからって何で他の言語をいちいち叩くのかわかりません(´・ω・`)


ざっと眺めた感じ、C#3.0はいい言語だと思います
Javaをベースにしながら、クロージャや関数型など、
最新のパラダイムを取り込んでいるあたりに好感が持てます


GroovyとかScalaとか、周辺で最新の技術を取り込んだものがあるものの、
Java本体はどうしても古いイメージがあります
(だから悪いってことではないので注意)


私が今仕事で使っているRubyは「Duck Typing」がベースですが、
メソッドのインターフェースが固定できないことは利点であり欠点です


ある程度大きな規模の開発になれば、
モジュール間のインターフェースはきっちり決めたいものですし、
型が決まればそれだけ実行効率も高くなります
(そんなことは百も承知で、何を優先させたかってだけの話ですがね)


C#3.0はHaskellで使われているような型推論を駆使することで、
クラスベースのOOPでありながら、
クラスのシグネチャをわりと除去できるようになってます


LL言語のようなシンプルさはないにしても、
Javaから受け継いだ厳格さをもったまま最新のパラダイムに対応しているあたりが、
C#の重要なアドバンテージじゃないかと


もうちょっとC#の勉強をしたところで、
C#の用語がRubyでいうと何に当たるのか、まとめてみようと思います
(そうしないと私の頭が混乱する(´・ω・`))


脱線から華麗に舞い戻りますと、
この本はどうもところどころで他の言語への「攻撃」が見られます


Java信者」がどうとか、「Rubyは本来の能力*1に比べて高く評価されすぎ」だとか、
C#は本来の能力に比べて評価されてない」とか、
「あまり語られてない言語がいい言語*2」だとか・・・*3


C#は評価されてないのではなく、
「目立つ技術」であるオープンソース系と相性が悪いから、
話に上らないだけだと思います


私がプライベートでC#を使い込んでいたとしても、
Linux環境で仕事する時の言語としてC#を選ぶことはまずありえません
目的に対してもっと良い言語・手段が他にあるからです


C#の良さはどうしてもWindows環境のライブラリとセットで語られるため、
例えLinuxでMonoの環境を用意したとしても、
Windowsアプリのコードがそのまま動く可能性は低いでしょう
(それが動くものだと思って、Monoを調べまくったことが・・・)


逆に、Windowsアプリを書くときに、
.NETと一番相性がいいのはC#なのは疑いようもない事実です
(ただ、VBとの絡みもあるので、常にベストとも限りませんが)


あとおかしいと思ったのは、付録に書かれている、
「特定の言語を称える声が多いのは、その言語が使いづらいからである」
という意見


「称える声」ってのがどんなものか知りませんが、
いろいろな技術セッションで話題になるということは、
活発な技術情報交換が行われているということで、使いづらいからではない気が


(私がこうやってC#のメリットを紹介することは、
 この筆者の理論からすると、C#が使いづらいからなんですかね?
 ちょっと悲しい・・・)


別に個人レベルで他の言語を批判しようと自由*4ですが、
わざわざ本の中で何度も書くことですかね・・・?*5
内容がいいだけに残念です(´・ω・`)


他の「尖った技術書」でも、他の言語への批判みたいなのは見ましたが、
もっと愛情が感じられたというか、理解があったというか・・・


まあ、@ITで内容を連載中なので、
買う前にそちらを見てもらった方がいいかもしれませんね

*1:だいたい、言語本来の能力って何(´・ω・)?

*2:当然、C#はいい言語と言いたいらしい

*3:長いので引用しませんが、P147のラストなど、もはや何が言いたいのかわからない・・・

*4:言語開発者の某氏はPHP嫌いで有名

*5:本当にどうでもいい話ですが、どうもこの攻撃性は牡羊座っぽいな・・・と思ったら、巻末に4月生まれとあるので、たぶん牡羊座なんだろうな・・・