「言語は何を覚えればいいですか」(回答)何でも良いです。
私が現役のフリーランスプログラマだった時に、取引先の新人プログラマや、学生さんによく聞かれました。
どのプログラミング言語を習得するかというのは、非常に重要な選択ですよね。悩みますよね。
C言語は、プログラムが動く仕組みを理解できるので、設計力やデバッグの勘所が鍛えられます。C++やC#は、この利点は比較的小さいものの、プログラミングの原理原則を理解しやすい言語です。
BASICは今時、覚えようという人はいないと思いますが、EXCELのマクロ作成の仕事は、意外と多くあるので、フリーランスならば、ちょっとした収入のプラスアルファにできるので、かじっておいても良いでしょう。
JAVAは最も案件で使われる言語でしたが、大規模案件や、特に金融系の超大規模案件で大量需要があった後は、JDKの有償化への誤解などもあって、急速に需要が減少しています。しかし、最もよく使われる言語です。
Ruby、Pyhsonは、案件がやはり少ないですね。ただ、Ruby、特にrailsは、言語の系統が少し違っていて、これから先のプログラミングのあり方に触れておくにはうってつけの言語かと思います。
PHPはどうでしょうね。案件は多いですが、最近はあまりやらなくなりました。
JavaScript、TypeScriptは、WEB系案件では必須です。サーバーサイドであっても、フロントエンドであっても、これら言語ができることで、フルスタックエンジニアを目指すことができます。
Node.jsの登場で、WEB系の言語がサーバーサイド、フロントのみならず、ローカル環境でも主役になり得る状況になってきました。
WEB系の言語と開発環境等に関連する開発案件は世界的にも、案件に採用される割合が急増してきています。クラウドの普及や、electronなどのローカル実行環境も整ってきたからという事かと思います。
ただし、WEB系開発では、言語のみならず、HTMLやCSS、WEB基本的な仕組みなどを理解していないと仕事にならず、各種フレームワークの知識も必要なのでないので、覚えることは山ほどあり、大変です。
しかしその分、需要に対して供給がまだまだ少ないのが現状ですので、じっくり取り組んで、ここから先のトレンドを捉えた分野で強みを作るのであれば、WEB系の開発言語(というより、開発環境全体)を覚えていくのが良いと思います。
で、結局何を覚えたら良いのか
そもそもの質問を「どの言語を覚えれば、食いっぱぐれがないですか?」というリアリティのあるものに変えると、答えは、現在のところ、やはりJAVAですね。減少しているとはいえ、案件が一番多いですし、習得しているプログラマの数が多いので、企業側からしても調達しやすいという大きなメリットがあります。ただ、この先はどうかといえば、私はやはりWEB系開発の需要が上回ってくるようになると考えています。
しかし、こうした推測は、A.I.の進化もすさまじく、非言語系の開発スタイルも進んできている現状においては、確実とはとても言えません。そのくらい、ここから20〜30年の変遷は、まったく予測不可能です。
脳内で作られるイメージ
私は9つの言語を取得しています。しかし、案件に取りかかるときに、それが数年ぶりに使う言語だったりすると、1週間ぐらいは、はっきり言ってちんぷんかんぷんです。コードを書いていると、徐々に、脳みその引き出しがギシギシいいながらも開いてきます。よくもまあ、10年ぶりにやるPascalが思い出せるものだなと、自分でも驚きますが、皆さん、そういうもののようです。
つまり、使わない知識(言語)は引き出しにしまわれているのです。
引き出しを開けると、それを実務に使えるようになるのは、いったい、どんな仕組みなのでしょう。
プログラミング言語は、プログラマの脳内に出来上がっているイメージを、具現化させるための手法に過ぎません。
イメージは、論理的に組み立てられた、総合的な「構造」です。
この構造を、脳内で作ることができれば、はっきり言って、プログラム言語など、何を覚えても良いのです。
だから脳は、「手法」であるプログラミング言語の記憶を、引き出しにしまうのでしょう。
引き出しにしまわれず、常にプログラマの脳内で活動している能力は、この「構造を作る能力」です。
(構造の話はまたいつか、詳しく書きます)
優秀なプログラマは、この構造を作る脳の働きが、バツグンに優れています。
プログラマに向かない人は、この構造を作れません。他の職業を選んだ方がよいと言わざるを得ません。
では、この、「脳内で構造を作ることができる能力」は、どうやったら身につくのでしょうか。
コードをガンガン読んで、ガンガン書くことです。それだけです。
よく、「コードを書いている夢を見るようになったら、適性がある証拠」と言われます。どうやら、この段階で脳ははじめて、プログラムを作るということを、「現実」として捉えるようです。
適正のない人は、「わからない」、「まだそのレベルにない」などと言って、コードを読みませんし、書きません。
構造を作ることができる「プロフラマ脳」にするためには、バンバン、コードを読んで、書いて、脳をトレーニングし、脳が「あ、この活動は、生きていくために必要な現実なんだ」と気がつくまでにするのです。
だから、生まれつきプログラミングするとか、論理的な思考とかが好きという人は、優位ですね。苦痛にならないですから。
表題にも書いたように、だから、まだ「プログラマ脳」になっていない人は、どのプログラム言語を選ぶかで悩む必要などありません。好きなもの、目に付いたもので構いません。
さぁ!トレーニングしましょう!