プログラミング言語の種類と特徴まとめ 【違いを徹底解説】
そもそもプログラミングで何ができるの?
プログラミング言語っていろいろあるけど、それぞれどんな特徴があるの?
どのプログラミング言語を学べばいい?
この記事を書いているボクは、社会人になってからプログラミングスキルを習得し、創薬に関する人工知能 (AI) を独自に開発・特許取得し、製薬会社から定期的に特許収入が入るようになりました。
プログラミングを学ぼうと思って最初にぶちあたる悩みは、いろいろな言語が多すぎて自分に合ったものがどれか分からないということですよね。
ネットで調べてみても、単に自社サービスのPR目的に書かれた記事も多く、なかなか客観的に書かれた記事がありません。
今回の記事は、右も左も分からなない初心者の頃のボクでも概要を理解できるよう、難しい言葉を使わずに人気プログラミング言語の特徴と選び方をまとめました。個人ブログですので、企業のサイトとは違って客観的に書いています。
これを読むことで自分にぴったりの言語がすぐに見つかり、時間を無駄にせず学習に取りかかれます。
それではどうぞご覧ください。
プログラミング言語でできること
プログラミングでできること
プログラミングで何ができるのでしょうか?
現代の生活において生活に欠かせない (スマホを含む) コンピューターは、全て誰かがプログラミングしたからこそそのように動いています。
- ゲーム
- Webサイト・ブログ
- スマホアプリ
- AI/ロボット
- 産業システム (家電、自販機、エレベーター、
- 科学計算
などが代表的なプログラミングの用途です。
詳しくはプログラミングで何ができる? メリット5つとともに解説【超入門】という記事にまとめましたが、「電化製品全部」プログラミングで動いていると思ってOKです。
プログラミング言語は数百種類ある
プログラミングを学ぶことで独自のツールをつくることができるようになりますが、コンピューターに司令を出す「言語」のことをプログラミング言語といいます。
プログラミング言語はマイナーなものも合わせると200種類以上ありますが、実際によく使われているのはその10%程度です。
なぜこんなにたくさんあるのかというと、主な原因は2つあり
- コンピューターの処理速度が上がってきた
- プログラムの規模が大きくなってきた
つまり、その時代のコンピューター性能や、プログラマーの要望を取り入れて常に進化しているからです。
今後も新しいプログラミング言語が開発されていくでしょう。
これらのプログラミング言語はそれぞれ「得意な分野」が違います。
そこで、それぞれの特徴や違いをまとめていきます。
プログラミング言語の特徴と違い
この記事で全部のプログラミング言語は紹介しきれないので、年現在で需要の高い人気言語にしぼって、長所短所や習得難易度も含めてまとめます。
クリックするとタップするとその場所に飛びますので、気になるところからどうぞ。
それでは1つずつ解説していきますね。
HTML/CSS(エイチティーエムエル/シーエスエス)
HTMLはサイトの内容を決める
HTMLは、HyperText Markup Languageの略で、Webサイトの構造や内容を決めるために必要です。
当ブログも含め、世の中のWebページのほとんどが、HTMLをベースに作られています。
例えば、ここの文字はタイトルだとか、見出しだとか、あるいはただの文章だといったことをコンピュータに理解させることができます。
CSSはサイトのデザインを決める
CSSとは、Cascading Style Sheetsの略で、サイトのデザイン (見た目)を決めています。
例えば当サイトであれば見出しは「青い縦線」が左端に入っているのですが、「青」とは具体的にどの色のことか、「縦線」の太さはどうするといったことをCSSで書いています。
Webサイトを作りたいという場合は、HTMLとCSSは絶対に避けては通れないものです。
- Webページを作りたい方はHTML/CSSの基礎の理解は必須
- HTML/CSSは、Web以外の用途には全く使えない
- HTML/CSSにかかる学習時間は短いので初めての方のとっかかりにも向いている
厳密に言えばHTML/CSSはプログラミング言語ではありませんが、ないのですが、CSSと合わせてWebページを作る上でほぼ必須のものとなっており、Webページを作りたい方はHTMLから勉強してみるとよいでしょう。
JavaScript(ジャバスクリプト)
JavaScript(ジャバスクリプト)を理解していると、ちょっとした動きのあるWebページができます。
例えばこの記事の最初の挨拶、
の部分は、JavaScriptで動いていて、アクセスする時間によって「おはようございます・こんにちは・こんばんは」など挨拶が変わります。
JavaScriptアメリカで開発され1995年から使われているプログラミング言語で、単に挨拶を変更するだけでなく、Webページにアニメーションを加えたり、マウスの動作やクリックに合わせて動くしかけができます。
世の中にあるWebサイトの、目に見える部分 (フロントエンドと呼ばれています) の動きはほとんどJavaScriptでできています。
JavaScriptがないと「いつ見ても全く同じページ」しかできません。
HTML/CSSほどではないですが、Web関係に興味があるならJavaScriptも「ほぼ必須」といえるでしょう。
さらにJavaScriptのライブラリー (より便利に使うための道具)もたくさん開発されていて、例えば2010年以降に作られたnode.jsというライブラリーを使えばWebサービスの「目に見えない部分」や、スマホアプリも作れるようになりました。
- JavaScriptはWebページの動きをつくることができる
- HTML/CSSを理解した上でJavaScriptを使うことが多い
- 非常に人気がある言語の1つでたくさんのライブラリーが開発されている
- やや発展的だが、Webサイト以外の用途 (ゲーム、スマホアプリ、Webサーバーなど) にも使える
- 習得は易しめだが、HTML/CSSよりは難しい
PHP(ピーエイチピー)
PHP(ピーエイチピー)は、Web開発で長く使われてきた歴史のあるプログラミング言語です。
ほとんどのサイトやブログで、サーバーサイドという「見えない裏側の部分」の作成に使われています。
例えば宿泊施設の予約フォームでは、「裏側」で現在どの日程や部屋が空いているのかをPHPを使って瞬時に問い合わせ、現在予約可能なものをページに表示しています。
あるいはサイトの検索機能もPHPでできていて、入力されたキーワードを使って「裏側」でサイト全体を検索し、キーワードに関係するものを選んで表示しているのです。
このようにPHPは現代でもWeb運営には欠かせない技術です。
また、サイトの多くはWordPressという仕組みを使ってできていますが、このWordPressもPHP言語で書かれています。
- PHPはJavaScriptとともにWebページの動きをつくることができる言語
- JavaScriptはユーザーから「見える」部分、PHPは「見えない」部分という大雑把な棲み分けあり
- Webサイト作成に使われるWordPressがPHPでできている
- 習得は易しめ (JavaScriptと同程度)
- Web開発以外のことはできない
Perl(パール)
Perl(パール)は1990年以前から続く長い歴史をもつ言語で、当時は文書処理・データベース・ネットワーク管理など、様々な目的に汎用的に利用されていました。
ライブラリーがたくさんあるのでできることも豊富であり、どんなOSでも動作可能というメリットもあって普及しました。
ただあくまで個人的な見解ですが、「どんな書き方でも動いてしまう」つまり裏を返せば「他人が書いたぐちゃぐちゃのコードを読むのが大変」というデメリットもあり、また後述のRubyやPythonはPerlを改良したものなので、今からPerlを本気で勉強する必要性はあまりないと感じています。
- 汎用的な言語で習得は易しめ
- やや古い言語であり、あえて勉強する必要は今はもうないかも
- 少しだけPerlを分かっていれば、過去の有益なコードがたくさん残っているので、参考になることは多い
Ruby(ルビー)
Ruby(ルビー)は日本でうまれたプログラミング言語で、開発者はまつもとゆきひろ氏です。
開発者の方針で、誰でも楽しくコードが書けるよう開発されており、また日本語の情報が豊富にあるため、初学者でも学習しやすい特徴があります。
Perlでできることは何でもできるのですが、Rubyは特にWeb開発に向いています。
なぜならRuby on Railsという優れたフレームワークがあり、これを使うことでさまざまなWebサービスが作れるからです。
- Perlの汎用性にWeb開発を足した言語
- 日本発祥なので、たくさんの日本語の情報がある
- 習得難易度は易しめ (Ruby on Railsは中程度)
Python(パイソン)
Python(パイソン)もPerlと同じような汎用性があるプログラミング言語です。
大きな特徴として、文法がとてもシンプルということがあげられ、そのため他人のコードが読みやすいです。
オールマイティに何でもでき、有名なサービスだとYoutubeやEvernoteにも使われています。
また、近年とても注目されているデータサイエンスや人工知能・ロボット開発においてはPythonが主力。
需要が急増しているので、個人的にとてもオススメしたい言語です。
- 文法がシンプルだがオールマイティー
- データサイエンスや機械学習・人工知能、ロボットなど流行の分野にも強い
- 習得は易しめ (だが中級・上級者になるにはそれなりの時間がかかる)
Java (ジャバ)
Java(ジャバ)とは、システム開発・アプリ開発などでよく使われているプログラミング言語です。
スマホも含めさまざまなOS(WindowsやAndroid、MacOSなど)で利用でき、汎用性はとても高いです。
ただ、これまで紹介してきた言語よりは難易度が高いです。
ITエンジニアとして活躍したい方にはJavaか後述のC (C++) のどちらかは習得した方が望ましいでしょうが、副業レベルで使えればいいという方にはあまりおすすめできません。
- 汎用性はとても高く、基本的にできないことはない
- どんなパソコンでもスマホでも動かすことができる
- 習得難易度は中程度、じっくり腰を据えて学習する必要がある
C(シー)
C(シー)言語は、1972年に開発された古くからあるプログラミング言語で、プログラミングの基本的な考え方も学べます。
特に威力を発揮するのはハードウェアの制御で、機械を制御する制御系システムやツール、OSの開発までできます。
また、プログラムを実行するには一度コンパイルという操作で機械語へ変換が必要になるものの、実行速度が速いので家電などにも幅広く利用されています。
デメリット、なんといっても学習難易度が難易度が高いこと。
コンピューター制御をいろいろできる代償として、自分で書かないといけないことが多くコードが長くなりがちであり、コンピューターに関する深い理解 (ポインタやメモリ管理など) も要求されます。
プログラミングそのものが初めてという方にはあまりオススメしませんが、本職のプログラマーになりたい方、コンピュータを深く理解し仕組みを知りたい方には学ぶメリットの大きい由緒正しき言語です。
- コンピューターの深いところまで自在に操ることができる
- 実行処理速度も速い
- 習得難易度は高く、初心者にはおすすめできない
C++ (シープラ)
C++(シープラ、シープラスプラスともいう)は、C言語をさらに拡張したプログラミング言語で、C言語の上位版といったところです。
C言語の拡張なので基本的にはC言語でできることはC++でもでき、スマホアプリやゲーム開発、公共機関・金融機関のシステムなどにも使われています。
まずC言語の習得に加えてC++独自の機能も学習する必要があるので、難易度はとても高いです。
C++の習得には長い時間がかかりますが、習得すれば他の言語を学ぶときにも理解しやすくなります。
C言語を学んだ後にさらにスキルアップしたい方向けの言語です。
- C言語の上位版で、大規模システムにも使われている
- 習得難易度はトップクラス、長期計画で。
Go(ゴー)
Go(ゴー)言語は2009年にGoogleが作った比較的新しい言語で、WindowsやMacだけなく、スマホでも動かすことができます。
CやC++は主にシステムをつくる言語だと紹介しましたが、Goも同じくシステム開発を主な目的にしています。
その一方でCほど難しいことを知らなくても作れるようにデザインされているので、今後は間違いなく日常生活のさまざまな分野で使われるようになっていくでしょう。
現状は主に規模の大きいプロジェクトで利用されています。
- CやC++よりも簡単に大規模システムを作ることができる
- 習得難易度は中程度、腰を落ち着けて取り組めば問題ない。
- Goを扱える人材はまだまだ少ないので、現状の給料は高め
C#(シー・シャープ)
C#(シー・シャープ)はマイクロソフト社が2000年に開発した言語です。
マイクロソフトと言えばWindowsですよね。
そのためC#も基本的にWindows用の言語です。
名前がややこしいのですが、Cとついていても「CやC++」とは全く別の言語です。
C#が得意なのはWindows上で動作するアプリです。
また、C#でできたゲーム開発プラットフォームUnityというのを使うと、様々なマシン(iPhone,Android, PlayStationなど)で動くようなゲームを簡単に作れます。
Unityはプログラミングをしなくてもゲーム作成できる画期的なツールですが、C#を使うことで細かい部分まで作り込むことができます。
C#で作られたゲームの成功例としてポケモンGOがありますが、ゲームを作りたい方は必見です。
- C#はWindowsアプリを作成するのに向いている言語
- ゲーム開発プラットフォームUnityもC#でできている
- 習得難易度は中程度
R(アール)
R(アール)言語は、統計や膨大なデータ処理に使われる、統計解析・科学計算に特化した言語です。
すでに紹介したPythonでも統計やデータ処理ができますが、Pythonはそれ以外の用途もいろいろあるのに対し、ここで紹介するRは統計に特化していて他のことはできません。
こういう弱点はありますが、統計に関してはさまざまなパッケージが豊富に公開されていて、日夜新しいものも開発されています。
エクセルでできないような統計計算を、統計のプロが作った解析方法を使ってRで処理するというのは、大規模データの時代にますます必要になるでしょう。
統計学者が作ったプログラミング言語などで難易度は低めですが、使いこなすには統計分析の知識も必要です。
- 統計・データ解析専門の言語で、他のことはできない分、専門的な深い解析が容易にできる
- データサイエンスに興味のある方にとっては必須言語
- プログラミングの習得は易しいが、使いこなすには統計の知識も要求される
Juiia (ジュリア)
Juliaは科学計算に特化した比較的新しめのプログラミング言語です。
Pythonのようなシンプルな文法でありながら、Pythonよりも高速に動かすことができ、ほとんどC言語と変わりません。
科学研究では膨大な計算をする必要がよくあるので、シンプルかつ速いというのは研究開発者にとってとても大事なメリットです。
- 科学計算に特化した言語で、他のことはできない
- シンプルかつ高速というのが最大のメリット
- 習得難易度はやや易しめ
Kotlin(コトリン)
Kotlin(コトリン)はJavaよりも簡単・安全な言語として2011年に発表された言語です。
Javaと相互利用ができ、JavaのコードをKotlinの内部で利用することができます。
GoogleもKotlinを採用し、Androidの公式開発言語に追加されたこともあって、短い期間で大きく知名度が上がりました。
これから更に人気が出てくる言語だと思います。
- 改良版Javaでシステム開発が得意
- Androidの公式言語
- 習得難易度は中程度
Swift(スウィフト)
世界中で愛好家の多いApple社の製品ですが、そのApple社が開発したプログラミング言語がSwiftです。
iOSおよびmacOS等などで利用でき、iPhoneアプリ、iPadアプリなどを作りたい方におすすめです。
コードが読みやすくて書きやすいことが特徴で、しかもPythonよりも高速です。
まだそれほど市場が大きくないこと、今のところ日本語の情報が少なめであるという欠点もありますが、扱いやすさとAppleのブランドを考えれば将来性が高い言語だと思います。
- Apple社が開発、iPhoneアプリをつくれる
- コードの読み書きがしやすい
- 習得難易度は、日本語の情報が少なめであることを考慮し中程度
Scratch (スクラッチ)
最後に紹介するScratch (スクラッチ)は、視覚的・直観的な操作でプログラムを作成・動作させることができる「ビジュアルプログラミング言語」と呼ばれるものの1つです。
もともとMIT(アメリカ・マサチューセッツ工科大学)で開発されたものですが、その分かりやすさ・手軽さから、主に教育目的に使われています。
特に2020年以降は小学校でプログラミング教育が必修化され、多くの小学校でプログラムの動作方法・アルゴリズムの概念についての教材として使われています。
- 視覚的・直感的に操作できるプログラミング言語
- 習得難易度は容易で、小学校の教育でも使われている
プログラミング言語の選び方
プログラミング言語にはそれぞれ得意不得意があります。
プログラミング言語の選び方はもちろん人それぞれですが、大きく2種類の決め方があると思います。
- 求人数の多さ・給料から選ぶ
- プログラミングを学ぶ目的から選ぶ
それぞれ補足します。
求人数の多さ・給料から選ぶ
それぞれのプログラミング言語によって、需要が高いものもそうでないものもあります。
なぜなら、プログラミング言語にも流行があり、普及するサービスによって需要が変動するからです。
例えば現代は人工知能やIoTが期待されているので、Pythonは需要が急上昇している言語です。
プログラミングを学ぶ目的別に選ぶ
プログラミングを学ぶのは、何か作りたいものがあるから、ということも多いでしょう。
そういった場合は、それぞれに強い言語を学ぶのが近道です。
一例ですが、
- スマホアプリを作りたい: JavaScript, Java, Swift
- ゲーム開発をしたい: C#
- Webサイトを作りたい: HTML/CSS, JavaScript, PHP, Ruby
- 人工知能や機械学習を学びたい: Python, R
- 科学技術計算に使いたい: Julia, Python, R
などです。
特に最初の頃は、自分が学ぶべき言語が分かりにくいもの。
できれば身の回りの詳しい人に相談し、一緒に考えてもらうといいでしょう。
侍エンジニア塾やTECH CAMPなど、どんな言語を学べばいいのか無料相談ができるプログラミングスクールもあり、現役のプロから学習すべき言語や方法について詳しくタダでアドバイスがもらえるので積極的に利用するといいでしょう。。
プログラミングスクールは無料体験から始めよう【12個解説】という記事も参考になります。
【プログラミング言語の種類と特徴】まとめ
今回の内容を簡単にまとめます。
- 身の回りの電化製品はほぼ全てプログラムで動いている
- プログラミング言語には得意・不得意があり、習得難易度も違う
- Web開発ならHTML/CSS, JavaScript, PHP
- 人工知能ならPython, R
- アプリならSwift, Java, JavaScript
- 需要の多いものを選ぶ、目的に合うものを選ぶという2つの選択肢がある
- プログラミング経験者に必ず相談して学ぶべき言語を決めるのが無難。プロに無料相談するのも手
これからの人生において大きな翼となってくれるプログラミングスキル。目的にあったプログラミング言語を賢く選びましょう。