「今後必要になるプログラム言語」にひたすらマサカリを飛ばす

11/8追記：元記事がアカウントごと消えたのでリンクをweb archiveのものに変更しました。

[今後必要になるプログラム言語](https://web.archive.org/web/20181106122755/https://qiita.com/administrator1974/items/387aab2a42bf57e3b215)という記事のコメント欄が大変賑わっております。そのコメント欄で、記事作成者が

> 全行突っ込み入れたいのであればトラックバック的に同テーマを自分で書いてPOSTすればよろしい。

とコメントをしていたので、全行突っ込み入れた記事を投稿しようと思います。
ちなみに私は全ての言語を触ったことがあるわけではないですし、バックエンドエンジニア寄りの人なので知識が不十分かもしれません。その部分については更にマサカリを飛ばしていただければと思います。

# 元記事に対してのツッコミ

## 前書き・前提の欠如

~~全行どころかどの行の突っ込みにもなっていませんが~~記事の内容に言及する前に、この記事の前提について考えましょう。

Javaメインの開発の話しかしていませんので、おそらく前提はそこなのでしょう。なので、**「Javaでのシステム開発においてJava以外に必要となるプログラム言語について述べます」と書いておいた方が良いです。そう書かないと全てのプログラマー・全ての開発案件の話としてとられてしまいます。**

基本的に、**どんな記事にも前書きがあり、その中で前提やタイトルの補足、根拠等が入ります。**例えば元記事に内容が若干近い[全ての開発者が学ぶべき5つの言語](https://qiita.com/poly_soft/items/e89bc757596cfdfba784)では「こういう記事があったから翻訳したよ」、その翻訳の序文には「こういう理由からこの5つの言語を選出したよ」といったことが書かれています。
**大げさだったりユーモアを効かせたタイトルになればなるほど、前書きは重要になると思っています。**
他にはこの記事を読むべき人が誰であるかが書かれていることが多いです。初学者向けとか、フロントエンドエンジニア向けとか。ですが、こちらは省略されることが多いです。「全てのエンジニアに捧ぐ……」なんていちいち書いていられませんからね。ちなみに読み手について省略されるとほぼ全てそう解釈されます。


**それらの前書きが不要！　といった場合でも、1,2行でも何かしら書いておいたほうが、読み手にとってはクッションになって読みやすくなります。**

## タイトル・最初の見出し
まず些細なことですが「プログラム言語」という呼び方に違和感を覚えます。呼び方として当然あるんですが、「プログラム言語」でググったら「プログラミング言語」が並ぶくらいなので……といっても呼び方は人の好みなので、問題は無いです。
**真に問題なのは、見出しでさらっと「マスター言語」と呼び方を変えていることです。なぜ変えた？**
マスター言語なんて呼び方聞いたこと無いんですけど、呼び方としてあるのでしょうね。「"マスター言語"」とダブルクォーテーション付きでググっても、元記事しか出なかったけど。

追記：肝心なこと忘れてました。**"今後"って言っている割に内容も挙げている言語も古いので、タイトルに"今後"は要らないです。**

## 今後必要になるマスター言語
言語を列挙するのはいいですが根拠を書いてほしいです。読者はそれが気になって脳内メモリを食いながら読むことになります。小説ならテクニックとしていいかもしれないけど、技術的な記事ではやめてください。

## Java
**なんでJavaScriptが入ってるの？**
これが強すぎて正直記事の内容が頭に入ってこないです。**Appletは既に廃止されてる非推奨の技術**とか**OSとJavaと関係ない**とか**Javaはバックエンドのシェア率高いけど統一されているわけではない**とか**動的HTML実現の一つにServletはあるけどそれだけじゃない**とか言いたいことはいくつもありますが、それら全部が些細な問題に感じられるほどインパクトが強いです。
何がダメか分からない方は、20年前くらいから語りつくされているので「Java JavaScript 違い」でググってください。

ちなみにコメント欄で記者作成者は

>JAVAとJSの混同はしていません。JSを無視してJAVAが使えるということにはならないからです。

と書いていますが、**JSを無視してもJavaは使えます。その逆も然りです。**WebシステムでJavaとJSを組み合わせて使うことは多いので触る必要があるとかなら分かりますけどWebシステムの話出てこないし。

## Ruby
JavaのサブルーチンとかC++の代替とか書いてますが**Matz氏に土下座したほうがいいと思う。**
Rubyはそんな目的の為だけに生まれてきた言語じゃないです。**Rubyはもっと幅広く色んなところで使われています。**なのでそのような前提で書くのはどうかと思います。せめて「Javaメインの開発の世界では」と前書きを入れてください。

あとRuby on Railsについて一度も触れていないのにRubyOnRailsってタグを使うのはやめたほうがいいと思います。というかRuby軽視するならRubyタグすら不必要だと思います。

もし書いてある内容が正しいとしたら、なんでJavaのサブルーチンとしてしか使われない言語が「今後必要になるプログラム言語」になるんでしょうか。Java的には全部Javaでいいじゃん、って感じですが。

## C++

「単独で C++ を学ぶ理由は全くない。」とか言い切っていますが**C++エンジニア全員に土下座したほうが良いと思う。**
以下、Rubyで述べた内容と全部重なるので省略します。

## 上位下位関連性

**基本的にプログラミング言語に上位・下位といった関係はありません。**RubyよりJavaが偉い・高度だ、とか、そういうのはありません。（そういう意味で使っているのでないのなら、訂正お願いします）
ちなみに高水準・低水準という概念ならあります。こちらは程度や格式が高いとかそういうのではなく、機械に近いかどうかです。

"代替"の話をしていますが、どうもシステムや言語的に代替が利くかどうかではなくシェア率や言語の統一的に代替が効くかどうかの話をしているような気がするのでツッコミをいれると、シェア率が高いから偉いとか、統一すべきとか、そういう話はありません。（日本の一部企業の上層部だとあるのか？）
**プログラミング言語は元々用途に適した言語を選択するものです。**

## PL/SQL
**なんでJava,Ruby,C++と並べた？**

## （元記事の）まとめ
**Java （JavaBeans 含む） + PL/SQL + JavaScriptの開発が全てではありません。**
世の中Webサービス・ゲーム・スマートフォンアプリ・組み込みシステムなど様々なサービスがありますが、この形態はWebサービスの一部で使われるものでしかありません。もう少し他の現場を経験すべきではと思います。
また**「その他の言語について取得する理由も読む理由もない」なんて暴論はここで言うことではないです。**あなたの書いた記事の投稿サイトのQiitaでは、タグランキングでPythonが1,2位になっているんですよ。Python、知ってますか？
今後の話をするなら、新しい言語を本格的に学ばずとも少し触ったほうがいいと思います。シェア率だけ気にして一度も触れずにバッサリ切り捨てるのは軽率です。

# （この記事の）まとめ
あえてJavaメインの開発が前提の話であると好意的に捉えてツッコミ内容を列挙しました。もっとも、前提がそこでなくとも**もっと他の開発現場を知ってくれ**に集約されますが。
確かにJavaは業界シェア率も汎用性もそれなりに高い言語であり、"今後も"必要になります。ですが最近のJavaの動向を見るに、後々衰退していくのが予想されますので、Javaだけにこだわるのは今後のことを考えるとお勧めできないです。

「今後必要になるプログラム言語」のトピック自体について私が語ることはありません。一般的には[全ての開発者が学ぶべき5つの言語](https://qiita.com/poly_soft/items/e89bc757596cfdfba784)、[Ruby->Go->Scalaという習得順序がエンジニアの爆速の成長に最適である理由](https://qiita.com/poly_soft/items/1feaa1ec5ecab08dc6db)に上げられているのが全てだと思っていますし、結局は当人が何を目指したいか、何を作りたいかが大事になると思うからです。

11/7午後 追記：当記事の日本語が変な部分や追記した方が良さそうな部分を微修正しました。（追記した部分は主に（この記事の）まとめ、Javaの扱いの部分です）
よく読み返したら技術的な話はJavaでしか出していませんが、Java以外の内容がないようなので、あえてそのままにしておきます。
あとコメ欄への突っ込みはやりません。