世の中にはたくさんのプログラミング言語があります。
その数は700以上もあると言われており、一般的によく使われているものだけでも数十種類あります。

プログラミング言語と一口に言っても、それらは様々な方法で分類することができます。
用途や特性によって様々な分類方法があるのでいくつかの観点から見ていきましょう。

今すぐWeb業界で活躍したいなら、エンジニアの無料相談を受けてみませんか?
開発現場が求めるレベルのプログラミングスキルを身につけ、就活に強いポートフォリオを作成しましょう!
エンジニア発オンラインスクール【RUNTEQ】

プログラミングとは

そもそもプログラミングとは何なのか考えてみます。

コンピュータの役割は様々な演算を高速で行うことによって、私たちの身の回りのタスクを自動化することです。
そのためにはコンピュータに対してあらかじめどのような手順でどのような処理・演算をしてほしいかを命令しておく必要があります。
この命令文を書くことをプログラミング、書かれた命令文のことをプログラム、プログラムを書く人のことをプログラマといいます。

コンピュータが理解できる命令は、ONかOFF(1か0)だけです。
日本語や英語のアルファベットなどの複雑な信号は、コンピュータ上ではそのまま処理できません。
つまり世の中のシステムは、電気信号がきたのか、それともきていないのか、の2種類の組み合わせだけで動いているのです。
どんな複雑な処理でも、構造を単純化していけば最終的には0/1の信号で行われているというのは意外かもしれません。

しかし人間が、コンピュータが理解できるような命令、つまり0と1だけで命令文を書くのは不可能でしょう。
もしできたとしても、自分が見返した時や他の人が見たときにどんな処理が書いてあるのかわからないようでは困ります。

そこで、人間にとってわかりやすい言葉で命令を与え、それを機械向けの信号に翻訳することでコンピュータが実行できるようにしています。
このようにして人間が理解できるようなプログラムのことをソースコード、あるいはソースプログラムといいます。
また、コンピュータが理解できる形式の命令コードを機械語(マシン語)といい、機械語に変換されたプログラムのことをオブジェクトコードネイティブコードといいます。
ちなみに、このようにソースコードをネイティブコードに翻訳することをコンパイルといいます。

0と1だけで表される、コンピュータが実際に扱える表示形式のことを2進数といいます。
私たちが日常生活で使っているのは10進数です。
これらは数値をひとまとまめにする量、数値が繰り上がるタイミングによって決まっています(例えば10進数は10で数値をひとまとまりにしており、10までカウントすると桁が繰り上がります)。

この考えから行くと「時間」は秒・分では60進数、時では24進数を使っているということになります。
また、IT業界では2進数のほかに8進数16進数がよく使われます。
その理由は、8や16は2の累乗であり2進数に変換しやすいからです。

未経験からWebエンジニアを目指したいなら、まずは無料相談に申し込んでみましょう。
誰もが毎日のように利用しているWebの世界で活躍できるエンジニアを目指し、今すぐプログラミングを学びましょう。
自分にあったコースのプログラミングスクール【ZeroPlus】

分野に応じた分類

最初に見ていくのはプログラムの利用分野に応じた分類です。
分野に応じて扱う言語やその難易度もかなり変わってきます。

各業種でどのような特性の言語が必要とされているのかを把握しておくことで、目的に合わせた言語選択ができるようになるのではないでしょうか?

制御系/組み込み系

家電製品、電子機器などを制御するための言語です。
組み込み系では製品のプログラムの質が製品のレスポンス性などを左右するので、デバイスの性質に合わせて効率の良いプログラムを書く必要があります。
近年ではIoT(Internet of Things)の発展により、組み込み系システムのプログラムはより難しくなってきています。
IoTとはモノのインターネットという意味で、コンピュータだけでない身の回りの様々なものがインターネットで通信されるような状態のことを指します。

制御系、組み込み系でよく用いられる言語はC、C++、アセンブリ言語、Javaなどです。
特にアセンブリ言語は他の分野ではほとんど目にすることのない少し特殊な言語となっています。

業務系

一般的な業務で使われるアプリケーションや情報システムをつくるための言語です。
ひとくちに業務系といっても、用途や要件によって様々なシステムがあります。
社内で連絡を取り合うためのコミュニケーションツールや業務で用いるデスクトップアプリなど、挙げればきりがないほどです。

ということで、業務系でよく用いられる言語はJava、Python、PHP、C、C++など多岐にわたります。

Web系

Webをベースとしたシステムやアプリケーションを開発するための言語です。
インターネットを介してアクセスできるため、デバイスや場所を選ばずに利用することができるのがWebの良さです。
一方で誰もがアクセスしやすいWebの特性上、セキュリティ関連の知識も重要となります。
Webはクライアントサーバシステムで、クライアント側とサーバ側で扱う言語も異なってきます。

よく用いられる言語としてはJavaScript、PHP、Ruby、Java、Pythonなどがあります。

デスクトップアプリ系

PCにインストールして利用するソフトウェアを開発するための言語です。
WindowsmacOSなど各OSごとに開発言語が異なり、WindowsではC#など、macOSではObjective-C、Swiftなどが使われています。
また、Web系の技術でデスクトップアプリを開発するElectronなどのフレームワークもあります。

モバイルアプリ系

スマートフォンにインストールして利用するソフトウェアを開発するための言語です。
こちらもデスクトップアプリ同様、AndroidiOSで開発言語が異なります。
AndroidではJava、C#、Kotlinなどが、iOSではObjective-C、Swiftなどがよく使われます。
両方のプラットフォームに対応させたい場合は、React Native、Flutter、Cordovaなどで開発されることが多いです。

ゲーム系

ゲームのシステムに関するプログラムや、ゲームエンジンの開発などに用いられる言語です。
数学に関する高度な知識が必要になったり、比較的高いプログラミングスキルを要求されたり、個人開発が難しい分野となります。

対応プラットフォームによって使用する言語は異なりますが、よく使われているのはC#、C++、JavaScript、Ruby、Swiftなどです。
また、物理演算エンジンを搭載したUnityUnreal Engine4、2Dゲームに最適なCocos2d-xなどがよく利用されています。

機械学習系

機械学習やデータ分析によく使われている言語です。
こちらも数学に関する知識が必要になりますが、パッケージの充実などの影響もあり専門家以外でも扱いやすくなってきています。
近年では様々な分野にAI(Artificial Intelligence)が組み込まれるようになり、需要も高まっています。
主にPython、Rなどが利用されています。

その他

他にも、IoT(Internet of Things)系ではPython、C、Javaなどがよく使われています。
また、VRARではC#などを中心に開発が行われているようです。

低水準言語・高水準言語

続いてはコンピュータが理解できる形式である機械語(マシン語)にどれだけ近いかによる分類です。
低水準言語は機械語に近く、高水準言語は人間の話す言語(自然言語処理)に近い、という分け方になります。
間違ってはいけないのは、低水準言語が高水準言語よりも劣っている、というわけではないということです。

また、低級言語・高級言語という言い方もあります。

多くのプログラマが使用するのはほとんどが高水準言語になります。
組み込み系などのデバイスの性質やOSの性能を考慮しなければいけない繊細なプログラムが要求される業界では低水準言語でコードを書く場合もあります。

低水準言語

コンピュータが理解できるON、OFFといった状態を細かく指定する必要があるため、高水準言語に比べると難易度が高い言語になります。
使用機会も少ないので、必要となる分野(組み込み系など)のエンジニア以外が目にすることは滅多にないでしょう。

機械語

機械語(マシン語)は、データの処理や命令の実行などを行っているプロセッサ(CPU)が直接理解できる2進数データのことです。
そのため、こちらは書くことも読むこともまずないでしょう。

アセンブリ言語

アセンブリ言語は、機械語の命令に一対一で対応したプログラミング言語です。
2進数データは人間には読むことが難しいため、キーワードなどを用いて読みやすく表したものになっています。

アセンブリ言語を機械語に変換することをアセンブルといい、変換を行うプログラムをアセンブラといいます。
このアセンブルのシステムは高水準言語でも取り入れられており、コンパイルと言われます。

中間言語

高水準言語と低水準言語の間のような分類の言語です。
低水準言語を少しわかりやすくしたもので、Javaのバイトコードなどが代表的な例となっています。

高水準言語

こちらは人間が話す自然言語に近い書き方のプログラミング言語です。
実際にエンジニアが書くプログラムのほとんどは高水準言語に分類されます。

具体的にはJava、Python、PHP、Rubyなど私たちがよく耳にする多くの言語が当てはまります。
こちらはプログラミングパラダイムによってもさらに細かく分類できます。

Web業界で活躍するデザイナ・プログラマを目指すなら、現場で活躍するエンジニアから直接スキルを学んでみませんか?
こちらは定額制でエンジニアに質問し放題のお得なオンラインスクールになっています。
Web食いオンラインスクール公式サイトはこちら

動的型付け言語・静的型付け言語

こちらはコンピュータに対するデータの形式の指定方法(変数宣言時の方式)による分類です。
コンピュータが扱うデータの形式のことをといいます。
これから扱うデータがどのようなデータなのかをコンピュータに伝える必要がある言語と、自動的にコンピュータ側で判断してくれる言語、という風に分類します。

動的型付け言語

データの型を宣言する必要がなく、コンピュータが型を動的(勝手)に判断してくれる言語です。
プログラムの記述が短くて済み、いちいち型を宣言する手間が省けてプログラマの負担が減ります。
比較的簡単に書けるものが多いため、最近では多くの動的型付け言語が登場しています。

一方で、型が確定しないため予想外の動作をする可能性があり、安定していないというデメリットもあります。

JavaScript、Python、Ruby、PHPなどがこちらに分類されます。

プログラムの実行時に型が決定されるので、動的型付け言語には後程紹介するインタプリタ言語やスクリプト言語が多いです。

静的型付け言語

コンピュータに対して今から扱うデータがどのような型のデータなのかを明示的に指定する必要がある言語です。
たとえば演算を行いたい場合は数値型、テキストを扱いたい場合は文字列型、といった具合に型を指示してあげます。

静的型付け言語は変数の型が確定しているので、挙動が安定しています。
また、コンピュータ側が変数の型を覚えておく必要がないためメモリが節約され、比較的高速であるという特徴もあります。

少し古臭い・お堅い、といったイメージもありますが、正確性を求められるコンピュータシステムとは切っても切り離せない関係にあります。

C、C++、C#、Javaといった言語が挙げられ、JavaScriptのスーパーセットであるTypeScriptも静的型付けができます。

コンパイル時に型が決定されるので、静的型付け言語には後程紹介するコンパイラ言語が多いです。

コンパイラ言語・インタプリタ言語

次はソースコードをネイティブコードに変換する際の方式による分類です。
このような変換のことをコンパイルといい、プログラムを実行する際に必ず必要となる工程です。
文法上の間違いなどがあった際にはコンパイルのタイミングでチェックが行われ、エラーを返してくれます。

このコンパイルのタイミングによって、プログラミング言語を大きく2つに分けることができます。
また、Javaなどが採用している特殊なコンパイル方式の言語も存在します。

コンパイラ言語

プログラムの実行前にコード全体を一括でコンパイルする言語です。
例えば、日本語で書いた本を英語に翻訳して出版するようなイメージに近いです。
実行速度が速く負荷が小さい、という利点があります。
一度翻訳してしまえば、2回目以降はコンパイルの必要がないのもポイントです。

一方で自分でコンパイルする手間がかかり、エラーが発生している場所もわかりにくいため、プログラマの負担はやや大きくなります。

C、C++、C#などがコンパイラ言語に当てはまります。

インタプリタ言語

プログラムの実行時にコードを一行ずつコンパイルしていく言語です。
例えば、スポーツインタビューなどをリアルタイムで翻訳していく同時通訳者のようなイメージです。
実行速度は遅いですが、エラーを見つけやすく初学者の方でも比較的学びやすい言語になっています。

JavaScript、Python、Ruby、PHPなどはインタプリタ言語です。

JITコンパイラ

Just-In-Timeコンパイラのことで、コンパイラ言語とインタプリタ言語の中間のような存在です。
この方式では、プログラミング言語をコンパイルによって一度中間言語に変換します。
その後、実行時に1行ずつネイティブコードに翻訳していきます。

Javaが代表的な例で、コンパイル時にソースコードを中間言語であるバイトコードに変換します。
そもそもJavaではプログラムをOSではなくJVM(Java仮想マシン)によって実行します。
JVMは、このバイトコードをインタプリタ形式でJava機械語にコンパイルしていきます。
ちなみにこれは、仮想マシンを使うことにより実効結果がOSなどの環境に依存せず動作が安定するというメリットがあります。

また、RubyやPythonでもJITコンパイラを利用できます。

スクリプト言語

簡単に書けて簡単に実行できる言語のことを総称してスクリプト言語といいます。
こちらは定義が曖昧ですが、インタプリタ言語の多くがスクリプト言語に分類されます。

プログラミングの難易度が比較的低く、初学者の方が最初に学ぶのに適しているものが多いです。
JavaScript、Python、Ruby、PHPはスクリプト言語といわれています。

まとめ

プログラミング言語の分類から、様々な特徴が見えてきます。

静的型付け言語でありコンパイラ言語であるCやJavaは、正確性が求められる大規模なコンピュータシステムでよく用いられます。
難易度も比較的高く、非常に厳格な言語となっています。
最近では、安全性を最大限まで高めるためのRustも人気の言語のひとつとなっています。

一方、JavaScriptやPHPなどといった言語は誰でも取り組みやすく、個人ビジネスなどにも向いています。
世の中の多くのシステムがこういった言語で作られているので、需要も十分にあります。
未経験の方はまずはこういったスクリプト言語を習得した上で、さらに大規模な開発がしてみたい場合にはCやJavaを学習してみるのが良いかと思います。

ひとりではなかなかプログラミングの学習が続かない、未経験だから不安が多い、という方はプログラミングスクールを利用してみるのも有効です。
本物のエンジニアに学ぶことで、時間がない方でも最短でスキルを身につけることができます。
現役エンジニアのパーソナルメンターからマンツーマンで学べる

お悩みの方は、まずは無料キャリアカウンセリングにお申込みください。

関連記事

この記事のタグ