C プロクラミンク 尋藹缺当 C 言語の文法はマスターしたが , きれい なプログラムが書けない。よく耳にす る悩みです。きれいなプログラムやよ いプログラムは経験に裏打ちされたプ ログラマの感性から生み出されるとい っても過言ではないでしよう。極言す 特集 フィンローダ れば C プログラミングの上達とは感性を 磨き上げることかもしれません。プロ グラマに求められる感性はどうすれば 磨き上げられるのか。そのひとつの指 針として , フィンローダ流 C プログラミ よしワログを書く条件 (NlFTY-Serve プログラマーズフォーラム SYSOP) A R C プログラムを書けることど、よい″ C プログラムが 書けることは同一ではありません。もちろん何かよ い″ C プログラムなのかにはさまざまな評価かあり ますか , ここではプログラマに求められるもっとも 根源的な条件について考察します。 今や , 質はともあれ , C 言語に関する書籍 は数多く , 入門書を自称したものだけても 数十冊もあります。しかし , 残念ながら , C 使いになるための条件 これらの本を読んて℃使いになろうと挑戦し たにもかかわらず , 挫折してしまった人や , 数十行程度のプログラムなら書けるように なったが , そこから先 , ちっとも上達しな い , という方が多いのてはないてしようか ? なぜ C 言語に挫折してしまうのか考えてみ ると , ひとつは , 世の中に「これだ」といえ るほどの入門書は本当に少ないのが原因と なっているようてす。多くの入門書を読ん てみましたが , どれも , ある程度のプログ ラミングの知識や処理系 , たとえば MS-DO S の知識が前提とされていて , 本当に何もわ かっていない人が読んても何もわからない ようなものが大半てす。 特集 C プログラミングの秘訣 43
1992 年 4 月 1 日発行 ( 毎月 1 回 1 日発行 ) 第 4 巻第 4 号通巻 31 号 1990 年 2 月 2 日第 3 種郵便物認可 提携・ LA ト℃誌 / 監修・石田晴久 C 言語技術情報誌・ C マカシン 1992 APR. VOI. 4 No. 4 980yen 初級 C プログラマに贈る C プログラミンクの 夫敗しないプロクラム書法への指針 5 ″ 2H D 特別付録 ・ C コンパイラ「 L 引 C -86 Ve 「 3.30 試食版」 ・スクリーンエデイタ「 SE3 」 ・ djgcc バーションアップ対応 98 パッチ ・本誌掲載ソースプログラム 新連載実践 C プログラミンク入門・プロクラミンクの基礎 / 速報米国版 B and c 十十 V 3.0 & AppIication Frameworks 巻頭インタビュー >W Ⅲ iam Crow 1 NewWave 設計開発者 / 提携記事 >A Scratchpad fo 「 Truth-FunctionaILogic/ スタートアップ C 十十 プログラミングの工ッセンスイへント駆動 / アルゴリズムとデータ構造入門メモリ管理 / ANSI c:mo 「 e / djgcc 詳解講座 / X68k 活用講座 4
特集℃プロクラミ、 ~ の秘 というと , ある程度の素質がある人が , い 体としても , それほど悪くないことが多い けるかどうかというレベルの問題てあり , くつもプログラムを書いているうちに , 体 のて、す。 早い話カ℃言語て、プログラムが書けるかどう て、判断て、きるようになってくるのて、はない そこて、 , ありきたりのようてすが , C 言語 かという問題とはほとんど関係がないのて、 か , と思います。重要なのは , 言葉て、説明 す。絵の具を買ってきても誰ても絵が描け に多少は関係あると思われるいくつかの条 るわけて、はないのと同じように , コンパイ てきないといっても , よい , 悪いの差は歴 件に対して , ひとつのガイドラインとなる 然として存在するということてす。 ものを Part2 以降て、述べたいと思います。た ラを買ってきてインストールして , よい入 ひとっ , アナロジーを考えてみましよう。 門書を読めば , 誰て、もうまいプログラムが だし , これから述べることは , あくまてガ イドラインにすぎないことを念頭に置いて 書けるようになるとはかぎらないのて、す。 故松下幸之助氏が次のような意味のことを いったそうて、す。「商売の道というのは , つまり , プログラムを書く人には , それ ください 実際 , これらのガイドラインを無視して 葉て、説明しても理解て、きるものて、はなく , なりの素質というか , 相性が必要てす。素 も , C のプログラムを書くことはてきるはず 体験して初めて身につくのて、ある。たとえ 質のない人が , 死ぬ思いて、修練したら , 人 並みのプログラムを書けるようになるかも ば , 塩がからい , 砂糖が甘いというのは , て、す。場合によっては , あえて逆らってみ しれませんが , 生まれつきプログラマに向 塩や砂糖を味わった人だからわかるのて、あ るほうがよいかもしれません。それが判断 いている人がセンスよく書いたようなプロ て、きる人なら , こんなガイドラインは不要 って , 塩も砂糖もなめたことがない人に グラムを作るのは , 多分無理てしよう。そ それを説明することはて、きない」。至言て、あ てす。自分の感性を信じて修行するべきて れよりも , もっと自分に向いた何かを見つ ります。プログラムのよい , 悪いも , この す。 けて熱中したほうがずっと有意義だと思い ただ , 初心者を名乗る方の中には , 本当 ように , それを体験して味わった人て、なけ れば , 真に理解することはてきないのてす。 に何をやってよいかわからないこともあり ます。 さて , まだ本特集を読んて、いる皆さんは , ます。 C 言語は , 空白は読み飛ばすから , イ よい , 悪いというのはそれほど感覚的な問 ンデントはどのようにつけても実行結果に 諦めすに , まだ頑張れるんじゃないかと希 題なのだ , という解釈て、す。 は関係ないだとか , 好きなように書いてか したがって , よいプログラムの書ける C 使 望を捨てなかった人だと思います。 いになるには , とにかくプログラムを作る , 「相性が悪い人には C のプログラムは書け まいません , といっても , それはそのとお りなのて、すが , 何をやってよいやらまった ません」て、終わってしまうと , さすがに編集 そして , ほかの人のプログラムもどんどん 読む。これは重要て、す。自分の悪い所とい 長から文句をいわれるかもしれないのて、 , くわけのわからない人に , 「好きにやってく ださい」といっても , かえって何もて、きなく うのは , なかなか気づかないものてす。し こて , 再度「よいプログラム」とは何か , なってしまうことのほうが多いて、しよう。 かし , ほかの人と比べてみると , 自分より 考えてみることにしましよう。 よし , 自分て、考えて好きにやってやろう , もうまくやっているな , と気づくのは簡単 この後は , あくまて、持論となります。「一 という人は , それて、結構て、す。考えるとい てす。したがって , 自分の力だけて、悪い所 般論としては認められていない」と認識して うのは重要なことてすから。しかし , どう いただいた上て、読んて、いただければ幸いて を直すのは , 極めて非能率的て、あり , ほか て、もいいといわれても困る , 何か参考にな のものと比較してみる , これは結構効率的 す。 るものはないか , と思う人のほうがずっと いきなり結論を書きましよう。「よいプロ な方法て、す。 グラム」とは何か。ずばり一言て、 , 「そんな 多いはずてす。 ほかの人が書いたプログラムを読もう すてにあるものを真似して腕を磨く , と ものは言葉て表現てきない」。もちろん , 各 さて , 結論が出てしまったのて , この記 いうのは多くの「道」にあてはまる方法て、す 論として , よいプログラムの条件を個別に 事はこれて終わりになるところてすが , も が , プログラミングにおいてもあてはまり 考察することは可能てす。その多くの条件 う一歩踏み込んてみたいと思います。 ます。そのための指針となるものとして , は , 論理的に判断てきるような形て定義て、 よいプログラムを言葉て説明することは 本特集がお役に立てば幸いてす。 きるかもしれません。ただ , それら条件の てきないと書きました。しかし , 各論とし 集合した全体としてプログラムを捉える場 合 , それがよい悪いか総合的に判断する て , よいプログラムの条件を個別に考察す ることはてきるとも書きました。ならば , には , やはりその人のセンスに委ねるしか それぞれ細かい所て , よい , 悪いの評価を ないと思うのてす。結局 , プログラマの感 各論を述べる前に , 宣言しておきたい 行う方法は残っています。これは全体的な , 性なくしては , よいか悪いかを判断するこ よい , 悪いの判断とは必ずしも一致しませ とがあります。 とはてきないと思うのてす。 まず , これから述べることは , 私が現在 ては , その感性はどうやれば身につくか んが , その一部分がよいプログラムは , 全 特集 C プログラミングの秘訣 45
C プログラマ のための 中島信行 第 19 回常駐しないデバイスドライバ 今回はちょっと変わったネタ (CONFIG. SYS で登録するテパイスドライバであるにもかかわら す , 常駐しないというおかしなもの ) を取り上げま す。常駐しないテパイスドライバにどういうメ リットかあるのかは皆さんの判断にお任せいたし ます。気楽にお読みください。 する 録される前に処理しなくてはならないため , 常駐しない ③特殊日付変更ユーティリティ CONFIG. SYS の最初に記述しておく必要が テパイスドライバとは 12 月 24 日 , 13 日金曜日などの不吉なこと あります。 常駐しないデバイスドライバは参考文献 が起こりそうな日付を起動時に変更する しかし , デバイスドライバを選択した後 [ 1 ] て紹介していますが , その中て、はデバ これだけては何のことかわからないてし は常駐する必要はなく , 初期設定ルーチン イスへッダをアセンプラて、記述する方法を ようが , これらに共通する点は CONFIG. S さえ実行て、きればよいだけて、す。 DOS の 64 取り上げています。今回はアセンプラの助 YS や AUTOEXEC. BAT て、起動されるほか 0K バイトは貴重な資源てす。わずか数十バ けを借りないて記述する方法を紹介します のプログラムよりも , てきるだけ先に実行 イトて、もムダに常駐させたくはありません。 ( 代わりに , インラインアセンプリ言語を使 させたいということて、す。 ここに常駐しないデバイスドライバの価値 用します ) 。 ューザが指定て、きるプログラムて、もっと があるのてす。要するに , 通常のプログラ ところて , 常駐しないデバイスドライバ も早く実行されるものは CONFIG. SYS< 登 ムをより早く実行させたいためにデバイス とはいったいなんなのかと思われる方も少 録するデバイスドライバの初期設定ルーチ ドライバの形態を取って記述するだけのこ なくないてしよう。ちなみに , 参考文献 [ 1 ] ンてす。これ以前は , IO. SYS や MSDOS. S とて、す。 て取り上げたプログラム例を紹介しましょ YS などの DOS のプログラムてあるため , ュ デバイスドライバを C 言語て記述すると普 ーザが細工することは簡単にはてきません。 通は常駐サイズが気になるものてすが , 常 ①画面消去 / 表示ユーティリティ (PC-9801) たとえば , 上記のデバイスドライバ選択 駐しないデバイスドライバてはプログラム DOS 起動時のメッセージを見せないため サイズは大きくなるものの , ユーティリティては CONFIG. SYS に記述し 常駐サイズ = 0 CRT を消す たデバイスドライバを起動時に選択して登 ②デバイスドライバ選択ユーティリティ て、すから , C 言語て記述するメリットだけが 録てきるようにするためのものてすが , そ CONFIG. SYS のデバイスドライバを選択 享受てきます。 のためには , ほかのデバイスドライバが登 新 MS-DOS プログラミング入門 91 加グノグ入門 新 ()S
特集℃プログラミンクの秘 語は , C のプログラムて、あっても使わない 界からは当然そんなことは知ったことて、は うわけて、す。 とをおすすめします。 ないのて、す。 ほかに , よく使われる伝統的な意味を持 たとえば , 学校の成績処理プログラムを このような , 自分の世界以外て、使われて つ変数を示しておきましよう。 書きたい人は , 次のような構造体を作りた いる名前というのは , 案外無頓着なものだ int C くなるかもしれません。 し , 実際 , それて、問題になることも極めて 文字を格納する使い捨ての変数て、す。 struct student { 希て、すが , それて、も知識として持っている れを char とする人がよくいますが , 伝統的 名前があれば , 考慮するに越したことはな に int て、す。また , int て、受けないとおかしく int grade int Class , いと思います。 なることもあります ogetc などはマニュアル ただし , これらの関数名を伝統的に使わ int number を見ればわかるように , int の値を戻します れている関数と同じ機能を模倣するために char *name , から , 当然 int て、受けなければなりません。 使う場合は別て、す。かえって変な名前をつ char *S , この構造体の欠点は , class という名前を けるとイメージがわかないからて、す。この 作業用の , 文字列へのポインタとして使 使っていることて、す。将来 C 十十に移植しよ ような場合て、も , printf て、はなく my printf います。 string の頭文字を連想させるためて、 うとした人が , びつくりするかもしれませ という関数名にしておく手があります。 ん。悲惨なことにならないことを祈ります。 C 言語からほかの言語へのプログラムを移植 これらは , 使い捨ての変数として使われ する機会は , 神経質になるほどのものて、は ます。 for て、ループさせる場合のカウンタに ないかもしれませんが , 一応 , C 十十への移 次のリストを見てください。少し C て、プロ よく使われます。これらにかぎらず , 1 文字 植というのは , もっともありそうなことて、 グラムを書いたことのある人が見ると , 「間 の変数は , おもに使い捨ての一時変数とし すから , C 十十の予約語は避けておくのがよ 違っているぞ」と指摘されるかもしれませ て使われるものと思えば , たいてい間違い いて、しよう。 ありません。 ん。 もうひとつの , 使ってはならない名前の void main(int argv, char *argc [ ] ) int n 同にく使 0 、捨、 0 変数て、す , 00000 , を 指針。 ANSI 以外の処理系における慣習的な 関数名は , ほかの用途に使わないほうがい 連想させるのて、 , 個数を意味することが多 いて、しよう。ただ , 私もそうて、すが , 多く いようて、す。 のプログラマは自分のかぎられた世界に閉 long に じこもることが多く , ほかの世界が見えな 使い捨ての変数て、も , 1 は 1 。 ng の変数とし くなってしまうことがしばしばあります。 て使われることが多いようて、す。 しかし , このプログラムは文法的には何 さすがに printf や fopen という名前を , 自分 も間違ってはいないのて、 , コンパイルすれ int len て、定義したまったく別の関数につけること 長さて、す。何の長さかは , 場合によりま ば , 予期したとおりに動作します。間違っ はありません。 す。 long のことがあるかもしれません。 10n ているのは , プログラムて、はなく , main の しかし , UNIX の世界しか知らない人は , g なら llen と書きたくなるところてすが。 引数に argv, argc という順序て名前をつけ findfirst という名前をまったく独自の関数の char buf [ ] るという感性て、す。この種の名前は , 伝統 名前として使ってしまうかもしれないのて、 作業用の文字列を格納するためのバッフ 的に命名されていて , プログラマが勝手に す。なぜなら ,DOS の世界に findfirst という アとして使われます。 buffer の後半分を略し 変えるのは望ましくありません。そういう 関数があるということを知らないからて、す。 意味て、はこのプログラムは確かに間違って たものて、しよう。 何か最初の要素を検索するような関数に いるわけて、す。 char *src , findfirst という名前をつけたくなるのは自然 伝統的に使われる名前は , て、きるだけ先 char *dst ; な発想なのてす。 達に従うのが得策て、す。 src は source, dst は destination を意味して 逆の例てすが , 昔 LHarc を UNIX に移植し argc, argv はそれぞれ関数 main に渡され います。文字列をコピーするような場合に , たとき , link という関数が独自に定義されて る引数て , コマンドラインのパラメータの src から dst に向かってコヒ。ーすることになり いたため , とんてもない目にあった経験が ます。 数と , 各パラメータの文字列へのポインタ ありました olink という関数があることは U を順に格納した配列を意味するのが伝統て FILE *fp , NIX の世界ては常識なのてすが , DOS の世 ファイルポインタとして使われます。 fil すから , 上のように書いたら目茶苦茶とい 65 特集 C プログラミングの秘訣 す。 int i, イ的に使われる名前 while (——argv > 0 ) { puts(*argc 十十 ) ;
ベストと考えて実行していることて、す。取 り敢えず , フィンローダ流とて、もいってお きます。すて、に述べたように , プログラム を総合的に評価するには感性に大きく依存 するというのが私の主張てす。したがって , フィンローダ流という流儀は , 私の感性に 依存し冫 : 評価て、あって , 別の人からみれば , 全然よ、ないと感じるようなことが含まれ ている力もしれません。 そこて、 , これはあくまて、ひとつの流儀て、 あって , 決して唯一正しい解釈て、あるとい うことてはないことを前提にしてください ほかの解釈のほうが合理的て、あると考える 人は大勢いるはずて、す。 もうひとつは , 私自身 , 今後ずっと本稿 が正しいと考えるかどうかは , 保証しかね るということて、す。プログラミングにおい て , これが最善と断言するのは , なかなか 難しいものて、す。たかがひとりがプログラ ムを書いて身につけたことを述べるのて、す から , これからさらに経験を積むことによ ほかの方法がよいと思い直したり , 考 え方が変わることは十分考えられます。 日々是修行て、す。私が保証て、きるのは , Part2 以降は , 現時点て、私が最善だと思い込 んて、いるにすぎないという点て、す したがって , これから述べることに対し て , 何か反論のある方もいると思いますが , 反論のほうに分があると思えば , 私はころ ころと自説を変えると思います。私の持っ P A R 9 ている一貫性は , そのとき正しいと思った 判断に従うということて、す。一度いったら あくまて、覆してはならない , といった考え は , まるて、持っていません。結構無責任と いえば無責任な話て、すが・・・ そこて、 , 次のことを強くおすすめします。 これから書くことは , あくまてあなたがど うすればよいか , あなた自身て考えるため の参考にとどめてください。書いてあるこ とを鵜呑みにしないて、 , 自分自身て、考えて , それに従って判断してください。既存の流 儀を越えた , 自己流をあみ出す意気込みが あれば完璧て、す。考えるということは重要 て、す。考える習慣をつけることが , よいプ ログラムを作る近道て、もあります。 明解プログラミンクのすすめ ムと , 一見して判読しやすいプログラムとでは大き 保守管理には , 動作さえすれはいい難解なプログラ も明解なプログラムを生む秘訣ではないでしようか。 思考の流れを妨げないプログラミング。これか誰に な差がつくものです。 なせ 3 わかりやすく 書くべきなのか 46 C MAGAZINE 1992 4 どうせ自分は趣味のプログラマだから , ほ りやすく書こう」といわれます。なかには , 一般論としても , よく「プログラムはわか が多いようて、す。 まず不可能に近いような神業に感じること ログラムをわかりやすく書くということは , し , 実際に書いてみればわかりますが , プ をわかりやすく書く , これだけて、す。しか は , ただ一点に集約て、きます。プログラム フィンローダ流のプログラム書法の核心 かの人が読みやすいように努力してもしょ うがない , と勝手に思い込んて、いる人もい るようて、すが , とんて、もない話て、す。わか りやすく書こうというのは , もちろん , 自 分にわかりやすくするために書くのて、す。 ある程度の規模のプログラムを作ったこ とのある人なら誰て、も , 次のことを経験し ているて、しよう。 「プログラミングに集中しているときは一 時的に脳の力が高まり , 普段以上の精神 活動を行うことができる」 しかし , 恐るべきことに この能力は時 間が経過すると通常の状態に戻っていきま す。その速度は , 脳の力が高まる度合に比 例します ( 1 ) 。その結果として , 自分が書い たものなのに , 見たこともない文字の羅列 となり , 解釈すらて、きないことがよくある のてす。したがって , わかりやすくプログ ラムを書く心構えは , まず他人たる自分の ためにそうする必然性があることを , 十分 理解しなければなりません。 しかし , はっきりいって , わかりやすい か , わかりにくいかは , 主観に大きく依存 する問題て、す。これが絶対真理だ , という 法則はなかなか見つかりません。 しかし , 大雑把な範囲て、 , 「こうすればわ かりやすいと感じる人が多いのて、はないか」 という程度の判断は , 多くの人が感覚的に
LANGIJAGE 真理関数論理 た MN) スクラゝチノヾッド A Scratchpad 館 T 頑ト FunctionaILogic Gianfranco Boggio-Togna/ 岩谷宏訳 (COMPUT R LANGUAGE, Dec. 円 9 1) 雑な論名まどんなプログラマをも混乱させる。真理 関数のためのスクラッチバッドは最高にややこしい問題 で解明を支援する ALGORITHMS ーま新第 0 馬 もた OMP リ R IANGIJ, Å GE A [ GO 翩期 5 5 P ・ BY ・ 5 種 P 提携記事 MPLEX ーに Gender 釦 印圓 R 胤ー 理論を完成させています。 プログラマは , 論理式ないしプーリアン ばよいのて、す。 真理関数論理は , 論理の基礎的な部分て、 ーっの論理式は , それの項 ( 複数 ) の真理 式をよく使います。条件文を使わないて、 , あり , その他の部分はそれの上に構築され 値の真理関数て、す。 何か実用性のあるプログラムを書くことは , ほとんど不可能て、す。条件文て、は , if の後に プログラミング言語と , それの論理式に ます。 何らかの形の論理プログラミングに手を 論理式が続きます。 は , 30 年あまりの歴史があります。記号論 出してみたい人は , 真理関数論理からスタ その論理式は , ふつうはごく単純て、す。 理にはもっと長い歴史があり , その一分野 x=0 〔 Pascal 記法 , C て、は x = = 0 〕とか i< ートしなければなりません。 て、ある真理関数論理 ( ないし命題論理 ) は , しかし , 論理プログラミングに関心がな コンヒ。ュータやプログラミンク言語が登場 n といった単一の項が , プログラムの変数 くても , 真理関数論理の十分な理解がどん するよりもずっと前に , 真理関数に関する と , 他の変数ないし定数との関係を記述し ます。その関係が成り立てば , その式は真 TabIe 1 演算子のアクションは表で定義される になります。 オペランド ときには , 複数の条件の組み合わせをチ ェックしなければならない場合があります。 どのプログラミング言語も , 複雑な式を構 築するために not , and, or という三つの演 算子を提供しています。これらの演算子の アクションは , TabIe 1 に示すような表て、定 義て、き , オペランドの値の組み合わせと式 の値を対比させられます。 これらの表は , 項の形式や意味は何も表 現していません。唯一かんじんなのは , 項 が真か偽かということて、す。そこて、このよ うな表を , 真理値表と呼びます。 実際 , 論理式というものの特徴は , 真か 偽かのどちらか ( = 真理値 ) にしか評価され という点にあるのて、す。論理式を評 価するためには , 各項の真理値さえわかれ not オペランド オペランド land オペランド 2 真 オペランド 10 「オペランド 2 真 オペランド 2 真 真 オペランド 2 真 偽 真 オペランド 1 真 オペランド 1 真 真 22 C MAGAZINE 1992 4
: い月冂日 青町 ( を : 」 0 0 にをゞに F 「 0 Ⅳ匱に第 of ⅲ 5 ね「を ー保有機 いト製品 ート試作用 ーし製発 し市医目的 ト画面作成 ト機能ボタン ト択一ホタン バラメータ に Readers' 0 ① ト制 プロトタイピストは試作品を作ります。 プロトタイビストは画面人出力の設計 / 制作を行う ツールです。実際に動作するマルチウインドウ画面 が対話型で即座に作成できます。手にしたその日か らあなたの有能な助手 ( PROTOTYPIST ) にな ります。 プログラム作成者なら ・大至急で操作手順を書類にしたい。 ( 資料作成 ) ・プログラムの完成型を実際に操作しながら設計 したい。 ( 仕様検討 ) ・プログラム完成時の動作を顧客に見せたい。 プログラム発注者なら ・自分が欲しいものを開発者に具体的に見せたい。 ・完成品と同じように動作させながらアイディアを ねりたい。 モニ 募集 綴じ込み葉書でこ・応募ください 3 名マシン共通化ライプラリ 1 名 Graphic Window Library 提供 : 吉正電子 ( 株 ) 提供 : ( 株 ) ティップス TEL 03 ( 537D3041 TEL 03 ( 5828 ) 0511 PFL/ 叩驪 0 W 面 br 町 株式会社ティップス 複数のパソコン上で同一仕様の関数を提供する言語ライ オールグラフィックスウインドウライプラリ PC ー 9801 シリ プラリ PC ー 9801 シリーズ , J ー 3100 シリーズ , AX マシン , ーズ用 5"2HD(MS-C, QuickC 対応 ) FM-R シリーズ対応 ( MS ー C 対応 ) / COMPUTER LANGUAGE 1 名 C プログラマのための アルゴリズムとテータ構造 10 名 提供 : C マガジン編集部 提供 : ソフトバンク 印 0 プロトタイピストは完成品を作ります。 プロトタイピストは単なる試作品開発用に留まるもの ではありません。作成した試作品にプログラム ( C 言 語 ) を組み込むことによりそのまま完成品へ移行でき ます。 従来のプログラムジェネレータ方式とは異なり完成 後の仕様変更に柔軟に対応できます。 対応機種 PC -9801 , IBM-PC, J -3100 \ 49 , 000 プロトタイピスト The C LibrarieS use 「・ s Manual C ドキュメント作成プログラム 「川 マイクロドック出力サンプル プログラムの変化に対応できる文書化システム C 言語のソースより詳細仕様書を自動作成しま す。表紙、目次、モジュール構成図、モジュールー 覧、関数仕様書等を一冊の仕様書として罫線でレ イアウトして出力します。また、用紙のサイズ合わ せ、出力項目の選択等ができます。ソース上に決め られた型でコメントを記述すれば仕様書の中に取り 組むことができます。これによってドキュメントの完全 自動作成も可能です。また、できあがりの文章をワー プロ等で編集できます。 対応機種 PC9801 シリーズ・ MS-DOS マシン 解析対象 K & R 仕様に準拠した C ソース \ 39 , 000 マイクロドック ( C ソース付 ) 上記製品はいすれもデモ . ディスク ( 無料 PC98 -5 インチ FD ) があります。資料及びデモのご請求 は FAX でも受付ています。 マイクロアート株式会社 〒 221 横浜市神奈川区鶴屋町 2-9-22-614 TEL 045 ー 316-6508 FAX 045-316-6509 受付時間 AMIO : ()0—PM5 : 側 ( 月 ~ 金祭日除く ) く資料請求番号 166 〉 166 C MAGAZINE 1992 4 D EC. ・応募の注意 とさせていただきます。 ◇綴じ込みの葉書に必要事項 ( アンケートの回 ◇モニタに当選された方には , 後日アンケー 答 , 住所 , 氏名 , 電話番号 , 希望モニタ番号 ) トなどの形式で編集にご協力いただきます。 を明記のうえご応募ください。 ◇記入もれやモニタ番号が複数記入されてい ご了承ください。 ◇締め切りは 4 月 1 8 日必着です。 る場合 , 綴じ込み葉書以外でのこ応募は無効 ⑩スタートアップ C 十十 ①巻頭インタビュー WilliamCrow @ANSI C ー more ② Programming on Purpose ⑩応用 C 言語 C の道具箱 ③提携記事「真理関数論理の・・・・・・」 ⑩ C 言語フォーラム ④フリーソフトウェア最新レポート 綴じ込み葉書裏面の ⑩三田典玄のランダムアクセス ⑤ BOOK REVI EW ⑩ GCC で学ぶゲームプログラミング 記事評価アンケート ⑥速報「米国版 BC + + Ver. 3.0 ・・・・ ⑩ワンポイントプログラミング講座 ⑦特集「 C プログラミングの秘訣」 には右記の数字をご ⑩ C マガ電脳クラブ ⑧プログラミングの工ッセンス 記入ください。 @丹羽信夫の迷走プログラミング ⑨アルゴリズムとデータ構造入門 @C MAGA News Square ⑩ djgcc 詳解講座 HellO GCC World @lnformati on from Compiler ・・・ ⑩新 MS ー DOS プログラミング入門 ⑩実践 C プログラミング入門
APR. 1992 Vol. 4 No. 4 C 〇 NTENT : 円 92 年 4 月 ( 毎月一回日発行 ) 第 4 巻第 4 号通巻引号、円 90 年 2 月 2 日第 3 種郵便物認可 William M. CrOW 。。 w 。ー設計開発者 Programnung on Purpose fTechnical writingJ p ・ J. Plauger• 真理関数論理のためのスクラッチバッド COMPUTER LANGUAGE 提携記事 A Scratchpad fo 「 Truth-Functional Logic フリーソフトウェア最新レポートく第 28 回〉かっこいい環境でメニュー操作野口雄平・・・ Book Review 速報 米国版 Bo 市 nd C 十十 Ver. 3.0 & AppIication Frameworks 天元広海・ 。 = C プロクラミンクの秘訣 フィンロータ Part I ・よいプログラムを書く条件 Part Ⅱ・明解プログラミングのすすめ partm ・実践プログラミング書法 Section 1 実効的なコメントの書き方 Section 2 実例に学ぶインテントと空白 Section 3 変数・関数のネーミング法 プロクラニングの工ッセンスく第 3 回〉。もしも。 ( ィベント駆動編 ) 結城浩 アルゴリスムとテータ構造入門く第 17 回〉メモリ管理アルゴリズム近藤嘉雪・ H 0 GCC WO 面く第 6 回〉グラフィックライフラリ ( 2 ) 安田英之 djgcc 詳解講座 新 MS ー DOS プロクラミンク入門く第 19 回〉常駐しないテノヾイスドライバ中島信行 C プログラマのための Step by Step 実践 C プログラミンク入門 新連載 く第 1 回〉コンヾイラの基礎知識とプログラムの仕組み奥村晴彦・・ スタートアップ C 十十く最終回〉 C 十十のノヾワー木戸研ー・龍崎昌平・白倉伸一郎・山本浩文・・ ・・・ 106 実力養成講座 ANSI C ー more く第 12 回〉構造体 ( 2 ) きだあきら・ ・・・ 116 の道具箱く第 22 回〉 MS ー DOS 上ての UN Ⅸプログラムの開発 ( フーイルの表示 ) 豊国永健・ ・・・ 126 応用 C 言語 恥すかしながらドジりましたく第 29 回〉宣言と定義岩谷宏 ・・・ 134 C 言語フォーラム = 田典玄のランダムアクセスく第 10 回〉ダウンサイジングい ・・・ 138 痛快工ッセイ GCC で学ぶ 68 ゲームプロクラミング第 1 。回〉スプライトゲームの完成 ( 2 ) 吉野智興 ・・・ 140 X68k 活用講座 ワンポイントプロクラミング講座く第 2 。回〉マウスを使。てみよう ( 2 ) 上田哲ニ ・・・ 146 C マガ電月畄クラブく第 13 回〉線上に欠けるコイン吉柄責樹・ ・・・ 150 円羽信夫の迷走プログラミングくその 4 〉論う・ ・・・ 152 C MAGA News Square ・・・ 154 156 lnformation from CompiIer Makers Readers' Room 164 ティスク内容のお知らせ ・・・ 167 EDITORS' ROOM ・ ・・・ 168 ・本記事中のプログラム名 , システム名 , CPU 名は一般に各メーカーの登録商標です。本文中では TM , ⑧マークは明記していません。 ・本誌および付録ディスクに掲載されたすべてのプログラムは著作権法上 , 個人で使用する目的以外で無断で複製することは禁じられています。 表紙・イラストレーション・秋山育 / テザイン・持田哲 Publisher: Masayoshi Son PubIishi 四 Director. GO 「 0 Hashmoto Editor-in-Chief: Shimchi Hoshino Manager 朝 SaIes and Advertising. Yosh10 Goshma E 曲 0 「囿 and Busi ness 0ffices: NS Takanawa Bldg. , 2-19-13. Takanawa, Minato-ku, TOkyo 108. Japan Editorial: PhOne ( 03 ) 54 -1318 SaIes. Phone ( 03 ) 54 -1360. Advertislng. Tokyo. Phone ( 03 ) 5488-1 5 Osaka: Phone ( ) 264-1471 Copyright@ 1992 SOFTBANK Corporation. TOkyo. AII rights reserved. NO materialin this publication may repmjced. in w れ 0 0 「 in part. in any 「 m without permission. printed in Japan 1 2 巻頭インタヒュー ・・・ 43 C. 、 G 爪を
William M. Crow 頭インタビュー N ewWave 設計開発者 ・インタビュー / Tim Scannell ・翻訳 / 株ィーオン CTS ・撮影 / 小平尚典 入れられるには , 少し先行しすぎていたよ うだ。その結果 , Windows プログラミング 界のトップの座を MS-Windows に渡してし まったようだ。今日 , MS-Windows はかな り成功し , 本来 NewWave のコンセプトて描 かれていた夢を実現したようて、ある。 NewWave コンセプトの生みの親のひとり に WilIiam M. Crow 氏がいる。 Crow 氏は 1 984 年の入社以来 , NewWave の設計や開 発 , そして HP 社の PC 用ソフトウェア開発に 携わってきた。彼は , オプジェクト指向プ ログラミングの専門家て、あるだけて、はなく , OA やマルチメディアシステムのような話題 にも精通している。 こ <Crow 氏に NewWave の発展と継続 中の戦略について , またオプジェクト指向 プログラミング環境と C 十十のような言語と の関係などを語ってもらった。 NewWave の戦略 マシンの独立性をもたせるように設計され NewWave 登場 、 0 そもそも HP 社の NewWave に対する戦略 数年前に比べて , HP 社の NewWave 環 1987 年初頭 , HP 社 (Hewlett-Packard C 境のオリジナル設計や全体の戦略は , どの は , キャラクタベースのソフトウェアに 0. ) はグラフィックや非テキスト要素を重視 ように変化したのでしようか ? また , 最 グラフィックと初期のワークステーション した革命的なプログラミングと開発環境を 機能を取り入れた環境を作りだすことにあ 近のオプジェクト指向プログラミングに対 発表した。この NewWave ( ニューウェープ ) った。同時に , ューザがプログラムのセク する新しい関心や開発が , NewWave の基本 と呼ばれるアクテイプな環境下て、 , ューザ ションを簡単につなげて新しい強力なプロ 構造になにか重要な影響をもたらしたので やプログラマはさまざまな要素やデータを グラムを作ることを可能にするモジュラー しようか ? つまりビルディングプロック式プログラミ Crow NewWave の基本構造に大幅な変化 リンクし , 非グラフィックデータをつなが ングシステムを作り出すことも目指してい ったひとつのシステムに入れることがて、き はありません。この種の環境としてはまさ る 0NewWave は , C 言語 ( 後に C 十十て、開発 に最初のものて、したし , 私の知るかぎりて、 た。 された ) に基づくものて、 , オプジェクト指向 は , オプジェクト指向環境マネージャを実 NewWave 環境は明らかに時代を先取り プログラム技術を利用て、きる環境としては 現する製品としては , 現在唯一の完成した していたにもかかわらず , テキスト形式の 製品て、す。我々は , さまざまなオプジェク おそらく最初のものて、あり , 高い移植性と プログラミングに慣れたユーザに広く受け 1 12 C MAGAZINE 1992 4