Java はやめておけ
うわぁ。 まじすか,これ。 確かに TIOBE でも Java は常に1位か2位だけどね。
現在 Java でバリバリ仕事しているおぢさんから(老婆心ながら)言っておくと「Java はやめておけ」である。
- Java EEの開発が停滞?–オラクルの不透明な態度にコミュニティーが不信感 - ZDNet Japan
- オラクル、次期Java EEはマイクロサービスやコンテナをサポートするものになるとコメント。9月のJavaOneで計画を発表予定。ただし本気度には疑問符も - Publickey
どういうわけか日本人は Java が大好きで,確かにあと数年は飯の種になるだろうが,将来を見据えれば Java は間違いなく COBOL と同じ道をたどる。 今 COBOL-er は季節労働者のごとく仕事を求めて全国行脚しているそうだ。 以前仕事で一緒になった COBOL プログラマ(私と同年代)は,その前は富山で仕事をしていたと言っていた。
今後10年20年をにらんで「飯の種」としてプログラミング言語をきちんと学びたいなら「関数型プログラミング言語」を選択すべき1。 個人的には(純正の関数型言語ではないが) Python か ES6 以降の JavaScript をお薦めする。 あっ Swift も多分オススメ。
日本では何故か Python の人気が薄い気がするが,新しいアイデアは大抵の場合,真っ先に Python で実装される。 Python 自体は飯の種にならなくても技術トレンドを追いかけるなら外せない。
JavaScript はもともと手続き型言語だが, ES6 で関数型の言語仕様がいろいろと追加されている。 なにより Web システムにおいてサーバ側からクライアント側まで同じ言語で記述できるのは有利な点である。
Swift はオープンソースになってサーバ用途でも使えるようになった。 個人的には色々試してみたい。
- IBM、ヴイエムウェアとハイブリッドクラウドで提携–Swiftのクラウド対応も発表 - ZDNet Japan
- Swiftで自然数を作ってみた(ペアノの公理) - Qiita
- Swiftで代数学入門 〜 1. 数とは何か? - Qiita
ハードウェア寄りの仕事に興味があるなら C/C++ のような手続き型の言語もいまだに有効である。 たとえば Google の TensorFlow のバックエンドは C++ で実装されているそうな。
あと,ものすごく個人的な意見として,手続き型言語なら Go 言語をお薦めする(笑)
基礎をきっちり固めてから「第2言語」や「第3言語」として Java や .NET を学ぶのは悪くない。 将来的にはともかく,現時点で Java は「飯の種」になっているので。 でも,上で挙げたような言語を学んだあとで Java をやったら,間違いなくモニタに向かって中指をおっ立てるハメになるであろう(笑)
最後に。
反論は自由ですが,私は関知しません。 言語論争は宗教論争と同じで出口がないからね。
参考図書
- プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
- Alan A.A. Donovan (著), Brian W. Kernighan (著), 柴田 芳樹 (翻訳)
- 丸善出版 2016-06-20
- 単行本(ソフトカバー)
- 4621300253 (ASIN), 9784621300251 (EAN), 4621300253 (ISBN), 9784621300251 (ISBN)
- 評価
著者のひとりは(あの「バイブル」とも呼ばれる)通称 “K&R” の K のほうである。この本は Go 言語の教科書と言ってもいいだろう。
-
今回紹介した以外にも Erlang や Haskell や Scala といった言語も気になっているのだが,私が評価できてないので割愛する(Haskell についてはこの辺の記事が参考になるかも)。 Scala は飯の種になりそうな気がして本も買ってるのだが… Python や Swift のような「いまどき」の言語は multiparadigm programming language と呼ぶそうで,古い資産との整合性を取りやすいのが利点である(Scala なんかモロにそうだよね)。見方を変えるなら,今はもっと大きなパラダイム・シフトの真っ最中であると言うこともできる。故に本当に10年後を見据えた場合に,どれが主流になるかなんて誰も予測できないのではないだろうか。たとえばコーディングを AI がやるようになれば,今ある言語は絶滅し, AI が記述しやすい(かつ人間も読みやすい)言語体系が主流になる可能性だってあるのだ。故に「どの言語か?」という議論はあまり意味がなくて,泡沫のように現れては消える技術トレンドをキチンと押さえておくことが重要である。人間死ぬまで勉強ですよ。 ↩︎