21 世紀アセンプラ L オプジェクト指向プログラミングの利点を ちょっとしたくふうでアセンプリ言語でも 21 Century AssembIer GUAGE 提携記事 LANGCAGE 椒解 rO 物、圏 A 員一 ( ー引望年 0 田物狂 WS ・ 1 え E ( 眠 ・ JAXE 餤 u 新 : 5 5 種 u 鱸 第純 iN 田 E ー 第日 0 側 C れⅥ マイケル・トウトンギ / 岩谷宏訳 (COMPUTER LANGUAGE, June 1990 ) 享受できます アセンプリ言語は , その本質からして , オプジェクト指向言語の対極にあるものて、 あり , その表現の自由 , レジスタ使用の自 由 , そして制御の流れの自由は , オプジェ クト指向という制約のもとてはとうてい実 現て、きないパワーの源泉てある , と多くの プログラマが主張するて、しよう。 これに対して , 私は , 「そんなのデタラメ だ / 」と反論します。ここて、ご紹介する , オ プジェクト指向の拡張によれば , 十分に柔 軟て、効率的な設計が可能て、あり , アセンプ リ言語による開発プロジェクトのほとんど すべてを , 強化しこそすれ , 妨害するもの て、はないのて、す。 最近まては , 明確なオプジェクト指向プ ログラミングは , 高級言語のプログラマに だけ可能て、した。私は , オプジェクト指向 プログラミングが , アセンプリ言語による 開発にも役に立っことを述べ , 最良のオプ ジェクト指向言語に採用されている機能を , マクロやコード構成の一定の約束事 (conventions, 規約 ) て、もって , 実現て、きる ことを示したいと思います。 20 CMAGAZINE 19 囲 11 マクロなどの方法によって , オプジェク トの定義やデータの pub ⅱ c と P 「 ivate への指 定 , オプジェクトの継承 , ノヾーチャルメソ ッド , 非バーチャルメソッド , インライン メソッドなどが実現て、きます。また , オプ ジェクト型の自動的な初期化 , ローカルお よびグローバルの定数の定義 , スマートリ ンキング機能 , そして定義したオプジェク トのライプラリへの自動リンクなども実現 て、きます。 アセンプリ言語に固有の , 表現の自由 , レジスタ使用の自由 , そして制御の流れの 自由は , 高級言語にはないパワーと効率を なえてくれます。残念なことに , ほとんど のプログラマが , アセンプリ言語に , C 言語 や Pascal, あるいはオプジェクト指向言語 を使う場合以上に , 構造を強要しようとし て , 時間を空費しています。アセンプリ言 語用のオプジェクト指向プログラミングを 開発することの , 裏面にある目的は , プロ グラムの自由を禁ずることて、はなく , 各コ ードモジュールを無理して構造化すること によって , コードを再利用て、きるようにし リライトを容易にするという , 作業 たり , の辛い重荷からプログラマを解放すること て、す。 田考を ターする 私たちの多くはそのことに気づいていま せんが , 実は良質なプログラマは , オプジ ェクト指向の技法をいつも利用しています。 サプルーチンのライプラリをオプジェクト とは呼びませんが , しかしそれは通常 , 隔 離収容 (encapsulation) と継承という , オプ ジェクト指向の概念に合っています。良質 なサプルーチンライプラリて、は , 変数を直 接に変更することはなく , 関数コールを介 して , 必要に応じて内部のデータを変更し ます。さらに , 低レベルのサプルーチンラ イプラリを構築して , それに基づく高レベ ルの関数を作るときは , その低レベルライ プラリのデータと機能性を暗黙裡に継承し ているのて、あり , したがって , 子孫を作っ ているのて、す。
0 0 ているため , 流れがきわめて自然て、ある。 C 十十は , システム記述言語として広く使 今まて、オプジェクト指向の概念を知らなか われている C 言語を拡張したものて、 , 大規模 った人にも , なじみやすいと思われる。 プログラミングに適したオプジェクト指向 言語て、あるにもかかわらず , 静的コンパイ 本書は 8 章からなり , 演習の解答や補足を ルによって C 言語同様に高い実行効率が得ら 含めて 300 頁強と , 比較的コンパクトにまと れる言語として , 高く評価されている。 まっている。 とくに近年 , ワークステーション上ては 第 1 章て、は , C 十十のデータ型について説 GNU プロジェクトの一環として開発された 明されている。 C 言語のデータ型の復習を行 フリーソフトウェアて、ある GNU C 十十 ったあと , クラスや参照型についても触れ ( g 十十 ) , パソコン上て、は Zortech C 十十や られている。 Turbo C 十十など , 手に入りやすい処理系 第 2 章て、は , 通常の手続き型プログラミン が増えてきたこともあり , 本格的普及が見 グにおける「抽象的な操作」 , つまり手続き 込まれている。 抽象化の考え方を , のちに出てくるデータ 抽象化の前段階として確認している。その C 十十の参考書としては , すて、に「 The 一環として , 関数の多重定義の概念も導入 C 十十 Programming Language 」 (Addis on Wesley, 1986 年 ) の邦訳「プログラミン されている。 第 3 章て、は , クラスに関連した基本的文法 グ言語 C 十十」 ( 斎藤信男訳 , トッパン , 1988 年 ) が入手て、きる。これは C 十 + の設計者て、 事項に関する詳細な説明が行われている。 第 4 章て、は , クラスの概念を利用して , 「デ ある B. Stroustrup 自身による C 十十言語の ータ抽象化」 , つまり内部構造やその型を操 リファレンスマニュアルて、あり , C 言語にお 作する関数の具体的実現方法を隠し , 使い ける「 The C Programming Language 」 (B. ていることを前提としているのて、 , C 言語と 方だけを外部に公開する , という考え方を 共通する点についての解説はほとんどない W. Kernighan and D. M. Ritchie, また , C 十十の細かい文法に関するフォーマ Prentice Hall, 1978 年 ) , いわゆる K&R に 解説している。 第 5 章て、は , 既存のクラスと共通部分を共 相当する C 十十の「バイプル」て、ある。 ルな記述はいっさい行われていない。その 有し , 相違点のみを記述することによって C 十十プログラミングの際に , 言語仕様に きわめて豊富な実例によって , かわりに 派生クラスを作る , という「継承」の概念を 「このような場合には , どのような概念およ ついて調べるためには , この本は不可欠て、 び記述を用いるのが適切か」ということに的 追加している。 あろう。 第 6 章て、は , どのようにオプジェクトを設 しかしながら , 実際に C 十十て、プログラミ を絞った解説が行われている。 計するか , というオプジェクト指向プログ たんに C 十十の文法て、許されているかどう ングを行うとなると , 従来の単純な手続き かだけて、はなく , 「このような記述は可能だ ラミングのポイントについて説明している。 型プログラミングとは異なり , オプジェク 第 7 章および第 8 章て、は , メモリ管理のカ が , このような理由て、好ましくない」という ト指向パラダイムに基づいた設計およびコ スタマイズや , ライプラリの設計手法など ーディングを行う必要が生じる。「バイプル」 点まて、解説されているのが , 初心者には親 の高度なプログラミング技法について書か に書かれている文法事項の解説だけて、は , 切て、あろう。 初心者にわかりづらいだけて、なく , このオ また , 本書の , れている また , 訳者により , g 十十が標準の C 十十 プジェクト指向特有の概念の習得が困難て、 手続き抽象化 と異なる点 , 掲載プログラムの問題箇所 , ↓ ある。 さらに C 十十 2 . 0 の新しい言語仕様について このために , C 十十プログラミングの方法 データ抽象化 論を解説する参考書として書かれたのが , ↓ の補足が加えられている。 「バイプル」の隣にぜひ置いておきたい この「 C 十十言語入門」て、ある。 という全体の基本的構成は , プログラミン 冊て、ある。 グパラダイムの発展過程をそのままた ' どつ 本書は , 読者が C 言語の知識を十分にもっ 32 CMAGAZINE 1990 11 ・今月の書籍・ ℃十十言語入門」 Programming in C 十十 " C 十十言語入門 STEPKESC. DEWHURST. KATHYT.STARK 共 少山裕用覧下キメントシステム第 Stephen C. Dewhu 「 st, KathY T. Sta 「 k* 小山裕司監訳 , ドキュメントシステム訳 アスキー出版局 A5 判並製 / 3 ロ 5 頁 定価 2 , 3 円 0 二二 継承 ( 吉田英樹 )
SOFT BANK ソフト ^ ンクのベストセレクション ・最新 ANSI C 標準規格に完全対応 詳説 C 言語 H & S リファレンス C 言語プログラマから高い評価を受けている「 C : A Reference M 1 」第 2 版の完訳。 S ・ハービソン & G ・スティール共著定価 4 , 500 円 ・ MS ー C 活用の王道を示す MS-C Ve 「 .5.1 プログラミング クラ、ノグ 基桑作からコンパイラの内部処理まて詳細に解説。 最童化のための手法、 ANSI 準拠のプログラミング作 法なども紹介。石田秋也ほか著定価 3 , 300 円 ・ QuickC の本格的入門書 Quick QuickC Ve 「 2.0 プログラミング 「・ 2.0 ログラミング 主要な機能からライプラリ関数、エラーメッセージ まて、を網羅した全 C プログラマ必携の書。 本田正隆・三浦義武共著定価 2 , 900 円 ・ C STEP UP シリーズ① 上級・ C 言語し用 50 例 上級・ C 言語の応用 50 例 0 画面制餌騙、ディスクドライフ。制御騙ほか大きく 4 つに分け、それぞれくふうを凝らしてプログラムを作成。 上原・中山・石田・井上共著定価 2 , 480 円 ・ C STEP IJP シリーズ② 0 C 十十プロクラミンク 今話題の言語、 C + + の本格的入門書。本書の各項目 をカード別にまとめ、サンカレリストや図版を豊富に 掲載。 門内淳・赤堀一郎共著定価 2 , 680 円 ・ BAS ℃からのアプローチ C 言語の活用理解 具体例を数多く取り上げ、 BASIC の知識を有効に 利用しつつ、 BASIC から C へ順次移行て、きるように 保坂光・若林淳共著定価 2 , 060 円 解説。 ・基本からのアプローチ C 言語の基礎知識 短いけれど実用的なサンプルプログラムを紹介しな がら、 C 言語の基礎知識を解説しています。 門内淳・乗呆智・上原哲郎共著定価 2 , 500 円 ・実践からのアプローチ C 言語の応用 50 例 C 言語を使い 98 上て、どのようなプログラムが作れる のかを、豊富なサンプノイ列によって示しています。 上原・石田・乗松・中山・高木共著定価 2 , 370 円 ・ Turbo C の奥義を示す 下 boC ー Tu 「 bO C Ve 「 .2.0 プログラミング 基本操作はもちろんのこと、内部処理の解析をはじ め、 BGI の活用方法など上級操作も詳細に解誌 井上哲雄・酒井恵光・佐藤隆共著定価 2 , 900 円 ・初級 C 言語講座 PIay the C ( 上・下 ) C を身につけたい、これまて、の解説書て、はもの足り ない、そんな要求に応え C の世界を系統的にとらえ直 して解説。 林晴比古著定価各 1 , 550 円 ・ C 言語の秘められた能力を解き放つ C プリプロセッサ・パワー C 言語の中て、も、とりわけ秘められたパワーをもっ プリプロセッサ機能の潜在能力を使いこなすにはどう すればよいかを解説。林晴比古著定価 2 , 270 円 ・はじめての Turbo C プログラミング Tu 「 bo C 入門 初心者にとってなじみのうすい「 Turb 。 C 開発環境」 をたくみに解説しながら、具体的て示唆に富んだ用法 をも満載。 林晴比古著定価 2 , 680 円 式を 3 い に、日い : 「、け員、 i'll. 詳説 C 言語、 ヨは S りカ・レンスこ OS/2 ・全プログラマ必読 OS / 2 共通規約ハンドブック 規約 フック OS / 2 上て機種依存のないソフトを作成するために誕 生した「共通規約」について詳細に解礼 日本語 MS OS / 2 共通規約ワークショップ著定価 3 , 000 円 ・プログラマ仲間に送る発見の報告 ド 0 卩 OS / 2 プロクラマーズ叭ンドブック [ 上・下 ] 原著「 The Programmer's Essential OS/2 HA- NDBOOK 」の邦訳版。デビッド・ E ・コルテシ著 秋津彰文訳定価各 3 , 500 円 ・ A 曰ごとに C のサンカレプログラムを満載 OS / 2A 曰ブック I ・Ⅱ [ I ] に OS / 2 のカーネルリクエスト、 [ Ⅱ ] にデバイス I/O 、マウス API 、グラフィックマネジャなどを収、乢 坂本浩著定価 [ I ] 2 , 970 円 [ Ⅱ ] 3 , 000 円 近ロ C 尹語の基礎知識 定価はすべて税込です。
Fig. 1 その昔 , 8 ビットが全盛だったころ ( 組み 込み分野ては今て、も全盛なのて、すが ) , ROM 化といえばアセンプラて、記述するのが当た り前て、した。アセンプラて、記述していたお もな理由は 高級言語は冗長なコードが生成される ため速度的に問題がある 高級言語はプログラムサイズが大きく なり , ROM に入りきらなくなる などが挙げられます。最近は高級言語のコ ード生成効率がかなり向上してきており , , 16 ビットが全盛の時代となって , 32 ビット CPU も珍しくなくなりましたから , 上記のような問題はなくなってしまいまし 筆者もその昔 Z80 をメインて、やっていたこ ろは , マクロアセンプラ MACRO ー 80 て、 ROM 化のプログラムをしこたまコーディングし てきましたが , ここ数年は 68000 / 10 / 20 / 30 や 8086 / 286 / 386 などを使用しているため , C 言語て、プログラムを記述して ROM 化して います。 とはいえ , さすがにすべてを C 言語て、記述 しているわけて、はなく , リアルタイムモニ タはオーバヘッドを極力避けるためアセン プラて記述し , 割り込み処理を含めてほか のタスクをすべて C 言語て、記述しています。 C 言語て、記述すればアセンプラと比較して速 度的には確かに不利になりますが , もし , 速度的に問題があれば CPU のランクを上げ ることにより対処て、きます。たとえば 68020 → 68030 16MHz の 80386 → 33MHz の 80386 というようにすればよいわけて、す。この対 処法は量産の場合にはコスト的に問題があ りますが , FA 関連の少量生産品て、はソフト ウェアの負担が軽くなり , 全体としてみれ はし 36 CMAGAZINE ばコストダウンになります。 19 11 プログラムを C 言語て、記述するとデメリッ トもありますが , それよりもメリットのほ うがはるかに大きなウェイトを占めるよう になります。その最大のメリットは アセンプラと比較してステップ数 ( 行数 ) が少なくなり , プログラム自体も構造 化されて見やすくなるため , 開発期間 が短くなり , 開発後の保守もやりやす くなる 点て、す。 ROM 化するような用途て、は一品料 理も多いため , 一度て、き上がればそのまま 保守をしないようなものもあるかもしれま せんが , 通常はバグの修正や次の製品て、の 仕様追加などて、プログラムをそのつど変更 していきます。さらに開発した人間と保守 担当者が違う場合も少なくありません。そ の場合には保守のしやすさは最大のポイン トになります。 このパートて、はこれらを背景にして C 言語 による ROM 化方法の一般を説明していきた いと思います。 C 言語の処理系はクロスコン パイラなども含めると星の数とはいかない まて、もかなりの数になりますが , 本章て、は 筆者が現在使用しており , 読者にも入手が 容易な CP/M-68K C ( ROM 化経験あり ) ( ROM 化経験あり ) MS-C 5 . 1 Turbo C 2.0 ( ROM 化経験なし ) を取り上げます。本当は上記以外の処理系 , たとえば ROM 化をターゲットにしている LSI Cー86 や ROMable C 8086 などの処理系 , MS -DOS ごと ROM 化してしまう ROM-DISK な ども取り上げたかったのて、すが , 筆者が所 有していないのと , 諸般の事情により試用 する期間がなかったために取り上げること がて、きませんて、した。これらは機会があれ ROM 化といっても様々なレベルがありま ROM 花のレベル ば取り上げてみたいと思います。 C 言語のプログラムの 4 つの領域 初期値を もたない テータ領域 (RAM) スタック領域 (RAM) 初期値をもった テータ領域 (ROM) プログラム領域 (ROM) す。とくに MS ー DOS を利用したものて、は以 MS ー DOS こと日 OM 化する 下のようなものがあります。 EEROM-DISKG) (EEPROM) プの SRAM) RAM-DISK(98) H ( バッテリバックアッ ROM-DISK ( 98 ) H(EPROM) コンテックの このタイプには PC ー 9801 シリーズ用として 成するものて、す。 録してディスク代わりとし , システムを構 ロッヒ。ーディスクの内容を ROM ー DISK に登 フロッヒ。ーディスクて、起動する代わりにフ BAT て、自動的に立ち上げます。この場合は ROM -DISK 上に登録して AUTOEXEC. AUTOEXEC. BAT, プログラム , などを すなわち , MS-DOS, CONFIG. SYS,
が深刻なときほど , 徹底的な話し合いが行 われたと思います。プログラミング旨 「 4 ロロ 少なくとも C や C 十十などの言語の場合 , ほ とんどを技術の専門家と渡り合わなければ ならないわけて、す。彼らは事実認識に基づ いたプロセスを重視します。多くの点て、 , ビジネス指向というよりは事実認識指向が 強いわけてす。て、すから彼らの多くは , お 互いのアイデアを理解し , 各人の判断を信 頼しようとする人たちてす。この委員会は ANSI C と同じように , うまく問題を解決す ることがて、きると思います。 C 十十は高い評価を得ており , 人気も高 い。とくにデスクトップや一般市場で認知 されています。だからそのように考えるわ けですか。 PIum それもひとつだと思います。しかし J 16 委員会に参加した人のほとんどは , この 言語に関して十分共通理解を得ているよう に思われます。だからこそ , 彼らは明確な 方法てこの言語に取り組むことがてきるの だと思います。 あなたは C 十十の標準化作業にかかわっ ているわけですが , 標準化作業は AN 引 C の 場合よりも時間がかかると思いますか。そ れともはるかに短い時間で前進すると思い ますか。 て , 市場がどのような判断を下すのか , 今 として生き延び , C 十十はより規模の大きな PIum 今の段階て、は何ともいえません。委 員会が作成した開発スケジュールは ANSI のところ私にはわかりません。 C 十十を試し アプリケーション向けの , かなりハイレベ ルな言語として人気を持続することがて、き てみる必要があると思います。私の知って C の場合とほば同じものて、した。しかし私た るかもしれません。あるいはふたつの異な ちの場合 , スタート当初の予測に比べると いるほとんどの企業は , いくっかのパイオ 時間は 2 倍になっています。てすから実際ど ニア的なプロジェクトを抱えており , 新し る方向性をもっ言語をもつ必要はないと , C 十十は C の特別バージョンとして使い方を れくらい時間がかかるのか , 私にはわかり いものを試してそれを評価することが好き な人たちが取り組んて、います。てすから彼 学べばそれて、いいて、はないかと , 市場がそ ません。 う判断を下すかもしれません。どうなるの らが C 十十を試し , 彼らのアプリケーション C + の可能性 としてその機能の評価を報告することがて、 かわかりません。市場の反応を見ない には何ともいえません。 きるのて、はないかと思います。焦点とレベ グラフィックユーザインタフェイスや 先ほど , C 十十には潜在的な可能性があ ルが実質的に異なるふたつの言語を , 私た マルチメディア技術 , オプジェクト指向の り , AN 引 C よりも魅力のある成長株である ちは本当に推し進めていいのかの判断を市 プログラミングに対する関心の高まりなど , といわれましたが , その根拠は何ですか。 場が下すにはしばらく時間がかかると思い コンピュータ産業における新しい潮流が C 十十のほうがデスクトップや PC べースの ます。 環境においてより普及するからですか。 C 十十に有利に働くと思いますか。 C は手を加えない形て、の非常に効率的な , マシンに近いシステムプログラマ型の言語 Plum まだわかりません。わかっているこ PIum これらふたつの言語の比較に関し 12 CMAGAZINE 1990 11
1990 年 11 月 1 日発行 ( 毎月 1 回 1 日発行 ) 第 2 巻第 11 号通巻 14 号 1990 年 2 月 2 日第 3 種郵便物認可 提携・米国。 LANGIJ E 。誌 / 監修・石田晴久マカシン すべての C 言語プロクラマのための技術情報誌 NOV. 1990 VOI. 2 No. 11 980Y 。。 SOFT 日 K 価 定 ソフトノヾンク 特集旧 OM 化 プログラミング考察 I ・ C 言語による ROM 化プログラミング概論 Ⅱ・ ROM 化の実際 巻頭インタヒュー・ Thomas 円 um ( Ⅱ ) / 新連載・オフシェクト指向への招待〈メッセージの概念〉 提携記事・ 21st Century AssembIer ・ The Past, Present, and Future of ProfessionaI Programming 新 MS -00S プロクラミンク入門 / C 言語雑学講座 / アルゴリズムとテータ構造入門 / C 言語入門講座 特別付録 : 5"2HD ・ T ⅷ 0 C 用ライプラリ集 ( 9801. MS -00S マシン ) ・低レヘルソフトウェア研究所作品集 ( 9801 シリーズ ) ・ビジネステータ ( テキストファイル ) & 検索プロクラム「 SECH 」 ( MS -00S マシン ) ・本誌掲載ソースプログラム
べースがグラフィックューザインタフェイ か , 両者が並存するのかはわかりません。 スの流儀て、ただちに利益を得るのか , どん C 十十委員会て、は , 私は C 十十が移行への道 なものがそれにふさわしいのかはわかりま 筋 ( マイグレーションパス ) になるよう努力 せん。 はしています。なかには , なんと C のコード をすべて取り出して新しい言語を作ろうと C と C 十十と pascal 考えている人たちもいます。しかしそれは フェアて、はありません。 ANSI C との比較で , 先ほ UFORTRAN 現在市場に出ているおもな C 十十製品の に言及されました。では pasc などの環境 品質をどのように評価しますか。 PIum その種の情報に関しては何も知らな はどうでしようか。 Pascal は ANSI C と競争 いのて、わかりません。 できますか , それともほとんど問題ではな デスクトップ環境の話題に戻りますが , いのでしようか。 PIum PascaI については私は偏見をもって マイクロソフトやポーランドインターナシ いるんて、す。 PascaI は大学生を教えるため ョナルなどの企業から出ている C 言語の製品 の言語として開発されました。それが Pascal をどう思いますか。 PIum 両者を比べさせるようなことはしな の目的て、す。その意味て、はうまくて、きてい いて、ください。私の印象て、はふたつはとも ると思います。しかし問題は , 産業界の多 にトップクラスの製品てす。いずれも , 数 くの人たちがそれを成熟した商業べースの 年前に市場に出ていたどの製品よりも優れ 産業言語として使い , そのために多くの問 ていることは確かて、す。競争によりこの分 題が生まれてしまったことなのて、す。 野の製品は本当に改良されました。 私がかかわっていた市場における C と Pas cal の競争は , 基本的には 1983 , 4 年まてに終 十テストスーツ わったと思います。しかし大学のキャンパ スて、は今ても Pascal のほうカ℃よりもよく売 あなたは 7 年間にわたり C の標準化作業 れていると思います。 PascaI を好きな教授 の数のほうが多いて、しよう。しかし彼らは にかかわってきました。そして今では C 十十 の標準化に向けた動きに取り組んでいます。 PascaI の環境と同じくらい安全な C の近代的 な環境に目を向けるべきて、す。彼らは C 十十 この作業にどれだけ深くかかわろうとして とだけを話したいと思います。 一般的にオプジェクト指向のプログラ のほうがもっとおもしろいと思うはずてす。 いるのですか。 C 言語と同じくらい本格的に 取り組むつもりなのですか。 ミング分野についてどう思いますか。その つまり C 十十は Pasca に同じ類のもので PIum 今のところ , この作業に関する私の 妥当性や影響力などについて , あなたはど あると考えるべきだというわけですか。同 役割はおもに , 正式なテストスーツを作成 のような印象をもっていますか。 じように優れた安全な教育環境であると。 することにあります。私たちはイギリスて、 PIum 基本的にはいいアイデアて、す。市場 PIum 本格的に勉強している大学生にとっ 正式なテストスーツとして採用された C 言語 が決めようとしているのは , 全領域の何パ て , 学ぶべき多くの優れた知的コンセプト 向けのテストスーツをもっています。現在 ーセントをオプジェクト市場のパラダイム が C 十十にはあります。 イギリスとほかのヨーロッパ諸国とて提携 て、取り組むかという点だと思います。明ら どうもあなたは C 十十を強く提唱しては かにそれに適した分野があります。しかし して作業を進めています。 . 1992 年の市場統 いないという印象を受けますが。 オプジェクト指向のパラダイムに多くの時 合を控え , コンパイラを認定する作業に焦 PIum プログラミング言語 C を標準化するた 間を割いても , あまり多くの利益を受けな めの 7 年にわたるプロジェクトを完了したば 点を当て調整を行っています。てすから彼 かりのところて、すから , C 十十のような新し らはヨーロッノヾにおけるコンノヾイラのテス い分野も多くあります。 ー利益を受ける分野のひとつは , たとえ トサービスをもっています。ョーロッパて、 い言語にすぐに席を譲る気にはなれません。 は , C 言語向けのプラムホール・バリデーシ C と C 十十はそれぞれの利用分野があると思 ばデータベースシステムでしようか。 PIum そうかもしれません。しかしデータ ョンスーツが C コンパイラ向けの公式な政府 いますが , 将来 C が C 十十に吸収されるの Thomas PIum ANSI C 委員会副委員長
と思いますか。 のオプジェクト指向の哲学が彼ら自身の特 まりオプジェクト指向の哲学があるという PIum それほど多くの変更はないと思いま 定の課題に十分な利益をもたらしてくれる こうした考え方をサポー 点て、す。それに すが , 今後も多くの組織から意見を聞かな のか , 概念的な上部構造に投資するだけの トする言語の構文構造体があります。この ければならないことは確かて、す。 価値があるのか , 今は事態の進展を見守っ 点がひとって、す。これは市場全体において C 言語に関する主要な担当者は誰です ているのだと思います。 非常に新しいものて、す。人々は今て、もこの か。 AN c 標準化作業に直接かかわってい 占について論議しています。オプジェクト ともかく , それが C 十十に関する問題のひ たのは誰なのですか。 とって、す。もうひとつは , C 十十は今後数年 指向の哲学に非常に適している問題領域が PIum 難しい質間て、す。 C 言語におけるおも は続くて、あろう進化の一部てあり , プログ いくつかあることは確かだと思います。私 な担当者て、 , ANSI 標準化委員会にかかわっ の印象て、は , 新しいグラフィックスューザ ラミング分野のアイデアにすぎないという ていなかった者は誰もいなかったといえま インタフェイスを利用しているものはすべ 点て、す。多くの人は C 十十に対するより正確 す。全員が参加しています。 な定義づけの登場を待っています。その多 てあてはまるようて、す。メニューやマウス , 先ほど Ada について , アメリカ政府がそ くは今てもインプリメンタの小さなグルー れを利用しているといわれました ( 前号参 プの人たちが頭の中て、思いめぐらしている 照 ) 。政府は c 言語の標準化作業に何らかの といった状態てす。 形でかかわっていたのでしようか。 ——C 十十を標準化しようとする努力は現在 Plum 政府の各部署の代表者が数名委員会 進んでいるのですか。 に参加していましたが , 彼らはそれほど大 PIum だからこそ , 私たちはム週 ー 1 ン / きな役割をはたしていません。これまて、の アトルにいるのて、す。 ANSI 委員会 X3J16 が ところ , C 言語は市場の意向に添って開発さ 昨年 12 月に発足しました。 3 月に 1 回目のテ れています。その中て、 , 比較的小さな会社 クニカルミーティングを終え , 現在は 2 回目 が大きな役割をはたしてきました。今て、は のテクニカルミーティングを終えようとし 大企業のサポートも得ていますが , 基本的 ているところて、す。標準策定作業としては には草の根レベルの開発プロセスをたどっ いいスタートを切っています。言語の設計 てきました。 に関していくっか問題を抱えていますが , 今回のミーティングて、「仮引数型」として C と C 十十 知られている言語の特長について合意に達 しました。しかし例外操作として知られて ハードウェアおよびソフトウェアのプ いる特長に関しては , 今て、も論議が続けら ログラミング技術の発展から見て , 今後数 れています。これは非常に興味深い技術上 年間で C に大きな変化が起きると思います の論争て、す。双方がそれぞれの正当性を確 プルダウン , スクロールバーなど , そうし た技術のすべてはオプジェクト指向の記述 信して譲らないという状態が続いています。 PIum 今のところ最大の不確定要因は , 現 まだこの問題は解決されていません。 に非常にうまく合致します。 在 C て、行われているプロジェクトすべてが今 これは本当に技術上の論議なのですか , これらは業界が急速度で接近している 後 C 十十に移行していくのか , あるいは C 言 分野です。とくにデスクトップでは顕著で それともたんに好みの問題なのでしようか。 語は C 十十とは根本的に異なる言語として平 PIum かなり本格的な技術論議て、す。 す。こうした影響力を考えると , 開発言語 行的に進化していくのかどうかという点て、 C 十十の標準化作業は , ANSI C の場合 としては ANSI C よりも C 十十のほうが好ま す。 ほど順調に進んでいないように見えます。そ れていくと思いますか。 ANSI C に比べ , C 十十のおもな利点は うだとすれば , C 十十において解決しなけれ PIum まちがいないと思います。 C 十十への 何ですか。 ばならない大きな意見の食い違いはどこに 関心は高まっています。もちろんそれは非 Plum C 十十についてまずいえることは , ラ あるのですか。 常に大規模な , 非常に活発なプログラミン イプラリにおける関数て、はなく , 宣言オプ PIum さあ , どうなんて、しようか。私たち グ領域て、すが , だからといってそれがプロ ジェクトを用いてより多くの処理を特定す は C 言語のさまざまな問題に関して , いくつ グラミングのすべててはありません。プロ るという考え方のプログラミング哲学 , つ かの徹底的な論争を行ってきました。対立 グラミングの世界て、は多くの人たちが , Thomas PIum ANS 圓委員会副委員長
そこて C 旨をはじめとする多くの手続 厂 1 ロロ き型プログラミング旨はリンク時に呼 「 1 ロロ び元とその実装を結合させる。このように コンパイル時やリンク時など実行時以前に 両者の結合が決定するような言語を静的結 合 (static binding) の言語と呼ぶ。先ほど述 べた関数 printf は , そのプログラムのリンク をするとき , 実際に標準関数と結合するの て、ある。ただし , その呼び元とその実装の 結合は , 少なくともプログラムの実行時に なされていればよいわけて、あり , 実行時に 決定する方法も考えられる。これを動的結 合 (dynamic binding) と呼び , オプジェクト 指向型言語には , おおむね備わっている機 能て、ある。 SmalItalk-80 は , すべて動的結合による し , C 十十は静的結合によるが , 仮想関数と 呼ばれる機能により , 必要に応じて動的結 合が実現てきるのて、ある。ただし , オプジ ェクト指向の世界ていう結合は , 手続き型 言語における結合とは若干観点が異なって いる。手続き型のプログラミング言語にお いては手続きを中心に考える。たとえば関 数の呼び元ては , 関数を識別子としてしか 扱わず , コンパイル , リンク時にその実装 と結合させて実行可能プログラムとするの が静的結合てあり , 実行時に結合させるの が動的結合といわれる。 それに対してオプジェクト指向の世界て いう結合は , 手続きの呼び元と実装だけの 関係て、はなく , オプジェクトを単位て、考え るため , 変数とその変数に束縛されている オプジェクトとの関係に適用される。たと えば , Fig. 2 に示したように Var printWithFormat("hello, world*n") : と書いたとき , 変数 va 「にどのようなオプジ ェクトが束縛されるかわからなくても , つ まりどのオプジェクトにメッセージが送ら れるかわからなくても , メッセージ式によ ってプログラムを記述て、きなければならな い。しかしその場合 , 変数 Var に束縛される オプジェクトが未定なため , どのオプジェ クトの内部に実装されているメソッド p 「 intWithFo 「 mat が実行されるかが未定とな 90 CMAGAZINE 1990 11 Fig. 2 オプジェクト指向での結合 Var printWithFormat ("hello, world*n"); printWithFormat() { 実装 } printWithFormat() { 実装 } 0 1 2 るのて、ある。 きること , かつ前回述べたポリモフィズム よるメッセージとメソッドの分離が記述て、 オプジェクトが情報隠蔽機能をもっことに ェクト指向に直接関連する機能て、はない。 以上述べてきたように動的結合はオプジ 条件て、ある。 とが可能なポインタ言語て、あることが必須 めには , 変数にオプジェクトを代入するこ クト指向における動的結合が可能て、あるた うということになろうか。なお , オプジェ メソッドは静的に決定されているものをい 決定されるが , 特定のメッセージに従った オプジェクトとメッセージの関係が動的に オプジェクト指向における動的結合とは , る。 にいう結合とは若干観点を異にするのてあ 向における動的結合てあり , 手続き型言語 行時に決定されるものが , オプジェクト指 ない。変数に束縛されるオプジェクトが実 がどの手続きを呼び出すかが未定なのては て、ある。決して , オプジェクトのセレクタ メッセージが送られるか未定て、あるがゆえ 合するか未定なのは , どのオプジェクトに つまり , あるメッセージがどの実装と結 printWithFormat() { 実装 } 計算機上のデータはやはり大きくふたっ たものてあろうか。 それては , データはどのような情報をもっ というふたつの情報をもっていると述べた。 前回 , 関数は処理の相手先と処理の内容 クラスとインスタンス 考えることがてきよう。 から動的に変数の内容が決定されるものと の場の状況て、示す値が変化する。その意味 こうした指示代名詞はそ 型的な例て、ある。 が , これが動的に内容が決定するものの典 とか「これ」などの指示代名詞を用いている といわれている。私たちは , しばしば「あれ」 つばな情報伝達を行うことを支援している 自然言語にも備えられていて , 人間が大ざ 実は , この動的結合的な機能は , 人間の なる。 て非常に柔軟なプログラムが書けることに 的な結合によってプログラムの変更に対し る機能て、ある。副次的てはあるが , この動 ること , この 2 点により , 副次的に実現され て異なるメソッドを同じ識別名て実装て、き ( 多態 , 多形 ) により多くのオプジェクト間
0 0 新刊書案内 X Toolkit プログラミング D. A. ャング著 川手恭輔訳 B5 判並製 / 556 頁 定価 4900 円 トッノヾン Tu 「 bO C による人工知能 クリストフア・ F. シャプリ Turbo C , 著 岩谷宏訳 による人工色 A5 判並製 / 384 頁 定価 2800 円 工学社 C 言語のための [ テパッグ入門 浅野理森著 0 ド ( 800 トズ ( 言語のための A5 判並製 / 295 頁 ラ 4 ップ ] 入門定価 2200 円 ナツメ社 Toolkit プロクラミンク い A ャング・洋第駅 第 デバッグは , プログラムを完成させるうえ で , もっとも面倒で , しかも , かならす行 わなくてはならない作業である。本書では , C プログラミングにおけるデバッグ作業に焦 点をあて , 基本的な概念 , 技法から , 主要 なデバッグッールの使い方まで , 効率的な デバッグ作業を伝授している。 アドバンスト UN Ⅸーシェルと C によるプログラミングー Stephen Prata 著 安達淳ほか訳 A5 判並製 / 542 頁 定価 5047 円 オーム社 0 近年 , パソコンの目覚しい進歩により , バ ソコンユーザも , 人工知能 (AI) を扱うことが できるようになった。 C 言語 , とくに Turbo c はそのなかで重要な役割を演じた。本書 は , Turbo C をキーワードにして , 川につい ての理解を深めるガイドブックである。 標準 C 基礎コース XWindowSystem は , 事実上 UN Ⅸにおける標 準ウインドウシステムである。本書は , そ の X Window System をサポートする環境にお けるプログラミングの本で , 高レベルのツ ールキット ( XToo ⅸ it ) を用いたプログラミン グ法を解説している。そのため , C の基礎的 知識を有していることが前提となっている。 図解プログラミング言語をリンクして 10 倍活用する本 第纂をミックスドランケージ。て何 ? 株シンフォニー技術部著 プログラミンク言語を A5 判並製 / 256 頁 定価 20 圓円 1 活用する本 HB 」出版 Mic 「 09 代 C 減し g g を活用テク : ック プログラムをモジュール化することは , 開 発時間の短縮だけでなく , 資産の共有と活 用というメリットがある。本書は , Quick BAS ℃ , MASM, QuickC, MS—FORTRAN それ ぞれの言語の特徴をいかしつつ , プログラ ミング言語をリンクする方法を示した ツ クスドランゲージの入門書 オールサットウルトラ科学 鹿野司著 オールサット 四六判並製 / 207 頁 ウルトラ科学定価 1200 円 ビジネスアスキー 杉山行浩著 A5 判並製 / 195 頁 定価 2060 円 東京電機大学出版局 を新第物テキスト アドバンスト IJN Ⅸ ンエルを 0 によるプログラミング ~ ー 、Åび。リ N!X , A を「 b 町印旧 " をに ーム社 標準 0 杉山行誥を 本書は , UN Ⅸプログラミングをマスターす るための UN Ⅸの簡単なコマンド利用方法か らシェルスクリプトによるプログラミング まで , 具体例を数多く示して解説している。 各章に設けられた豊富な問い , 演習問題に より , 実践的に理解 , 習熟できるように配 慮されている。 コンピュータウイルス ! アラン・ランデル著 長尾高弘訳 四六判並製 / 260 頁 定価 1600 円 イ 」℃ C 出版 スダ コンピュータウイルスのニュースカくマスコ ミを賑わせている。しかし , その実体はあ まり知られていない。本書は , ウイルスの 実体 , 歴史 , 処方箋など , 「ウイルス」とい う現象をさまざまな観点から解説し , ウィ ルスとの上手なっきあい方を解き明かして くれる。 ・京第物第ま第第 これから C 言語を学ばうという人に , ANSI 規 格に準拠した c 言語文法を解説した入門書で ある。データ型 , ポインタ , 関数など , C 言 語の基本的な事柄について解説している。 続編「標準 C 発展コース」では , 構造体やポイ ンタの発展的利用方法などが解説されてい る。 QuickC 最初の一歩 C 言語最短コース B6 判並製 / 277 頁 定価 720 円 講談社 「 Qu kC 最ー高作義明著 鹿野河 , はを第一第を ~ プログラミングの学習をはじめる人に最適 のコンバイラといわれている QuickC を使った C プログラミング入門書。豊富なプログラム 例と , その実行結果に対する解説が充実し ているのが特徴。プルーバックスシリーズ の一冊で , コンバクトな入門書である。 幼いころ , 身のまわりは素朴な疑問 , 不思 議なことでいつばいだった。本書は , そう した幼いころの思いを , もう一度呼び起こ してくれる。肩のこらない文章と非科学的 な「科学」の話題展開に , 「科学はどうも・・・ という苦手意識を打ち消してくれることう けあいの科学工ッセイ。 33 Book Review