業界研究
プログラミング言語の種類と特徴
writer: 新城
投稿日: 2024.04.16
プログラミング言語とは?
コンピューターに指示を出すために開発された言語のことです。コンピューターに思った通りの動作をさせたい場合は、マシン語(2進数のビット列:001001010など0と1の数字の連続)での指示が必要になります。これらは人間には理解不能なため、人間が理解でき、指示が出せる言語を開発する必要がありました。それがプログラミング言語になります。プログラミング言語をマシン語に翻訳し、コンピューターが理解することで様々な命令を行えるようになります。
言語の各種類別解説
プログラミング言語には様々な用途に対応するため、種類が存在します。その数は200種類以上ともいわれています。その中でもよく使用されるプログラミング言語を選んで紹介していきます。
-
C
用途:OS、 プログラミング言語、 家電、ロボット等の組み込みプログラム
C言語は約50年前から使用され続けている人気言語です。汎用性が高く、コンパイル方式(マシン語に全て翻訳してから実行する方式)の言語なので、実行速度が早いのが特徴です。メモリの確保などパソコン内部で使用されているハードウェアの制御も行えることから、他の言語ではあやふやになりがちなプログラムがどのようにして動くのかを理解しやすい言語です。なので、人によっては、C言語から学習を始めるケースもあります。とはいえ、ハードウェア等のコンピューターの仕組みを理解しなければいけないため、難易度は高めです。
-
C++
用途:IoT、 Webアプリ・業務システム
C言語から派生した言語で、クラスやインスタンスからなるオブジェクト指向が追加されています。オブジェクト指向とはソフトウェア開発における考え方で、実装されたオブジェクトは使い回すことが可能で、他のオブジェクトに機能が継承されたりします。C言語と同じく実行速度が速いので、たくさんのデータを扱うような大規模業務システム等で、使用されます。また、その速さから競技プログラミングなどでも非常の人気のある言語になっています。もともと難易度が高いC言語にオブジェクト指向が追加されているので難易度は非常に高い言語になります。
-
Java
用途:Web系サービス・アプリ、Android向けアプリ、IoT
開発理念が「一度書けば、どこでも動く」というだけあり、汎用性が高く人気な言語のひとつです。JVM(仮想Javaマシン)を通してマシン語に変換されるため、実行環境の差をJVMが吸収してくれます。代表的なオブジェクト指向言語です。難易度は高いながらも、大規模な機関システムや、Androidアプリなどで広く利用されているので、Javaから学習し始める人も少なくないので人気の言語の1つです。
-
JavaScript
用途:Webアプリ、Webサイト
代表的なスクリプト言語の1つです。スクリプト言語は簡易的に実装可能なプログラミング言語のことを指し、JavaScriptはWeb上で動作するようなサイト、アプリに使用されます。Webサイト等でスライドショーや、ボタンを押すとメニューが表示されるハンバーガーボタンなどの視覚的な制御や非同期処理を実現できます。フレームワークも充実していて、用途に特化した使用方法もできるようになっているため応用力も高いです。イベントが重複した時の制御などややこしくなりがちなものの、容易に環境を構築でき、数行書けばWebサイトに視覚的変化を与えられるため、初心者でも始めやすい言語になります。
-
PHP
用途:Webアプリ、Webサイト
代表的なスクリプト言語の1つです。Webアプリ、Webサイトのバックで使用される言語で、ログインやカート機能など様々な動的な機能を実現できます。また、Webサイトで広く利用されているWordPressはPHPでできているので、PHPを扱えるようになるとサイトの細かなカスタマイズができるようになります。とても人気な言語の1つで、コードのサンプルもインターネット上に沢山あるため、比較的習得しやすい言語です。
-
Python
用途:AI、機械学習、データ分析
歴史はとても長い言語ですが、AIブームに伴って急速に注目が集まった言語です。ライブラリが非常に充実しているのが特徴で、データ分析やAIのモデル作成ではディファクトスタンダードに近い言語です。他にも事務作業の効率化やWebアプリの開発で使われることもあります。記述方法がシンプルでわかりやすいため、初心者向けの言語でありながら将来性も高い言語です。
-
Ruby
用途:Webアプリ
「まつもとゆきひろ」という日本人が開発した言語で、主要なプログラミング言語の中では唯一、国産の言語になります。Ruby on Railsというフレームワークとセットで利用されることが多く、Webアプリに使用する機能を簡単に実装できます。日本人が開発しただけあり、日本語のドキュメントや書籍が充実しているので、初学者向けの言語と言えるでしょう。
-
Go
用途:Webアプリ、IoT
Googleが開発した比較的新しい言語です。C++の速度を維持しつつも、コンパイル速度を速めるために開発されたため、高速性とスクリプト言語の手軽さを両立している点が特徴です。YouTubeやクックパッド等の大量のデータを扱うWebアプリで使用されています。記述方法がシンプルで比較的学習しやすい言語ですが、その新しさからインターネット上の情報書籍などは他言語に比べれば少ないのが現状です。
-
Swift
用途:iOS用アプリ
Apple製のスマートフォンに使用されているiOS用のアプリケーション開発に特化したプログラミング言語です。元々AppleではObjective-Cというオリジナル言語を使用して開発していましたが、1983年の誕生から30年以上も経ち、既存のアップデートだけでは対応しきれなくなりました。そこで、より記述を簡潔に、高速で実行できるようにしたのがSwiftです。難易度は比較的低めです。iPhone向けのアプリを作成したい方はSwiftを学ぶ必要があります。
-
Kotlin
用途:Android向けのアプリ
Android向けのアプリ開発のために作られた言語です。もともとAndroid向けアプリはJavaが使用されていましたが、KotlinはJavaを改良してアプリ開発に特化するように作られました。Javaのライブラリをそのまま利用することが可能できる他、コードが長くなりがちなJavaに比べて簡潔に書くことができるオブジェクト指向言語です。
既に人気のある言語から習得する
前章ではプログラミング言語の種類による解説を行いました。ざっくりとしたイメージはつかめたでしょうか。とはいえ、これだけ言語を紹介されても「じゃあ、どれから始めればいいの?」と疑問に思うでしょう。正直な所、筆者の意見としてはどれからでも構いません。言語は一つ習得すれば、次に習得する言語の難易度が下がります。全てのプログラミング言語はコンピューターに指示を出すものなので、共通の指示、考え方があるためです。その言語の難易度にもよりますが、簡単なプログラムを書くぐらいであればすぐにできるようになります。
とはいえ、それだと何の参考にもなりませんので、1つ言語を決める視点を紹介します。それは人気の言語から習得するというものです。人気の言語は書籍や資料が豊富にあるので、躓いた時に自力で解決しやすいです。また、そもそも需要があるから人気になっているので、一度学べば現場で活かしやすいという恩恵もあります。
プログラミング技術のナレッジコミュニティサービスを提供しているstackoverflowによると、現在、使用されている言語は、JavaScript、Python、TypeScriptがよく利用されています。学習中の人に絞ってみると、JavaScript、Python、Java、C++、Cになります。
TypeScriptはMicrosoftが開発したJavaScriptの拡張言語であり、先に紹介したJavaとKotlinのような関係にあります。(参照:Stack Overflow Developer Survey 2023)
人気上昇中の言語を習得する
流行っている言語を習得するのも1つの方法です。人気が急上昇しているということはその市場が急拡大していることが背景にあるので、人がまだまだ不足していて、お給与も平均より高い傾向にあります。Tiobe Software(オランダのソフトウェア品質管理サービスを提供する会社)によると今現在、最も調べられている言語はPythonになっています。数年前まではJavaやC言語が1、2位を争っていましたが、2018年辺りからPythonの勢いが急上昇してきていることが見て取れます(Tiobe Index)。背景にはAIブームがあります。Pythonには豊富なライブラリという強みがあるので、高度なアルゴリズムやきめ細やかなグラフ描画が必要となるデータ分析やAIモデルの作成には格好の言語となっているのです。Go言語も健闘してはいますが、しばらくPython人気が衰えることはないでしょう。
言語の学び方
学ぶ言語を決めたのはいいものの、どのようにして学べばいいかわからないという方もいると思います。最初の取っ掛かりとしては、オンライン教材の活用をお勧めします。オンライン教材は安価で手軽に始められることが多く、初学者が躓きやすい環境構築が不要なものもあります。最初にオンラインから始めて、より詳しく学びたくなった時に技術書を購入するのが良いと思います。
ここからは個人的な意見ですが、Udemyがお勧めです(Udemy)。以下、Udemyを例にオンライン教材活用のメリットを紹介していきます。
-
セールが毎月ある
Udemyは月1~2回セールを行っており、その時に購入すれば、1500円~2000円程度で講座を購入できます。
-
情報が更新される。
購入した講座の情報更新が行われます。例えば、学習中のプログラミング言語のバージョンアップがあった場合には、それに対応して講座内容がアップデートされます。バージョンアップによって推奨されなくなった記述等をしてしまうなどの問題は起こりにくくなります。
-
講師にわからない箇所の質問ができる。他の人がした質問も全て見ることができる。
どんなに人気の講座でもわからない箇所は出てきますし、どうしてこの書き方をしたんだろう?みたいな疑問が出てくることもあると思います。そんな時は質問欄に質問を送れば、講師の方が返信してくれますし、他に同じ質問をした方がいるかも検索できます。
-
隙間時間を活用できる
ブラウザやアプリから簡単に利用することができるので、通勤の電車の中やちょっとした待ち時間などの隙間時間を有効に活用することができます。
-
どのようにコーディングしているか見ることができる
講座にもよりますが、講師の方が実際にコーディングする過程を見ることができます。初心者からすると実践的な使い方を学ぶ良い機会になります。
以上、紹介したような様々なメリットも相まって、オンライン教材(下図だとオンラインリソース)は学習コンテンツとしては今1番の人気となっています。圧倒的に初心者向けの講座が多いので、初めての学習には持ってこいの教材と言えるでしょう。
HTML、CSS、SQLはプログラミング言語?
ところで、HTMLやCSSはプログラミング言語に入るのでしょうか。厳密に言うと、プログラミング言語ではなく、HTMLはマークアップ言語、CSSはスタイルシート言語といいます。よくJavaScriptやPHPなどと一緒に使用されるため、初心者の方には間違いやすい箇所となります。筆者自身、入社前はプログラミング言語の一部だと思っていました、、。プログラミング言語はコンピューターに指示を出し、演算の結果を得るものを言います。例えばログイン機能で、IDとパスワードを入力してもらい、それがDBに登録されているものと一致しているかいないかを判断し結果を得るというのがプログラミングになります。
HTML、CSSにはこれらの機能がありません。HTMLはWebサイトに出力する、CSSはHTMLを装飾すると言った役割があり、プログラミング言語とは異なります。
では、SQLはどうでしょうか。SQLはデータベース言語と言い、これまたプログラミング言語とは言われていません。しかし、場合によってはプログラミング言語に分類される場合もあるので、「厳密には違うけど、ほぼプログラミング言語」ぐらいのイメージでしょうか。SQLもプログラミング言語同様、データベースに指示を出し、演算の結果を得ます。データベースはシステムを作る上で、アプリケーション同様外せない機能になりますので、習得して損をする言語ではありません。
まとめ
プログラミング言語の種類は様々で、学ぶ言語によって使われている場面は異なります。プログラミングを使って作りたいものがはっきりしている場合は、そのシステムでよく使われている言語を選択してください。とにかく何かできるようになりたいという人は、人気の言語から学び始めると、後から携わることのできる仕事の幅が広がってくるでしょう。
エンジニアはプログラミング言語以外にも学ぶことがたくさんあります。プログラミング言語を学ぶだけでなく、IT知識全般を学習する習慣を身につけていきましょう。