Node.jsとJavaScriptの関係(処理系と言語)

言語と処理系の違いがわかっていないと、Node.jsとJavaScriptの関係がわからない。

 

そもそも言語とは、

情報伝達に使用される、記号の集まりとその記号の連なりに関するルールのこと。

英語という言語を例に出すと、記号の集まりはアルファベットのこと。情報伝達のためのアルファベットの並べ方のルールを英語という。

記号とルールがセットで言語になる。

記号の集まりと記号の連なりに関するルールを共有していれば言語を通じて情報を伝達することができる。

記号の連なりに関するルールも共有されている必要がある。

 

プログラミング言語も一緒。コンピューターに情報を伝えるための記号のあつまりとそのルール。

 

では、、処理系とは??

言語は概念であって形ではないが、言語を処理する装置というものがある。それが処理系。

例えば、日本人の脳みそが日本語の処理系。

言語自体は概念で形がないので、処理系がないと何の役にも立たない。

 

では、プログラミング言語における処理系とは?

コンピューターにインストールしたPHPRubyなどのソフトウェアが処理系。

処理系に実際に記号列を与えると、ルール通りに動いてくれる。

フロントでJavaScriptを勉強する場合はブラウザに処理系が同梱されているため、何も入れる必要はない。

言語と処理系というものは別々のもので、セットになっている。

 

JavaScriptは言語、Node.jsはJavaScriptの処理系。処理系は一つの言語に一つではない。一つのプログラミング言語には複数種類の処理系がある。

処理系によってルールの実装方法が異なる。ルールはあくまでルール、実現方法は問わない。

例えば、、

print("文字列")で標準出力に文字列を表示するのはルール。それをどう実現するかは処理系によって違う。

プログラミング言語の場合は3つめの要素として、処理系を起動するコマンドの名前が決まっている。

C言語の代表的な処理系はGCC、コマンドはgcc

Javaの場合はOracleJDKやOpenJDKがあって、コマンドはjavaを用いる。

PHPの場合は代表的な処理系もPHP、コマンドはphp

JavaScriptの代表的な処理系はNode.js。コマンドはnode

 

まとめ、

言語とは情報伝達のために使われる記号のあつまりとその記号の連なりに関するルールを指す。言語には実際にルール通りに記号の列を処理する処理系と呼ばれるものがある。

言語と処理系の名前は一般的には一致しない。一致しているのはたまたま一致しているだけ。

 

 

おわり