本節の目的
一般的なコンピュータプログラミングとはどういうことか認識すると同時に、
JavaScriptを用いたプログラミングの特徴について学習します。
プログラミングとは。プログラムとは。
今回は、JavaScriptによるプログラミング入門が主な内容ですが、プログラミングとは一体どんなことでしょう? プログラミングとは、「(コンピュータ)プログラムを作ること」です。単純ですね。それでは、(コンピュータ)プログラムとは何でしょう?
コンピュータの世界でプログラムとは、
のことです。
前回、マウス操作で鯛の絵と骨の絵を入れ替えるというWebページを作りましたが、そこで利用したJavaScriptの関数(メソッド)も、れっきとしたプログラムです。
ただ、上の「プログラムの定義」をよく見ると、プログラムとは単なる手順書では無く、次の2つの事柄から成り立っていることが分ります。
- コンピュータに行わせたい処理を記述した手順書
- コンピュータの分る言葉(言語)で記述した手順書
1.は、当然ですね。 実際には、コンピュータがもっている様々な機能を上手に組み合わせて、 我々が必要とする処理を実現します。
それでは、2. の「コンピュータの分る言葉(言語)」とは、いったい何でしょう?JavaScript言語のことでしょうか?これについて、次の節で説明しましょう。
機械語とプログラミング言語
前節の最後の問である 「コンピュータの分る言葉(言語)とは、いったい何?」の答えは、「機械語と呼ばれる数字で表された言語です」となります。言い方を変えてもっと正確に表すと、
コンピュータは、「機械語」と呼ばれる数字で表された命令(指令)しか理解できない
のです。つまり、コンピュータ自身は一種類の言語しか理解できないのです。
例えば、あるコンピュータの機械語のプログラムは、次のようになります(ただし、数字は16進表記されています)。
b8 41 00 ba 42 00
これでは、我々人間には何のことか分りませんよね。ところが、コンピュータはこのような(数字で表された)言語しか理解できないのです。
ちなみに、上記のプログラムは、16進の「41」をAXと名付けられた記憶領域に入れ、 次に、16進の「42」をDXと名付けられた記憶領域に入れるというものです。 ただし、上記のプログラムを我々が見ても、AX や DX という名前はわかりませんが、 上記の機械語が理解できるコンピュータでは、ちゃんと記憶領域の名前がわかります。
上記のプログラムだけでは意味はありませんが、これらの組み合わせで実用的なプログラムは構築されています。
更に、「機械語」は、(CPUと呼ばれる)コンピュータの中枢部の種類により 全く異なります(日本語と英語が異なるように)。
つまり、
「機械語」でプログラミングを行うには、コンピュータごとに「独自の機械語」を習得する必要がある
のです。
「数字だけで指示を出さなければならない」ということだけでも、 やる気が出ないのに、これでは、プログラミングなんか誰もやりませんよね。
そこで、 「人間の使っている(自然)言語から類推される、人間にとってわかりやすい命令の集まりをつくり、それを体系化すると同時に、それらの命令で書かれた処理の集まりを機械語に変換する仕組みを作る」ことにしたのです。 この命令体系のことを、「プログラミング言語」と呼びます。
つまり、
「プログラミング言語」とは、「機械語」に翻訳する仕組みをもった、人間にとってわかりやすい命令体系
ということになります。ですから、通常「プログラム」は、我々の理解し易い「プログラミング言語」で記述するだけでよく、後は、機械語へ翻訳するプログラムに任せれば、コンピュータの(唯一)理解できる言語である「機械語」ができあがることになります。
プログラミング言語は、歴史的な経緯や目的に応じて、様々なものが開発されています。ですから、一般的には必要に応じて、それに適したプログラミング言語が選択されています。JavaScriptもプログラミング言語の一種ですが、これは、Webページ作成に特化されたプログラミング言語です。
ところで、JavaScript言語は、翻訳方法や実行方法が、通常のプログラミング言語とは少し異なります。その違いについて次に説明します。
プログラミング言語の作成と実行
プログラミング言語を用いてコンピュータに処理をさせる大まかな流れは、一般的には下図のようになります。
1.が、「プログラミング」のステップにあたるところです。このステップで、コンピュータに何をどのように処理させるかを決めます。 実際のプログラミングは、前回JavaScriptの定義を書いたように、 秀丸などのエディタで、必要な処理を記述しファイルに保存します。
2.では、1.で作成したファイルを、翻訳プログラムに通して、 「機械語」へ翻訳(変換)します。
最後に、翻訳された「機械語」のファイルを実行して目的を果たします。 「機械語ファイルの実行」は、 そのファイルのアイコンをダブルクリックすることで実現できます(上図の 3. を参照)。
実習室のPCでFirefoxのアイコンをダブルクリックすると、Webブラウザが起動しますが、このFirefoxのアイコンが、 翻訳された機械語のファイルを表しているのです。Firefox Webブラウザのプログラミングは、Firefoxを作成しているコミュニティの構成員が、翻訳プログラムを通して機械語のプログラムファイルにして動作を確認した後に、その機械語プログラムファイルだけが配付されています。
いま説明しましたように、プログラミング言語を利用してコンピュータに処理をさせるときには、一般的に、2つのファイルを作成することになります。一つは、プログラミング時にエディタ等で作成するファイルで、もう一つは、そのファイルを機械語に翻訳したものです。 通常、前者を「ソースプログラムファイル」、後者を「実行形式プログラムファイル」と呼びます。これらは、省略して「ソースプログラム」「実行形式プログラム」とか、「ソースファイル」「実行形式ファイル」などと呼ぶこともあります(下図参照)。
ところが、プログラミング言語によっては、実行形式プログラムを 「ファイルとして作らないプログラミング言語」があります。実は、皆さんが前回から使っているJavaScriptも、実行形式のプログラムファイルを作らないプログラミング言語なのです。
JavaScriptによる処理の流れを下図に示します。
図からわかるように、JavaScriptを使った処理では、機械語への翻訳と翻訳されたプログラムの実行は、Webブラウザが行います。そのため、エディタでJavaScriptのプログラミングを行い、その中で定義した処理をHTMLファイルで指定するだけで、準備はおしまいです。後は、そのHTMLファイルをWebブラウザで表示させることで、JavaScriptで記述したプログラムが、Webブラウザ内部で自動的に機械語に翻訳され、指示通りの処理が行われることになります。
コンピュータの特性によるプログラミング上の注意
変な言い方かもしれませんが、コンピュータは、指示されたことを真面目に指示通りに行う「ばか」が付くほど「真面目」な機械です。そのため、指示を行う人の「指示する予定の(指示したつもりの)内容」と、「実際に指示した内容」が微妙に異なることで、トラブル(不都合)が発生します。
プログラミングを行うことでコンピュータに指示を出す際(いわゆるプログラミングを行っている際)に、「コンピュータは、指示通りに動かない!」と思えることがよくあります。ところが、「コンピュータが思った通りに動作しない」場合のほとんどは、「実際にコンピュータに指示した(ソースプログラムの)内容が、コンピュータに指示すべき(指示したつもりになっている)内容と違っている」のです。
つづりの間違えや些細な文法ミスに対して、「それくらい分るだろう」と思っても、コンピュータは分ってはくれません。 真面目(厳格)ですから、指示されたとおりにしか動作しません。文法ミスなどは厳しくチェックされます。
うまく動作しないときは、じっくりソースプログラムを確認して、間違えを探す努力をしてください。
Copyright (C) Kenichi Sugitani 2008, All Rights Reserved