2016年07月12日
できるだけわかりやすく説明してみるという実験:隠喩としての高級言語
コンピューターの用語には「低水準」と「高水準」というものがある。
コンピューターの基本動作により近いもの程、「低水準」と呼ばれ、その逆が「高水準」と呼ばれる。
例えば、、、
インターネットで何かを検索する時に、googleに検索文字を入力して結果を待つ、ということをする場合の裏でされていることについて考えてみよう。
話が難しくなりすぎるとアレなので、とりあえずは検索の仕組みについてはやめて、単に「文字をサーバーに送る」ということについて考えてみる。
googleの窓に入力した検索文字は、googleのサーバーに送られ、サーバーでは、そこに蓄えられたデータから結果を返す。
この際の「検索文字」は、ネット越しにサーバーに送られる際に、0と1で表される。
上記の例の場合の、「文字をサーバーに送る」というのが「高水準」で、それを低水準で表すと「文字を0と1で表して送る」ということになる。
ここでの「文字を0と1で表して送る」というものもまだまだ高水準で、それよりもまだまだ低水準な表し方があるのだが。
コンピューターでプログラムをする際には、「低級言語」と「高級言語」というものがある。
「低級言語」は初心者向けで簡単、「高級言語」は上級者向け、というわけではない。
「低級言語」は安くで手に入るが、「高級言語」は高く、桐の箱に入っている、というわけでもない。
ここでの「低級」は上記で書いた「低水準」と同義で、より基本動作に近い処理を扱う言語である。
たとえば「a+bを計算してcに代入する」という処理を考えた場合、「まずメモリの◯◯番地(メモリには番地が決められている)にaの値を置き、△△番地にbの値を置き、それらを足した結果をXX番地に書く」というように、非常に面倒くさいことをする。行数にすれば、これだけの処理でも数行書くことになる。
その最も低級言語に当たるプログラム言語では、実際にコンピューターのハードウェア上でされている処理をそのまま書くので、「機械語」という。
この機械語の低水準な処理を積み重ねることによって、より人間に分かりやすい言語にしたものが「高級言語」である。上記の「a+bを計算してcに代入する」というのは単に「c=a+b」と一行で表される。
「高級言語」で書かれたプログラムは、「低級言語」に翻訳され、最終的には「機械語」に翻訳された後に処理される。つまり「c=a+b」という高級言語で書かれたプログラムは、最終的には上記の「まずメモリの◯◯番地にaの値を置き」というものに翻訳されて処理されるのである。
言語の低級、高級は2つに分かれるというわけではなく、高級言語の上位にはさらに高級な言語があったりする。
たとえばオブジェクト指向言語というものは、コンピューターの基本的な処理からはかなり飛躍し、プログラマーがより抽象的にプログラミングをすることができるようなものである。
このオブジェクト指向言語も、低級言語に翻訳され、最終的には最も低水準な機械語に翻訳されて処理される。
より複雑に見えるものごとも、その低水準では非常に原始的で単純な原理によって成り立っており、それを積み重ねることによって複雑なものが構成されている。
コンピューターの基本動作により近いもの程、「低水準」と呼ばれ、その逆が「高水準」と呼ばれる。
例えば、、、
インターネットで何かを検索する時に、googleに検索文字を入力して結果を待つ、ということをする場合の裏でされていることについて考えてみよう。
話が難しくなりすぎるとアレなので、とりあえずは検索の仕組みについてはやめて、単に「文字をサーバーに送る」ということについて考えてみる。
googleの窓に入力した検索文字は、googleのサーバーに送られ、サーバーでは、そこに蓄えられたデータから結果を返す。
この際の「検索文字」は、ネット越しにサーバーに送られる際に、0と1で表される。
上記の例の場合の、「文字をサーバーに送る」というのが「高水準」で、それを低水準で表すと「文字を0と1で表して送る」ということになる。
ここでの「文字を0と1で表して送る」というものもまだまだ高水準で、それよりもまだまだ低水準な表し方があるのだが。
コンピューターでプログラムをする際には、「低級言語」と「高級言語」というものがある。
「低級言語」は初心者向けで簡単、「高級言語」は上級者向け、というわけではない。
「低級言語」は安くで手に入るが、「高級言語」は高く、桐の箱に入っている、というわけでもない。
ここでの「低級」は上記で書いた「低水準」と同義で、より基本動作に近い処理を扱う言語である。
たとえば「a+bを計算してcに代入する」という処理を考えた場合、「まずメモリの◯◯番地(メモリには番地が決められている)にaの値を置き、△△番地にbの値を置き、それらを足した結果をXX番地に書く」というように、非常に面倒くさいことをする。行数にすれば、これだけの処理でも数行書くことになる。
その最も低級言語に当たるプログラム言語では、実際にコンピューターのハードウェア上でされている処理をそのまま書くので、「機械語」という。
この機械語の低水準な処理を積み重ねることによって、より人間に分かりやすい言語にしたものが「高級言語」である。上記の「a+bを計算してcに代入する」というのは単に「c=a+b」と一行で表される。
「高級言語」で書かれたプログラムは、「低級言語」に翻訳され、最終的には「機械語」に翻訳された後に処理される。つまり「c=a+b」という高級言語で書かれたプログラムは、最終的には上記の「まずメモリの◯◯番地にaの値を置き」というものに翻訳されて処理されるのである。
言語の低級、高級は2つに分かれるというわけではなく、高級言語の上位にはさらに高級な言語があったりする。
たとえばオブジェクト指向言語というものは、コンピューターの基本的な処理からはかなり飛躍し、プログラマーがより抽象的にプログラミングをすることができるようなものである。
このオブジェクト指向言語も、低級言語に翻訳され、最終的には最も低水準な機械語に翻訳されて処理される。
より複雑に見えるものごとも、その低水準では非常に原始的で単純な原理によって成り立っており、それを積み重ねることによって複雑なものが構成されている。