★登場人物★
- ミーコ : 株式会社 DS システム 開発第 2 チーム所属
- もっくん : 雲の妖精(雲の上に住んでいる)。ふわふわで優しいということになっているようだが実際のところどうか。
あけましておめでとうございます
あれ……? ここは……?
……あ、江戸川公園か。
桜、すっかり散っちゃったな……入社したときのお花見、結構たのしかっ……て寒! さむ!!
オッやっと起きたかモク。
ぎゃー! あんただれ!?
白!! さむ!! 小さ!! さむ!!!
うっさいモク。ボクはもっくん。
ミーコは株式会社 DS システム 開発第 2 チームに所属する新人エンジニア。
あ……。
ミーコは 4 月の入社から 2 ヶ月にわたるビジネスマナー研修(128 通りの名刺の渡し方ほか)をついに終え、明日から Java を学ぶことになっていたモク。
……。
そんなミーコが JAVA スクリプトがどうとか寝ぼけたことをぬかしていたモクから、ふわふわで優しいもっくんが Java のことをやさしく教えてあげていたモク。しかしミーコは執拗な研修の疲れからか
不幸にも黒塗りの高級車に追突してしまう。
しない。
疲れからか、意識を失って、7 ヶ月も眠り込んでいたモク。
……!
思い出したかモク。
(意味がわからない……)
あけましておめでとうございます。
おめでとうございます。
JavaScript は、Java じゃない
7 ヶ月前にもっくんが「 JavaScript は、Java の仲間じゃない」ということを教えてあげたらミーコは「 えっ!!!?」とか言って、長い眠りについたモク。
死んだみたいに言わないでよ。
JavaScript は、Java じゃないし、Java の仲間とも言えないモク。
えっ!!!?
……。
そんなことより寒いんだけど。
JavaScript と Java は、こんなに違うモク。
項目 | JavaScript | Java |
---|---|---|
変換方式 | インタプリタ型 | コンパイラ型 |
型 | 動的 | 静的 |
実行環境 | 主にブラウザ | Windows、Linux ほか色々 |
パラダイム | なんかいろいろ | 主にオブジェクト指向 |
名前 | 含む | 含まれる |
なんかいろいろって何よ。
JavaScript は オブジェクト指向スクリプト言語とも言われたりするモクが、 関数型言語の特徴も取り入れられていたり、かと思えば 手続き型スタイルで書かれるケースも多かったり、オブジェクト指向でも Java とは違う プロトタイプベースのオブジェクト指向だったり、となんかいろいろあって、一言で言うのが難しいクモ。難しいモク。
今クモって言わなかった?
言うわけないモク。
まあ、とにかく……JavaScript と Java が違うってことはわかった。じゃ、わたしが昔作った 球をあれするやつの知識は役に立たないってわけね……。
……そんなこともないモクよ。
そうなの?
なぜ色々なプログラミング言語があるのか
ミーコは 7 ヶ月前、こんなことを言っていたモク。
「私ね、来週から JAVA をやることになったの。でも、JAVA って難しそうだからなんだか不安で。JAVA スクリプトやったことあるし、大丈夫かな、とも思うんだけど。それにね、会社には色んな案件を担当している人がいて、色んなプログラミング言語を使っているでしょう? あんなにいっぱい覚えられる気がしないし、 そもそもなんであんなにいっぱいあるのよ! って思って。だいたいさ、」。
なんで「だいたいさ」で終わるの?
そんなことはどうでもいいモク。
なんでプログラミング言語がいっぱいあるのか、知りたいモク?
知りたい。でもそれより寒い。寒くて仕方ない。わたしの新入社員らしすぎる夏物の白いブラウスと紺のスカートがさっきからひらひらひらひらはためいて仕方ないんだけど。風強いんだけど。
Java と JavaScript が違うのは、 それぞれに適した問題を、適した方法で解決するためモク。
なに、適した問題ってつまりその……たとえば JavaScript はブラウザで実行できるから、 Web ページをプログラミングするのに使えるってことよね? 名刺の渡し方研修で習ったわよ。思い出した。完全に思い出した。あと Java はなんだっけ、オブジェクト指向? とクロスプラットフォーム? が特徴なのよね? 昔お兄ちゃんがゲームを作るとか言ってやってたシー言語っていうのは、まあゲームは永遠に完成しなかったけど、 実行速度が速いのがいいんでしょ? 低レベルの API を直接触れるから。てゲームを 永遠に完成させられないお兄ちゃんが偉そうに言ってた。その一方で Java はオブジェクト指向言語だからC言語よりも 抽象的なプログラミングがしやすくて、だから ビジネスロジックを書いたりしやすいし、JVM とかいう、 仮想マシンだっけ、要は OS の上にかぶせた皮みたいなのを相手にしてプログラミングするから、 クロスプラットフォームにしやすいし、Web サーバとか運用するにも色々都合がいいんでしょ? スレッドダンプでしょ?
(唐突に圧倒的にものわかりがよくなったモク……)
それから、適した方法でっていうのはつまり、さっき言ったみたいな「問題に適した方法」っていうのももちろんあって、たとえば 動的型付けの言語は手軽に書きやすいからちょっとしたスクリプトとか小さなプログラムを書くのにはうってつけだし、静的型付けの言語は 実行時じゃなくてコンパイル時に色々チェックできるから大きなプログラムを書くのに都合がいいとかあるし、それに、同じような特徴を持った言語でもちょっとした特徴の違いからプロジェクトに 参加するプログラマにとってどちらがより使いやすいかに差が出てくるとか、そういうことよね!!?
……なるほど。ミーコ、寒すぎて話を早く終わらせようとしているモク。
わかってるなら早く暖かいとこ行こうよ!! 寒い!!
じゃ、走るモク。
(3 時間後)
スタジオの皆さん、わたしたちは今、所沢にきています。
なんでよ。
走ってきたモク。
走ってきたけど。
暖まったモク。
暖まったけど。
適切な言語をえらぼう
だから、 JavaScript の知識が Java を使う役に立たないということも決してないモク。
どういうこと?
プログラミング言語は、問題を解決するために作られるモク。それぞれ解決しようとしている問題は少しずつ違うモクが、同時に少しずつ重なってもいるモク。たとえば、JavaScript にある変数という概念は、Java ににも当然あるモク。
へー。あるんだ、変数。
(アホに戻った……)プログラムの変換方式も、さっきは JavaScript がインタプリタで Java がコンパイラと言ったモクが、JavaScript の実行環境にも JIT コンパイルを行うものがあるし、Java も javac コマンドでコンパイルした時点ではまだ JVM のための バイトコードであって CPU が直接実行できる機械語というわけではないし、一概には言えないモク。
JavaScript 使ってても、全然知らなかったけど、そんなこと。
知らなくてもいいモク。
え?
これから少しずつ知っていけばいいモク。 少しずつ知っていけば、知識と知識がつながって、プログラミングを知るのがどんどんたのしくなるモク。
(こんなわけわかんない見た目なのに)いいこと言うんだね。
(なんか引っかかるモク……)要するに、それぞれの言語がはっきりくっきり「同じ」「違う」「○○型」「○○指向」みたいに区切れるわけじゃなくて、それぞれが少しずつ違った問題を解決するために少しずつ違った風に設計されて、開発されているということにすぎないモク。だから、 プログラミング言語が同じか違うかという議論自体には実はそんなに意味がないモク。
そうなんだ。
プログラミング言語を選ぶのには他にも、将来性がどれくらいあるか、コミュニティがどれくらい活発か、個人なら個人、組織なら組織が目指す方向に適しているか、やらやら、考えることがたくさんあるモク。でも、そうやって選ぶことができるというのは嬉しいことモク。
嬉しいね。
そのへんのことがバランスよくまとめられている記事があるから、読むといいモク。
● はてなでの10年戦える新技術採用戦略の話 - Hatena Developer Blog
読むね。
風が冷たいモク。
冷たいね。
空がきれいモク。
きれいだね。
イタリア語で「小さなリボン」という意味がある平たいパスタ。
フェットチーネ。
……。
……。
……青そばテルマのヒット曲。
「山にいるね」。
~それから~
そう言ってミーコはプログラミング修行のために山にこもったモク。白すぎるブラウスと紺色のスカートのままで。その後ミーコの姿を見た者は誰もいないモク。思い返してみるとなかなかいいやつだったモク……。
もっくん……?
その声は……ミーコ!?
なに言ってんの?
ミーコが山に消えてから 10 年が過ぎたことを表現しようとしていたモク。
過ぎてないよ。あと消えてもないよ。ねえ、また寒くなってきたんだけど。なんで所沢くんだりまで来たワケ? 帰りたいんだけど。
……ミ、ミーコは 10 年経ったことに気づいていないモク。ミーコがおばさんになっても……。
……。
ディスコに連れてくの……?
連れてかない。違う連れてかれない。何言ってんのよ。(ここに任意の今年消えそうなテレビタレントの名前を入れてください)出てるじゃない、ほらテレビ。昭和みたいな電器屋の街頭のテレビ。
(ここに任意の今年消えそうなテレビタレントの名前を入れてください)は奇跡的に業界で生き延びたモク。ミーコきみは……。
え……?
Go を Java と比べたときの特徴は?
え?(後ろを向く)えっと……ご、Go の方がネイティブコードにコンパイルされるから速い。バイナリが小さい。言語仕様がコンパクトだから習得が容易。型推論で簡潔に書ける。並列処理も書きやすい。Java にもあるけど Go にも GC があるしポインタ演算はできないから、安全性は高い。にも関わらず C 言語との接続性も高い。……等々の理由により、Go は、最高である。
ミーコ……山で成長したモク……。(Go にひいきしすぎな気もするけど……)
(「あなたが今すぐ Java を捨てて Go を選ぶ 256 の理由」っていうホッテントリを読んだだけなんだけど……)
(無茶な煽りだ……)
(こいつ直接脳内に……!?)
(インターネットにはこのような偏った記事も見受けられるので惑わされないように気をつけましょう……)
(あっはい……)
ご愛読ありがとうございました
こうして無慈悲な年月が流れました。しかし、10 年と 7 ヶ月の眠りを経て成長したミーコはこれから IT 業界に旋風を巻き起こします。
でも、それはまた別のお話。
ふわふわで優しくてカッコよくて高収入なもっくんは、きっとまたどこかで IT 業界の困った新人を助けるでしょう。あと、モテるでしょう。
いつまでやんの?
もう終わるモク。
終わりかあ。
何モク。
ちょっとさみしい。
また会えるモク。
そうだね。