元ネタ

会社で、月に1度のソフトウェアエンジニアだけのフリーダムな勉強会が開催されます。講師は持ち回りなのですが、今週の木曜日に私が講師をします。今まで講師をした時は、美しいコードを書くための利点とテクニックや、テスト漏れを防止するための思想について講義しました。


今回もプレゼンテーション形式で講師やりたいのですが、期日まで時間がないのでWEBサイトをお借りして、それを一緒に読みながら、皆が知らなさそうな単語についてや補足説明を加えていくという、雑なスタンスを取ろうと思います。


今回使わせて頂くのは、勝手に崇拝しております、Masato Watanabe様の以下の記事です。
プログラミング言語人気TOP10の簡易解説


我が社で使っている言語のメインはC, C++のみです。限られた言語しか使えないから、狭い範囲の開発しかできないわけで、多くの言語を知れば、仕事の幅も増えると思うので、少し他の言語も勉強してみようと、思って頂けることを期待しながら、紹介していこうと思います。


この記事は大変面白くて、大好きな記事です。何故か定期的に読み返してしまいます。ほぼ、暗記しているかもしれません。しかし、ユーモアに富みすぎている記事なため、ご自分で言及されている通り、知らない人からすると、真に受けてしまうような部分も多々ございます。そこも軽くフォローしながらですね。

但し冗談なのか本気なのかわかりづらい表現を使うことが多く、誤解を招くことも多々有るので、信用のある企業様用の文章を書くには向いていません。


では、この簡易解説を底辺プログラマーなりに、社内のエンジニア向けに簡易解説していきます。つまり、CとC++しか知らないような方向けということです。
この記事をそのまま勉強会のカンペにしようとか思ってます。




0-2. 人気TOP10言語の条件

2011年1月度のTIOBEのランキング上位10言語を基本とし、そこから7位のVBを排除して11位のJavaScriptを格上げしています。

とあるように、TIOBEというプログラミング言語のトレンドをランキングしたWEBサイトが元になっています。現在2013年なので、ランクは多少変動しています。1年ほど前に不動の1位であったJavaを、Cが抜いたり等ですね。気になる方は以下をどうぞ。
TIOBE Software: The Coding Standards Company



1. Javaとは

親会社はドナドナされた

ここしばらくTIOBEのランキングで1位を取っている有名言語。でも親会社はドナドナされた。


(中略)


そんな言語も今ではプロプライエタリの申し子であるOracleさんの持ち物となり、今後どうなっていくかは今ひとつ不透明ドナ。

一文目から独特のユーモアセンスです。「ドナドナされる」ってどういう意味だよ、と思った方が大多数でしょう。それも当然です。この方のオリジナルですからね。以下の記事を参考に。
オリジナル(捏造)コーディング用語集

用例:Sunは財政的に厳しくなったためにOracleにドナドナされた

IT業界は浮き沈みが激しい世界である上にM&Aも盛んなので、けっこう頻繁に荷馬車がゴトゴト子牛を連れて行く。

実際に自社がドナドナされそうになっているという噂を耳にしたことがある人も、少なからずいるのではないだろうか。

将来性のある企業が高値で大企業に買い取ってもらうことはドナドナとは呼ばない。悲しそうな瞳で荷馬車に載せられるようなケースを指す。

上記の用例にもありますが、JavaはSun Microsystemsで開発され、1995~1996年に登場しました。しかし、Sun Microsystemsは、2010年1月27日にOracle Corporationに吸収合併されました。有名なもののけ姫のパロディコピペがあります。

「黙れ小僧!お前にサンが救えるか?」
「わからない。だが、オラクルと共に生きることはできる!」

あ、やばい、この記事長くなりそうです。


Java仮想マシン

中間コードにコンパイルされVM上で動作するので移植性が高く、Web系や組込み系、Androidなど幅広い分野で利用されている。でも親会社はドナドナされた。

VM上とは何か

VMは"virtual machine"の略です。日本語で"仮想マシン"です。Java仮想マシンのことを、JVMと呼びます。つまり、"Java virtual machine"です。

VM上で動作すると、何故移植性が高くなるのか

Javaでは、コンパイラによって生成されたバイトコードは、クラスファイルと呼ばれるファイルにクラス毎に書き出されます。そして、JVMはこのクラスファイルを、そのプラットフォーム固有のネイティブコードに変換してから実行します。この環境を移植することで、異なるプラットフォームで同じソースコードを使い回せるということです。以下がとても分かりやすいです。(基本的に他力本願)

Javaはどのように動くのか~スライドでわかるJVMの仕組み from Chihiro Ito
Javaはどのように動くのか~スライドでわかるJVMの仕組み


ガベージコレクション

実行速度はCに及ばないもののスクリプト言語よりは数十倍速い。ガベージコレクション付き言語の中では最速クラス。

ガベージコレクション、直訳すれば「ゴミ収集」です。CやC++では、mallocしたらfree, newしたらdeleteを確実に行わなければ、メモリリークが発生します。しかし、このガベージコレクションを備えている言語では、プログラムが動的に確保したメモリ領域は、参照されなくなった時点で自動的に解放してもらえるのです。


注意点として、使い終わったオブジェクトでも、そのポインターをどこかで保持し続けていると、ガベージコレクションのお仕事の対象外となってしまいます。そのため、私のようなC, C++をメインにやっている身としては、自分で明示的に解放した方が安心したりするのですが、これは私が底辺だからでしょう。


ダックタイピング

名前空間とか、型の宣言とか、かなり厳密にやらないといけない。ダックタイピングなんてお行儀の悪いこともできない。ちゃんとインターフェース書きなさい、とな。

また、知らない単語が出てきました。これからもゴロゴロ出てくるのですが。"ダックタイピング"
とは何か。C++のテンプレートを思い浮かべると分かりやすいのですが、動的型付けの作法のことで、いわゆる型推論です。語源は以下の通りです。

"If it walks like a duck and quacks like a duck, it must be a duck"
(もしもそれがアヒルのように歩き、アヒルのように鳴くのなら、それはアヒルである)

つまり、「そのオブジェクトがアヒルのように歩き、アヒルのように鳴くなら、厳密に言えば違えど、もうそれはアヒルだとみなす!」ということです。



なんとか0x

けど、言語としてはだいぶ古いし、なんとか0xほどではないにしても新しいバージョンの仕様がなかなか決まらないし(クロージャ入れると言い始めてはや何年?)、モダンなものを求めてしまう人には向かないかもしれない。

なんか、「なんとか0x」って人がdisられておりますが、何のことでしょうか。そう、名前がインクリメントされているあの言語ですね。そう、C++です。今はC++11と呼ばれておりますが、規格の策定中はC++0xなんて呼ばれていたのです。こいつの仕様がなかなか決まらなかったというわけです。



よし、記事を分けよう

思った以上に長くなってしまいました。TOP10のはずなのに、1言語目で3500字って。木曜日が勉強会なので、水曜日までには10位まで書き上げる予定です。需要があるのかは分かりませんが。しかし、こういう記事を書くと、私自身が勉強になるので凄く良いです。でも、解説に間違いがあって、嘘の情報を流してしまっていたらごめんなさい。


ではでは。