プログラミングを勉強してみようかなと思ったものの、種類の多さに戸惑ってしまったという方はいませんか。そんなときは、どんなシステムを作りたいか明確にしてから、言語を選ぶと近道です。
プログラミング言語には、それぞれ得意分野があります。つまり、作りたいシステムによって、使用する言語が違ってくるのです。
今回は、人気のプログラミング言語について、特徴を紹介します。言語を選ぶ際の参考にしてみてください。
プログラミングの言語はひとつではない!
現在普及しているプログラミング言語はひとつではありません。様々な種類の言語があります。
言語によって作れるシステム、習得する際の難易度などが違ってきます。プログラミングを勉強する前に、自分が作りたいシステムに必要な言語か、難易度はどのくらいかをあらかじめ、確認しておきましょう。
プログラミング言語の説明 Point
今回は、各プログラミング言語について、次の4つの観点から説明します。
プログラミングの特徴
各プログラミング言語の特徴を簡単にまとめます。プログラミング言語の特徴の中で、言語の分類について次のことを頭に入れておくと、難易度を考える上で役立ちます。
機械語への翻訳が必要か
プログラミング言語は、プログラミングされた処理を実行するために、ソースコードを機械語に翻訳する必要があるかないかで、「コンパイラ言語」と「スクリプト言語」の大きく2つに分類できます。
◆ コンパイラ言語
コンパイラ言語は、ソースコードを事前に機械語に変換(コンパイル)しておくタイプの言語です。先に機械語に変換されている分、処理が早いという特徴があります。
◆ スクリプト言語
スクリプト言語は、ソースコードを機械語に変換(コンパイル)する必要がなく、ソースコードを書けばすぐに実行できるというタイプの言語です。比較的容易に記述できますが、処理が遅いという特徴があります。
どのようにソースコードを表現するか
プログラミング言語は、処理をどのように表現するかで分類することができます。いくつかのタイプがあるのですが、ここでは今回紹介する言語に当てはまる2つについて説明します。
◆ 手続き型言語
手続き型言語は、実行したい処理(手続き)を順番に記述していくスタイルの言語です。当然、コーディングされた処理を、手続きに従って上から順にひとつひとつ実行していきます。
◆ オブジェクト指向型言語
オブジェクト指向型言語は、手続きとデータの組み合わせでできたオブジェクトを使ってコーディングするスタイルの言語です。オブジェクトにメッセージを送ることによって、対応する手続きを実行します。
手続き型言語は、大きなプログラムを作る場合、膨大な手続きを記述することになるので、処理内容がわかりにくく、間違いが起こりやすくなるという側面があります。その点、オブジェクト指向型言語は、記述する文量が少なくて済むので、処理内容がわかりやすいという特長があります。以前は、手続き型言語が主流でしたが、現在はオブジェクト指向型言語が多く使用されるようになっています。
以上のことから、処理内容がわかりやすいオブジェクト指向型で、比較的記述しやすいスクリプト言語が、初心者にも学びやすい言語だと言えます。これから紹介する各プログラミング言語について、この観点にも注目してみてくださいね。
プログラムで何ができるのか
作りたいシステムから学習する言語を選ぶ場合に、最も重要になる観点です。各プログラミング言語を使って何を作ることができるのかをまとめます。
プログラミング言語を使ってプログラムすることで、例えば、Webサイトを作ることができます。Webサイトを作る時は、枠の大きさや使用する画像、使用するフォント、フォントサイズなどを指定する必要があります。これを指定する命令を書いたものがプログラムです。
Webサイトの他にも、スマホ上で動作するアプリ、お店で販売されているパッケージソフト、家電や自動車などに組み込んで制御するシステムなど様々なものを作ることができます。
ただし、プログラミング言語にはそれぞれ得意分野があります。Webサイトを作るための言語で、家電や自動車などを制御するシステムを作ることはできません。学習する際には、用途に合ったプログラミング言語を選ぶことが大切です。
プログラムのメリット
各プログラミング言語を学習する際のメリットをまとめます。例えば、教材が多い、難易度が低い、汎用度が高いなどといったことがメリットとして挙げられます。
教材が多ければ学習もしやすいですし、難易度が低ければ早く習得できます。汎用度が高いと、使用されているシステムも多いので、就職の際に選択肢が増えます。
プログラムのデメリット
各プログラミング言語を学習する際のデメリットをまとめます。
メリットとは反対に、教材が少ない、難易度が高い、汎用度が低いなどといったことはデメリットになります。教材が少ないとわからないことが解決しにくいですし、難易度が高いと習得に時間がかかり、途中で投げ出してしまうかもしれません。汎用度が低いと、就職先の幅も狭くなります。
ただし、逆に言うと、できる人が少ない言語ができれば、特定の分野で重宝されることもあるでしょう。物は考えようで、デメリットもメリットになるかもしれませんね。
Python(パイソン)
Pythonは、読み間違いや書き間違いを減らすことに重点を置いて開発されたプログラミング言語です。そのため、コードが読みやすく、少ないコード量でプログラムが書けるという特長があります。また、オブジェクト指向型、手続き型など複数に対応するスクリプト言語に属します。
Pythonで何ができるのか?
Pythonは、汎用性の高い言語なので、様々なシステムに利用されています。主に、人工知能(AI)やWeb開発の分野に強く、有名な「Youtube(ユーチューブ)」や「Instagram(インスタグラム)」は、Pythonで作られています。
Pythonを学ぶ事のメリット
Pythonは読みやすさを重視して開発された言語なので、初心者にも理解しやすいことがメリットです。今後の需要が期待される人工知能(AI)に利用されていることから、習得しておけば、そういった分野で活躍できる可能性があります。
また、プログラミング言語別に見た平均年収のデータ(出典:みんなのスタンバイ)では、Pythonが約651万円で1位となっており、プログラマーとして就職した場合、他の言語を扱う人よりも年収が高くなるかもしれません。
Pythonを学ぶ事のデメリット
Pythonは、世界的に見ると、高いシェアを持つプログラミング言語ではあるものの、日本での普及は他の言語に比べるとまだまだです。そのため、日本語でのサポートが少ない点がデメリットです。
Ruby(ルビー)
Rubyは、まつもとゆきひろ氏によって開発された日本生まれのプログラミング言語です。プログラミングを楽しむことに焦点をあてて開発され、かつ実用性も十分に兼ね備えているという特長があります。また、オブジェクト指向型のスクリプト言語に属します。
Rubyで何ができるのか?
Rubyは、WebサイトやWebベースの業務開発によく使われています。例えば、日本でよく知られてる料理レシピサイト「cookpad(クックパッド)」や日本最大級のクラウドソーシングサービス「CrowdWorks(クラウドワークス)」のWebサイトには、Rubyが用いられています。
Rubyを学ぶ事のメリット
Rubyは、簡潔な文法で記述することができますし、楽しむことを目的に開発された言語なので、わかりやすいことがメリットです。現在主流のオブジェクト指向型の言語なので、最初に習得しておけば、他のオブジェクト指向型の言語についても理解しやすくなるはずです。
また、先にも紹介したプログラミング言語別の平均年収では、Rubyが3位の606万円と、こちらも高収入を得られる可能性があります。
Rubyを学ぶ事のデメリット
Rubyは、文法の自由度が高い分、大勢で開発する場合には、統一性がなくなり、他の人が書いたコードが読みにくくなってしまうことがあります。その点がデメリットですが、学習を始めたばかりの人にとっては、それほどデメリットにはなりません。学習する際には、同じ処理を記述するために、何通りかの記述方法があることを確認し、様々な書き方に慣れておくとよいかもしれませんね。
Java(ジャバ)
Javaは、世界的にも多く使用されているプログラミング言語です。WindowsやMacといったOSに依存せずに動作することから、汎用性が高いという特長があります。また、オブジェクト指向型のコンパイラ言語に属します。
Javaで何ができるのか?
Javaは、汎用性の高い言語なので、様々なものを開発することができます。例えば、業務システムアプリ、Android上で動作するアプリ、Webアプリケーション、ゲーム開発などに使われています。人気のゲーム「Minecraft」もJavaで作られています。
Javaを学ぶ事のメリット
Javaは、人気の高いプログラミング言語なので、教材が豊富で学習しやすいことがメリットです。汎用性が高く、様々なシステムに利用されていることから、需要が高い言語だと言えます。スマートフォンの普及により、Androidアプリの開発需要は、今後も拡大していくと予想されます。
Javaを学ぶ事のデメリット
オブジェクト指向に慣れるまでが難しく、習得するまでに時間がかかることがデメリットです。また、メジャーな言語なので、習得している人も多く、競争率が高いこともデメリットのひとつです。
C言語・C++(シープラプラ)
C言語は、現在でも安定した人気のある歴史の長いプログラミング言語です。数あるプログラミング言語の中でも処理速度が速いという特徴があります。C言語を使えば大体のことができるというくらい汎用性が高いです。また、手続き型のコンパイラ言語に属します。
C++は、C言語を拡張しオブジェクト指向として使えるようにした言語です。C言語が苦手とするGUI(Graohic User Interface)も、C++なら作ることができます。
C言語・C++で何ができるのか?
C言語は、主に、テレビリモコンや洗濯機など、家電や自動車に組み込んで制御するシステムに利用されています。
C++は、C言語と互換性があるので、C言語と一緒にソフトウェア開発で使われることが多くあります。
C言語・C++を学ぶ事のメリット
C言語は、機械語に近い言語なので、コーディングする際は、コンピュータのハードウェアを意識して行う必要があります。そのため、C言語を習得すれば、同時にコンピュータの仕組みや動作に詳しくなるというメリットがあります。家電や自動車など、制御系の組み込みソフトウェアに使用されているので、そういったソフトを開発したい人にとっては、仕事に活かせる知識になります。
C言語・C++を学ぶ事のデメリット
機械語に近い言語なので、メリットとは逆に、初心者にとって難易度が高いことがデメリットです。また、C++を習得するには、C言語の知識が必須になるので、まずはC言語を学ぶ必要があります。
PHP(ピーエイチピー)
PHPは、Webアプリケーションに特化したサーバーサイドのプログラミング言語です。サーバーで実行した結果をユーザーが閲覧するブラウザに返します。また、オブジェクト指向型のスクリプト言語に属します。
PHPで何ができるのか?
PHPは、ブログのようなCMSサイトやWebアプリを開発することができます。例えば、有名な「Facebook(フェイスブック)」もPHPで作られています。
PHPを学ぶ事のメリット
PHPは、文法が比較的簡単なので、初心者にとっては勉強しやすいというメリットがあります。
PHPを学ぶ事のデメリット
PHPもRubyと同じように文法の自由度が高い言語です。そのため、大勢で開発する場合には、統一性がなくなってしまうことがデメリットです。しかし、学習のしやすさで言えば難易度が低い言語なので、デメリットについては、仕事として使うようになった時のために念頭に置いておけばよいでしょう。
Swift(スイフト)
Swiftは、2014年に発表された新しい言語で、iPhoneやMacなどのApple製品で利用できるプログラミング言語です。また、オブジェクト指向型を含む複数の型に対応したコンパイラ言語に属します。しかし、スクリプトを実行することもできるという側面を持ちます。
Swiftで何ができるのか?
Swiftは、Apple製品のiphoneやMacなどで動作するアプリ開発に使われます。また、Webアプリケーションの開発にも使うことができます。
Swiftを学ぶ事のメリット
Swiftは、コードがわかりやすく書きやすいので、初心者でも学びやすいことがメリットです。また、Webアプリケーションも作れることから、今後に期待が持てる言語です。
Swiftを学ぶ事のデメリット
Swiftは、主にiOSのアプリ開発に使用されるため、汎用性が低く、求人数が少ないことがデメリットです。Webアプリケーションの開発もできるようになったとは言え、主流になるのはこれからの言語と言えます。
プログラム言語はおすすめではなくやりたい事で選ぶ
プログラミング言語は、おすすめの言語ではなくやりたいことで選ぶことが大切です。作りたいものに使われている言語を選べば、学習の成果を即作りたいものにつなげることができるからです。
もし、漠然と学んでみたいだけでこれといって作りたいものがないという人は、難易度も参考にしてみてください。「プログラミングの特徴」で紹介した言語の分類を難易度のひとつの指標にすると、比較的難易度が低く、初心者にも学びやすい言語は、Ruby・PHPだと言えます。
数あるプログラミング言語の中から最初のひとつを選ぶのは難しいですが、この記事が少しでも参考になればと思っています。