プログラム - みる会図書館


検索対象: 月刊 C MAGAZINE 1990年4月号
118件見つかりました。

1. 月刊 C MAGAZINE 1990年4月号

1990 年 4 月 1 日発行 ( 毎月 1 回 1 日発行 ) 第 2 巻第 4 号通巻 7 号 1990 年 2 月 2 日第 3 種郵便物認可 ー ~ 。。。 4 。℃ ONTENTS BStroustrup(l) c →の生みの親 Programmng onPurpose Abstract it 』 PJ PDS 最新レポートく第 5 回〉ブック型ノヾソコン特集野口雄平・ Book Review C による漸進的な文字列探索 COMPUTER LANGUAGE 提携記事 An lncremental String Search in C COMPUTER LANGUAGE 「文字列でインテクスする配列」を C 十十で実現 提携記事 String-Indexed Arrays in C 十十 lntroduction of COMPUTER LANGUAGEANALYSIS &DESIGN C 十十のテパッキングラス A Debugging Class for c + + 0 1 2 2 2 特別インタピュー 新連載 ・ 29 COMPUTER LANGUAGE 提携記事 特集 35 ANSI C の現状 42 Part1 ANSI C 概 fi/Part2 ANSI C と日本語処理の課題猪瀬武久野田誠 超高速クラフィックライプラリライン関数の最適化高村誠之 63 One Point Edition yacc による C コンヾイラブログラミング第 7 回〉式のコード生成近藤嘉・・・・ 74 C コンヾイラの内部を詳解 c プログラマのためのランタイムライプラリ入門 新連載 82 く第 1 回〉低水準ファイル入出力関数秋津彰文 C 十十プロクラミンク入門く第 4 回〉クラスの設計と実装 2 小山裕司・正畠克俊・・・・・ 99 実践 C プログラマ養成講座く第 7 回〉 c 言語と 応用言き吾く第 5 回〉キーボード入力プログラムの作成 1 ) 高橋良明 恥すかしなからドジりましたく第 5 回〉ズホラへの罰岩谷宏 C 言語フォーラム はじめて学ぶ C プログラミング第 6 回〉ライプラリ関数高木聡 / 山崎信行・ C 言語入門講座 Pa 1 GNU 奮闘記く第 1 回〉 GNIJ と g 十十と X68000 吉野智興・・ Conference Room part 2 高速化とパフォーマンスアナライサ野口修男 p 耐 3 投稿プロクラム線形リストライプラリ川場隆 p 耐 4 Boye 「一 M00 「 e 文字列検索アルゴリズム阿波浮生 C-MAGA News Square lnformation from Compiler Makers ・・ Reader's Room 付録ティスクの内容 B00k Shop Report EDITOR'S ROOM ・本記事中のプログラム名 , システム名 , CPU 名は・般に各メーカーの登録商標て・す。本文中て・は TM, ⑩マークは明記していません。 ・本誌に掲載されたすべてのプログラムは作権法 l•. 個人て・使Ⅲする目的以外て無断て複製することを禁じられています。 表紙・イラストレーション・秋山育 / デザイン・持田哲 三田典玄の ・・ 106 ・・ 11 0 ・・・ 118 ・ 120 ・・ 131 135 ・ 139 ・・ 143 ・ 145 ・ 148 ・ 155 158 ・ 159 ・ 160

2. 月刊 C MAGAZINE 1990年4月号

には特別な id を与えています。 ワークから入手て、きます。 社員記録を出力するときの記法は , 語彙頻度の場 私は , MUMPS のことを知らなかったら , 文字列 て、インデクシングするシンボ、ルテープルのことなど 合と同じて、すが , 細部は変わっています。 bst nodes 考えつかなかったて、しよう。これをスッキリと実現 の forall( ) 関数は使っていません。ツリー遍歴は て、きる C 十十のパワーには感心しています。本稿のコ print( ) の中て、行っています。 freq. cpp (List4) も struct. cpp (List5) も , ともにツ ードは考え方を示しているだけて、すから , 読者のみ ご自分の作品への応用をいろいろと考え リー全体を ASCII 順て、ストアし , 出力します。したが なさんは , って , 大文字の B は小文字の a より前になります。 てみてください。多次元配列への応用などは , すぐ れは , lookup( ) の中て、比較関数として , C の標準ラ に思いっく拡張アイデアて、 , 私はクロスリファレン イプラリ関数 strcmp( ) を使っているからて、す。派生 スプログラムに使用しています。 クラス用に並び順を変えたいときは , この関数を変 本稿をお読みになったあなたは , どんな応用をお 考えになりますか ? 更してください。派生クラスは , べースクラスの 100 kup( ) を使わなければならないことはありません。 違う比較関数を使用する自分の 100kUP ( ) 関数を定義 Jeff TayIor 氏はフリーのライターて、すが , 月夜の晩 ( 訳注 1) や , そのほか必要なときにはプログラマになり て、きるのて、す。 同じインタフェイスを使った異なった実現の仕方 ます。彼は , 本格的なプログラマたちが紙テープと もて、きます。たとえば私は , 社員記録のプログラム 戲れていた頃の , 古き悪き日からずっと , 20 年以上 にわたってプログラミングをしています。本記事は , にわずかな変更を加えて , ハッシュテープル方式に しました。そのコードは CompuServe の COMPUTER 彼の最初の C 十十プログラムの副産物て、す。 LANGUAGE フォーラム , または全国の BBS ネット List 5 32 : } : 33 : 34 : / / print ー employees を出力 35 : VOid print(ostream &stream, employee_nodes *e) if (e ! = NU しい { print (stream. e->left() ) : 38 : 39 : stream くく *e; print (stream, e->right()) : 40 : 42 : } 43 : 44 : / / operator[] ーアクセス関数 45 : employee-nodes &emp loyees : :operator[] (char *s) (employee-nodes * ) *lookup(&tree, register employee_nodes *&t = NU しし ) new employee_nodes(), 十十 employee_nunber) : 49 : 50 : return *t : 53 : main() 55 : employees payroll : くく payr011["Jeff Taylor ” President: cout くく payroIl["Jeff Taylor"]. salary * = 2.0 : 58 : payroll["lma FIunky"] . salary = 5.00 : 59 : payroII["The Gofer"]. id ニ 7777 : 60 : cout くく "YnPayroII •.Yn" くく payroll : ” YndoneYn ” cout くく 区主 1 ] 「副業」という意味 String-Indexed A 汁 0Y5 in ( 十十 「文字列でインデクスする配列」を C 十 + で実現 33

3. 月刊 C MAGAZINE 1990年4月号

続々登場。 0 ℃ PARTS 」は c 言語で様々なアプリケーションを開発するために必要 な関数を提供します℃ PARTS 」の関数を組み合わせて使用するだけ で通常業務に必要な殆どの機能を満足することができます。 0 ℃ PARTS 」は AN 規格対応の関数を用いて作成されているので、 MS—C 、 Lattice C 、 Turbo C 、 Quick C の各 C コン / ヾイラーで使用 可能です。 ( またメモリーモデルについてもほとんどサポートしています。 ) 0 ℃ PARTS 」はすべてソースコードで提供しておりまた、ライセンスフリー 0 ℃ PARTS 」にはそれぞれのパッケージに含まれた関数を用いた実用 的な参考プログラムが付属しています。 本ライプラリーでは帳票作成時に必要な関数を提供しています。 本ライプラリーでは、市販工テイターを使用して作成したフォーマットファイルを使用 し、帳票を印字します。従って、プログラム作成後でも、帳票のレイアウト、印字本行数、 タイト丿レ等を自由に変更できます。また、罫線についてもフォーマットファイル上で指 定できます。 提供する関数の主な機能は次のとおりです。 印字形式の編集機能 ( カンマ付き数字編集等 ) 印字位置指定 ( 左奇せ、右奇せ、センタリング ) 特殊印字機能 ( 罫線、アンターライン、網掛け、倍角、強調、 4 倍角 ) 改行ピッチ、文字間ピッチ変更 ヒットイメージ出力 ※印字位置、印字桁数についてはフォーマットファイル上て指定 サンプルプロクラム・・・・・宛名印字プロクラム、住所録管理プロクラム P A R T S ( 対応機種 ) PC -9801 シリーズ 0 付属マニュアルには各関数についての仕様及びサンカレプログラムに ついての説明が記されています。 本ライプラリーでは、パソコン用プリンターで / 、一コードを印刷するための関数を提 供します。 提供する関数の主な機能は次のとおりです。 >JAN 、げ F 、 NW7 、 CODE39 の各八一コードをサホート 使用可能プリンターは P 日 2 田系のプリンター ( 印字処理を変更すれは他のプリンター ても使用可能。ただし、印字精度の高いプリンターを使用して下さい ) 八一コード印刷後に対応するコードを縮小印字可能 サンプルプログラム・・・・・・バーコード印刷プロクラム 本ライプラリーでは一 SAM 形式のテータベース構築用関数を提供します。 日 + t 「 ee 構造のテータベースなのでテータの高速検索が可能です。 提供する関数の主な機能は次のとおりです。 同時オープンファイル数は最大 10 ファイル 1 ファイルに設定可能なキー数は 45 キー 同時アクセス可能キーは 10 キー キーテータの最大長は 128B キー名称の最大長は 16B 最大レコード長は 32KB 次候補、前候補テータの呼び出し キータイプは文字及び数値 ( int 、 long 、 double) 最大レコード数は約 10 億件 サンプルプロクラム・・・・簡易テータベース アイセル株式会社 〒 171 東京都豊島区池袋 2 丁目 53 番 8 号秋島ヒル 5F TEL. 03 ( 988 ) 6973 ( 代表 ) AR 3 月発売予判 4 本ライプラリーでは画面表示、キーボード入力サポート関数を提供します。 本ライプラリーでは、市販工テイターを使用して作成したフォーマットファイルを使用 し、画面を表示し、入力を行います。従って、プログラム作成後でも、画面のレイアウ ト、表示桁数、入力桁数、タイトル等を自由に変更できます。 提供する関数の主な機能は次のとおりです。 文字表示属性の指定 ( シークレット、プリンク、リ八一ス、アンターライン、八一チィ カルライン、色指定 ) 文字列の入力編集 ( アルファベット、カナ、漢字、数値 ) ウインドーのサポート ( ウインドー数はメモリー容量に依存 ) サンプルプログラム・・・・簡易顧客管理プログラム

4. 月刊 C MAGAZINE 1990年4月号

ロリ侮 C プログラミンク環境「れレ 2 0 黒瀬能聿・監修松尾俊彦・著 < 主な内容項目 > 1 Quick C とは B5 判 180 頁 2 Quick C のセットアップインストール / ライプラリの選択 / セットアップの例 3 Quick C 最初のプロクラム起動 / 入力 / 実行 / 保管 / 経了 税込定価 2000 円 4 プロクラムの作成と編集工ティット / 実行 / コンハイルオプション / 簡単なテパック / マ ルチモジュールプロクラ乙の管理と実行 / コアライプラリ関数以外の関数を利用する 本書の目的は、 C 言語の単なる入門書ではなく、 Quick C の持つ 5 プログラムの流れを見るトレース / 分岐プログラ乙を見る / 分岐プロクラ乙のトレース 6 プログラムの実行途中を見るウォッチ機能 / わかりにくいプロクラ乙の内容を見る 優れたプロクラミンク環境を紹介することにある。工テイタ、コン 7 プログラムのバクを見つけるエラー探索 / 他 バイラ、リンカガらテパッガまでの流れを実例を上げて、プロクラ 8 グラフィックスを描いてみようクラフィッワス関数 / 他 乙作成の一助となるよう解説する。また、プロクラ乙開発の際に多 9 1 ステップコンバイル環境の設定 / QCL コマンド / 他 く費やしていたデバッグ作業の時間ガ、 Quick C の環境によって 10 リンクコマンド個別のコンバイルとリンワ / リンカオプション / 他 11 クイックライプラリマネージャライプラリの作成 / 読み込み / オプション / 他 大幅に短縮されることは間違いない。初心者はもちろん上級者まで 12 スタンドアロンライプラリマネージャ SS 凵 B の概要 / SS 凵 B の作成 / QCL での使用 幅広く活用できる内容である。 Quick BASIC とのプロクラミン 13 混合プロクラミンク使用環境 Quick BASICZ 他 グも紹介している。 14Quick C2.0 MS—C 「 5 コ 黒瀬能聿 / 松島勇雄・著 < 主な内容項目 > 1 MS—C の特徴 C 言語とは / ハソコンの C 言語と MS ー C / セットアップ / 起動 B 5 判 264 頁 2 MS—C 事始め処理手順 / 四則演算プロクラ乙 / フローチャート / ソースプロクラ乙の 作成・編集 / コンハイルから実行まで 税込定価 2700 円 3 基本的なプログラム例題百五減算ケー乙 / ファイルコビー / 文字数・行数カウント / 文法 の補足 本書は MS—C Ve 「 5.1 の入門書である。数多くある C の文法規 4 制御文 if 文 /f0「文 /while 文と do —while 文 Zswitch 文 /goto 文とラベル / return 文 則を習得するために、例題形式で、文法の解説を行なう。また、単 5 演算子 なる文法解説にとどまらす、各章の終わりに多くの演習問題を提示 6 数値テータ処理関数計算 / 定積分 / 他 し、読者自身がプログラ乙作成能力を養えるように配慮した。各例 7 文字テータ処理文字列操作 / 文章の単語分離 / 文字列比較 / 文字列のソーティング 題 ( 22 問 ) は、問題の分析から始まり、フローチャート、プロクラ 8 入出力関数とファイル処理ファイルとファイル名 / 標準入出力関数 / 書式 / 高水準入出力 ミング、コンバイル、リンワ、実行及び結果と一連の作業手順で紹 関数 / 低水準入出力 介してあり、これにより MS—C の全体像ガ見えてくる。 9 テータ構造と構造体構造体の例題 ※ 1990 年度版図書目録か出来上がりました。下記に、ご請求ください。 雷啓学出版〒悃東京都千代田区神田神保町ト 46 TEL08 ー 233 ー 3795 FAX ロ 3 ー 233 ー 3730 なる C プログラマーをめざすひとに〃 C 旨語学習ソフト UNIX 学習ゾフト 「ソフトウェア (UNIX) 」 UN Ⅸシステムの基本機能をコマンドを通じで里解し、 UN Ⅸシステム上でプログラミングができるようになるこ とを目的とした学習ソフトです マイクロコンビュータ用 OS 第 1 章 第 2 章 UN Ⅸシステムの概要 第 3 章 システムの起動 第 4 章 ファイルシステムとその内部構造 第 5 章 シェルの使い方とコマンド IPA CAROL 「 C 」は、 C 言語を文法知識、プログラミング演習の両面から学習でき 第 6 章 ファイルの編集 るソフトです。これから C を使う方、 C 言語らしいスタイルの華麗なプログラミングをめ 第 7 章 UN Ⅸの基本的なコマンド 第 8 章 文章の作成・処理・出力 ざ枋むきのものです。 UN Ⅸシステムでのプログラム作り 第 9 章 C プログラマは、ポインタのポインタ、ポインタのポインタのポインタなどを自由に使 UN Ⅸシステムの導入と運用 第 10 章 いこなし、関数のポインタ呼び出しを活用し、リスト構造を使いこなし、そのうえ分か 標準学習時問 : 60 時問 適応機種 : PC ー 9801 ジトズ りやすくデバッグしやれ、プログラムを組むことが要求されます。 MS-DOS Ve 「 2.11 このソフトの学習内容は、入門編、基礎編、応用編に分かれ、 C 言語の文法全体 格 : 98 , 80 円 ( 消費税別 ) 価 を包括しています。また、内蔵の C シミュレータで与えられた間題を実行し、動作を確 C 言語関連書籍 認することで発見的学習を導くよう工夫されています。 標準学習時間 : 入門編 13 時間、基礎編 27 時間、応用編 30 時間 適応機種 : PC -9801 シリーズ C の基礎文法を豊富な例題で解説した入門書の決定 MS-DOS Ve 「 2.11 以上 B5 判 240 頁 2 , 060 円 版。 価 格 : 98 , 000 円 ( 消費税別 ) ( 消費税込み ) 〒 164 東京都中野区中野 5 ー 62 ー 1 資料請求は、氏名・お動め先の名称・所属・住所・電 話番号を明記し資料請求券とともに郵送または FAX お問い合わせ先 CAROL インフォメー 、ンヨン 株式会社 S 00 でお願い致します。「 C 」のサンプル版をお送り致しま TEL ( 03 ) 319 ー 6991 FAX ( 03 ) 319 ー 6823 = まインタのインタ = : = : これは、基、で学新した文をソートするプ 0 グラムです . このプログラムのソート部分を化してくださ、、 ”Ⅲの内第数 1 ー - 0 1 旧 A ー秘れ hi 「 C 」 興数の物はインタびルーにり おとーこ 2 い 書 一三ロ

5. 月刊 C MAGAZINE 1990年4月号

0 0 新刊書案内 プログラマ・サバイバル・ガイド ル著 / ジャネット・ルー 長尾高弘訳 A5 判並製 345 頁 / 2200 円 』 CC 出版局 1990 / 2 / 10 TURBO C プログラミング入門 赤川勝矢著 すび RBO 0 A5 判並製 フロクラミンク入門 280 頁 / 2500 円 み川当災・第 啓学出版 啓学出版 1989 / 10 / 25 TurboC の統合化開発環境システムは , 誰で も気軽に C プログラミングを楽しめる世界を 提供した。本書は , 初歩的な C プログラムの 基本的概念の話から , グラフィックなどの 応用的なプログラミングまでを解説 , 楽し みながら C プログラミングを学ぶことができ る。 Macintosh Bible マッキントッシュバイプル日本語版 アーサー・ネイマン編 外伝加いん 著 B5 変型判並製 640 頁 / 3800 円 技術評論社 1990 / 1 / 30 マッキンシュバイフル 日本藤版 アーサー・ネイマン・第 C ーテータ構造とプログラムー Leendert Ammeraal ( : ーテータ構造とプログラム ~ 著 / 小山裕徳訳 A5 判並製 し“ⅸを : 宿第 , - 第二 : 、山裕第 PROGRAMS AND 275 頁 / 2884 円 DAiA 引 ( UR ト、 IN C オーム社 1990 / 1 / 30 1- ニ ( ヂ一 本書は , 今あらためて重要性が認識されて いるアルゴリズムとデータ構造について , C 言語プログラミングの立場から解説してい る。具体的にプログラムと実行例をふんだ んに示していて , プログラムを書くうえで 役立つ内容にあふれている。ちょっと上級 者向けの好書。 ハッカー英語辞典 ハッカー英語辞典 theHACKER'S DICTIONARY イ・いユ・一ル・ツ 4 : ア ) ′ア工ルつインル ツ第プノ - ・クつ一 0- 本書は , たんなるコンビュータ用語辞典で はなく , 善良なハッカー ( / ) のためのスラ ング辞典である。プログラマ , あるいはプ ログラマをめざす人にはまったく役に立た ないであろう。しかしハッカーを自称する 人 , ハッカーをめざす人には , ぜひ中華料 理を食べながら読んでほしい 1 冊である。 QuickC 2.0 プログラミング入門 矢部和博著 QuickC 2.0 B5 変型判並製 296 頁 / 1800 円 プロクラミンク入門 アスキー 1990 / 2 / 1 本書は , 決してプログラミングテクニック の本ではなく , タイトルが示すとおり , プ ログラマ , あるいはプログラマをめざす人 のための「プログラマとして成功する」秘訣 がふんだんに盛り込まれている本である。 輝かしい ( ? ) 「プログラマ」人種の生態のすべ てを知ることができる。 QuickC プログラミング 500 題 0 襲 C 田中廣著 B5 判並製 ? ラミ” 50 356 頁 / 2800 円 日刊工業新聞 1989 / 1 0 / 27 ガイ・ L ・スティール・ ジュニアほか著 / 大伏 茂之訳 A5 判並製 151 頁 / 1400 円 自然社発行 / 産学社発 売 1989 / 10 / 20 マックユーザ待望の「 Macintosh BibIe 」の日 本語版が刊行された。マッキントッシュに 関するありとあらゆる情報が凝縮された , すべてのマックファン必携の本といえよう。 なお , 本書はイメージデータもすべて取り 込んで , 全べージ , マックで編集・制作さ れている。 QuickC Ve 「 .2.0 ランタイムププヲ丿カルンス マイクロソフト株監修 Microsoft A5 並製 QUick C ( Ver. 2.0 384 頁 / 2400 円 費・ Library 翔泳社 、コ : れイ・社ンタイム 1990 / 2 / 28 0 プログラミングをマスターするのに , 本を 読んで勉強するというのも悪くない。しか し , とにかくプログラミングしてみるのも ひとつの手である。本書では , タイトルの とおり , 豊富なプログラム例題を実際にプ ログラミングしながら , プログラミングを マスターすることを目的としている。 日本語版ノートンユーティリティーズがよくわカ本 日本語版 飯島弘文著 マ ズ判並製 186 頁 / 1600 円 HBJ 出版局 1990 / 2 / 24 ー当った楸 : 設立つティスク講用画 島強文 日 靆ツ ON AD AN り E れ ON 複雑な文法理論は可能なかぎり避け , とに かく C プログラミングを「ゲーム感覚で楽し んでしまおう」という本。初めて C 言語に触 れるという人にもわかりやすい。本書を片 手にコンビュータの前に座り、グラフィッ クで遊んだり , ゲームを作ったり , とにか く C の世界を遊んでみよう。 QuickC Ver. 2.0 は強力なオンラインヘルプを 搭載している。印刷物としてのリファレン スマニュアルを希望する多くのユーザの声 に応えて作成されたのが本書である。環境 版を使っていないユーザ , また印刷物とし てのリファレンスマニュアルがほしい人に とって最適な本である。 ハードディスクなど大容量記憶装置が身近 になり , 大量のファイル , データの管理が 重要かっ困難な問題になっている。「ノート ン・ユーティリティーズ」は , 大量のファイ ル , データの効率的な利用を考えている人 , 実際に困っている人のために開発された。 本書はその活用法を解説した本である。 23 Book Review

6. 月刊 C MAGAZINE 1990年4月号

Marco S. Hyman/ 佐藤敏雄訳 (COMPUTER LANGUAGE/Oct. 1989 ) GUAGE LANGUAGE CONSTRUCTION 側、Ⅱ黼を 0 日 F AN ENGINEE C + + のデ朝ギンククラス A Debugging 0055 fo 「 ( 十十 C 十十でのテパッギングは , 非常に困難を要 する。というのは , C 十十では , 生成する関 数名を特殊な記号に変換して管理するので , そのままでは , プログラマかトレースする そこで , 本稿では , プログラム中からトレ ースやテパッグ情報を出力するためのクラ ス T 「 ace を開発して , C 十十でのテパッグ を容易にする方法を紹介する。 ことか難しいからだ。 C 十十トランスレータや C 十十コンパイラ の進歩は , 多くの場合 , デバッギングッー ルの進歩を上回っている。 C の中間コードを 生成する C 十十トランスレータの場合です ら , 生成される関数の名前は , プログラマ に理解しにくい形で記号化されるため , C の ソースデバッガにおいてプレークポインタ をセットすることは事実上無理であるにの トランスレータによる関数の名前の記号化 の例をコラム 1 に示した ) 。 デバッギング技術がコンパイラに追いつ いてくれるまでの間 , 私たち恵まれないプ ログラマはどうやってこれに対応すべきで あろうか。コードのなかに printf 文を散り ばめるという , 古くから用いられていると っておきともいえる方法で , デバッグを進 めることが可能ではある。しかし , これで は効率が悪いし , C + 十の長所である継承 ( イ ンヘリタンス ) の能力を使っていない。 C 十十に設けられているクラスのメカニズ ムを用いれば , デバッグ情報をプログラム のひとつの部分にまとめることができる。 本稿では , このことを利用して筆者が開発 したデバッグ用のクラス Trace について説 明する。 Trace クラスは , プログラムにおいてパ ーマネントに存在する部分として設計され ているので , いつでもプログラムのなかか ら利用することができる。トレースやデバ ッグ情報の出力は何もしなけれは・禁止され た状態であるが , コマンドラインでのオプ ション入力や環境変数で設定することによ り出力可能とすることができる。トレース 出力は stderr に書き込まれるが , リダイレ クトによりファイルに出力し , 手があいた ときに読むことも可能である ( しかし , MS -DOS ューサには MS-C Ver. 5.0 で供給され る ERROUT プログラムのようなユーティリ ティが必要である ) 。トレースデバッグ出力 は , タイプに従って分類しているので , そ の出力は必要なものだけに限定することが できる。 「 ace 動作の詳細 Trace クラスて、はデノヾッグ出力を trace , assert, error, infO の 4 つの基本的なタイ プに分類している。すべてのタイプは , 環 境変数 DEBUGMODE を設定したり , プロ グラムのなかて、 Trace : : setTraceMode を呼び出すことて使用可能となる。 Trace : setTraceMode はコマンドライン中のスイ ッチを経由してトレース出力を許可するた めに使用する。 Trace クラスを使用するためには , すべ ての手続きにおいて , Trace オプジェクト ' クラス : : 手続 を構文、、 Trace trace 〃として定義しなければならない ちろん , オプジェクトの名前 (trace) と初期 化ストリングのフォーマットは何て、もよい トレース出力を可能にした場合 , 初期化ス トリングが stderr に出力される。その後 , 手続きが呼び出されるたびにインデントレ C 十十のデバッギングクラス 35

7. 月刊 C MAGAZINE 1990年4月号

高速化とノヾフォーマンスアナライサ 野口修男 プログラムを作成し , 実行してみると期待どおりのスピードで動作しない , 時間の かかっていそうなところにあたりをつけて書き直すが , たいしてスピードが上がら プログラマならだれでも経験したことがあるはずです。パフォーマンス アナライサとしては UN Ⅸのプロファイラが知られていますが , DOS 上では実用的な ものがありませんでした ( UN Ⅸのプロファイラが実用的かどうかは疑問の残るとこ ろですが ) 。 DOS アナライサ rlnside! 」は従来のプロファイラより機能的に一歩進 んだプログラムです。 , こでいう「パフォーマンス」という単語はたんに英語での スピードというよりも , もう少し大きな概念を表しています。日本語の「性能」に 近い意味がこめられています。今回はプログラムの高速化を中心に [lnside! 」がど んな場合に役立つかを実践的に解説します。卩 nside ! 」には QA の分野でも役立つ機 能があります。この方法論は C 言語に限定されませんが , コードは MS ー C を想定して います。また , 最初にお断りをしておきますが , この記事を読んだ途端にプログラ ムのスピードが 2 倍になるようなマジックはありません。 こに記載した高速化の 手法は常識的なことばかりです。違いはいかに計測するかにあります。 いつ「 lnside! 」を 使うか 誕十 / プロトタイピンク段階での 高ヒに対する考慮 プログラムの高速化を考えるのは , ある 場合には設計者てあり , またプログラマ自 身が実際のコーディングのときに変史 / 追加 / 削除を行うこともあります。 「 lnside ! 」は設計者には役に立たないてし よう。なぜなら , 設計者は経験と理論を駆 使して机上て、設計するのが仕事だからて、 す。しかし , 「 lnside! 」はプロトタイピング の段階からは確実に役立ちます。プログラ ムが完成に近づいてから行う高速化の多く は , ほとんどがモジュール内部に限定され ます。したがってグローバルな最適化に比 べてあまり効果がありません。効果を増す ために , モジュール構成などを変更すれば かなり大規模な変更に発展する可能性があ ります。 設計段階て、はなかなか実行時間の予測は 難しいのてすが , プロトタイヒ。ングの段階 て、は「 lnside! 」を使いマイクロ秒単位の時 間計測が可能になります。この段階て、かな り入念な最適化を行うべきてしよう。プロ トタイヒ。ングの段階て、正確な実行時間とと もに行 / 関数単位の実行回数もチェックし , 繰り返し文の繰り返し回数に誤りがないか などのバグを取り除くことも可能て、す。 この段階て、のファインチューニングは , 最終製品に近いものがてき上がってからプ ログラム全体のスヒ。ードを測って行う場合 よりも大きな意味があります。また , 全体 の実行時間の計測 / 修正に要する時間 ( ター ンアラウンド ) は , プロトタイピングの場合 に比べて数倍から数十倍を要することから も , プロトタイピング段階てのファインチ ニングは明らかに効率的なはずて、す。 もしこの段階て、パフォーマンスが不十分 だとプログラマが判断した場合には , 設計 者との相談によって設計変更を余儀なくさ れることもしばしばあります。 全モジュールリンク後の ファインチューニング 各モジュールまたは機能ごとのプロトタ イプが完了すると , 全モジュールをリンク して製品の初期段階がてき上がります。プ ログラマはもう製品がてき上がったとよく いいますが , 実際にはこの段階から製品出 荷まて、の時間 / 労力が相当にかかります。い くらプロトタイビングて、ファインチュー ングしても , 最終製品はなかなか希望する スピードに達しないものて、す。 なぜか ? プロトタイピングの段階ては一連のプロ グラムの流れをすべてチェックてきないか らてす。たとえばあるメニューからあるパ ラメータを設定し , この設定にしたがって ランしてみると , 別の設定の場合とはパフ ォーマンスが大きく異なることがあります。 その大きな要因のひとつがデータてす。 プロトタイプの段階て作成てきるデータの 種類 , および大きさが限られているのが通 常て、す。なぜなら , その段階てはデータ作 成ツールがまだ完成していないために , マ ニュアルて作成しなければならないからて す。データの種類 , 大きさによってパフォ ーマンスに大きな違いが生じます。さらに ディスク上のデータの分散化も大きな要因 てす ( ここても「 lnside! 」の DOS コール解析 てファイルの RD / WR に要する時間の違いを Conference Room 135

8. 月刊 C MAGAZINE 1990年4月号

4 月魁の限題売 C-RUNTIME Scientific Sub 「 outine Package 簡易記述型マクロセット C-MASM 画面操作支援ツール C 言語オリエンテッドエテイタ C - WR 灯田 / 98 カナ・漢字変換ライプラリ C 旧本語 / 98 GP 旧テパイス・ドライバ & C 言ンターフェ関数ライ方リ ウインドウ & メニューライプラリ 数値計算ライプラリ C-MATH 日 OM 化ユーティリティ C-LOCATE 5 1 8 9 0 」」 2 一馮 C 言語の入門、中級者向けの製品。 Lattice C の RIJNTIME Sou 「 ce の約 350 の 関数のうち、「プログラム言語 C 」 ( K & 日著、石田晴久訳、共立出版 ) に出ている標準的な 約 80 関数のソースプログラムを提供。基本的な関数の使い方を理解するために不可欠。 C 言語用科学技術計算ライプラリ託 087 ・ 80287 の能力を極限まで引き出すようプログラ ミングされており、三角関数などの初等関数から直交多項式、ケルヒン関数までの多彩な 関数を高速に計算することが可能。 * 英文マニュアル C 言語の関数として使用するアセンブラブログラムを容易にカつ汎用的、構造的に記述す るためのスノヾー・マクロセット。記述したアセンプラソースは MS - DOS 上で実行可能 なほとんどの C コンパイラに対応している為、コンパイラを変更した時のアセンプラソ←ス の修正作業は不要。 画面ファイルを作成するユーティリティ MKDSP により、予めテキスト部分や入力及び 出力フィールドを編集し、画面イメージを作成してしまう方法でプロクラム設計が行え、ユ ーサープログラム上では 0 ー ENT 日 Y のライプラリ中の画面インターフェース関数をコ ールするだけて、簡単ゐっ柔軟性に富んだプログラミングが可能。 ベストセラーのマルチ・スクリーンエデイダ日 ED 十十」を特に C 言語騙集用にチューン・ ナップした C 言語オリエンテッドエデイタ。他言語の編集や簡易ワープロとしても機能を発 揮する。 カナ漢字変換ライプラリ。この製品の使用により、これまで大変な労力を必した日本語 処理を完全実現。ライプラリは編集ライブラリと変換ライプラリの 2 つの処理系を持ち、簡 単なアプリケーションから本格的な日本語ワープロまでの幅広い開発をサポート。 MS ー DOS 上で GP 旧とのインターフェースを実現するためのデバイス・ドライバ。日 A ー SIC ライクな C 言語のインターフェース関数 ( ソース付 ) で C から GP 旧をコントロール できる。アセンフラから図 nt D 旧でアクセス可能。 PC -98 田で、計測機器の制御を行 うのに最適。 アプリケーション開発時のめんどうなユーザーインターフェース ( 操作方法 ) を考えること なく、目的のプログラミングに専念できる。付属のメニュー、アラート、ダイアログなどと共 に使用することで、マウスで簡単に扱える高度な環境を提供。 DOS のファイル八ンドルを使用したレベルの日 S ー 232C 入出力のみではなく、 C 言語だ けでは作成が難しい複雑な機能 ( ターミナル環境の作成、日 S ー 232C の制御 ) が簡単に実 現できる。サンプルとして本格派ターミナル・ソフト付き。 行列計算や、統計データ処理、複素数計算などをサポートする 55 個の関数が含まれる。関 数は全て、数値演算プロセッサをコントロールするアセンプラで記述されているため、非常 に高速に演算処理が行える。 Lattice C Comp ⅱ e 「で作られた siAPX86 / 87 / 88 月 86 の組込システム用プログラ ムを日 OM 化するためのツール。プログラムは日 OM へ、テータは日 AM へという割り付 けが、セグメント単位で自由にコントロール可能。 株式会社 LIFEBOAT 日 S -232C & ターミナルインターフェース・ライ方リ 【お求め方法】当社製品は、パソコンソフト取扱い店でお求めいただけますが、 弊社に直接こ注文の際は、凵 FEBOAT INDEX 事業部 (TEL: 03-293-3887 ) までお問い合わせ下さい。 〒圓ー東京都千代田区神田錦町 3 ー 6 PHONE : 03 ー 293 ー 47 Ⅱ代 FAX : 03 ー 293 ー 4 引 0

9. 月刊 C MAGAZINE 1990年4月号

SOFT BANK ・ Turbo C の奥義を示す Tu 「 bO C Ve 「 20 プロクラミンク 基本操作はもちろんのこと、内部処理の角斤をはじ め、 BGI の活用方法などト . 級操作も詳細に解 井上哲雄・酒井恵光・佐藤隆共著☆定価 2 , 900 円 ・初級 C 言語講座 PIay the C ( 上・下 ) C を身につけたい、これまて、の解説書て、はもの足り ない、そんな要求に応え C の世界を系統的にとらえ直 本青比古著☆定価各 1 , 550 円 して解説。 ・ C 言語の秘められた能力を解き放つ C プリプロセッサ・パワー C 言語の中て、も、とりわけ秘められたパワーをもっ プリプロセッサ機能の潜在能力を使いこなすにはどう すればよいかを解説。木昶青比古著☆定価 2 , 270 円 ・はじめての Turbo C プログラミンク Tu 「 bO C 入門 初心者にとってなじみのうすい「 TurboC 開発環境」 をたくみに解説しながら、具体的て示唆に富んだ用法 ニ 林晴比古著☆定価 2 , 680 円 をも満載。 ・最新 ANSI C 標準規格に完全対応 詳説 C 言語 H & S リファレンス C 言語プログラマから高い評価を受けている「 C : A Reference M 田 ulal 」第 2 版の完訳。 S ・ハービソン & G ・スティール共著☆定価 4 , 500 円 ・ MS ー C 活用の王道を示す MS-C Ve 「 .5.1 プログラミンク 基巣作からコンパイラの内部処理まて詳細に解説。 最童化のための手法、 ANSI 準拠のプログラミング作 法なども紹介。石田秋也ほか著☆定価 3 , 300 円 ・ Quick c の本格活用を示す QuickC プログラミング 工ディットからコンパイル・実行まて、の統合環境を 備えた「 QuickC 」の本格的入門ル 野口雄平・池田・中島昌ニ共著☆定価 2 , 680 円 ・ C STEP IJP シリース① 上級・ C 言語の応用 50 例 画面制御騙、ディスクドライプ制御騙ほか大きく 4 つに分け、それぞれくふうを凝らしてフログラムを作成。 上原・中山・石田・井上共著☆定価 2 , 480 円 ・ C STEP UP シリース② C 十十プログラミンク 今話題の言語、 C + + の本格的入門書。本書の各項Ⅱ をカード別にまとめ、サンプルリストや図版を豊富に 掲載。門内淳・赤堀一郎共著☆定価 2 , 680 円 ・ BAS ℃からのアプローチ C 言語の活用理解 具体例を数多く取り上げ、 BASIC の知識を有効に 利用しつつ、 BASIC から C へ順次移行て、きるように 保坂光・若林淳共著☆定価 2 , 060 円 解説。 ・基本からのアプローチ C 言語の基礎知識 短いけれど実用的なサンプルプログラムを紹介しな がら、 C 言語の基礎知識を解説しています。 門内淳・乗呆智・上原哲郎共著定価 2 , 500 円 ・実践からのアプローチ C 言語の応用 50 例 C 言語を使い 98 ー E て、どのようなプログラムが作れる のかを、豊富なサンプル例によって示しています。 上原・石田・乗松・中山・高木共著☆定価 2 , 370 円 はいーロ グ ? ツ UNIX ・はじめてのシェルプログラミングから IJN Ⅸ応用まで IJN Ⅸオペレーティングガイド UNIX の基礎知識から、シェルプログラミンク : MA CSYMA 、 s について豊富な例を用いながら紹介した 渡辺・岸本・佐藤共著☆定価 3 , 090 円 入門ル UNIX System V プログラマ・ガイドリリース 3.1 、ロ卩ロ、ア、パ、ツグ、オプ System V ReI. 3.1 について二・ ジェクトの操作等に関連するユーティリティ類および 定価 12 , 000 円 データ構造について解説。 UNIX System V ユーサ・ガイドリリース 3.1 UNIX System 環境の要素として有名なシェルや ⅵ、 ed 等の各種ェデイタおよび電子メールなど例を 示して解譓 定価 9 , 800 円 ☆印は税込み、無印は税抜きの定価です。 C 言語の応用 50 例

10. 月刊 C MAGAZINE 1990年4月号

後がどのようなものて、あるかがよくわかる。 私たちのように昔からのプログラマは多少 なりともデータの抽象化がなんて、あるかを 知っている。カカシたち ( 訳注 : straw men , 役立たす ) に私たちと同じような振る 舞いをしてほしくはない そのいつばうて、 , 現在て、も世界中にアセ ンプラブログラマは無数に存在している。 DOS のシステムコールを記述するプログラ マは , 昔のビットをもてあそぶプログラマ の数にも匹敵しているだろう。 OOPS の信奉 者の思考の半分程度は正しく抽象思考てき ほとんどのプログラ ているのだろうか ? マはなんらかの形て、強制を受けないかぎり 抽象思考を避けようとするのだろうか ? 優 秀なプログラマばかりとのつき合いがあま りに長いのて、 , 私にはごく一般的なやり方 がわからなくなったのかもしれない とはいえ , それほど状況は悪くはないか もしれない。抽象化を使ってよい効果をも たらす技術は誰もが身につけなくてはなら ないのだ。これはコンピュータブログラミ ングの多くの面と同様に , 簡単に会得て、き ることて、はない。いまだかって抽象化の方 法に関する簡単て、 , 率直なガイドラインを 読んだ記憶がない。テキストて、もまた高名 な論文て、もしかりて、 , この面ては私たちの 教育は不十分なようて、ある ( だからといって POS Ⅸ標準化に向けての活動にも参加してい る。 ホワイトスミス社の設立以前 , プラウガ ー博士はマンハッタンに本拠を置くヨード ン社の副社長であった。同社はプログラマ の生産性向上のための技術指導を専門とす る訓練養成およびコンサルティング会社で ある。ヨードン社時代以前の 5 年問は , ムレ イヒルやホルムデルにあるべル研究所に在 籍していた。ベル研では , UN Ⅸオペレーテ イングシステムの初期段階での普及に積極 的な役割を果たした。 ベル研のプライアン・カーニハンとの共 国民的スキャンダルになったりはしないが 抽匕のメリット , テメリット まず , 単純な点から確認しよう。これか ら述べることは , 無意識にて、はあってもす て、に承知しているか , わざわざ確認しよう とも思わなかったことかもしれない。しか し , 読者にとってまだ未知の事柄があるの て、はないだろうか。ともあれ , 以下に抽象 化に関して思いついたもっともシンプルな ガイドラインを記載しよう。 まずプログラミングに , なぜ抽象化を導 入するのか , 自分自身の理由を明確に認識 しなければならない。抽象化導入にあたっ ては , 必ず対価を払わなくてはならない以 上 , 気軽に考えるべきて、はない。抽象化の 利点ひとつひとつに欠点が伴っていること を忘れてはならない ■隔離 (insulation) プログラムが下位のインプリメントに過 度に依存することは避ける。しかし , 依存 を避けすぎれば , サイズとスピードの効率 が悪くなる。 ■ドキュメンテーション 選択したインプリメントだけからて、はよ くわからない情報を伝えたい。しかし , も し誤解を招くような情報を伝えてしまうと , デバッグとメンテナンスは悪夢となる。 ■完全性 (completeness) データが取りうるすべての状態と , この 状態のあらゆる遷移方法を完全に考慮する こと。しかし完全性についてやりすぎると , 開発に無用な作業を課すことになりかねな い ( 訳注 : completeness を完全性と訳した。 すべてを網羅していること ) 。 以上この 3 つのゴールを念頭におき , いく つかのガイドラインを検証してみよう。 の背景にあるもの まず , すべての数字に名称を与える。数 学的には昔は , 良好 ( good ) な数字は「無」 と「 1 」と「全部」の 3 つしかなかったのは 明白だった。これをプログラミングに当て はめれば , あなたのコードに 0 か 1 以外の定 数があったら疑ってみるべきということに なる ( 私は 0 と 1 さえも疑ってかかるべきて、あ ることも学んだ ) 。コード中に散らばってい る 80 という数字は本質的な定数てはなく , その背景にあるストーリーを表現している のてある。 80 という数値自体は変更されて も , そのストーリーはずっと変更されない 可能性がある。 各数値の背景にあるストーリーを , 覚え 著で , 「プログラム書法第 2 版」 ( 共立出版 , 1 976 ) , 「ソフトウェア作法」 ( 共立出版 , 1 981 ) , 「バスカルにおけるソフトウェアツー ルズ」を発表している。また , ジム・プロデ ィとは , ANSI C 標準の簡易参考書の決定 版 , 「 Standard C 」 (Microsoft press) を著した。 彼が執筆している月刊雑誌の記事には , COM PUTER LANGUAGE 誌の「 Programming on Purpose 」 , CUJ の「 Standard C 」 , 工ンべッデ イドシステムズプログラミングの「 State 0f the Art ( 最新技術 ) 」などが挙げられる。ま た , 彼は Embedded Systems Programming 誌 および JurnaI Of C Language TransIation の 顧問テクニカルエデイタをも務めている。 プラウガー博士は 1965 年にプリンストン 大学の物理学部を卒業し ( 教養学士号取得 ) , 69 年にミシガン州立大学で核物理学の博士 号を取得した。 1975 年にはもっとも優れた 新人 SF 作家に贈られるジョン W. キャンベル 賞を受賞し , 85 年には「プログラム言語 C に 対する顕著な貢献」に対し C85 賞が贈られ た。彼は ACM, IEEE, アメリカ物理学会 , ア メリカ SF 作家協会の会員である。 Programming on Purpose 17