プロのプログラマになるための言語とは・・・Part1




18d35aea84ca64e547a95371eec7f8771bb76d402b55a5fa89pimgpsh_fullsize_distr
新年明けましておめでとうございます!
今年もプロクラスをどうぞよろしくお願いいたします!

皆さんこんにちは、プロクラスの野間です。

最近偶然に
「プロになるとしたら何言語をやっといたら良いか?」
と聞かれることが何度かありまして、自分の中でふと相反する答えを思ったので、ちょっとブログって見ます。

■無い

多くの場合、プロのプログラマにとっcloud-1835333_1920て言語は選択肢であって「この言語が使えればOK」なものではありません。
言語は「何を作るのか」「何で動くのか」によって必要な言語が変わります。
例えば、ブラウザ上で動くものを作るのであればJavaScriptか、Flashでしょうか。
幾つか選択肢はありますが、ここでいくら頑張って「PHP言語!」と叫んでも却下されてしまいます。
逆にWEBサーバーで稼働させるならPHPやRuby等でしょうか。ここで頑張って「JavaScript!」と叫んでも「要らない」と言われるでしょう。
さらにパソコンで動かすなら何を作るかでも変わってきたりします。

このため、どうしても「この言語を使えればOK」なものが無いのです。

■何でもよい

では「無い」と答えたかと聞かれれば「否」です。
答えとしては「何言語でも良い」と答えています。
これはもちろん慰めとして言っているのではなく、ちゃんと理由があります。

先に書いた通り、プロとして生き残っていくのならば必要に応じて言語を使い分ける必要が出てきます。
ですが、世に存在する言語すべてを網羅するなんてことはできませんし、新しい言語だって出てきます。
折角覚えたのに消えていく言語だって結構あります。
ならどうするかと言うと「必要になったら覚える」事が必要になってきます。
もちろん簡単な事ではありません、とてもとても、非常に非常に労力を必要とする事です・・・
が、この労力を多少なりとも軽減する方法があります。

■一芸を極める

programmer-1653351_1280それは、何言語でも良いので、最低1言語を深く使えるようになる事です。
この理由も幾つかありますが、例えば皆さん、英語・・・は多少知っておられるので例から外して、ロシア語にしましょう。
ロシア語を学ぶとき、日本語を知っていれば、説明を日本語でしてもらいながら少しずつロシア語を覚えていくことが出来ます。
これは最低1言語を知っている時の利点と同じと考えてください。
つまり、別の言語を学ぶときに、照らし合わせて考えることが可能になります。
自分の知っている言語では「こう」書くけど、同じことをするのに習っている言語では「こう」書く。

日本語で「私はペンを持っています」
英語では「I have a pen」です。

実際には、もっと細かく分割して習いますが、学校ではこんな感じで日本語と英語を照らし合わせながら習いましたよね?

これが無い状態(1言語も知らない状態)を想像してみると、ロシア語をスペインで学ぶのをイメージしてください。
周りに誰も日本語が使える人がいない状態です。
実際に「習った言語が使えるようになるか?」は別にして、「どちらがより大変か」はイメージできると思います。

■重要なのは言語ではない

そして何より1言語を伸ばした方が良いのは、プログラムを組む上で最も重要なのは言語ではなくアルゴリズムである点です。
これは言葉では説明しにくいものです。無理に表現しようとすると、そうですね・・・
「車の運転方法を座学で学んでも、運転できない」的なものでしょうか。
『そりゃぁ頭で覚えるのと体を動かすのは別』と思うかもしれませんが、表現するとしたらこんな感じなのです。
皆さんも学校で英語を学びましたが、使えないですよね?
これ、例え単語を知っていたとしても使えないと思うんです。
何とも表現しにくいのですが、プログラムの言語を知っていてもプログラムが組めない事は非常によくあります。
この解決方法はひたすらプログラムを組むしかないのですが、そのために「最低一芸」となる訳です。
特にはじめのうちは「広く浅く」よりも「狭く深く」の方が良いです。
自己評価で「どんなものでも組めるぜ!」と思うくらいやったら次は広げる番でしょう。

次回は相反するもう一方の考えについてを書きたいと思います。