今あなたが学ぶべきプログラミング言語を見つける方法
- 「そろそろ新しいプログラミング言語を学ぼうかな!」
- 「これから流行りそうな言語って何かな?」
などと考えてる方は多いかと思います。
今あなたが学ぶべきプログラミング言語を見つける方法、それは、
「目的を設定する」ことです!
目的が決まれば、学ぶべきプログラミング言語が決まります。
どういうことか詳しく紹介します。
Contents
目的によって、手段 = 言語が決まる
例えば、個人でちょっとしたWebサービスを作ってレンタルサーバ上に公開することが目的の場合、学ぶべき言語はPHPになります。こう言うと「PHP以外にもレンサバで動く言語あるぞ?」って思われたかもしれません。
確かに多くのレンタルサーバではPHPの他に、Perl, Python, Rubyが動きます。しかし、多くのレンタルサーバではPerl, Python, RubyはCGIモードでしか動かせないという制約を課している場合が多いため、フレームワークが使えません。
フレームワークはたくさんのモジュールで成り立っているため、CGIのように毎回プロセスが起動される仕組みだと動作が重くなってしまいます。
なので、フレームワークを使わないよほど小さなアプリでない限り、レンタルサーバで使う言語はPHP一択なんです。
「Perl、PHPはオワコン」とか言ってる人は目的の視点が抜けている
先程説明したとおり、目的が「ちょっとしたWebサービスを個人で作ってレンタルサーバ上に公開したい」という場合、PHPが最も有力な選択肢です。
あるいは目的が「はてなに入社してWebサービスを開発したい」という場合、Perlを学ぶことが最も有力な選択肢です。はてなのWebサービスの多くはPerlで作られているからです。
つまりは、絶対的にオワコンな言語などなく、目的によって、その言語の重要性は変わるのです。
これは何もプログラミング言語の選択に限った物ではありません。すべての物事は目的によって、重要性が変わります。絶対的にどんな場合にも重要なものなどありません。
例えば、一般的に男性の身長は高い方が良いとされていますが、その男性の目的が「競馬の騎手になること」である場合、身長が低い方が有利になります。ですから、絶対的に男性の身長は高い方が良いってことにはなりません。
なので、目的を言及せずに「Perl、PHPはオワコン」と言うのは無意味なんです。
目的別おすすめプログラミング言語
いくつかの典型的な目的について考えてみましょう。
まずは、会社に就職することが目的の場合を考えてみましょう。
- 業務システム開発の会社ならJava、C#、VB.NET
- Webサービス開発の会社ならJava、PHP、Perl、Ruby、Python、JavaScript
- スマホアプリ開発の会社なら、Objective-C、Java、Swift。
- ゲーム開発の会社なら、C#(Unity)、C++(Unreal Engine, Cocos2d-x)。
入りたい会社が採用している言語を学べばいいわけです。
就職が目的でなく、趣味の開発なら自分の好みで選べばいいでしょう。誰かがネット上で○○はオワコンとか言ってても全く気にすることはありません。
なので、学びたい言語が見つからない人は目的(作りたいものや入りたい企業)を設定すればいいんです。
勉強のための勉強だと学ぶのが難しい
就職だったり、作りたいものがある場合、目的がはっきりしているので学習も捗りますが、「勉強することが目的」になってしまうと、うまく学べない場合があります。
例えば、「プログラミングの考え方を広げるために関数型言語を学んでみよう!」という目的の場合、達成したいことがハッキリしないので、なかなかものにできなかったりします。私自身、何度もこの考えで関数型言語にチャレンジしているのですが、全く身についてません。
- 「関数型言語でこれを作りたい!」
- 「関数型言語を使ってるA社に入社してこういうシステムを開発したい!」
などの具体的な目標がないため、ただ単に本を読んだりしてるだけになってしまい身につかなかったんです。
学生時代の勉強が捗らなかったのも同じです。「B大学に入って○○について研究する!」等の目的があれば、もっと学校の勉強も捗ったはずです。これは今さらですけどね。
プログラミングを学んで目標を達成しよう!
プログラミングを学ぶことによって達成できる目標はたくさんあります。
プログラミングを学べば、就職することもできるし、趣味で自分が欲しいソフトウェアを開発することもできます。画期的なソフトウェアを開発することができれば、起業できるかもしれません!
開発手法としてテスト駆動開発というものがありますが、目標駆動人生ができたらいいんじゃないかと思います。
- 作りたいソフトウェア/サービスは?
- 入社したい会社/参加したいプロジェクトは?
それが決まれば、今あなたが学ぶべきプログラミング言語が決まります!