構造体 - みる会図書館


検索対象: 月刊 C MAGAZINE 1991年9月号
195件見つかりました。

1. 月刊 C MAGAZINE 1991年9月号

てその大きさを事前に宣言する必要があっ たが , フィルタ系言語て、は配列も宣言せず に利用て、きる。配列は使えば使っただけ動 的に領域が確保される。 フィルタ系言語の特権というわけて、もな いが , 本稿て、紹介する perl や awk, python は連想配列という機能を持っている。これ は文字列によってインデクスされる配列の ことて、ある。 perl て、は次のように数字て、イン デクスする。もちろん通常は配列も使える。 $x [ 10 ] $x [ 11 ] ” asdf ” しかし , 次のように文字列をインデクス として利用することもて、きる。 $x{'saito'} yasushi' $x{'suzuki'} 'hiroshi' perl て、は , 性能上の理由からか数字て、イン デクスされる通常の配列と連想配列を書き 分けなければならないが , awk や python て、 はすべての配列は連想配列として扱われる のて、どちらも var [ 10 ] , var ['tako'] のよ うに書くことがて、きる。 perl て、はさらに連想配列を dbm ( 簡単なデ ータベース管理ライプラリ ) とリンクして , データベースファイルに連想配列を利用し てアクセスて、きる機能も提供している。 想配列 み込み関数 32 C MAGAZINE 1991 9 をつけるか , d 。関数名 (... ) と組み込み関数 ことはて、きるが , 呼び出すときには頭にヾ \ & 〃 たとえば , perl て、は自分て、関数を定義する 合もある。 り , あるいはまったく用意されていない場 自分て、関数を定義する機能は不十分だった にという考えの下に用意されている。逆に いる。短いプログラムを簡単に書けるよう 組み込み関数 / 手続きが豊富に用意されて とは異なった呼び出し方が必要て、ある。 また , データ構造を自分て、定義する機能 は不十分て、ある。というより , 文字列と文 字列の配列以外のデータはサポートされて 。ほかの複雑なデータ型を利用する にはそれを何らかの形て、文字列や文字列配 列に変換する必要がある。たとえば awk て、 は多次元配列は , 各インデクスを文字列と して連結した連想配列として実現される。 f00 ["saito","suzuki' ] は , f00 ["sait0*034suzuki"] のように間に、、 \ 034 〃という ( 普段はあまり 使われない ) 文字列を間にはさんて、 , 一次元 配列に変換する。 perl て、も同様のテクニック を使わなければならない ただし , 後て、紹介する python はリストを 持っている。 例外的な機能が多い。多くの組み込み手 続きて、は引数を省略することがて、き , 省略 したとき挙動は手続きによってさまざまに 異なる。 awk て、はパターンに対応するアク ション部を省略したときは行全体をプリン トすることになっている。これなどは例外 的な機能の例て、ある。 perl て、は , さらにさまざまな例外動作が用 意されており , たとえばファイルから 1 行読 み込む手続き <handle> は , while 文の条件 節に使った場合に限って結果を、、 $ 〃 う暗黙変数に格納するとか , 普通の組み込 み手続きて、は引数を省略したときは , 、、 $ 〃 あるいは、、 @ 〃という変数の値が使われる のに対して , shift という配列の要素をずら す手続きて、は引数を省略すると ARGV( プロ グラム自身に渡されたコマンド行引数を保 持するグローバル変数 ) をシフトしてしまっ たり , split という文字列を分解する手続き て、はパターンの種類によっては予測しがた い動作をしたりと , かなり perl に慣れた人て、 例外的機能 もとまどう例外的動作が多量にある。 これらの例外的機能をうまく使えばプロ グラムを極端に簡潔に書けるが , 予期され ていない使い方をすると何をやっているの か作者以外には ( ときには作者にすら ) わか らないプログラムとなってしまう。 正規表現は , もともと正規言語という言 語が受け入れるパターンを文字列として表 現するために考えられた表現方法て、 , それ をテキスト検索のパターン指定に応用した ものて、ある。 正規表現にはいろいろバリエーションが あるが , egrep, awk, perl, python などて、 は次のような記法を使う。以下にあげる特 殊文字以外の文字はその文字自身を検索す るために使われる。たとえば abcd は abcd と いう文字列にマッチする。これは正規表現 をサポートしない普通のテキスト検索と同 じて、ある。 ″ ( ピリオド ) ピリオドは任意の 1 文字にマッチする。た だし日本語に対応していない正規表現処 理手続きて、は , 漢字は 2 文字とカウントさ れる場合もある ( つまりこの場合は任意の 1 バイトにマッチする ) 。 [character-list] character-list 中の任意の 1 文字にマッチ する。たとえば , Cabcdst] と書くと , a, b, c, d, s, t のどれか 1 文字にマッチする。 , Ca-z] のように書くこともて、 見表現 う書くと a, b, き , , z の 26 文字の うちのひとつにマッチする。同様にたと えば CA-Za-z0-9 ] と書いて , 大小アル ファベットと数字 , 、、〃のいずれかにマ ッチさせる , といった表現も使うことが

2. 月刊 C MAGAZINE 1991年9月号

このアプローチがうまくいくのを知って いる。私がすて、に何度か自分自身をこのよ うなエキスパートの地位から退位させたの 信は悪なり だから。 14 C MAGAZINE 1991 9 ト指向プログラミングをありがたく思うは 右級に慣れてから初めて , オプジェク ればならないことを強調したい。一般的な いくつかの中間ステップを経て進化しなけ へんな技て、ある。そうて、はあるが , 彼らも プラて、コーディングするのはなかなかたい いるのて、はない。システム 3 / 70 用にアセン ないといったが , これは彼らをばかにして BAL プログラマは C 十十の勉強をすべきて、 明確な定義作りを開始した ) 。 re Engineering lnstitute は進化段階のより か有害だ ( 7 月号て、述べたとおり theSoftwa 以上離れたものはすべて役立たないどころ かがわかる。現在の会社の段階から 1 レベル どの技術を使えば自分の会社が有利になる たいせつだ。この知識によって武装すれば , るのか , はっきりと理解することはもっと あなたの会社が進化のどの段階に当てはま 進化の段階を理解することがたいせつだ。 ンスを計画に組み入れている。 計フェーズの一部としてテストとメンテナ る。もっとも先進的な会社だけが解析と設 も呼ばれる ) を使いこなしている会社もあ 設計メソッド ( メソドロジ (methodology) と ところもある。ひとつあるいはそれ以上の 的な知識に対する理解さえもおばっかない 会社によってはおのおのの仕事に伴う基本 の段階を経て進化する , ということがある。 のひとつに , ソフトウェア組織はいくつか ソフトウェア工学における具体的な発見 かる。 の自動販売機を買ってあげたほうがもう えるのは時間のムダだ。彼らにはコーラ 異論その 5 : BAL プログラマに C 十十を教 ずだ。その過程て、制御フローとデータ構造 をマスターする。 段階をスキップすると部下の間に冷笑と 混乱が生ずる。 ージメントされるマネージャ 異論その 6 : ソフトウェアプロジェクトを 予算内におさめるのは利益を出すより重 要だ。 これはもっとも純粋な異論といえるだろ う。もし会社が利益を出せなければ , 結局 長くは続かない。あなたのもっとも高いゴ ールは当然会社を存続させることのはずだ。 いやこれは会社のもっとも高いゴールて、あ り , あなたのゴールて、はないかもしれない マネージメントは 3 階層にわかれる。最高 層のマネージメントは株主に対して責任を 負っている。彼らは求めるゴールが何かを よく考えて選択し , 投資に対する十分な見 返りを出さなければならない。彼らは利益 優先主義だ。 中間層のマネージメントは最高層のマネ ージメントに対して責任を負う。ゴールと 予算を与えられる。割り当てられたゴール を予算内て、達成て、きたときだけが彼らの勝 利となる。変化に反対するのが中間層マネ ージメントの仕事だ。変化は予算にとって 脅威となる。中間層マネージメントは予定 外のチャンスを得ようとして予算を変更す るような傾向や決定権がない 第一線のマネージャとしてのあなたの責 任は仕事の遂行にある。予算優先主義の中 間層マネージャに対して責任を負っている。 予算内におさめれば上司の仕事が楽になる。 また中間層マネージメントの資質があるよ うにも思われる。あなたが仕事をこなすこ とは , 企画全体を手助けしているのだと信 じなければならない 上司て、あるマネージャを信頼て、きなけれ ばほかに仕事を求めなさい。さもなければ 自分て、会社を設立しなさい サイティングな幸福のバランス 異論その 7 : ソフトウェアを書くことは楽 しくなければならないが , 楽しすぎても いけない。 過去には , プログラマが会社て、働くのは コンヒ。ュータが高価すぎたからだったとい う時代もあった。現在て、は平均的なプログ ラマならだれて、も十分な開発環境を家庭て、 も持てる。多くのプログラマは独立のスリ ルよりも給料を求めるのて , 彼らを雇って おけるのてある。 またそれより数は少ないがプログラマに よってはチームの一員として大型プロジェ クトて、働きたいと思っている人もいる。し かしもしプログラマにとって仕事が楽しく なければ , 彼らを雇用し続けるのはかって よりずっと困難になった。 予算内におさめることてあなたの上司を ハッヒ。ーにしなければならないのと同様に 部下もハッピーにしなければならない。プ ログラマには何か楽しめることを与えてハ ッビーにするのだ。楽しみとプロジェクト のニーズのバランスをとるのだ。プログラ マには刺激が必要だが , 常に失敗するほど のものて、はいけない。自由が必要だ。しか しプロジェクトが無政府状態になってはい どちらの極端に走ってもあなたの けない 負けだ。 私にとっては最後の異論がもっとも重要 なのだ。プログラマと企業家の共通の利益 こにある。ソフトウェア開発をエキサ イティングなものにするためには , 決まっ てある程度の楽しみが必要だ。そうてなけ ればやる価値がない。エキサイトてきないよ うなソフトウェア開発はプログラマにとって 楽しみがなく企業家にとって金儲けにならな い。この見方は重要なパートナーにとってデ リケートな基盤だが , なぜかうまくいく。

3. 月刊 C MAGAZINE 1991年9月号

ソフト開発用に最適′ 豊富に揃った C 言語用 ライプラリ。 1 . ニ次元クラフィック・ライプラリー 学 五ロ 一三ロ 〔定価 1 万円〕 BAS ℃等でお馴染みのウインドウ機能を 持ったニ次元グラフィックライブラリーで す。特長的機能として、上方向の指定・斜 め方向の楕円描画・曲線描画・多角形塗り つぶし・拡大文字描画およびマウスによる 座標入力機能を持ってし、ます。 〔定価 1 万 2 千円〕 平行投影・透視投影機能等、基本的な 3 次 元グラフィック機能を持ったライブラリー です。直線・円・楕円以外に、指定平面上 の多角形塗りつぶしも可能です。また、マ ウスによる座標入力機能も持っています。 レイアウト等のグラフィック画面表示プロ グラム作成に便利です。 す。キャストするにしても , 必要最少限に しておくべきてす。たとえば , f00 t * f00 ; f00 t * bar ( ) ; newp-> list NULL ; というように分割するべきてしよう。 if 文の式て , (HEAD*)NULL = ()p = malloc( ・ " っていう記述は三田氏の記事の影響かもし れませんが , 私はキライてす。なぜなら , ( f00 t * ) bar ( ) ; f00 というプログラムがあったとします。今は この場所ては hp がもっとも重要な意味を持 きちんと動いてますが , bar の仕様を変更し っているのてすから , 「 hp に ~ する」「 hp を ~ す る」というふうに hp を主体にしてプログラム て , を書きたいし , 読みたいからてす。 bar t * bar ( ) ; この場合 , 主体となる hp が左にあるほう となったとき , 上の foo への代入はコンパイ がいいと思いませんか ? 上の書き方ては ル時にはエラーになりません。そして実行 してみると正しく動かないのて「う ~ ん」と 「 NULL を hp と比較する」と読めますが , 私 は「 hp を NULL と比較する」と書きたいのて 考え込むことになります。 また NULL と各型のポインタとを比較す す。 HEAD 型構造体の中にあるメン '*freeco るときや代入するときに NULL をキャスト していますが , これもあまり好きてはあり unt は , 実際にはメモリプロック中の使用さ れているノードの数を表しているのてすか ません。 ら名前として不適当てすね。 usedcount とか もともと NULL はあらゆる型へのポイン ほかの名前にすべきてしよう タがどこも指していないことを示すために 使われる定数てあり , あらゆる型へのポイ 関数 mem free< は , デバッグ用の出力だ ンタへの代入や比較は許されています。 NU と思いますが , stdout に出力しています。 れはもちろん stderr のほうがいいわけてす。 LL は記号定数て、あり , 各処理系て具合がい 単なるミスてしようね。あ , それともデバ いように定義してあるはずてす。それをわ ッグ情報をリダイレクトてファイルに取る ざわざキャストする必要はないと考えるか ためにわざと stdout に出力しているのかな ? らてす。 うん , それなら納得てす。 もしかするとキャストすることてかえっ て不都合があるかもしれません。 おわりに キャストに関することてすが , 関数 appe nd head の中に 自分の記事に対してお便りをいただくと (NODE *)newp->list 本当にうれしいものてす ( ネタにも使えるし という記述がありますが , これは ANSIC て、 ね誉 ) 。とくに鹿内さんが勉強家ていらっ はエラーになります。 ANSI 規格は「キャストした式は r-value< しやるだろうことは文面からもよくわかり ある」 , つまり「代入てきない」と規定してい 」のセクションはほとんど ます。したがって , この記述はエラーにな るのてす。 趣味の世界になりますからいろいろ書かせ ていただきましたが , お気を悪くなさいま ANSI 以前というか , 現在てもそうてす せんように ( 笑 ) 。今後ともどうぞよろしく。 が , キャストした式がト value になる処理系 はいくつかあるようてすが , ポータビリテ 皆さんも , いろいろと質問をお寄せいた だけましたら幸いてす。とくにネタに使え ィを考えるならば「拡張機能 ( なのかなあ ) 」 は使ってはいけません。これはめんどうて そうなもの大歓迎てす ( 誉 ) お待ちしてお ります。 2. 三次元グラフィック・ライブラリー 3. キーボード入力ライブラリー 〔定価 7 千円〕 キーボード入力の煩わしさを解消するため のライブラリーです。パラメータの設定に より、カーソルを指定位置に配置し、指定 範囲から出ないようにしたりします。また、 ファンクションキーその他の特殊キーに対 するコード設定等も可能です。 4. マルチ画面ライプラリーキャラクタータイプ 〔定価 2 万円〕 マルチ画面入力を支援するためのライブラ リーです。マルチ画面を階層的に表示し、 メニュのマウスクイックが可能です。 ■その他、グラフィック・マウス・ RS -2 C のドラ イバー・印 OS 等を C 言語からコールするためのラ イブラリーも揃えています。 ・出荷品には取り扱い説明書及びサンプルソフト (C 言語ソース ) が付いています。具体的な使用方法の 確認、テスト等はサンプルソフトで簡単に行えます。 ■上記のライプラリーは NEC の PC -98XA 、 PC- 01 LV で開発、動作確認しています。ハイリゾモ ード、ノーマルモード両タイプを用意しています。 OS は MS-DOS(Ver3. 3A ) 、開発ツールは MS - DOS マクロアセンプラ ( Ver2.0 ) 及び MS-C (Ver5. 1 ) を使用しています。 PC シリーズの他の 機種での適合性は確認していません。 ☆詳しい資料をこ用意致しております。 お気軽にお申し込みください。 ☆購入後、使用不適合とわかった場合は一週間以内に こ返送ください。 ( おそれ入りますが送料はこ負担願います ) ※ MS-DOS および MS-C 、 MS-DOS マクロアセ ンブラはマイクロソフト社の登録商標です。 資料語求はに広告資料請求カード」をこ使用すが、 または直接下記住所まで封書にてこ連絡下さい。 ※電話は対応不可能な場合がありますので御遠慮くだ 〒 571 大阪府門真市下島町 9 の 16 石川昭 ( TEL0720 ー 81 ー 87 留守番電話 ) く資料請求番号 1 14 〉 「そのほカ 114 C .MAGAZI 、 E 円 9

4. 月刊 C MAGAZINE 1991年9月号

C MAGAZINE Access Card をこ利用ください。 C MAGAZI NE アンケートカードをこ利用ください。 魴墅リコトウェアー ←グループ 國囚圖国 不可能を可能に一一新時代を創造する SAG CASE of KAZUO FURUYAMA 躊躇するより実行を一一 僅かな可能性を「実現可能」へ 「一台の大型ホストコンピュータに何千台もの端末をつな げる」入社して間もない古山に与えられた命題。今では LA N システムが一般化しているので何でもないことだが、 当時としては、「可能かどうか」といったレベル。なにも 迷わ「可能にする」意気込みで取り組んだシステム開 発が、端末台数不明といった大規模なシステム開発へと つながりました。 ・古山一夫 ( ふるやまかすお ) ・・ SEPTEMBER, 1958 COUNTORY ・・・ TOK膨0 JAPAN 業訓練所 ) に進学。そこでコ ンピュータに出逢う。 計算センターに入社。 時代の潮流を感じ、ソフト開 発に開眼、退職。当時、日本 で唯一のバッケージ・ソフト 開発専業会社であった SAG に 入社。現在に至る。マイコン ネットワーク技術部課長 PROFILE ・ BIRTHDAY NAME ・ 開発分野が無限なコンピュータ業界 ミュージカル仕立ての映像マニュアルを開発 いろいろなことをやらせてくれる SAG の企業方針に発憤した古山は、 25 歳の時にレ ーザー・ディスクを利用したソフトウェアのマニュアル製作を企画。企画書と見積 書を役員に提出したところ、即 GO サイン。マニュアルはユーザーに好評で、、レーザ ・マニュアル″という商標として登録。今では既に 5 本目を製作中。 時代の潮流を読む。これか SAG で働く醍醐味で魂 実例として、古山の活動状況を出しましたが、 SAG では彼が特別なのではなく、ほ とんど土員が SAG で働く醍醐味を実感しています。 ソフトウェアはもちろん、マニュアルでも新蟲弋を創造していく。常に業界内のフロ ンティアとしてまったく新しいものを開発していく。 SAG なら蟲弋の潮流を創造し、 体感していく事ができるのです。 DATA ■会社データ 資本金 / 3 億 7500 万円売上高 / 79 億 9500 万円 ( ' 91 年 3 月期実績 ) 従業員数 / 350 名事業内容 / ソフトウェア・プロダクトの研究 開発・輸出入・販売及びシステムコンサルテーション、大型コンピュータから PC に至るまでのデータベース、コンピュータ運用、 データ・ネットワークシステムを基盤に、 S 旧、 CASE から UN Ⅸまでの総合システムの構築 ・募集要項 職種 / メインフレーム、またはバーソナルコンピュータ向けパッケージソフト開発工ンジニア、サポートエンジニア給与 / 経験・ 技術力等を考慮のうえ、優遇いたします。 ' 91 年 4 月実績大卒 19 万円 ( 他に住宅援助システム等あり ) 昇給・賞与 / 昇給年 1 回 ( 4 月 ) 、賞与年 3 回 ( 6 月、 12 月、期末 ) 、その他月次インセンテイプ有り勤務時間 / 9 : 00 ~ 17 : 30 休日休暇 / 完全週休 2 日制、 祝日、年末年始 ( 7 日 ) 、夏季 ( 9 日 ) 、年次有給休暇、特別・慶弔休暇福利厚生 / 各種社会保険、企業年金、持株制度、退職金制度、 団体生命保険 ( 会社負担 ) 、財形貯蓄制度、定期健康診断、厚生施設利用補助制度、保養施設、契約施設多数有り海外インセンティ プ旅行応募 / 電話連絡の上、履歴書 ( 写真貼付 ) をご持参、または郵送してください。交通 / 各線新宿駅下車徒歩 3 分 ■連絡先 〒 160 東京都新宿区西新宿ト 6-1 新宿工ルタワー本社総務部 / 田谷 0120-404055 ( フリーダイヤル )

5. 月刊 C MAGAZINE 1991年9月号

0 7801 版 G C Con 00M EDITORS 次号予告 >IO 月号 ( 9 月 18 日発売 ) Part1 GCC の概要 完全移植ー Part2 GCC の PC ー 98 への移植 Part3 GCC の応用 巻頭インタビュー Part4 他コンバイラとの比較 PauI Hagerty¯ NextStep 開発ティレクター パソコンから ワークステーションへ ( 4 ) APCー9801 版 GNU C Compiler APCー9801 版 DOS-Extender 特別付録に移植された GCC ⑥ 5 ″ 2HD 2 枚組 アルゴリズムとデータ構造入門 応用 C 言語ライプラリ℃ー TOOLBOX 」 本誌掲載ソースプログラム 明解 ANSI C 言語入門講座 COMPUTER LANGUAGE 提携記事 新 MS ー DOS プログラミング入門 ・ A Perfect Marriage ・ The Art of Reverse Engineering スタートアップ C 十十 なお , 予告内容を変更することがあります。 編集後記 創刊 2 周年記念 2 枚組特別付録 モニタ & プレゼント 好評連載 ◇個人的にはエプソンユー ◇今月の X68k 活用講座に ◇私の家の近くに , ジャン ◇ポーナスて、マックと思っ ◇去年の新人が今年の新人 ザなのて , 基本的には互換 「 X68k の「 R-TYPE 」は 15k グルジムなどを扱う子供玩 ていたが , 秋に新しい機種 の相談相手になれば , 同年 機推進派なのだが , 完全互 Hz モードにすると全体のス 具卸会社がある。いつも忙 が発表されそうな気がする 代だけに , 意志の疎通もた 換て、ないのには困っている。 ピードが若干速くなる』と しそうて , 夜遅く会社の前 のて、やめた。そこて、前から やすく , 仲間意識も生れや 弊誌の収録ソフトも「 PC98 いう記事。仕事だあ ! チ を通った時も灯りはともっ 試したいと思っていたコン すいだろうと誰しもが思う。 および互換機対応」と銘打 ェックしなくては ( ←おい ていて , 遅くまて、大変だな タクトなるものを購入した。 そう考えて旧新人 W を新人 ちたいのは山々なのだが , 本当に必要か ? ) 。速い ! と思っていた。が , ある夜 汗かきな私は , 眼鏡がとて 中曽根君の相談役に据えた どうも動作が不安定て・・・ 見た , 灯りに透けた中の様 確かに速くなる。なるほど , も邪魔くさかったのだ。コ のが間違いだったようだ 最近 , エプソンが独自路線 CRT の垂直帰線て時間管 子。 4 人が会議をするように ンタクトにすればと思って どうも最近の中曽根君の笑 を歩みはじめて , この傾向 理をしていたのか・・・・・・知ら テープルを囲んて、いる。彼 いたが , 世の中そんなにあ 顔にあざけりを感じる。旧 は強まりそうだ。しつかり なかった , 市販ゲームのプ らのあの手つきは・・・・・・麻雀 まくない。不用意に汗を拭 新人 W の、、指導の成果〃かど してくれないと , エプ損に ログラムはあまり読んてな をしてる。子供玩具と麻雀 , くとコンタクトがずれると うか , キッチリ問い詰めな ( TEN ) なってしまう。 いからな・・・・・・反省 ! (Yas) (JUN) いう事実に気がついた。 ( 洋 ) しくしく・・ ( ホ ) くてはならない 発行人孫正義 編集人橋本五郎 発行所ソフトバンク株式会社 出版事業部〒 8 東京都港区高輸 2- 円 - ロ NS 高雑ビル 編集部・ TEL03 ( 5488 月引 8 / 出版営業部・ TEL03 ( 5488 ) ロ 60 / 広告営業部・ TEL03 ( 5488 月 365 編集長星野慎ー 9 月号 副編集長流王天 編集宮田洋一渡辺淳一 高森昭安 広告丹羽弘祐清水利依 安枝奈穂子 校正 ( 有 ) アレフ 赤井晴美若江啓子機部進 デザイン持田哲花本浩一 監修石田晴久 印刷凸版印刷株式会社 / 写植 株式会社風 ⑥ 1991 雑誌 14325 ー 9 プロクラム・バクのお問い合わせ 月刊 MAGAZINE 谷 03 ( 5488 ) 1325 ・掲載記事 , プログラムについてのご質問は , 月曜日から金曜日の午後 4 時から 6 時まて受け 付けております。その他の時間帯はご容赦くだ 平成 3 年 9 月一日発行 160 C MAGAZINE 1991 9

6. 月刊 C MAGAZINE 1991年9月号

れは , 抽象クラスと , そこに実装されてい る操作と , 固有のアプリケーションのため に , そのフレームワークとしての抽象クラ スを特殊化する機能を持ったサプクラスが , 具体的なコードを実装するて、あろうという 仕様から構成される。 フレームワークは , サプクラスの多様性 を支援することによって , アプリケーショ ンを越えて再利用される。 抽象クラスによるフレームワークの前記 のよラな考えは , C 十十よりも Smalltalk の ファミリ言語において一般的て、ある。しか し , C 十十が成熟するためには , フレームワ ークは疑いなく必要て、あり , 部品の再利用 に対してより注意を払うべきて、ある。 「完全なアプリケーション」 ( complete applications) は , 再利用可能な部品て、もあ る。テスキトエデイタや , ネットワークコ ミュニケーションノヾッケーシ , ファイルマ ネージャ , 図形工デイタ , DBMS などは , ほかのアプリケーションシステムの中に埋 め込むことがて、きる。 ただし , オプジェクト指向の実装の性質 こうした具体的なアプリケーション は , さらに洗練されるべきオプジェクト群 から構成されているともいえる。したがっ て , 完全なアプリケーションは , クラス階 層などをより一層洗練することによって , その抽象度を高めフレームワークを形作る ことになる。 「インタフェイスの仕様」 ( interface specification) は , ソフトウェアシステムの 中て、はもっとも抽象的な部品の再利用て、あ り , オプジェクトの機能を具体化するメッ セージの集合から構成される。インスタン スオプジェクトが , このインタフェイス仕 様によって示される役割を果たすため , そ のクラスは機能のための実装を提供してい なくてはならない。これらのインスタンス こうした共通の動きが必要な場合に用 は , いられる。 68 C MAGAZINE 1991 9 こうした再利用戦略は , すべてふたつの 過程によって確定する。再利用可能な部品 の設計開発と , 再利用可能な部品の利用て、 ある。 こうした過程を認知させるためには , チームの相互協力と同様に , 管理上および 技術上の支援が必要て、ある。ときには , 管 理者は指導や評価の手法を修正したり , ソ フトウェア開発者に特別な報酬を与えなけ ればならないて、あろう。 また開発者は , 自分が作ったものて、はな い部品を使わなければならないという個人 的な抵抗との戦いや , 再利用可能な部品の 開発や利用という作業について学ばねばな らない 管理者は , 再利用が望まれるような環境 に変えなければならない。再利用が可能な 部品が存在する場合に , 新しいコードを書 くことは , 受け入れがたいことて、あると考 えなけれはばらない また , ソフトウェア工ンジニアの書いた コードが , その企業のライプラリとして受 け入れられた場合 , また , ライプラリの管 理者がその効果的な使用を定めた場合 , そ のエンジニアは , 営業マンがノルマを達成 したときと同様に , その企業に貢献したと いえる。組織の時間と費用を節約したわけ て、ある。もちろん , こうした貢献は早急に て、はなく , 1 , 2 年後に表面化するものて、あ る。再利用の過程に対しても正当な評価が なされるように , 組織上長期的に対応され なければならない 再利用可能なソフトウェアが受け入れら れるためには , 多くの選択が可能て、なけれ ばならない。再利用のためのパッケージソ フトの購入は , 内部的な初期投資の支出を 避けるという効果がある。しかし , 不利益 としては , ドキュメントやコーディングの 慣例が , 組織のそれとマッチしないことが 適合させられるように , ソースコードの形 これらのパッケージは , 組織のニーズに あげられる。 て、購入されなければならない。それ以上に , 再利用可能な部品が組織内の各プロジェク トて、効果的 , 効率的に共有て、きるように , ソフトウェアの記述形式とドキュメントの 標準が必要になるて、あろう。 ソフトウェアの開発を請け負い , その結 果として再利用可能な部品を得たいと思う ならば , 再利用可能な財産が作られるとい うことに対する所有者意識を契約の中て、明 確にしておかなければならない 開発者の問題は , まずほとんどが社会的 なものて、ある。再利用は努力する価値があ り , 適切な評価とそれを反映するプロジェ クトの構造によってのみ獲得されるという ことを , ソフトウェア工ンジニアに確信さ せねばならない Table 1 は , 開発チームにおける重要な関 係者と , それらを評価するための新たな基 準て、ある。 2 通りのテスト担当者があげられ ていることに注意していただきたい。なぜ ならば多くのプロジェクトて、は , 再利用可 能なフレームワーク ( 抽象クラス ) とコンポ ーネント ( 部品となるクラス ) の 2 種類のオプ ジェクトが作られるために , 2 種類のテスト 形態が存在するからて、ある。 フレームワークのテスト担当者は , フレ ームワークを使えるかどうかがわかるよう な適切なコンポーネントを作り出す。コン ポーネントのテスト担当者は , そのコンポ ーネントが別の分脈て、使えるかどうかを決 定する。したがって , テスト作業は , ソフ トウェアの再利用の範囲を割り当てること こうした作業は , ライプラリ だといえる。 の管理者と共同して行われる。 再利用のテスト作業は , ソフトウェアの テストに対する非常に特殊なアプローチて、 ある。なぜならば , ソフトウェアコンポー ネントが , 広い応用可能性を持って設計さ チームの割り当て

7. 月刊 C MAGAZINE 1991年9月号

ec ね加 s Made Easy 次のような代入がて、きます : bin C0] bin [ 1 ] bin [ 2 ] そして , 次のようにして fieldl にアクセスて、 きます : d = bin [O] ー > fieldl ; 〔訳注 :List 1 を見れば分かるように ,TO OL DEF は構造体型 , field defl は int を typ edef したもの , そして fieldl は TOOL DEF のメンバて、 , そのデータ型が field defl て、 簡単て、しよう ? 今度は , 少し難しいの をやってみましよう : typedef TOOL DEF ( * BIN DEF) [ 3 ] : BIN DEF bin ; 私たちの変換規則に従えば , この宣言の 意味は , 「 bin は成分が三つの配列を指すポイ ンタて、あり , 配列の各成分は TOOL DEF 型 のデータて、ある」となります。データにアク セスするために , a, b, c および d を宣言し d = (*bin) [ 0 ]. f 回 dl ; 1 にアクセスて、きます : すると , 次のような簡単なコードて、 , field ( * bin) [ 2 ] (*bin) [ 1 ] (*bin) CO] fieldl def d ; TOOL DEF a, b, c ; て : TOOL DEFa(),b; は , a, b, そして d を宣言することて、す : のポインタて、ある」 , て、す。次のステップ や簡単てす : 「 bin は TOOL DEF を返す関数 この宣言を英語て、言い換えるのは , いま TOOL DEF (*bin)( ) ; 倒なのをやってみましよう。 これも簡単て、したね。次は , ちょっと面 t 。 r ) てす〕。 場合の , 逆参照演算子 ( dereference opera インタからそれが指すデータを逆参照する 〔訳注 : 言うまて、もなくここて、の * は , ポ こからが面倒になります。 bin=&a と書 く , と予想されたて、しようか ? て、も , [ ] 抜きの配列名が配列のアドレスを意味する ように , 直後にカッコが続かない関数名の みは , 関数のアドレス ( 関数のポインタ ) を 意味しますから , ここて、のアドレス記号 & は 余計て、す。データ成分へのアクセスは , 次 〔訳注 : ANSI C 準拠の処理系て、は , 関数ポ d = b. fieldl ; bin = a ; のように書きます : て、はなく , インタによる関数コールを , と b = bin ( ) ; あたかもふつうの関数コールのよフ 書いてよい〕。 理論と実際 この単純な変換規則が , C のすべての宣 言 , typedef, そしてキャストに通用しま す。本稿の事例は単純明快なものばかりて、 したが , このルールを , もっと複雑な現実 のコードに適用するのは簡単て、す。このテ クニックは有用て、しようか ? 下に , UNI X のインクルードファイル /usr/include/sy s/signal. h から引用してみますから , 今学ん ことが役に立つかどうか , ご自分て、判断 してみてください〔訳註 : この UNIX マシン が何かは不明〕。 #define NSIG 33 #defineSIG IGN ((void(*) ( ) ) ( NSIG 十 10)) SIG IGN が最高の優先順の記号てす ( なぜ なら , このタイプキャストが変数宣言だっ たら変数名があるべき場所に , この SIG IG N があるからて、す ) 。そしてこれはポインタ て、す。何の ( 何を指す ) ポインタかというと , タイプキャストが「 void を返す関数のポイン タ」だ , と言っています。 このキャストは関数のプロトタイプて、は ありません。変数名が最高の優先順の記号 として宣言されてはおらず , そして , NS IG 十 10 は C のプリミテイプて、はありません。 という単なる値 これが , NSIG 十 10 を , 「 void を返す関数のポインタ」へとキャ ストしているのだ , ということをご自分て、 確認してみてください このタイプキャストは何をするのて、しよ (char * ) 0 というタイプキャスト が , メモリ上の絶対番地の 0 番地を指すキャ ラクタポインタを意味するのと同じく , の SIG IGN のタイプキャストは , 絶対番地 の 43 番地 ( 33 十 10 ) が , void を返す関数の工 ントリ番地だ , と言っているのて、す。この ようにして絶対番地を参照することは , 扱 うアドレスが決まっていて公開されている , 低レベルのシステムズプログラミングて、は よく行われます。 もっともっとヘンなのを見たいて、すか ? て、は , 次の宣言を考えてください これが , 「 bin は関数のポインタて、あり , そ の関数は TOOL DEF を指すポインタを返す 関数のポインタを返す関数だ」 , という意味 て、あることを , ご自分て、確認してください 〔訳注 : 解読の順序・・・・・・① bin は一一ポイン タて、す , しかも一一一関数ポインタて、す ; ② その関数の帰値は一一ポインタて、す , しか も一一関数ポインタて、す ; ③その ( 後者の ) 関数は TOOL DEF を指すポインタを返しま す。・・・内側の二つの * がカッコ内にあって , したがって , 「ポインタて、ある」ことが優先 ③②① している , ということに着目します。 システムズアナリストです。 トルの Boeing Computer Systems 社の上級 Steven R. Martin 氏は , ワシントン州シア 解するのは , あなたの責任て、すぞ ! することはて、きますが , コードの動作を理 の変換規則によって , 宣言や typedef を解読 最後の事例を , List 1 に示します。私たち fieldl def d ; 18 C MAGAZINE 1991 9

8. 月刊 C MAGAZINE 1991年9月号

一一 1 4 4 4 ロ 0 ビジネスアフリケーション構築に最適な数々の機能を搭載し、 快適で効率のよい開発環境を提供する Microsoft BASIC 7.1 。 新しい BASIC の常識亟ここから生まれます ダイアログボックスを簡単に構築する DOS 環境て、最大 16M バイトまての EXE も可能て、す。 今までの BASIC の、、常識 " 、「遅い」「大 ための、、ユーザーインタフェース・ツール •MS OS / 2 サポート ファイルを作成、実行て、きますまた far きなプログラムが組めない」「信頼性に欠 ボ、ツクス〃、円グラス棒グラフなどを簡単 MS OS / 2 用の EXE ファイルを生成する 文字列のサポートて : プロシージャごとに ける」そして「やつばりビジネスアプリケー に描画て、きる、、プレゼンテーショングラ 64K バイトの文字列領域が確保可能に ことがて、きます ションの開発には使いにくいよ」・・ フィックス・ツールポックスて、、行列演算 ・統合開発環境を拡張 ・言語仕様の拡張 そんな今までの BASIC にまつわるイメー ツールボ、ツクス〃をライプラリとして標準 構造化とモジュール化プログラミングを MS ー DOS 上の統合開発環境として、 ジを打ち破り、まったく新しい、常識 " を 搭載しています。ツールボ、ツクスライプ サポートする言語仕様をさらにパワー QuickBASIC Extended Version を 作り出すのが、 Microsoft BASIC アップ。ファイル操作機能、 ISAM 操作 ラリのソースファイルも添付されている 提供。工テタ、インタープリタ、テッヾッカ : P rofessional Developmen t Syste m のて、、大規模アプリケーション作成の 機能、通貨型データタイフ : ローカルエ コンぐイラをひとつの画面に統合。アフリ Version 7.1 ( 以下 Microsoft BASIC ラーハンドルなどが追加され、ビジネス コーディングサンプルとしてもご利用い ケーション感覚て、スヒーに開発て、きま 7.1) です アプリケーション構築に最適の言語仕様 ただけます。 す High Memory Area 、 EMS (LIM 高速 & コンパクトで信頼性の高い EXE 4.0 ) などの利用て QuickBASIC 上て、 を実現。 ファイルの生成、最大 16M バイトまでの ※ Microsoft BAS ℃ 7.1 により作成したアプリケ のメモリ不足による制限を解消します。 •ProfessionaIlSAM EXE ファイルの生成・実行、快適で効 ーションソフトウェアは、社内での利用はもちろん、 最大 128M バイトまてのファイルを非常に 率のよい開発環境の提供、高性能 ISAM キーカスタマイズやメニューカスタマイズ 販売もこ・自由に行っていただけます 高速に操作することがて、き、しかも Micro- や充実したライプラリの搭載 も可能て、す。 FAX 情報サービス実施中 soft ExceI の 50 音ソーティングオーダに Microsoft BASIC 7.1 は、ビジネスア ・もうーっの統合開発環境 Mic 「 osoft BASIC 刀について、今すぐもっと プリケーション構築のための史上最強 準拠した Professional ISAM を標準 Microsoft C6.0 て、も採用されている 詳しく知りたい方のために、 FAX て機能概要、必要 のプロフェッショナル BASIC です 搭載していま 統合開発環境 Programmer's Work- システムなど詳細なテクニカル情報をお送りしてい ます。ファクシミリ情報日 OX : ( 03 ) 3940-60 ITOOLBOX Library Bench と、ソースコードデバッガ C0de- 電話し、 Mic 「 osoft BASlC7.l の FAX BOX QuickBASIC や QuickC 、 Microsoft View 、開発支援ツール NMAKE を標 ■生成コードの品質向上 番号囘囘囘を押した後、あなたの FAX 番 Works などのドロッフ。ダウンメニューや 準搭載。複数言語によるプログラミング 号をお知らせください。 ( ブッシュ回線てこ利用ください ) 生成コードのサイズを可能な限り小さく するよう、最適化の手法を駆使。コンパ クトな独立型 EXE ファイルが生成て、き ますもちろん、実行スヒ。ードもさらに高速 化しました。 ・プログラミング容量の拡張 EMS ( LIM4.0 ) が用意されていれば、 EMS オーバーレイ機能を利用し、 MS- 。卩を響当を Mi 叱 BASIC 2 ′ i Development $ セ川′〃 NEC PC ー 9800 シリーズ対応標準価格 98 , 000 円 ( 消費税別 ) マイクロソフト株式会社 〒 160 東京都新宿区西新宿 7 ー 5 ー 25 K ビルディング電話 ( 03 ) 3363 ー 1201 4 売 ※ LIM は、 Lotus/Inte レ MicrMt が提昭する EMS の方式てす。また EMS は Expanded Memory Specification の略語てす。 ※ ATOK は株ジャストシステムの、 Lotus は米国ロータスデベロッフメント社のヨ n 回は米国インテル社の登録商標てす。 ※ Microsoft 、 MS 、 MS-DOS 、 CodeView は、米国マイクロソフト引の登録商標てす。 く資料請求番号 F02 〉

9. 月刊 C MAGAZINE 1991年9月号

ea e で s , Roonm ☆付録ティスク 付録ディスクのソースは不要で はないかと思う。ソースリストを キーポードから入力することによ り , そのソフトの構造や動作を確 認でき , 学習するには一番よいと ′し、つ 0 早津裕司 ( 新潟県 ) 置いてあります。 C マガジンを読ん で C 言語を勉強したくなり , パソコ ンを購入してしまった私なので , たくさんの人に C マガジンが読まれ ているかと思うと , うれしくなっ てしまいます。 上戸雅美 ( 長崎県 ) ( 十 HDD ) で行ったという話が書い ネー ( どこかに GCC の移植を 98NS ワークステーションが動くんです した。つ , ついにコタッミカンで SPARC の記事を見てブットビで ±SPARC LT お寄せください。まってま ~ す ! の周りの出来事なども , どしどし 部ても楽しみにしております。身 が , みなさまからのお便りは編集 べてを掲載することはて、きません 本当に様々て、す。誌面の都合上す ださる方々は , 年齢 , 職業と Readers' Room にお便りをく 佐藤昇 ( 東京都 ) ざしてがんばろうと思います。 して「楽しいプログラミング」をめ ね。私もいずれ , パソコンを購入 な立場の方がいらっしやるんです のが本当に楽しみです。いろいろ の読者の皆さんの意見を拝見する にたちますが , Readers' Room へ ます。連載記事や特集も非常に役 毎月楽しく読ませてもらってい ☆ Readers Room まいます (A-A;) 。 しくて編集作業にも力が入ってし れているという話を聞くと , うれ うれしい話て、すね。弊誌が活用さ たいへん ているんて、すか ! 、弊誌が参考資料として置かれ てあったのにもびつくりしました が・・・・・・ ) アメリカの Mac コンバチボ ータブルでは Motif が走っているら しいし , ついに膝の上に UN Ⅸを抱 いて育てられる・・ 佐伯俊也 ( 京都府 ) 数年前まて、はワークステーシ ョンが持ち歩けるサイズにま て、小型化されるなんて想像もてき 作ってみたいものです。ところで , 7 月号ニタ募集コーナ—Ø .COM PUTER LANGUAGE" 誌の内容 は , いったい何なんでしようか ? JOLT の写真の表紙がとても気にな るのですが・・・・・・海野淳 ( 大阪府 ) 、 C 言語はしだいに慣れていくも のだと思います。気長にやり ましよう。プログラムを作ったら 編集部まて投稿してくださいね。 COMPUTER LAN GUAGE 誌 確かに , ソースリストをキー ポードから入力することも学 習方法のひとってす。しかし , 膨 大なソースリストを入力する時間 のない読者がいらしやるのも事実 て、す。そのような場合に付録ディ スクのソースを活用いただければ と収録しています。したがって , ご自身て、入力する , しないは読者 各位て、ご判断ください。必ずしも 付録収録したソースを使用しなく という趣旨て、はな てはならない , い点をご了解ください ☆環境オタク なんてことだ ! ! だんだん自分 が今はやりの環境オタクになって いく気がする。いかん ! この状 態をはやくぬけださないと・・ と言いつつ , 環境をととのえよう としている自分がこわい。 根井和宏 ( 大阪府 ) 一度ははまる環境オタク ! ひたすら使いやすい環境を求 めて , そのわりには整えた環境を あまり活用しないんて、すよね。て も , 環境を整えることさえ面倒に なったら・・ ☆情報処理教室の C マガ 私の大学の情報処理室に , C マガ ジンが参考雑誌として創刊号から 156 C MAGAZINE 1 1 9 なかったのに・ , 技術の進歩は すごいものてすね。最近とくにヾダ ウンサイジングクが叫ばれて , マ シンの小型化と低価格化が進んて、 いますね。このままいくと , その うちにポケットに入るワークステ ーションが出てくるかも・・ ±FORTRAN から C 言語 研究室では FORTRAN ばかり扱 ってきましたが , 就職して , 部署 に配属された途端「 C 言語をやれ」 といわれて , あわてておりました。 そんなときに , C マガジンを知るこ とができたのは幸運だったと思い ます。ちょうど入門講座もいくつ か始ったばかりですし本当に助か ります。これからもよろしく。 渡辺久孝 ( 大阪府 ) 急に C 言語を始めなくてはなら なくなったのてすね。自分の 好みて、始めるぶんにはそれほど苦 にもならないのてすが , 仕事のた めとなると・・ , 大変てすね。弊 誌が少してもお役にたてれば幸い て、す。がんばってください ☆ C 言語を始めて半年 「 C 言語を修得しよう ! ! 」と始め て約半年 , 未だによくわかってい ません。はやく何かプログラムを の表紙は・・・ こては「コーラて も飲みながら気楽にプログラミン グしましよう」という意味だと解釈 しておきましよう C ☆ G 十十 是非 , G + + を付けてほしい。会 社で TurboC 十十を使える環境には あるが , 忙しくて手を出せない ( ソ フト開発力壯事でまなしで ) 。 X68 k で動く C 十 + を期待したい。 来住久敏 ( 兵庫県 ) 付録ディスクに G 十十を載せ てほしいという要望は非常に 多く寄せられているのてすが , デ イスク容量の関係などてなかなか 対応てきなかったのが実情て、す。 しかし , いよいよ G 十十の付録収録 も間近か ! ? ご期待ください Readers' Room Readers' Room では皆さまのご 意見・ご感想をお待ちしておりま す。ご意見・ご感想にとどまらず , コンピュータをめぐるさまざまな こと , なんでもけっこうです。質 問もどしどしお寄せください。な お , 原文を手直しさせていただく 場合もあります。ご了承ください。

10. 月刊 C MAGAZINE 1991年9月号

特集フレタ系言語研究 tako [ 4 : ] - → ' a pen tako ト 2 : ] # 負数をつけると終わりから数える tako [ : ー 2 ] → 'this is a p' のように文字列の一部分を取り出すことが て、きる。同じ操作をリストに対しても適用 て、き , C'asdf' 234 [ 2 3 ] 'oiu'] # 4 要素のリストを表す記法のとき → ['asdf' 234 ] ika [ 1 : 2 ] ika [ : 3 ] → ['asdf' 234 [ 2 3 ] ] ika [ ー 1 : ] → C'oiu'] 、、 [ ] 〃の中て、範囲指定を行うこ のように とて、文字列やリストの一部分を取り出すこ とがて、きる。加えて , リストについてはそ の一部分を削除したり , 真中に挿入したり することもて、きる。 もうひとつ python にはデータに型がある という点が perl や awk などと異なっている。 awk や perl て、は文字列と数字は演算の種類に よって自動的に変換が行われてきたが , python て、は型の合わない演算を行うとエラ 、、十〃は両辺が数値のときは算術的足し算 を , 両辺が文字列のときは文字列連結を行 い , 両辺の型が一致しないときはエラーに なる。 List 3 0 # $ 2 は , " [ tag ] ”のような形をしているので , 両端の 'Ci , ' 」 ' を # 取り除いてローカル変数 $ x に格納する。 local($x)=substr($2,1, length($2)-2); print TAG "$x $sections}n ”・ # 行頭に . ref が見つかった場合 if (!defined $tags{$l}) { # タグが定義されていなければ print STDERR "warning : undefined tag $ 1 ' at 1 ine $. }n ”・ } else { print "$tags{$l)*n ”・ } else { # 以上のパターンマッチに失敗した場合には単に行全体を出力する。 print; 、 1 りム CO 4- ロ 0 れ 0 8 0 ) 0 1 宀りなっ 0 4- L.D ^ 0 叮ーーワーワーワーワーロー叮ー 8 8 8 8 8 8 8 python で記述したサンプルプログラム LlSt 4 1 : #!/usr/local/bin/python 2 : 3 : # python では標準組み込みの機能はごく限られており , それら以外の機能を使う時には import でモ 4 : # ジュールを陽に読み込む必要がある。 sys では stderr などのシステム定数を定義し , regexp は正規 5 : # 表現を , string は文字列操作関数を提供する。 6 : 7 : lmport SYS 8 : lmport regexp import string 9 : 10 : 11 : # 値を設定していない変数を参照するとエラーになるのでプログラムの先頭で全て初期化する。 # { } は空リストを表す。 12 : already—compi led—patterns=() 13 : tags={) 14 : sect ion=o 15 : subsection=O 16 : subsubsection=O 17 : 18 : # awk で , string-/pattern/ に相当する手続きをここで定義する。 python ではパターンマッチの前に こでは同じパターンを何回もコンパイルしな 19 : # パターンを内部表現にコンパイルする必要がある。 20 : # いようにすでにコンパイルされたパターンを連想配列 already ー compil ー patterns に記憶しておく。 21 : def regexp_match(string, pattern) : # プロック構造はインデントの量で指定する。 22 : # クラスの中で定義されている手続きの呼び出しは classname. procedure' 23 : # あるいは variablename. procedure のように行う。 24 : if (not already_compiled—patterns. has—key(pattern)) : 25 : already_compi led—patterns[pattern]=regexp. compile(pattern) 26 : # exec はコンパイルされたパターンに対してパターンマッチを行わせる # ための手続き。返り値は , マッチに失敗した場合 0 , 成功した場合には 28 : # (... ) でくくられたパターンの出現位置を示すリスト。 29 : return already_compi led_patternscpattern]. exec(string) 30 : 32 : # この関数は awk , perk でも使われていた 33 : def substitute_fi lename extension(filename, newextension) : 34 : try : return fi lenameCO:string. index()i lename' ' . ' ) ] + newextension 35 : 36 : except string. index_error: return filename 十 newextension 38 : 39 : # ここでは例外ハンドラを使っている。 RuntimeError という種類の例外に対して except RuntimeErro 40 : # r 以下のプログラムをハンドラとして定義する。 RuntimeError はこの関数の中では open に失敗した 41 : # 時に発生する可能性がある。 try : 以下が最初に実行されるプログラム。 42 : 43 : def read_tag-file()i lename) : 44 : try : tagfp = fi lename—extension()i lename• '. tag' ) , ' r' ) 45 : line ニ tagfp. readline() 10 十 10 → 20 'asdf' 十 qwer' → 'asdfqwer' ERROR 'asdf' 十 20 そのほか , pyth 。 n の特徴的な機能を列挙 する。 ・例外処理を提供する。例外ハンドラを定 義しておけば , I/O などの処理を行うごと にエラーチェックをしなくてもエラーが 発生したときは自動的にハンドラに制御 を移すことがて、きる ・クラスを定義する機能を持っている。正 ま 規表現を使ったパターンマッチや , awk' perl て、は常識的に用意されている多彩な文 字列処理関数はクラスを使って標準関数 特集フィルタ系言語研究 39 0