この教科書のソフトウェアの分類は独特なので注意を要する.
アプリケーションソフトウェアは 1節の図2.1で示されているように 常時動作しているオペレーティングシステムとは違い,目的ごとに 適切なものを選んで動作させたり終了したりするソフトウェアである.
ワープロソフトや表計算など,いろいろな業務で共通して利用することを 想定したソフトウェアを共通アプリケーションソフトウェアといい, ある企業の給与計算のために作成されたアプリケーションソフトウェアのように 特定の業務の目的のために開発されたソフトウェアを 個別アプリケーションソフトウェアという.
共通アプリケーションソフトウェアが開発ツールとオープンソースソフトウェアに 分けられる,というのはこの教科書の独自見解なので注意が必要である. 開発ツールとオープンソースは対立する概念ではない. NetBeansなどの オープンソースソフトウェアの開発ツールが存在する.
「開発ツール」は一般的にはソフトウェアを作成するためのツールのセット をさす.この教科書ではオフィスソフトやブラウザをさすようだが, 教科書の次の節にも書かれているようにそれらには OpenOffice, Firefoxなど オープンソースのものも存在する.
「オープン」とは公開されている,隠されていない,という意味であり, 「ソース」はプログラム(ソースコード)のことである. オープンソースの文字通りの意味は ソースコードが公開されている,であるが,改変・拡張,再配布など, もっと広い利用の自由が正式に許可されている.
ソースコードを読めばそのソフトウェアで実現されている 技術の内容を知ることができる.オープンソースでないソフトウェアは 技術を知られるのを嫌ってソースコードを公開せず,コンパイル後の 実行ファイルのみ提供する.
オープンソースソフトウェアは一つの文化のような側面をもち, ソフトウェア技術を公開し,改良していくことで技術の進歩を 促進させようという理念がある.
個別アプリケーションソフトウェアはソフトウェア制作業者が 注文を受けて,業務内容に合わせた専用のソフトウェアを作成して 納品する,という流れで作られる.
業務内容,手順は業務ごとに異なるのでソフトウェア制作業者に 業務内容,手順を正確に伝えなければならない.仕様書や 教科書p.115図10.1のような流れ図などを用いて意思の伝達が 行われる.
「高水準」言語とは書式が人間にとって理解しやすいように 作られている言語である.if や while といった英語に近く, 理解しやすい文法でソースコードを書くことができる.
「低水準」言語とはプロセッサの構成に合わせた書式で プログラムを書く言語である.人間にとっては記述しにくい がプロセッサの特性に合わせたプログラミングができるので 熟練者がプログラミングを行うと高速なプログラムの作成 が可能である.
コンピュータは機械語で書かれたプログラムに従って処理を行う. 機械語ではどんな処理をするかをビットパターンで示す. 例えばあるプロセッサでは アキュムレータ(計算用レジスタ)に主記憶からデータを読み込む命令を "10101101"とする,というように決められている.
ビット列の組み合わせは覚えにくいため,ビット列を人間が書くことで プログラムミングを行う機械語でのプログラミングは困難である.そこで, 機械語のビット列にその処理の内容を表すアルファベットの単語を 対応させることが行われた.例えば "10101101" は アキュムレータ(A)に にデータをロード(LD)する命令なので "LDA" というような単語を対応させた. プログラマはビット列ではなく "LDA" などの比較的覚えやすい アルファベットでプログラムを書き,アセンブラと呼ばれる変換プログラム で機械語のビット列に変換して実行することが行われた.LDA などの 命令語(ニーモニック)を用いてプログラミングを行うことを アセンブリ言語でプログラミングを行うという. アセンブリ言語では機械語とアルファベットの命令語がほぼ一対一に対応することが 特徴である.
アセンブリ言語によるプログラミングはプロセッサの構造を理解していないと プログラミングができない.そこで,プロセッサの構造を意識せず,if や while のような自然語に近い文法でプログラムを記述し,コンパイラにより そのプロセッサに適したアセンブル言語,機械語に変換して コンピュータで実行する,という方法が考えられた. この自然後に近い文法でプログラミングできる言語を高水準言語という. 高水準言語では1行の命令が多数の 機械語命令に変換されることが一般的である.
教科書p.115表10.1でプログラミング言語の分類が示されているので 確認すること.
教科書p.117図10.3では高水準言語で書かれたプログラムの 処理手順が説明されている.実際にはこのように コンパイルのあとに連携編集(リンク)を行ってはじめて実行可能な ロードモジュールがえられる.
大規模なソフトウェアを作成する場合, いくつかの機能ごと(モジュールとよばれる)に プログラムをわけて作成することが行われる. 例えばデータベースへのアクセスなど,いろいろなプログラムで よく使われるモジュールは流用できると開発効率が良い.
このため,プログラムをモジュールごとに 分けてコンパイルしておき,連携編集で必要なモジュールを 連携させて実行可能なロードモジュールにする方法がとられている.