SOFT BANK 好評既刊 C STEPUP シリース 字句解析・構文解析の基礎からコード・最適化まで c コンヾイラの内部を徹底詳解 月刊 c マガジン連載記事を大幅に加筆 C STEPUP シリーズ③ yacc による yacc による C コンプログラミ沙 近物霧著 C コンラ プロクラミング ② C 十十プログラミング ①上級・ C 言語の応用 50 例 門内淳・赤堀一郎共著 上原哲郎・中山雅彦・石田秋也・井上哲理共著 B5 判・ 272 ページ B5 判・ 296 べージ 上級・ Ci ) 応用例 C + 十プログラミ冫名定価 2 , 680 円 定価 2 , 480 円 0 い」 l) シリー・・ズ 3 近藤嘉雪著 B5 判・ 344 ページ 定価 3 , 300 円 パーサジェネレータである yacc を使って、実際に C コンバイラ のサプセッ、ト版である cm コンバイラを作成する。 ソフトバンク ・ヒープ領域管理 ・宣言の処理 ・コード生成の方針 ・式の木構造表現 ・式のコード生成 ・文のコード生成 [ 2 ] コンノヾイラを作る ・コンパイラのしくみ ・ Getting Started ・文法の定義 ・メインルーチンとヘッダファイル ・レキシカルアナライザ [ 1 ] yacc 入門 ・ yacc とは ・形式言語理論 ・ yacc のしくみ ・電卓プログラム 定価はすべて税込みです ソフトバンク出版事業部
: 龜新 MS - DOS プロクラミング入門 そこて、本連載ては MS ー DOS の機能のなか 場合には筆者が使用経験し , ある程度の資 などを考慮したものといたします ( ただし , からおもしろそうなテーマをひとつずっ取 料も入手している 動作確認は PC ー 9801 シリーズのみ ) 。 り上げその原理を説明し , アセンプラや C PC ー 9801 シリーズ て、きるだけ多くのコンパイラに対応させ J ー 3100 シリーズ 言語による簡単なプログラミング例を示し たいのて、すが , ヘッダファイルやライプラ ていくことにしました。解説を希望する機 AX マシン リ関数に違いがあるためなかなか難しい面 能がありましたら , 本稿への手厳しい批判 TabIe 1 MS-DOS の構成 を添えて編集部宛てにお便りをください 機能 ファイル名 とりあえず連載を開始するにあたって ドライプ A : , B ・ テパイスドライバ ( CON , AUX, CLOCK, 9. SYS 1 リダイレクト MSDOS. SYS システムファンクション INT 20h ~ 3Fh 2 ファイルの日付 / 属性の取得と変更 COMMAND.COM 内部コマンド ( COPY , TYPE, DEL, ・・・ ) , バッチファイルの起動 3 ファイルの検索 標準出力に出力するプログラム ( testout. c) 4 デバイスドライバとの会話 というような項目を拾い上げてみましたが 1 : #include く stdio. h> ( もうひとつパッとしないてすね ) , 今後の 2 : 3 : int main(void); 反響により内容は変わっていくと思います 4 : 5 : int main() し , 任期を満了しなくてもネタ切れと同時 printf( " 標準出力 \ n " ) : 7 : に本連載もヾ無事〃終了してしまうてしょ return( 0 ) : 8 : う ( 連載止めるにや刃物は要らぬ / 批判の 3 つも書けばよい ! ? ) 。 前提となる MS-DOS の環境 本稿を書くうえて想定している M S ー D O S の環境としては , MS-DOS Version 3. x Microsoft C Version 5.10 Microsoft Macro Assembler Version 5 . 10 を標準の環境とし , とくに断わらない場八 はこの環境を前提にしています。動作確認 は PC ー 9801 シリーズの MS-DOS 3.3B ( 1989 ー 11 ー 27 ) て行いますが , てきるだけマシン依 存を避けたプログラミングをこころがけま す。したがって MS-DOS 3.1 以降が動作す るマシンて、あれば問題なく動作するはずて す。ただし , PC ー 9801 シリーズの MS-DOS 3.1 て、もバージョンにより一部動作の異なる 部分がありますから , ほかのマシンの MS- DOS< も動作が異なる場合があるかもしれ ません。手元にマシンがあれば確認するの てすが , 一介のエンジニアに各種のマシン がそろえられるはずがありません。その点 もし , マシンに依存す はご容赦ください List 出力のリダイレクトテストプログラム 1 (testl . c) 1 : # i ncl ude く std i 0. h > 2 : #include く process. h> 3 : 4 : int main(void); 5 : 6 : char *cmd[] "testout ” 7 : 8 : NU しし } : 9 : int main() return( spawnvp( P-WAIT, cmd[ 0 ] , cmd ) List 出力のリダイレクトテストプログラム 2 (test2. c) List 1 : #include く stdio. h> 2 : #include く process. h> 3 : 4 : int main(void); 5 : 6 : char *cmd ロ 7 : command ” 8 : 9 : ” testout ” NUL し } : 13 : int main() return( spawnvp( P-WAIT, cmd[ 0 ] , cmd ) 新 MS-DOS プログラミング入門 93
( on ⅳ 0 Ⅲ ( 0 「 5 the XIib Way 数の一部て、す。 Red 「 aw ( ) 関数はウインドウ 全体を再描画します。私たちはこの関数を , X が Expose イベントを送り , 私たちが現在 色を変え , そして , その結果を見たいとき にコールしています。描画は , 矩形を現在 色て、描くことから始まります (List 16 ) 。そ れから , List 17 に示すように , black のテキ ストとして , 現在の RGB の値て、描画します ( ウインドウの背景色は white て、す ) 。 後始末 お行儀のよい X アプリケーションは , プロ グラムの終了前にリソース ( とくに大量のメ モリを使用するもの ) の清掃 , 後始末をしま す。これによって , X se Ⅳ er は仕事がやり やすくなります。 後始末用の関数は , 何かを free したり , unload したり , ( 私たちが好きな )destroy( 破 壊 ) をしたりします。プログラマの観点から 見ると , これらはすべて , 同じことをしま す。 XCIoseDispIay( ) 関数が , ( 単純にユーザ プログラムを終了させるとともに ) ユーザプ ログラムが使ったすべての X リソースを開放 してくれるはずて、すが , それを X server に 正式にやらせるほうがべターて、す。 クローズする 接続を XFreeFont(display,font) ; XFreeGC( display, gc ) : XDestroyWindow(display, window) ; XFontStruct *font ; GC gc ; Window window ; Display *display ; XCIoseDisplay( ) 関数が , X server への接 19 10 ん。言い換えると , その display 上のウイン その display 用に X をコールしてはいけませ その接続は存在しないのて、 , 続を切断します 0XCIoseDispIay( ) 関数をコ ールした後は , ドウへの描画をしてはいけません。キーポ ードイベントのチェックをしてはいけませ ん。 C010r cell へのアクセスがて、きると思っ てはいけません。接続しているほかの display を使うコールはて、きます ( オペレーティング システムが許すかぎり , 同時に幾つて、も dis play との接続をオープンすることがて、きま Display *display ; す ) 。 Ron Newman/Digital Press, 1988 W. ScheifIer, James Gettys, and and Protocol Reference" (Robert 、、 X Window System: C Library の参考書 X フログラミング に参考文献をご紹介しておきます。 ーしてはいません。将来の勉強用に , 最後 書いていますが , それて、も X のすべてをカバ はて、きません。私たちは X に関する本を 2 冊 ミングの感触を読者に提供する以上のこと して役立ててください。本稿は , X プログラ てこのプログラムを , X library への入門と ることを , 大いに楽しんて、ください。そし X のアプリケーションをプログラミングす のボタンて、もよい ) するだけて、す。 のウインドウ内て、マウスをクリックする ( ど プログラムを終了するには , プログラム さい 環境変数 D 旧 PLAY は正しくセットしてくだ コマンド行バラメータを必要としませんが , は使いませんて、した。 colorfun プログラムは プラリや ,Motif や OpenLook のライプラリ 1X11 ) だけを使いました。 X toolkit のライ 私たちは , 低レベルの X ⅱ b ライプラリ ( ー パイルて、きるはずて、す。 fun. c-lXII のような UNIX コマンドて、コン ールされていれば , プログラムを cc ー ocolor か ? X の現用パージョンが正しくインスト して色をいじる これ以上何を望みます ウインドウを作り , その中へ描画し , そ XCIoseDisplay( display ) : 年 ) は , XIib プログラミングのバイプル て、す。この本には , X プロトコル (Xlib の下にある通信フォーマット ) , および XIib の関数とマクロの , 公式の定義が 載っています。本書は現在 , リリース 4 用にアップデート中て、すが , その新版 が , 近々に発行される予定て、す。 、、 X Window Applications Program ming" (Eric F. J0hnson and Kevin Reichard/MIS: Press, 1989 年 ) は , C による Xlib プログラミングの入門書て、 す。コードの実例が豊富に載っていま す。、、 Advanced X Window Applica tions Programming" は最新の本て、 , X アプリケーションのより高度な話題を 扱っています。 、、 lntroduction to the X Window System" (Oliver Jones/Prentice HaII, 1989 年 ) も , Xlib70 ログラミング への優れた入門書て、す。 ・カリフォルニア州 Sebastopol の O'Reil ly & Associates という出版社が , 大規 模な X のマニュアルの一式を発行してい ます ( 1 ~ 2 巻は XIib プログラミングを扱 い , 3 巻は X の使い方 , 4 ~ 5 巻は toolkit (Xlib の上部に位置する ) のプログラミ ング , 6 巻がなぜかなくて , 7 巻は Sun View のアプリケーションを X に移植し やすくするために設計された , X View のプログラミング・・・・・・現状て、は X のアプ リケーションよりは Sun View のアプリ ケーションのほうが数が多い ) 。 Eric F. Johnson 氏と Kevin Reichard 氏 は , 『 X Window Applications Program Advanced X Window Applica mlng tions Programming 』 ( ともに M 旧 : Press, 1989 年 ) の著者です。実生活では , Johnson 氏は BouIware Technologies ⅲ c. のシステ ムズデザイナー , Reichard 氏は , ミネアポ リスで発行されている fComputer User 』誌 の編集者です。ふたりとも , 、、 GIJ にという 用語が大嫌いです。 36 CMAGAZINE
円 90 年田月一日発行 ( 毎月一回一日発行 ) 第 2 巻第号通巻第ロ号円 90 年 2 月 2 日第 3 種郵便物認可 C マガジン創刊 1 周年記念特別モニタブレゼント・・ «CONTENTS 読者参加企画 新連載 三田典玄の 応用 C 言語 C 言語フォーラム C 言語入門講座 プログラミング添削 Conference Room 巻頭インタピュー COMPUTER LANGUAGE 提携記事 COMPUTER LANGUAGE 提携記事 ANSI C 委員会副委員長 ftogramlng 側 Purpose RAllthe standard reasons*• J ・ル。 g 。。・ Xli b で色を制御する方法 ControIIing CoIors the XIib Way UN Ⅸの Spawn よ , われを助けたまえ / Get Thee Behind Me, Spawn of UNIX/ Thomas Plum(I) ・・・ 14 ・・ 22 ・・ 27 ・・ 37 Digest 0f COMPUTER LANGUAGE SAY YES TO U NIX./ 45 フリーソフトウェア最新レポート < 第 11 回 > フォントプロジェクトでフォントをかえよう野口雄平・・ Book Review 46 オリジナル C コンヾイラ制作プロジェクト P 「 agmaC < 第 5 回 > 規約における ANS 槻格藤井保則・・ 50 。 = C 十十とオフジェクト指向 prolog オプジェクト指向への招待木戸研ー Section 1 Turb0 C 十十徹底チェック①石田秋也 Section 2 Turb0 C 十十徹底チェック②滝尾進 Section 3 Turb0 C 十十徹底チェック③小谷野富男 アルゴリズムとテータ構造入門 < 第 5 回 > 木構造近藤嘉雪 c プログラマのための新 MS ー DOS プログラミンク入門 ・ 56 83 < 第 1 回 > リダイレクト機能 ( その 1 ) 中島信行 92 実践 C プログラマ養成講座 < 第 13 回 > テパッグの研究・ 98 < 第 4 回 > 汎用画面作成ツール ( 4 ) 豊国永健 103 C の道具箱 恥すかしなからドジりましたく第 11 回 > 未知のティスクを読む岩谷宏・・ ANSI し「 e < 第 3 回 > ポインタと配列 ( 1 ) きだあきら・・ ・・ 111 ・・ 118 ワンポイントプログラミング講座 < 第 10 回 > EMS メモリを使用する ( 2 ) 上田哲ニ 122 C 言語雑学講座 < 第 7 回 > 大域脱出乗松保智・ ・・ 126 はしめて学ぶ C プログラミンク < 第 13 回 > 標準ライプラリ関数の使い方 ( 2 ) 高木聡 / 山崎信行 C MAGA セミナー丿レーム < 第 2 回 > リアルタイムなキー処理プログラム ( 1 ) 柴田望洋 132 GNU 奮闘言己く第 7 回 > g 十十の移植吉野智興・ C-MAGA News Square ・ lnformation from CompiIer Makers ・・ BOOKSHOP REPORT Readers' Room 付録ティスクの内容 EDITOR'S ROOM ・本記事中のプログラム名 , システム名 , CPU 名は一般に各メーカーの登録商標てす。本文中ては TM , ⑩マークは明記していません。 ・本誌および付録ディスクに掲載されたすべてのプログラムは著作権法上個人て使用する目的以外て無断て複製することを禁じられています。 表紙・イラストレーション・秋山育 / デザイン・持田哲 ・・ 148 ・ 154 ・・ 156 ・ 163 ・・ 166 ・ 168 C MAGAZINE copyright C1990SOFTBANK Corporation, TOkY0, Allrights reserved: no materialin this publication may be reproduced' in whole 0 「 in part' in any from without permission. Printed in Japan EditoriaI Division(T0kYO) : Phone ( 03 ) 5488-1318 sales Division(T0kYO) : Phone ( 03 ) 5488-1360 Advertisi ng Division(TOkyo) : Phone ( 03 ) 5488-1365 Advertising Division (0saka) : Phone ( ) 264-1471 Edito 「囿 and Business Offices: NS Takanawa Bldg. , 2-19-13 , Takanawa Minato-ku' TOkyo 108 , Japan publisher: Masayoshi Son PubIishing Director:Goro Hashimoto Editor-in-Chief: Takashi Kikuchi Director Of Marketing: RYO Tanii Manager Of Sales and Advertising: Yoshino GOShima
C 十十とオプ 特集 アメリカにおけるオプジェクト指向プログラミングの 成長は目を見張るものがある。しかし , 日本における オプジェクト指向プログラミングはいまだ揺籃期を出 ていない。その理由はさまざま考えられるか , ますは 「オプジェクト」そのものに対する認識を , いかにも オプジェクト指向への招待 プログラマに求められるオプジェクト指向の概念 ログラムから距離を置き , プログラミング以前に クト指向の概念とはなにか ? こでは現実のプ なるであろうことは十分に予想される。オプジェ ト指向ではあるが , 今後プログラミングの主流に その実態かいまひとつはっきりしないオプジェク 木戸研ー を浮き彫りにする。 ーじめに オプジェクト指向プログラミングについ て最近 , 解説書や記事が急激に増加しつつ ある。本誌ても C 十十を題材に , 何回か取り 上げている。本稿て、は , それよりもう少し 56 CMAGAZINE 19 10 上流から , オプジェクト指向の発想とその 応用を , 若干プログラムリストを離れて解 説していく。本誌 ' 90 年 1 月号特集「 C 言語の新 しい流れオプジェクト指向プログラミン グ」の編集後記て、 , 本誌編集長が述べている ように , オプジェクト指向は , 具体的なプ ログラミングテクニックというよりは , 「プログラマが世界をながめる意識態 度 , 意識の枠組みの問題」 て、ある。実は , 具体的なインプリメンテー ションて、は , その本質はもとより , パワー やメリットなどが見えにくくなってしまう 場合がある。とくに いわゆる手続型と呼 ばれるプログラミング言語て、は , なかなか 本質をとらえにくく , そのうえ小規模なプ ログラム例を用いたのて、は , オプジェクト
プログラノグ入門 第 1 回リダイレクト機能にの 1 ) 新連載 C プログラマ のための 新 - OS 実践派プログラマ向けプログラミング講座として , ' 89 年 10 月 籌。窮 4 紙津号から ' 90 年 3 月号に連載しご好評し、ただいた。 MS - DOS プ ログラミング入門』。多数のこ要望にお応えして今月より装い も新たに再スタートいたします。プログラミング上で求めら れるより具体的な MS - DOS 機能の解説を中心に展開します。 中島信行 こ期待ください。 はじめに 本連載ては , ある程度 C プログラムが記 述てきる中級ューザを対象として MS-DOS の機能を用いたプログラミング方法を説明 していきます。 あらかじめお断わりしておきますが , 筆 者は MS ー DOS て、飯を食っている人間て、はあ Fig. 1 標準入力のリダイレクト ファイル コンソール CON 補助入力 AUX りません。 FA 関連のプログラムは書いてお りますから一応プログラミングに関しては プロのはしくれて、すが , MS-DOS はあくま ても , クロス開発環境として使用している だけてす。したがって MS ー DOS アプリケー ションやユーティリティを書いておられる 方を差し置いて「 MS-DOS プログラミング 入門』とは少々気が引けるのてすが , 筆者 なりのアプローチて、 MS ー DOS プログラミン グについて説明していきたいと思います。 さて , TMS-DOS プログラミング入門』と いう漠然としたタイトルて、すから正直いっ て発想の貧困な筆者は何をテーマに取り上 げるかには悩みます。アセンプラのプログ ラミングを中心に書くのては本誌にはそぐ わないし , かといって純粋な C 言語のプロ グラミングても「 MS-DOSJ という点が気 になります。 Fig. 2 標準出力のリダイレクト 標準入力 標準出力 プリンタ PRN 補助出力 AUX コンソール CON ファイル 標準入力は補助入力やファイルに切り換えることができる 92 CMAGAZINE 19 10 標準出力は補助出力 , プリンタ , ファイルなどに切り換えることができる
ジェクト指向を応用してシステムを構築す るという立場から , 論を進めていくことに する。 ello, world! an Object カーニハン , リッチーの「プログラミング 言語 C 」て , いちばん最初に登場してきたプ ログラムを覚えているだろうか。例の、、 he Ⅱ 0 , wo 目 d \ n 〃を出力する簡単なプログラムてあ る。この例題プログラムは , かなり強烈な 印象をもっているため , 相当べテランの C 言 語プログラマて、もはっきり覚えているてあ ろうが , 以下に引用してみる。 main( ) この例題プログラムは , 「ひとつの C プロ グラムは , ひとつ以上の、、関数クからなる」 「プログラムの実行は main の先頭から始まる」 「関数名の次にあるカッコは , この引数のリ ストを囲むのに使われる」「大カッコ { } は 関数を囲むために使われる」など , C 言語の シンタックスとしての特長を述べることを 目的としたものて、ある。 観点を変えて , このプログラムが表現し ている意味を考えてみよう。あらためて , こて、解説するまて、もないてあろうが , 関 数 p 「 intf ( ) は , 標準出力に引数を編集して出 力する機能をもっている。この出力先を , たとえ 変更することを考えてもらいたい ば , ファイルに変更する場合 , printf( ) て、は なく関数 fprntf ( ) を用いて行うし , 配列に出 力する場合 , 関数 sprintf( ) によって行う。関 数自体を変更することによって出力先を変 更するのて、ある。 これらの関数 , printf( ),sp 「 intf( ),fprintf( ) は , すべて整形出力という機能をもってい るわけてあるが , その処理の対象によって 相互が区別される。関数名には , 特定の処 58 CMAGAZINE 19 10 printf ("hello, world*n"); 理内容と , その処理を行う先のふたつの情 報が含まれていることに注意してもらいた い。 printf() は , 「標準出力 ( に ) 整形出力 ( す る ) 」という意味をもっているし , fp 「 intf( ) は , 「特定の File ( に ) 整形出力 ( する ) 」という 意味て、ある。さらに sp 「 intf() は , 「特定の Array ( に ) 整形出力 ( する ) 」という意味をも った関数て、ある。 なお , fp 「 intf( ) と sprintf( ) は , 処理の相手 先がシステム中唯一のものて、はないため , 引数て、指定する。 これら関数が行う個々の処理は , その処 理を行う相手先に依存する。出力関数につ いてみれば , 出力先が CRT の場合は , フレ ームバッフアに書き込み , File て、ある場合は ファイルバッフアに書き込む。当然 , 実際 のインプリメンテーションは , 相互に異な ったものになる。つまり関数が , 相互に異 なった識別名をもって区別されるのは , Fig. 1 に示したように , 異なる処理の相手先を区 ノッセージ式とは 別するためてもある。 内容を示す情報に関しては共通しているた た , sprintf( ) も fprintf( ) も , その特定の処理 Format( ) 」とて、も書けばよいことになる。ま のて、 , 「 CRT p 「 intf( ) 」は , 「 CRT printWith す情報とは , 整形出力を行うということな しまう。 p ⅱ ntf ( ) のもつ特定の処理内容を示 その処理を行う先を示す必要はなくなって を示すという情報だけをもっていればよく , 述した場合には , 関数名は特定の処理内容 に , プログラム上 , 陽に処理の相手先を記 p 「 intf( ) 」のようになるのて、あるが , このよう もらいたい。たとえば , printf() は , 「 CRT きるようなプログラミング言語を想定して そこて、 , こうした処理の相手先を記述て、 この「処理先△処理」という記述形式をも mat( ) 」と書ける。 mat( ) 」 , fprntf( ) も「 FiIe め , sp 「 intf( ) は「 A 「「 ay printWithFor p 「 intWithFo 「 った表現をオプジェクト指向の世界て、は , メッセージ式と呼んて、いる。非常に広い意 味て、は , このメッセージ式という記述形式 をとることがて、きるプログラミング言語を , オプジェクト指向型プログラミング言語と 呼ぶことがある。欧米の文献ては , オプジ ェクトという概念を用いるプログラミング 言語に対して , Object Oriented のほかに Object Based や Class Based などの用語に より厳密に分類するものがあるが , 日本語 て、はそれらの適切な訳語がなく , すべてオ プジェクト指向となってしまうのて、ある。 メッセージ式において , 処理先を示す要 素をオプジェクトと呼び , 処理を示す要素 をメッセージと呼ぶ。今まて、の手続型と呼 ばれるプログラミング言語は , データとそ れに対する操作によって記述していったわ けだが , ここて、は処理の相手先という新し い要素を付加して , それをオプジェクトと 名づけているのて、ある。 ラミング言語においては , プログラムのも このように , オプジェクト指向型プログ もつのて、ある。 ジ式としてオプジェクト指向的な重要性を る場合 , このメンノヾへの参照式がメッセー メンバに対する情報隠蔽の機能をもってい ンバへの参照手続をも内部にもち , それら しかしその構造体が , 後述するようにメ のて、ある。 味て、は標準 C 言語となんら相違する点はない とがて、きるという程度にすぎない。その意 ト指向におけるメッセージ式と解釈するこ そのメンバへの参照形式をこのオプシェク い。ある特定の機能をもった構造体につき , 先」十「処理内容」の記述がて、きるわけて、はな すべきは C 十十て、ある。 C 十十は直接「処理 れているのがわかると思う。ここて、 , 注目 理内容を示す情報の , ふたつ以上て、構成さ ー 80 を典型例として , すべて処理先とその処 式をもった部分を列挙してみる。 Smalltalk プログラミング言語から , こうした記述形 Table 1 にオプジェクト指向型と呼ばれる
☆本誌の① ~ ⑩の記事について , 満足度をお答え下さい。 い非常につまらなかった 2 つまらなかった 3 普通 4 よかった ④提携記事「 UNIX の Spawn よ , われを助けたまえ / 」 ③提携記事「 XIib で色を制御する方法」 ②ー Programming on Purpose ①巻頭インタピュー Thomas PIum ⑩実践 C プログラマ養成講座 ⑨新 MS-I)()S プログラミング入門 ⑧アルゴリズムとデータ構造入門 ⑦特集「 C + + とオプジェクト指向」 ⑥オリジナル C コンパイラ制作プロジェクト ⑤フリーソフトウェア最新レポート 5 とてもよかった ) ⑩応用 C 言語 C の道具箱 @ C 言語フォーラム ⑩ ANSI C : more ⑩ワンポイントプログラミング講座 ⑩ C 言語雑学講座 ⑩ C 言語入門講座 ⑩ lnformation from CompiIer Ma kers ⑩ GNU 奮闘記 ⑩ C MAGA セミナールーム ☆よかった記事があれば , 3 つ選び , その理由をお書き下さい。 番号 ☆つまらなかった記事があれば , 新番号 ☆ C 言語についての習熟度は ? 理 その理由をお書き下さい。 由 3 つ選び , 3 小型のツールを組める ☆付録ディスクについての希望 , 不満 , 提案などをお書き下さい。 言語の種類 ☆ C 言語以外の言語についての習熟度は ? 2 文法が理解できる 1 これから学習する ☆ C 言語のプログラミングの知識は , おもに何から得ましたか ? 4 中型アプリケーションを組める 5 システムの記述ができる 習熟度 ( 上の番号を参照して下さい ) 1 雑誌 ( 雑誌名 2 書籍 ( 書名 3 学校 , 専門学校 , 講座 4 学校・会社の友人・同僚など 5 その他 ( ☆ C 言語を使ってこれまで作成したプログラム , 今後どのようなプログラムを作りたいか , 具体的にお書き下さい。 ☆ハード関連の記事について , ご希望 , ご意見があればお書き下さい。 ☆今後 c マガジンにどのような記事を望まれますか ? ( 広告についてもご意見をお聞かせいただければ幸いです ) ご協力ありがとうございました
UNIX Syste リリース 3.2 AT&T 全 9 巻同時発売 日本語版ドキュメント 最新版に対広 / ス [ 本書のラインアップと概要 ] 三サルズチムッドミニズトレタ辺ラ乞レシマ粤三い UN Ⅸシステムの使用者と管理者が利用するコマンドの仕様を網羅。 A5 判・引 6 ページ定価 16 , 500 円 目グラマ・ システム・コール、ライプラリ、各種データベースのファイル構造について 解説。 UNIX システム上でプログラミングする人のための必携書。 A5 判・ 820 ページ定価 19 , 500 円 システムのログイン法から始まり、ファイルシステムの構造や、 ed/vi 、 シェル / C シェル、メールなどの使い方についても言及。 UNIX を使 従来 ( リリ—Ä引以前 ) の 3 日 リリース 3 唯一の邦訳書 全 9 巻を一挙にセット販売 用するための入門書。 A5 判・ 580 ページ定価 14 , 000 円 awk , lex, yacc を始めとし、ファイル・ロックやプロセス間通信につ いても解説。 UNIX システム上でプログラミングする人の必携カイド。 A5 判・ 520 ページ定価 12 , 000 円 ツロッラヤツイド 拡張端末インタフェース、 coff 、 make 、 sccs や C 言語、それらに関する ツールについて解説。 A5 判・ 676 べージ定価 16 , 000 円 TI ( トランスポート・インタフェース ) に関する解説書。 インタフェース・ルーチンを用いてネットワーク・ソフトウェアを開発するた めのガイド。 A5 判・図 4 ページ定価 4 , 600 円 トリ三ム入な ストリームの作成方法やユーザ・レベル、カーネル・レベルの機能に ついて解説。 定価 3 , 200 円 A 5 判・ 84 ページ トリニムトプログラマ : カイト ストリームを用いたアプリケーションの作成方法、ストリーム・モジ ュールやドライバのプログラミング方法についての解説書。 A5 判・ 296 ページ定価 7 , 600 円 UNIX システムのインストールに始まり、各種ノードウェア装置の取り扱 UNIX システムを管理運営する人のための解説書。 全 9 巻セット定価 104 , 400 円 グ、 RFS の管理方法についても言及。 い、システムのカスタマイズの方法やプリント・サーピス、ネットワーキン ◆定価はすべて税込です A 5 判・ 468 ページ定価 1 1 000 円
ジェクト指向 つかにあるのではないだろうか。そのうえで現実的な オプジェクト指向プログラミングか成り立つはすであ る。本特集ではオプジェクト指向の概念的理解ととも に , リリースされたはかりの TurboC 十十を例にとり ながらオプジェクト指向プログラミングへの道を探る。 指向がもたらしてくれるメリットをあまり 感じとれない場合が多々ある。 それて、は , プログラムのコードを書いた りする作業には , まったく何のメリットも ないのかというと , 決してそうて、はない 工ンジニア自身がオプジェクト指向的な観 点をもっているか否かによって , システム 全体のて、き , ふて、きが大きく影響される。 それが , 「世界をながめる意識態度」といわ れるゆえんて、もある。とくに最近は , オプ ジェクト指向システム分析 ( OOA ) , オプジェ クト指向システム設計 ( OOD ) など , プログラ ミングやコーディング以前の , より上流工 程への応用としても研究されている。シス テム開発の上流て、 , また CASE を支援する方 法論としてオプジェクト指向が採用されて いる場合 , 下流の作業においても , オプジ ェクト指向技法を前提に作業を行ったほう が , より多くのメリットを享受することが て、きるのて、ある。それは , 開発言語に手続 型言語が採用されたとしてもまったく同じ て、あり , 手続型言語とオプジェクト指向が 相反する概念て、ないことは , 手続型言語て、 ある C 言語に直接的にオプジェクト指向を取 り入れた ObjectiveC や , 拡張 C ともいうべ き C 十十が , 実質的にオプジェクト指向とも 解釈て、きる多くの機能をもっていることか らも理解していただけると思う。 幸いにして ( というべきか ) , 筆者は抜き んて、た C 言語のプログラマて、はないため , て、 きるだけプログラムコードを用いずに , オ プジェクト指向の基本的な概念とその応用 について解説していこうと思う。とくに 本誌は C 言語工ンジニアを読者として想定し ているが , 前述のように小さなコード自体 あまり意味をもたないため , 解説にコード を用いる場合は疑似言語として , 純粋なオ プジェクト指向型言語といわれている Smal ltalk ー 80 ライクな記述を用いることにする。 Objective-C は , オプジェクト指向的な部 分は , まったく SmaIItaIk-80 と同じて、あ り , C 十十においてもオプジェクト指向的な 部分の記述は , SmalItalk-80 とそれほど相 違があるものてはない。むしろ , 詳細は後 述するが , オプジェクト指向には , メッセ ージ式という統一的なシンタックスをもっ た式て、プログラム記述を可能にすることに より , シンタックス上はプログラミング言 語を選ばない いわばインタフェイス言語 としての側面も強くもっているためむ , ロノし うえて、の不都合はほとんどないと思う。 なお , オプジェクト指向の考え方は , 単 ーの理論的な基礎から生まれたものてはな いくっかの考え方が融合し , オプジェ クト指向としてポトムアップ的に発展して いった , 極めて現場指向の強いものて、ある。 ゆえに , 論者の背景によっては内容的にか なり異なってきてしまうことがある。それ は , とりもなおさずオプジェクト指向自体 が , 背景とする各領域とは , 切り離して論 じることがて、きないことを意味する。詳細 は , 折にふれ後述するつもりて、あるが , 実 際に , アクタなどの並行プロセスモデル的 な観点によるものと , 人工知能技法的な立 場によるものとて、は , オプジェクトの定義 などの基本的な概念の認識自体が異なって しまう例があるのて、ある。 オプジェクト指向の発想として , こうし たプロセスモデル的な観点は , 非常に重要 なものて、あったわけてあるが , 現在はオプ ジェクト指向自体が , 応用に向けてひとり 歩きを始めており , 独自の世界を創りつつ ある。たとえば前述したように , 抽象デー タ型拡張 C 言語ともいうべき C 十十が , オプ ジェクト指向的に解釈されて , 新しい応用 の可能性を見いだそうとしていることなど に , その一端を見ることがてきるのてある。 用領域が限定しにくいものてもある。 する汎用のプログラミング言語てあり , 適 ョンなど , 超高水準な記述まて、もサポート W 制御などの低水準から , AI アプリケー さらに本誌が扱っている C 言語自体 , H/ シ 特集 C 十 + とオプジェクト指向 57 理系を実現するということてはなく , オプ そこて、本稿て、は , オプジェクト指向の処