コンピュータサイエンスにおける基礎的概念
最近ACM(The Association for Computing Machinery)とIEEE−CS(The Institute of Electrical and Electronics Engineers, Computer Society)では,合同の作業部会において,1991年版の計算機分野カリキュラム案(Computing Curricula.以下,”CC'91”と記す)を作成,発表した.
このカリキュラム案は計算機分野の専門教育を主たる対象としているが,その内容は一般情報処理教育のあるべき姿についても多くの示唆を含んでいる.特に計算機分野の基本的発想を纏めた頻出概念(Recurring Concepts)の節は,将来計算機分野を専門とするつもりのない学生にも是非伝えたい計算機分野の知的財宝を,圧縮した形で明らかにしたものとして大いに有用である.これは計算機分野に絶えず登場する概念を12項目挙げたものであって,コンピュータサイエンスの専門家にとっては「そうだ,それがおれたちの発想だ.そいつが分かっていないやつは同業者と認めたくない」と言いたくなる内容である.
ここでは,CC'91における12頻出概念について,その定義と,「情報科学MS教室」において言及した具体例とを述べる.
1.付加(Binding)
a)定義
抽象概念に余分な性質を付け加えることによって,それをもっと具体的にすること.
b)具体例
「ファイルに構造を与える.」
・ワープロで作ったファイルは,「一般のファイル」であると共に,「文書ファイルである」という余分の性質を持っている.
・表計算ソフトで作ったファイルは,「一般のファイル」であると共に,「表ファイルである」という余分の性質を持っている.
・ワープロで作ったファイル及び表計算ソフトで作ったファイルは,それぞれ固有の性質を持っており,付加(Bind)された構造間の変換を経て,初めて相互に利用可能なものとなる.
2.大規模問題の複雑さ(Complexity of large problems)
a)定義
問題の大きさが増すにつれて複雑さは非線形的に増大し,大規模問題は小規模問題とは複雑さが質的に異なった問題となること.
b)具体例
「コンピュータネットワーク構成の拡大につれて接続方法を変える」
・1セグメント以内コンピュータのイーサネット接続によるネットワーク構成
・複数セグメントのリピータ接続によるLAN構成
・複数LANのゲートウエイ接続によるWAN構成
3.概念的及び形式的モデル(Conceptual and formal models)
a)定義
アイディアまたは問題を定式化したり,特徴づけたり,視覚化したりそれらについて考えたりするための,種々の方法
b)具体例
「システムをその4大構造に着目して理解・制御する」
・考察の対象を幾つかの構成要素からなるシステムとして捉える.
・人間を構成要素に含む全てのシステムは,階層構造,フィードバック構造,有界構造,累積構造の4大構造をもつ.
・そのようなシステムは,これらの構造を巧く捉えて取り組めば理解及び制御が容易となる.
4.無矛盾性と完備性(Consistency and completeness)
a)定義
矛盾性及び完備性の概念の計算機分野における具体的実現形式.正当性,頑丈さ,及び信頼性のような関連する概念を含む.
b)具体例
・「ALメール(ベータ版)」で,マニュアル通り操作すると,ある操作をしたときエラーメッセージが出る.メッセージによって,正常に送信されたりされなかったりする.
→”矛盾性”があり,”信頼性”がない.
・数年前,インテル社製の中央処理演算装置(CPU)において,ある特定の3つの数字にある特定の演算を行ったときエラーが生じるということが判明し,世界中で話題になったことがある.
→”完備性”も全体的な”信頼性”もない.
しかし,「その3つの数に関わらない範囲では,完備性も信頼性もある.」
・多くの市販ソフトウエアの「アップグレード」においては,機能の充実と共に,以前のバージョンにおいて商品販売後発見されたバグ(プログラムエラー)を修正している.
→「神様のレベル」から見れば,矛盾があり,完備性も信頼性も十分ではない.
5.効率(Efficiency)
a)定義
空間,時間,金銭,労働力等のような資源に関する,コストの尺度
b)具体例
・表計算ソフトにおける「検索」,「並べ替え(整列)」の効率的な手順の構築
→少量データと大量データとでは手順は異なったものとなることが多い.
・ワープロソフトにおける「かな漢字変換」,「スペルチェック」,「文章チェック」,「単語数カウント」の効率的な手順
→完璧を期すと思えば,その手順の構築は容易ではない.
・各種の自然言語翻訳プログラムにおける翻訳手順
6.進化(Evolution)
a)定義
変化という事実と,それによって生ずる影響
b)具体例
・パソコンハードウエアにおける記憶容量,CPU演算速度(クロックタイム)の進化
・ワープロソフト,表計算ソフトにおける操作性や参照辞書の進化
・インターネットにおける文字限定送信からマルチメディア送信への進化
7.抽象化のレベル(Levels of abstraction)
a)定義
計算機分野における抽象化の特質と利用.複雑さを管理し,細部を隠し,繰り返し表されるパターンを把握するために抽象化を利用すること.ある実体またはシステムを詳細性及び特殊性に関して,多様なレベルで表現するという能力.
b)具体例
・コンピュータシステムを構成する,ハードウエア,機械語プログラム,コンパイラ言語プログラム,アプリケーションプログラム等の階層構造
・アプリケーションソフトにおけるコマンドの階層構造
→アップグレード時においては変更が必要な階層内事項に注意を集中する.
・プロトコルにおける階層構造
8.空間における順序(Ordering in space)
a)定義
計算機分野における局所性と近接性の概念.この概念には,ネットワーク上,記憶装置上の物理的位置に関するもののみならず,組織上の位置(例えばプロセッサ,プロセス,型の定義及びそれに付随する演算)並びに概念的位置(例えばソフトウエア上の有効範囲,結合,及び擬集性)に関するものが含まれる.
b)具体例
・アプリケーション間データ接続におけるOLE(Object Linking and Embedding)
Linking→大域性 Embedding→局所性
・アプリケーション間データ交換におけるクリップボードとドラッグアンドドロップ
クリップボード経由 →組織内の一装置経由の交換
ドラッグアンドドロップ →直接的な交換
・Microsoft Word における書式情報の局所性
改行記号に多くの書式情報を含むが,それはその改行記号の及ぶ範囲の段落においてのみ有効(局所性).しかし,書式の「環境設定」は全域的に有効.
9.時間における順序(Ordering in time)
a)定義
事象の生起順序における時間の概念.これは古典的な数学が,必ずしも十分に開発してくれなかった概念である.時間の順序が間違ったために,ことの成否が左右されるという事例は数多くある.
b)具体例
・操作における「可換性」の存否の場面
二つの操作A及びBがあり,操作Aを実施後に操作Bを施した結果B・Aと操作Bを実施後に操作Aを施した結果A・Bとが等しい場合,操作A及びBは「可換である」という.
表計算において,行と列の和は可換である.クリップボードにおける記憶は非可換である.
・パケット交換におけるパケットの到着順序
10.再利用(Reuse)
a)定義
特定の技術,概念,またはシステム構成要素が,新しい文脈または状況において再び利用できるかどうかという問題である.あまり細かいものを再利用しようとするとかえって損である.再利用するものについては巧く名前を付けておくこと(Binding)が大切である.
b)具体例
・ワープロ,表計算ソフトにおける文書の入力や編集(複写,貼り付け)
・表計算ソフトにおける等差数列利用の入力
・電子メールにおける返信操作
11.保安性(Security)
a)定義
ソフトウエアシステム及びハードウエアシステムが,不適切または予想外の要求を受けたときに適切に応答し,かつ自らを守るという能力.計算機システムが破滅的な事象(例えば自然災害やサボタージュの企て)に耐える,という能力.
b)具体例
・インターネットにおけるハッカーやコンピュータウイルスからのコンピュータシステムの保護→ファイウォールの設置
ファイウォール(Fire Wall)
企業内LAN等を不正進入から保護するシステム.インターネットと企業内LANの間に設置する.
・インターネットにおける情報転送の暗号方式
暗号方式
暗号文の形で情報をメモリーに格納したり,通信回線上で転送することにより,情報を保護する方式.慣用鍵暗号式と公開鍵暗号方式とに大別される.
・コンピュータの不正使用を防止するためのパスワードの利用,ファイル利用権の設定
・突然の停電等に備える作成中文書の自動保存機能
・コンピュータの誤操作によるインストールソフトの破壊を防止するメモリー保護措置
12.トレードオフ及びその影響(Trade-off and consequences)
a)定義
計算機分野におけるトレードオフの現象と,そのようなトレードオフがもたらす結果.幾つかの設計のうちから一つを選ぶことによてもたらされる技術的,経済的,文化的効果,及びその他の効果.
b)具体例
興味あるトレードオフの例は,ほとんど至る所に見出すことができる.
・ワープロにおける文書入力において,ひらがなから漢字への変換タイミング
短い入力で変換すると変換回数が多くなる.
長い入力で変換すると同音異義語の変換ミスの漢字数が多くなる.
・文書入力における「上書き保存操作」のタイミング
少量入力文ごとに「上書き保存操作」をすると操作回数が多くなる.
多量入力文ごとに「上書き保存操作」をするとハングアップ等の棄権が多くなる.
・計算機システムにおいて記憶容量を多くすると処理速度を早くすることができるが,そうすると価格が高くなり経済的面でコンピュータを利用しづらくなる.
以上