どうもこんにちは、しひろです。
初心者エンジニアを名乗り続けたいですが、そろそろ社会が許してくれなくなりました。
エンジニアをしていると、よくある話題があります。
それは、何からエンジニアはプログラミングを学ぶべきか。ということです。
今回は初学者エンジニアのためにもそれらをまとめてみつつ、私の持論を展開しようと思います。
この記事ではいろんな言語を馬鹿にしていますが、結局どれを選んでも2言語目・3言語目は必ず書くことになるので、最初の1言語にこだわりすぎる必要はありません。
なお、バックエンド言語メインの記事になっています。もしかしたらフロントエンドもいつか書くかもしれません。
対象読者:初学者エンジニア、学生、その他すべてのエンジニア
Python
文系大学の学生からプログラミングを始める場合は王道ですね。
誰が書いてもほぼ同じコードになる。と言われるほど簡単に書くことができます。
本当に誰でも書けるので、ここから始める人が非常に多いかと思います。
ですがあまりエンジニアとして生きていく上ではあまり実務で使う場面は少なくとも私の周辺ではあまり見かけないですね。
(というかPyTorchとかが無ければこいつ絶対流行らなかったと思いますが)
Pythonの魅力は統計処理などがとても簡単にできることですが、
エンジニア全体で見ると、統計処理を専門に扱う人はそこまで多くありません。
また、Pythonは基本的に動作が遅いです。
研究者が使う分には動作が重くてもあまり問題はありませんが、大規模なトラフィックを捌くなどとなってくると非常に大きなボトルネックになってきます。
Java
こちらはSESなどで入社したらほぼ確実に一番最初に学ぶ言語ですね。
日本のトラディショナルな企業のシステムは大半がJavaで動いてるので、Javaが書けて困ることはまずありません。
ですが、初学者には他の言語に比べて比較的に学習意欲が湧きにくいと思っています。
会社からの給料という餌を与えられながらでないと勉強は続けにくいでしょう。
JavaScript系(Node.js, TypeScript含む)
こちらは独学のエンジニアが最も最初に学ぶ言語です。
私もスタートはここからです。
(なお、この記事ではNode.jsやTypeScriptもまとめてJavaScript系として扱います)
魅力としては、まず大量に知識がGoogleに転がっているのでわからないことがあっても調べればすぐにわかります。
また、HTMLで学習したJavaScriptと構文は基本的に同じなので学習効率が極めて高いです。(追加で学ぶことが最小限で済むので楽)
欠点としては、高トラフィックな環境になると、GoやJavaの方が有利だと感じる場面があります。
個人開発者をしていたときには気にしていなかったトラフィック量を気にするようになると重いな…と感じます。
また、Javaなどに比べてバックエンド用途ではJavaに比べると新しい技術なので、活躍できる現場は若干少なく感じます。
C系(めんどくさいのでC, C#, C++を一斉に)
情報系の大学や高専の人がよく使っている言語だと思います。
すべての言語の基礎になっていると言っても過言ではないので、大学で学ぶには最適な言語ではないでしょうか。
(最近のPythonの処理などはC++を内部で動作させることにより高速化されています。)
まぁでもこいつらロボット操作してるイメージしかないです。
確実に便利だし、確実に世の中に存在しているのですが、表舞台にでてくることは少ない印象です。
なお、ゲーム関連の現場に入るとめちゃくちゃ使います。
UnityではC#を使用していますし、Unreal EngineではC++が採用されています。
Go
Googleが作ったバックエンド特化のやつです。
私が一番使っている言語です。
かなり使用している現場は増えてきていると感じます。
フロントエンドはnode.js系で書いてバックエンドはGoみたいな運用を非常によく見かけます。
私がよく使っているので贔屓目が入っているかもしれませんが、欠点は…思いつかないですね。
強いて言えば、他言語ほど文法的な自由度はありません。
おまけ:Rust
めちゃくちゃ高速かつ型安全性がとても極められた言語です。
魅力的であるとは感じるのですが、あまりにも新しすぎて使っている現場を見たことはほぼありません。(海外では増えてはいるらしいですが)
また、非常に学習難易度が高いので、書けるという人もあまり見かけません。
最後に
こんな記事を書いていてなんですが、どの言語から勉強を始めても場数を踏むごとに勝手に書ける言語は増えていくので、何から始めてもいいと思います。
何よりも大切なのは、継続して学習することです。
難しいな~と思ってすぐに辞めてしまうのではなく、一度覚悟を決めて勉強してみましょう。
ただ一応は"何から始めるべきか。"という記事なのでおすすめの言語を紹介して終わりにしようと思います。
まだ学生だけど将来エンジニアになりたいという人は、まずはHTMLをやりましょう。何をするにも必要になります。(なお、HTML→JavaScript→Goのルートを私は推奨しています。)
SESで入社して心配という人は、会社から指定された言語の勉強にまずは集中しましょう。基本的にはその会社で一番使われている言語を勉強すると思います。
それでは、良きエンジニアライフを!