「プログラミング言語を選ぶ」のは出来るやつの贅沢だと心得るべし。
こんにちは。筆者です。
新卒の時期ですね。未経験で入社したみたいな駆け出しのエンジニアが爆増する時期でもあると思います。
これから始めよう!って人からは、よく「言語は何を勉強したらいいとかありますか?」みたいな質問が飛び出してきますが、
タイトルの通り「プログラミング言語を選ぶ」という行為は想像を絶するレベルでめちゃめちゃ高度です。
ただ選ぶだけでしょ。とか、言語選ばないと始まらないでしょ。とか思った初心者の皆さんに向けて、なにがそんなに高度なのか綴ってみたいと思います。
そもそも言語の差なんてほぼ無い
初心者の皆さんは、「言語によっても違いますが」みたいな前置きを聞きかじって、うわーそんなに違うのか~みたいになり、どれから始めたらいいんだろう…?ってなってると思うんですが、
初心者が勉強するレベルでの差は「文法がちょっと違う」だけで、内容は一緒です。
例示するなら、英語やドイツ語だけ分かる外国人に道案内するようなもんで、伝える内容たる「道順」は何語でしゃべっても一緒ですが、単語とか文法とかの「文面」は少し違いますよね。
これと全く一緒で、しかもプログラミングでは文法も単語も調べながら書いていいわけなので、勉強なんかしなくてもエンジニアはただ書くだけならどの言語でもいけます。
言語より大事なのは「道順」の方です。外国人に伝えるなら相手も人間なので「出来る事」が同じですから、「右に曲がって」とか「電車に乗って」とか言えますが、プログラミングの場合はそれを「機械に出来る事」に置き換えて伝える必要があります。
初心者が思っている「プログラミングを学ぶ」の本質はここだと思います。
言語なんてのはどうでもいいので、プログラミングを通じて「機械にはどんな指示ができるのか」を学んでみるのだと心得ておくとといいでしょう。
言語はやりたい事によってある程度絞られる
機械が出来ることが分かって何か作ってみようとなると、いざ言語選びになりそうですが、初心者のあなたが言語から選ぶのはまだ早いです。
なぜなら、作りたいもの次第である程度使える言語は自動で決まるからです。
基礎構文で決まる「機械にできる指示」が分かっていると、これだけで何ができるんだ?ってなると思いますが、その通りで言語だけ知ってても初心者は何も作れません。
先ほどの道案内の例で言えば、機械に直接「右に曲がって」とは言えなかったですが、どこかの誰かが基礎構文を積み重ねて「右に曲がれ」って言えるようにしてくれたものが存在します。これをライブラリやフレームワークと呼びます。
これを使って「東京駅から秋葉原駅まで歩かせる」みたいなものを作るのが普通です。
しかしながら、どの言語にもそのライブラリが存在するわけではありませんし、存在しても使えるレベルの品質かどうかはわかりません。
多くの場合、やりたいことに応じて主要なフレームワークはある程度決まってきますし、普通フレームワークに応じて使える言語も決まっているので、それを使うしかない初心者のあなたは、フレームワークによって限られた数個の言語から選ぶくらいのことしか出来ない無いわけです。
自由に言語を選べるのは
真に言語を自由に選びたいなら、「モノを作ることをあきらめる」か「フレームワークを作れるようになる」かのいづれかです。
モノを作らず、競技プログラミングに興じるだけとかなら、その競プロサービスが対応している言語から選べばよくて、主要言語は大体全部使えるので縛りはほとんど受けないです。
フレームワークや実行環境自体を作れるレベルのエンジニアになれば、それこそ縛りは一切ありません。
ただこれは、初心者がいきなりチャレンジできるようなものではないと言って差し支えない相当ハイレベルな域だと思います。
つまり、この言語好きだらこれでつーくろーみたいな「プログラミング言語を選ぶ」行為は出来るやつの贅沢と言えそうではないでしょうか。
初心者にお勧めの言語
さて、プログラミングを学ぶとは、プログラミングを通じて「機械にはどんな指示ができるのか」を学んでみるのだと書きましたが。
なら結局言語選んで書いてみるしかないですね。
とりあえずモノを作ってやってみたい場合は、フレームワークを調べて決めてみてください。すると使えそうな言語が自動的に絞られていくと思うので、それを使って学べばいいです。
ただモノを作るのは、フレームワークの仕様も理解しないといけないので少しハードルが高いかもしれません。
機械に何ができるのかから勉強するなら、個人的にはC言語かJavaがおすすめです。かなり冗長な書き方をしますが、それが理解には一番いいです。
CやJavaが難しすぎてわからないなら、Python、Ruby、Javascript、TypeScript、C#なんかがいいと思います。記法もだいぶモダンで簡単ですし、実用することも多いです。
但し、エンジニアとして仕事するには全部理解してないと話にならない点には留意しましょう。この世には話にならないエンジニアもたくさんいます。
エンジニアの世界はすごく楽しいですし、何よりかっこいいですが、「これだけ知ってればOK!」みたいなことは永遠に無いので、一生初心者並みに勉強する羽目になります。
ちょっとやってみて一生これはできんなとおもったら、やめとくのも一つの手です。
楽しめたら、どんどん調べてどんどん聞いて、エンジニアの沼にハマってみてください。
では。
この記事が気に入ったらサポートをしてみませんか?