第二回-01 用語を正しく覚えよう

本ページでは、プログラミングに関連する用語を、皆さんが正しく利用できるよう解説する。
「皆さんが正しく利用できるよう」と書いたのは、用語を正しく利用できない学生がこれまで多かったためである。

用語解説1:プログラムとプログラミング

本講義はプログラミングについて学ぶのであるから、
「プログラム」および「プログラミング」という二つの語を正しく理解して使い分けられるようになって欲しい。
あらかじめ言っておけば、この二つの語を正しく使い分けられない学生は例年あまりにも多い。

プログラム <名詞的な用法>
コンピュータがすべき処理を記述したもの。
先週皆さんが作成したのは「コンピュータに文字を表示させるプログラム」である。

<動詞的な用法>
使用例: 「新機能をプログラムする」
プログラミング <名詞的な用法>
プログラムを書くこと。プログラムを作成すること。

<動詞的な用法>
使用例: 「新機能をプログラミングする」

「プログラム」は英語の program である。program には名詞と動詞の用法があることを上の解説は意味している。
一方、「プログラミング」の方は英語で言えばprogramming であり、こちらには動名詞としての用法と、動詞 program の現在進行形としての用法がある。

以上を知れば、これら二つの言葉の使い分けは特に難しくないはずである。
しかし、この二つを混同する学生は例年後を絶たない。特に、「プログラミング」の用法を間違う学生が多い。
学生が誤りがちな使用例を以下に示す。同時に正しい使用例も示す。

誤った使用例 プログラミングを書く。
このプログラミングは画面に文字を表示する。
正しい使用例 プログラミングを習得する。
プログラミングは楽しい。
プログラミングする。

混乱してきただろうか?

まず、「プログラミング」には <名詞的な用法> と <動詞的な用法> があるのだった。
<名詞的な用法> の場合の意味は「プログラムを書くこと」なのであるから、
「プログラミング」という語を「プログラムを書くこと」に置き換えても文が不自然にならなければ、
その「プログラミング」の <名詞的な用法> は正しいと言えるだろう。

上の「誤った使用例」で置き換えを試してみたのがこちら。なぜ「誤った使用例」と言われるのかわかるであろう。

誤った使用例で語の置き換えを試してみる プログラムを書くことを書く。
このプログラムを書くことは画面に文字を表示する。

ただし、語の置き換えをする場合、「プログラミング」には <動詞的な用法> があることも忘れないようにしなければならない。
正しい用法である「プログラミングする。」に対しては置き換えがうまくいかないが、これは <動詞的な用法> なので問題ないのである。


用語解説2:ソフトウェアとハードウェア

「プログラム」と似た語に「ソフトウェア」がある。この語についても簡単に解説しておこう。

「ソフトウェア」とは、「ハードウェア」と対比して用いられる語である。

ハードウェアとは、皆さんが使っている PC 、スマートフォン、タブレットなどのコンピュータのうち、
(手で触れるような) 物理的な実体を持つ部分を指す。
それに対し、ハードウェア上で動作するものがソフトウェアである。

文脈によっては、「ソフトウェア」は上で解説した「プログラム」と同じ意味で使われることがある。
この使い方では、先週皆さんが作成したのは「コンピュータに文字を表示させるソフトウェア」ということになる。

ただし、一般的には「プログラム」よりも「ソフトウェア」の方が広い概念である。
「ソフトウェア」という用語は、「Microsoft Office」のようなオフィスソフトや、
「Windows 10」のようなオペレーティングシステム (後であらためて触れる)
のように規模の大きなものを指すことが多い。

これらの「Microsoft Office」や「Windows 10」は、「プログラム」というよりは、
「複数のプログラムの集合体」と言った方が適切である。
「プログラム」よりも「ソフトウェア」の方が広い概念、とはそういう意味である。


用語解説3:アプリケーションソフトウェアとシステムソフトウェア

恐らく皆さんは、ソフトウェアのことを「アプリ」と呼ぶことが多いのではないだろうか。
「アプリ」とは何なのかについても簡単に解説する。

先程「ソフトウェア」という語を紹介したが、「ソフトウェア」は下記の二種類に分類される 想像がつくかもしれないが、「アプリ」とは「アプリケーションソフトウェア」の略である。「アプリケーション」と略されることもある。

ここまでに登場した語を表にまとめたのが以下である。混乱を招かないように覚えてしまうことを勧める。

ハードウェア
ソフトウェア
 プログラムの集合体
 プログラミングにより作られる
アプリケーションソフトウェア (応用ソフトウェア)
 アプリとも呼ばれる
システムソフトウェア
 オペレーティングシステム (OS、基本ソフト) はここに分類される



用語解説4:プログラミングを学ぶ際に登場する用語をまとめて紹介

さて、先週皆さんは C/C++ という言語を用いた1行のプログラミングにより「コンピュータに文字を表示させるプログラム」を作成し実行した。
(この一文で「プログラミング」と言う語と「プログラム」という語が使い分けられていることにも注意)

ここでは、プログラムを書いてから実行されるまでにどのような作業が行われるかを Windows を例にとって簡単に紹介する。

C/C++、特に C++ ではプログラムを書いたら「cpp」という拡張子をもつ名前で保存することが多い。
ファイル名の末尾にピリオドで区切って付加された「cpp」の部分を「拡張子」と呼ぶので知らなかった学生はここで覚えてしまおう。

そして、皆さんが書いたプログラムは、コンピュータが実行できるように変換され、その結果多くの場合 exe という拡張子を持った実行ファイルが作成される。

拡張子 cpp の C/C++ プログラムが拡張子 exe の実行ファイルに変換されるまでに、
典型的には下図のように「コンパイル」、「アセンブル」、「リンク」という三段階を経る。



それぞれ以下の意味がある。 なお、図にも書かれているように、「コンパイル」、「アセンブル」、「リンク」を行うプログラムのことを
「コンパイラ」、「アセンブラ」、「リンカ」という。 (それぞれ英語で書けば、compile、assemble、link、compiler、assembler、linker である)

この三段階の作業をまとめて「ビルド」、「メイク」などと呼ぶことが多い。

また、「C/C++」、「アセンブリ言語」、「機械語」について補足すると以下のようになる。 恐らく本講義で皆さんは苦労して C/C++ プログラミングを学ぶことになるだろうが、
プログラミング学習においては、C/C++ は「人間が理解しやすい」とされていることは頭にとどめておいて欲しい。

また、このようにプログラムを実行する前にコンパイル作業等が必要になる言語を コンパイラ型言語と呼ぶことがある。
コンパイラ型言語には他に Java、C# などがある。

なお、一般にコンパイラ型言語はコンパイル時に最適化を行うので、
次に見る「インタープリンタ言語」で書かれたプログラムよりも動作が高速であることがほとんどである。
Visual Basic で書かれたプログラムよりも C/C++ で書かれたプログラムが高速であるのはこのためである。



上記のようなコンパイラ型言語は、多くの方にとっては今回初めて触れるのものではないだろうか。
皆さんにとって馴染みが深いのは、Basic や VBA に代表されるインタープリタ型言語であろう。

インタープリタ言語とは、書いたプログラムが実行時に一行ずつ解釈されながら実行される。
そのため、コンパイラ型言語に比べて実行速度は遅い



ただし、インタプリタ型言語でもコンパイルが全く行われないわけではなく、 実行時に文法解釈やコンパイルが行われることが多い。

1年生時に学んだ Visual Basic for Applications においても、 文法上間違えたプログラムを書いた場合、
実行時に以下のようなコンパイルエラーが出たはずである。
これは、インタープリタ型言語である VBA でも実行時にコンパイルが行われていることを意味している。

インタープリタ型言語の代表例としては、Basic の他に JavaScript や Python などがある。





←第一回課題第二回-02 プログラムを実行するとはどういうことか→

非情報系学生のための C/C++ 入門に戻る