もっくんのもくもくIT入門塾 第一回「プログラミング言語」(後編)

Avatar
dstn

★登場人物★

  • ミーコ : 株式会社 DS システム 開発第 2 チーム所属 
  • もっくん : 雲の妖精(雲の上に住んでいる)。ふわふわで優しいということになっているようだが実際のところどうか。 

あけましておめでとうございます

miko_normal あれ……? ここは……? 

miko_normal ……あ、江戸川公園か。 

桜、すっかり散っちゃったな……入社したときのお花見、結構たのしかっ……て寒! さむ!!

もっくん_small オッやっと起きたかモク。

miko_suprised ぎゃー! あんただれ!?
白!! さむ!! 小さ!! さむ!!!

もっくん_small うっさいモク。ボクはもっくん。
 ミーコは株式会社 DS システム 開発第 2 チームに所属する新人エンジニア。

miko_normal あ……。

もっくん_small ミーコは 4 月の入社から 2 ヶ月にわたるビジネスマナー研修(128 通りの名刺の渡し方ほか)をついに終え、明日から Java を学ぶことになっていたモク。

miko_normal ……。

もっくん_small そんなミーコが JAVA スクリプトがどうとか寝ぼけたことをぬかしていたモクから、ふわふわで優しいもっくんが Java のことをやさしく教えてあげていたモク。しかしミーコは執拗な研修の疲れからか

miko_smile 不幸にも黒塗りの高級車に追突してしまう。

もっくん_small しない。

もっくん_small 疲れからか、意識を失って、7 ヶ月も眠り込んでいたモク。

miko_suprised ……!

もっくん_small 思い出したかモク。

miko_suprised (意味がわからない……)

もっくん_small あけましておめでとうございます。

miko_smile おめでとうございます。 

JavaScript は、Java じゃない

もっくん_small 7 ヶ月前にもっくんが「 JavaScript は、Java の仲間じゃない」ということを教えてあげたらミーコは「 えっ!!!?」とか言って、長い眠りについたモク。

miko_angry 死んだみたいに言わないでよ。

もっくん_small JavaScript は、Java じゃないし、Java の仲間とも言えないモク。

miko_suprised えっ!!!?

もっくん_small ……。

 

miko_smile そんなことより寒いんだけど。

もっくんポカリ_small JavaScript と Java は、こんなに違うモク。

項目JavaScriptJava
変換方式 インタプリタ型 コンパイラ型
動的 静的
実行環境 主にブラウザ Windows、Linux ほか色々
パラダイム なんかいろいろ 主にオブジェクト指向
名前 含む 含まれる

miko_angry なんかいろいろって何よ。

もっくんポカリ_small JavaScript は オブジェクト指向スクリプト言語とも言われたりするモクが、 関数型言語の特徴も取り入れられていたり、かと思えば 手続き型スタイルで書かれるケースも多かったり、オブジェクト指向でも Java とは違う プロトタイプベースのオブジェクト指向だったり、となんかいろいろあって、一言で言うのが難しいクモ。難しいモク。

miko_smile 今クモって言わなかった?

もっくん_small 言うわけないモク。

miko_normal まあ、とにかく……JavaScript と Java が違うってことはわかった。じゃ、わたしが昔作った 球をあれするやつの知識は役に立たないってわけね……。

もっくん_small ……そんなこともないモクよ。

miko_normal そうなの?

なぜ色々なプログラミング言語があるのか

もっくん_small ミーコは 7 ヶ月前、こんなことを言っていたモク。

もっくん_small 「私ね、来週から JAVA をやることになったの。でも、JAVA って難しそうだからなんだか不安で。JAVA スクリプトやったことあるし、大丈夫かな、とも思うんだけど。それにね、会社には色んな案件を担当している人がいて、色んなプログラミング言語を使っているでしょう? あんなにいっぱい覚えられる気がしないし、 そもそもなんであんなにいっぱいあるのよ! って思って。だいたいさ、」。

miko_normal なんで「だいたいさ」で終わるの?

もっくんポカリ_small そんなことはどうでもいいモク。
 なんでプログラミング言語がいっぱいあるのか、知りたいモク?

miko_smile 知りたい。でもそれより寒い。寒くて仕方ない。わたしの新入社員らしすぎる夏物の白いブラウスと紺のスカートがさっきからひらひらひらひらはためいて仕方ないんだけど。風強いんだけど。

もっくん_small Java と JavaScript が違うのは、 それぞれに適した問題を、適した方法で解決するためモク。

miko_smile なに、適した問題ってつまりその……たとえば JavaScript はブラウザで実行できるから、 Web ページをプログラミングするのに使えるってことよね? 名刺の渡し方研修で習ったわよ。思い出した。完全に思い出した。あと Java はなんだっけ、オブジェクト指向? とクロスプラットフォーム? が特徴なのよね? 昔お兄ちゃんがゲームを作るとか言ってやってたシー言語っていうのは、まあゲームは永遠に完成しなかったけど、 実行速度が速いのがいいんでしょ?  低レベルの API を直接触れるから。てゲームを 永遠に完成させられないお兄ちゃんが偉そうに言ってた。その一方で Java はオブジェクト指向言語だからC言語よりも 抽象的なプログラミングがしやすくて、だから ビジネスロジックを書いたりしやすいし、JVM とかいう、 仮想マシンだっけ、要は OS の上にかぶせた皮みたいなのを相手にしてプログラミングするから、 クロスプラットフォームにしやすいし、Web サーバとか運用するにも色々都合がいいんでしょ? スレッドダンプでしょ?

もっくん_small (唐突に圧倒的にものわかりがよくなったモク……)

miko_smile それから、適した方法でっていうのはつまり、さっき言ったみたいな「問題に適した方法」っていうのももちろんあって、たとえば 動的型付けの言語は手軽に書きやすいからちょっとしたスクリプトとか小さなプログラムを書くのにはうってつけだし、静的型付けの言語は 実行時じゃなくてコンパイル時に色々チェックできるから大きなプログラムを書くのに都合がいいとかあるし、それに、同じような特徴を持った言語でもちょっとした特徴の違いからプロジェクトに 参加するプログラマにとってどちらがより使いやすいかに差が出てくるとか、そういうことよね!!?

もっくんポカリ_small ……なるほど。ミーコ、寒すぎて話を早く終わらせようとしているモク。

miko_suprised わかってるなら早く暖かいとこ行こうよ!! 寒い!!

もっくん_small じゃ、走るモク。

 

(3 時間後)
 

もっくん_small スタジオの皆さん、わたしたちは今、所沢にきています。

miko_normalなんでよ。

もっくんポカリ_small 走ってきたモク。

miko_normal 走ってきたけど。

もっくん_small 暖まったモク。

miko_normal 暖まったけど。   

適切な言語をえらぼう

もっくん_small だから、 JavaScript の知識が Java を使う役に立たないということも決してないモク。

miko_normal どういうこと?

もっくん_small プログラミング言語は、問題を解決するために作られるモク。それぞれ解決しようとしている問題は少しずつ違うモクが、同時に少しずつ重なってもいるモク。たとえば、JavaScript にある変数という概念は、Java ににも当然あるモク。

miko_smile へー。あるんだ、変数。

もっくん_small (アホに戻った……)プログラムの変換方式も、さっきは JavaScript がインタプリタで Java がコンパイラと言ったモクが、JavaScript の実行環境にも JIT コンパイルを行うものがあるし、Java も javac コマンドでコンパイルした時点ではまだ JVM のための バイトコードであって CPU が直接実行できる機械語というわけではないし、一概には言えないモク。

miko_normal JavaScript 使ってても、全然知らなかったけど、そんなこと。

もっくん_small 知らなくてもいいモク。

miko_normal え?

もっくん_small これから少しずつ知っていけばいいモク。 少しずつ知っていけば、知識と知識がつながって、プログラミングを知るのがどんどんたのしくなるモク。

miko_smile (こんなわけわかんない見た目なのに)いいこと言うんだね。

もっくん_small (なんか引っかかるモク……)要するに、それぞれの言語がはっきりくっきり「同じ」「違う」「○○型」「○○指向」みたいに区切れるわけじゃなくて、それぞれが少しずつ違った問題を解決するために少しずつ違った風に設計されて、開発されているということにすぎないモク。だから、 プログラミング言語が同じか違うかという議論自体には実はそんなに意味がないモク。

miko_normal そうなんだ。

もっくん_small プログラミング言語を選ぶのには他にも、将来性がどれくらいあるか、コミュニティがどれくらい活発か、個人なら個人、組織なら組織が目指す方向に適しているか、やらやら、考えることがたくさんあるモク。でも、そうやって選ぶことができるというのは嬉しいことモク。

miko_smile 嬉しいね。

もっくんポカリ_small そのへんのことがバランスよくまとめられている記事があるから、読むといいモク。
 

   ● はてなでの10年戦える新技術採用戦略の話 - Hatena Developer Blog


miko_smile 読むね。

もっくん_small 風が冷たいモク。

miko_smile 冷たいね。

もっくん_small 空がきれいモク。

miko_smileきれいだね。

もっくん_small イタリア語で「小さなリボン」という意味がある平たいパスタ。

miko_smile フェットチーネ。

もっくん_small ……。

miko_smile ……。

もっくん_small ……青そばテルマのヒット曲。

miko_smile 「山にいるね」。  

~それから~

もっくんポカリ_small そう言ってミーコはプログラミング修行のために山にこもったモク。白すぎるブラウスと紺色のスカートのままで。その後ミーコの姿を見た者は誰もいないモク。思い返してみるとなかなかいいやつだったモク……。


mmmmiko もっくん……?

もっくんポカリ_small その声は……ミーコ!?

miko_normal なに言ってんの?

もっくん_small ミーコが山に消えてから 10 年が過ぎたことを表現しようとしていたモク。

miko_normal 過ぎてないよ。あと消えてもないよ。ねえ、また寒くなってきたんだけど。なんで所沢くんだりまで来たワケ? 帰りたいんだけど。

もっくんポカリ_small ……ミ、ミーコは 10 年経ったことに気づいていないモク。ミーコがおばさんになっても……。

miko_smile ……。

もっくんポカリ_small ディスコに連れてくの……?

miko_normal 連れてかない。違う連れてかれない。何言ってんのよ。(ここに任意の今年消えそうなテレビタレントの名前を入れてください)出てるじゃない、ほらテレビ。昭和みたいな電器屋の街頭のテレビ。

もっくんポカリ_small (ここに任意の今年消えそうなテレビタレントの名前を入れてください)は奇跡的に業界で生き延びたモク。ミーコきみは……。

miko_normal え……?

もっくん_small Go を Java と比べたときの特徴は?

miko_normal え?(後ろを向く)えっと……ご、Go の方がネイティブコードにコンパイルされるから速い。バイナリが小さい。言語仕様がコンパクトだから習得が容易。型推論で簡潔に書ける。並列処理も書きやすい。Java にもあるけど Go にも GC があるしポインタ演算はできないから、安全性は高い。にも関わらず C 言語との接続性も高い。……等々の理由により、Go は、最高である。

もっくんポカリ_small ミーコ……山で成長したモク……。(Go にひいきしすぎな気もするけど……)

miko_smile (「あなたが今すぐ Java を捨てて Go を選ぶ 256 の理由」っていうホッテントリを読んだだけなんだけど……)

もっくん_small (無茶な煽りだ……)

miko_normal (こいつ直接脳内に……!?)

もっくん_small (インターネットにはこのような偏った記事も見受けられるので惑わされないように気をつけましょう……)

miko_normal (あっはい……)

ご愛読ありがとうございました

もっくん_small こうして無慈悲な年月が流れました。しかし、10 年と 7 ヶ月の眠りを経て成長したミーコはこれから IT 業界に旋風を巻き起こします。 

もっくん_small でも、それはまた別のお話。

もっくん_small ふわふわで優しくてカッコよくて高収入なもっくんは、きっとまたどこかで IT 業界の困った新人を助けるでしょう。あと、モテるでしょう。 

miko_normal いつまでやんの? 

もっくん_small もう終わるモク。

miko_smile 終わりかあ。 

もっくん_small 何モク。 

miko_smile ちょっとさみしい。 

もっくんポカリ_small また会えるモク。 

miko_smile そうだね。

コメント

ログインしてコメントを残してください。

Powered by Zendesk