MENU
なお
じゃぱざむ運営主
20歳 | WEBメディアの会社で部長をやりながら、じゃぱざむ・特化メディア・WEB制作~コンサル・SEOディレクター・投資・就活相談など幅広くやっています。
いまい
エンジニア志望の大学生
21歳 | 理系の大学3年生|Webアプリ開発を勉強中。クラウド系の自社開発企業(マザーズ上場企業)に内定。じゃぱざむでは、IT系記事の執筆とアイキャッチ画像の作成をしています。
【完全ガイド】大学生でもプログラミングで稼ぎ始めるためのロードマップ

低水準言語と高水準言語とは?違いとメリットをわかりやすく解説!

記事上バナー
テックキャンプの記事上バナー
レイズテックの記事上バナー
テックブーストの記事上バナー
  • プログラミング言語においての「水準」とは?
  • 高水準(高級)言語と低水準(低級)言語とは?
  • 高水準言語と低水準言語の違いは?
  • 高水準言語と低水準言語のメリットは?
いまいのアイコン画像いまい
こんにちは!
今井(@ima_maru)です。

今回は、プログラミング言語においての「水準」について解説します。

プログラミング言語は、この水準によって「高水準言語」「低水準言語」と区別されたりします。

別の言い方では、「高級言語」「低級言語」などとも言いますね。

この記事ではこのような単語について、わかりやすく解説していきます。

ではいきましょう!

タップして好きなところから読めます

プログラミング言語においての「水準」

プログラミング言語の特徴を表すために使われる言葉「水準」

実は一瞬で理解できるような簡単な言葉です。

水準は低くなればなるほどコンピュータの言葉に近くなり、高くなればなるほど人間の言葉に近くなると思ってください。

低水準:機械語に近い

高水準:人間語に近い

低水準言語(low-level programming language

低水準言語とは、機械語、または機械語に近いアセンブリ言語などの言語の総称です。

低級言語とも呼ばれたりします。

アセンブリ言語とは、機械語すなわち電流を流さない「0」と電流を流す「1」の羅列を少し人間よりにわかりやすくした言語ですね。

詳しく知りたい方は、以下の記事を見てみてください。

あわせて読みたい
アセンブリ言語とは?わかりやすく解説!
アセンブリ言語とは?わかりやすく解説!大学でアセンブリ言語を学んでいるので、アウトプットがてら、アセンブリ言語とはどんな言語かアセンブリ言語を学ぶメリット機械語やほかの言語との違いをできるだけわ...

低水準言語は機械語に近い?

低水準言語というのは、まさに機械語に近い言語という意味です。

英語では“low-level programming language”と書きます。

低レベル」のプログラミング言語という意味ですが、このレベルというのは、より「低い次元の」という意味で、よりコンピュータの細かい動作まで記述する必要があるということを意味しています。

アセンブリ言語と機械語を実際に見てみる

アセンブリ言語とは、機械語に一対一で対応したコード表のようなものです。

まずは、アセンブリ言語で書いたプログラムです。

	XOR	r0, r0,	r0
	ADDI	r8,	r0,	0
	ADDI	r10,	r0,	512
	ADDI	r14,	r0,	1
	ADDI	r8,	r0,	0
	ADDI	r24,	r0,	400

FOR0S:
	BLE	r24,	r8,	FOR0E
	ADD	r15,	r8,	r10
	SW	r14,	0(r15)
	ADDI	r8,	r8,	4
	J	FOR0S

FOR0E:
	SW	r0,	0(r10)
	SW	r0,	4(r10)
	ADDI	r9,	r0,	2
	ADDI	r25,	r0,	51

FOR1S:
	BLE	r25,	r9,	FOR1E
	SLL	r14,	r9,	2
	ADD	r15,	r10,	r14
	LW	r11,	0(r15)
	BNE	r0,	r11,	IF0E
	ADDI	r9,	r9,	1
	J	FOR1S

IF0E:
	SLL	r14,	r9,	3
	ADD	r8,	r0,	r14
	ADDI	r24,	r0,	400

FOR2S:
	BLE	r24,	r8,	FOR2E
	ADD	r15,	r8,	r10
	SW	r0,	0(r15)
	SLL	r14,	r9,	2
	ADD	r8,	r8,	r14
	J	FOR2S

FOR2E:
	ADDI	r9,	r9,	1
	J	FOR1S

FOR1E:
	ADDI	r8,	r0,	8
	ADDI	r24,	r0,	400

FOR3S:
	BLE	r24,	r8,	FOR3E
	ADD	r15,	r8,	r10
	LW	r11,	0(r15)
	BEQ	r0,	r11,	IF1E
	SRA	r14,	r8,	2
	ADD	r15,	r8,	r10
	SW	r14,	0(r15)

IF1E:
	ADDI	r8,	r8,	4
	J	FOR3S

FOR3E:
	HALT

そして、このプログラムは「アセンブラ」と呼ばれるプログラムの翻訳機を通って、機械語に翻訳されます。

00000000000000000000000000001010
00000100000010000000000000000000
00000100000010100000001000000000
00000100000011100000000000000001
00000100000010000000000000000000
00000100000110000000000110010000
10001111000010000000000000010000
00000001000010100111100000000000
01100001111011100000000000000000
00000101000010000000000000000100
10100000000000000000000000011000
01100001010000000000000000000000
01100001010000000000000000000100
00000100000010010000000000000010
00000100000110010000000000110011
10001111001010010000000001000100
00000001001000000111000010010000
00000001010011100111100000000000
01000001111010110000000000000000
10000100000010110000000000001000
00000101001010010000000000000001
10100000000000000000000000111100
00000001001000000111000011010000
00000000000011100100000000000000
00000100000110000000000110010000
10001111000010000000000000010100
00000001000010100111100000000000
01100001111000000000000000000000
00000001001000000111000010010000
00000001000011100100000000000000
10100000000000000000000001100100
00000101001010010000000000000001
10100000000000000000000000111100
00000100000010000000000000001000
00000100000110000000000110010000
10001111000010000000000000100000
00000001000010100111100000000000
01000001111010110000000000000000
10000000000010110000000000001100
00000001000000000111000010010010
00000001000010100111100000000000
01100001111011100000000000000000
00000101000010000000000000000100
10100000000000000000000010001100
11111100000000000000000000000000

こんな風に、低水準言語は、人間から見て非常に分かりにくいです。

アセンブリ言語のほうは、わかる人にはわかるのですが、それでも何をやっているかわかりにくいです。

いまいのアイコン画像いまい
僕も大学でアセンブリ言語をやりましたが、少しの処理を書くだけでも結構時間がかかりますし、大変でした。

しかし、逆にコンピュータにとってはこれが当たり前です。

つまり、電流を通さない「0」と電流を通す「1」。

これしか、コンピュータはわからないのです。

これが「低水準」の世界です。

低水準言語の特徴やメリット

機械語やアセンブリ言語などの低水準言語は、以下のような特徴やメリットがあります。

低水準言語のメリット
  • 特定プラットフォームに特有の処理が書ける
  • 最大限のパフォーマンスを引き出すことができる

「特定プラットフォームに特有の処理が書ける」とは、簡単に言えば、

コンピュータの細かい動作まで定義できるということです。

というよりは、低水準言語は、ハードウェアレベルでプログラムを書く必要があるといったほうが正しいかもしれません。

例えば、「メモリ操作」「IO制御」等のCPUレベルの操作ができるということです。

それとも関係するのですが、低水準言語は、特定の処理において、最大限のパフォーマンスを引き出すために使われたりします。

この「最大限のパフォーマンスを引き出すこと」を、「チューニング」と言ったりもします。

例えば、機械学習の内部処理や、組み込み機器のプログラムといったものにも使われています。

このように、低水準言語は、CPUレベルの処理実行速度の底上げ限られたリソース管理など、様々な用途で活躍しています。

高水準言語(high-level programming language

高水準言語とは、記述の抽象度が高いプログラミング言語のことを言います。

高級言語とも呼ばれたりします。

現在使われているプログラミング言語のほとんどがこちらに分類されます。

一般に「プログラミング言語」と言われたら、この高水準言語のほうを想像するのではないでしょうか。

高水準言語は人間語に近い?

高水準言語というのは、まさに人間語に近い言語という意味です。

英語では“high-level programming language”と書きます。

こちらは「高レベルの」すなわち、「高い次元での」プログラミングが可能という意味になります。

簡単に言えば、「Hello Worldって画面に表示して」って書けば、ぱっと表示してくれるようなイメージです。

実際は、コンソールに出力するまでにいろいろな処理をして初めて表示されるのですが、そのような細かい処理は、翻訳機が肩代わりしてくれます。

実際に、それぞれのプログラミング言語の「Hello World」を表示するプログラムを見てみましょう。

print ("Hello, world")
/*Java*/
public class Hello_world {
	public static void main(String[] args) {
		System.out.println("Hello, world");
	}
}
#include <stdio.h>

int main()
{
	printf("Hello, worldn");
	return 0;
}

このように、高水準言語は、低水準言語と比べて、人間にとってわかりやすいという特徴があります。

さっきの、「0」と「1」の羅列とかより全然わかりやすいですよね。

ですが、コンピュータがこのプログラムをそのまま実行することはできないので、この後、「コンパイラ」や「インタプリタ」というプログラムの翻訳機を通って、最終的に機械語に変換されます。

あわせて読みたい
コンパイラとインタプリタの違いは?言語の違いを分かりやすく解説!
コンパイラとインタプリタの違いは?言語の違いを分かりやすく解説!「コンパイラ」と「インタプリタ」とは何かを知りたい方!コンパイラ言語とインタプリタ言語とは何かを知りたい方!それぞれの言語の特徴やメリット・デメリットを知り...

高水準言語の特徴やメリット

高水準言語は、以下のような特徴やメリットがあります。

高水準言語のメリット
  • 人間にとってわかりやすい
  • ハードウェアに依存した処理を書かなくてよい
  • メモリ制御、IO制御等、低水準の操作を意識しなくてよい

まず何といっても、「人間にとってわかりやすい」ですよね。

機械語の「0」と「1」の羅列とか、それを文字に置き換えたようなアセンブリ言語とかと比べて、圧倒的にわかりやすいです。

いまいのアイコン画像いまい
プログラミングを知らない人でも、案外読めたりします。
とくにPythonとか。

次に、「ハードウェアに依存した処理を書かなくてよい」というメリットがあります。

例えば、「このCPUにはこの処理じゃないと画面に表示されないよ!!」なんてことがないってことです。(基本的には)

print ("Hello, world")

このプログラムで、Macのパソコンでも、Windowsのパソコンでも、Linuxのパソコンでも、Core i5でも、Core i7でも動いちゃうわけです。

なんでかっていうと、最後の翻訳時に、それぞれのハードウェアにあったような機械語に翻訳されるからです。

プログラムを書く側としては、こういったハードウェア依存のコードを書かなくてよいのは大きなメリットとなります。

最後に、「メモリ制御、IO制御等、低水準の操作を意識しなくてよい」というメリットが挙げられます。

これは低水準言語と逆のメリットですね。

低水準言語は、このような低水準の操作までできるのが良いと考えますけど、実際、このような処理に興味がない人にとっては、地獄でしかありません。

その点で、高水準言語は、

print ("Hello, world")

Pythonの場合、この1行だけで、コンソールに「Hello World」が出力されますから。

いまいのアイコン画像いまい
実際は、裏で多くのことをやっているんです。
アセンブリ言語にすると結構長かった。

このように、一般的にイメージするプログラミング言語はほとんどが高水準言語です。

まとめ

プログラミング言語においての「水準」という言葉は、あっさりと理解できるようなものではなかったでしょうか。

低水準言語は、「今の時代古い」と思うかもしれませんが、そんなことはありません。

特定の用途でがっつり使われていますし、勉強だけでも得られることが多いです。

例えば、高水準のプログラミング言語がどのようにアセンブリ言語や機械語に翻訳されるのか?

それによって、パソコンはどう動いているのか?

このようなことの理解が深まると思います。

もし、大学などでアセンブリ言語の授業などがあれば、すこし覗いてみてください。

パズルのような感覚で案外楽しいと思いますよ。

以上「低水準言語と高水準言語とは?違いとメリットをわかりやすく解説!」でした!

いまいのアイコン画像いまい
最後までご覧いただきありがとうございます。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
タップして好きなところから読めます
閉じる