若手プログラマ、又はこれからプログラマになる人が今後必要になるプログラミング言語とその他必要なものを紹介していきます。
これだけは絶対必要なプログラミング言語
なし
強いて言うなら、なにか好きな言語
今時言語なんてなんでも良いんですよ。
好きな言語や作りたいものが作りやすい言語、なんか一つやってれば必要になったとき、勉強したくなったときに新しい言語の勉強をすれば良いです。
若手プログラマに求められるもの
今後の成長度
今後どれだけ成長できるかが一番重要
精神論的な話に聞こえるかもしれないですが、やる気が求められます。
今後どれだけ成長して、その会社に貢献してくれるのかを重視するからです。
もちろん「やる気があります!」とか言いながら、プログラミング言語をほとんど触ったこともない人はやる気があるある詐欺です。
行動で示すことが求められます。
おすすめ言語
ここからはちょっと話が変わります。
個人的におすすめしたい言語や技術に関して緩く紹介します。
- Ruby
- Java
- Go
- Scala
Ruby
動的型付け言語でスクリプト言語などと呼ばれたりします。
Rubyはweb業界(特にベンチャー)で多く使われています。
簡単に書ける事と日本人が生みの親のため日本語資料が多い事から、初心者の最初の言語として勧められたりします。
ですが本質としては熟練したプログラマが楽しく、自由にかけることを追い求め、書き手に分別が求められます。
Rubyではメタプログラミングと言うものが書きやすくなっており、メタ的に書くことを推奨している言語でもあると思います。
世間一般でRubyというと、同じくらいRuby on Rails(通称Rails)
という用語を聞くと思いますが、これはフレームワークといういわば3Dプリンターの様なものです。
使い方と設計図さえあればあとは良い感じにやってくれるものなので、Rubyとは混同しない様にしましょう。
(Ruby on Rails
も突き詰めればどんどん技術が必要になりますが、ここでは省略します)
Java
静的型付け言語でしっかりと腰を据えて書く様な言語です。
Javaは世界的に使われていた期間が長く、今でもそれなりに現役な言語です。
そのため受注や長期間の安定した動作が求められる現場では、今も大きな人気を持っています。
しかし最近のweb業界では嫌われる傾向にあります。
なぜならRubyやPythonと言った言語と違って、冗長なくらい書く量が多いからというのが1番目につく理由です。
この言語ではオブジェクト指向という部分が勉強しやすいです。
冗長なくらいしっかりと書くため、Rubyなどでは省略されている部分も自分で書くことが求められるからです。
ちなみにですが何回言われてるかわからないくらいですが、JavaとJavaScriptは全く別の言語です!!!!!
書き方、実行方法、挙動、などなど全くもって違います。
インドとインドネシアくらい違います。
違いについて詳しく書かれた記事があるので、明確に知りたい方はこちらをご覧ください
JavaScriptの書き方についてだいたい知りたいなら、ECMAScriptと検索すると名前が似ていないため調べやすいです。
Go
静的型付け言語でシンプルに記述できる言語です。
GoはGoogleにより制作され、すでに仕様がシンプルに完成されています。
今後、仕様が大きく変わることはなく安心して使うことができるのではないでしょうか。
Goの良いところは、仕様がシンプル、速度が早い、Javaなどと比べると簡潔に書ける、並列処理が素晴らしい、と言った点があげられます。
しかしオブジェクト指向ではあるのですが、仕様をシンプルにするために全てのオブジェクト指向を網羅していません。
オブジェクト指向を学ぶのには向いていないと思います。
最近では現場でも多く使われ始めているため、学んでおいても損はないと思います。
Scala
静的型付け言語でオブジェクト指向と関数型をちょうど良い塩梅で融合した言語でもあります。
Scalaでは型という部分が非常に重要視され、初心者が学ぶには非常に難易度の高い言語となっています。
ですが関数型という考え方は一度触っておくと見えるものが違ってくるのではないでしょうか。
Scalaを使った開発では長期間の工期が必要になります。
しかしその分、型という制約でガチガチに縛っているため非常に安全で安定性のあるソフトウェアが書けます。
(DDDなどの開発手法をとる場合に非常に向いている言語だとも思っています)
(おまけ)よく使われてる気がする言語一覧
- C/C++ (組み込み系、競技プログラミング)
- Java (保守、安定性を求めるソフトウェア)
- C# (VisualC#でWindowsアプリ、Xamarinでスマホアプリ等)
- Kotlin (Webアプリ、スマホアプリ)
- Ruby (Webアプリ)
- Python (機械学習、Webアプリ)
- PHP (保守、Webアプリ)
- JavaScript[& TypeScript] (Webアプリ、ReactNativeでスマホアプリ)
- Go (CLIツール、Webアプリ)
- Scala (Webアプリ)
- Swift (iPhoneアプリ)
- SQL (DBの操作)
- Shell系 (CUIで操作するためのBash等、Makefile)
まとめ
とりあえずなんでも良いから作りたいものを作り、学びたいものを学びましょう!
初心者のうちは車輪の再発明大歓迎!
実際に行動することが重要です!