プロクラミンクを ~ はしめよういユ - どの 8S0 であれ、普通にインストールを行えは、インストール直後か らプログラミングできる環境が整っているはすである。これは、 8S0 がもともとプログラマのためのプラットフォームとして発展してき たからにほかならない。 BSD を使っていながらプログラミングを行 わないのは、メインディッシュ抜きの食事をしているようなものだ。 この機会にせひともプログラミングの楽しさを知ってもらいたい。 本特集では、プログラミング環境の作り方から、プログラミングッー ルの使い方、今の時代にかかすことのできない国際化プログラミン グの現と実践について、さらに 8S0 の上で使用できるさまさまな プログラミング言語についての紹介を行った。
オプジェクト指向スクリプト言語 Ruby 「楽しいプログラミング」をモットーとする真性オプジェクト 指向スクリプト言語 Ruby について、作者自らがすべてを語る B5 判 576P 定価ー十税旧 BN4-7561-3254-5 第 1 章 Ruby とは 第 2 章 Ruby 入門 第 3 章 Ruby プログラミング入門 第 4 章 Ruby オブジェクト指向プログラミング 第 5 章 日 uby オブジェクト指向設計 第 6 章 Ruby オプジェクト指向プログラミングーー実践編 第 7 章 応用 Ruby プログラミング 第 8 章 lnside Ruby 第 9 章 Ruby を強化する 第 10 章 Ruby を取り巻く世界 石新版 オプジェクト プロフェショナル オプジェクト指向 ッガの理論と実装 テータベース プロクラミング シェルプログラミング 」 - 第、・・に R のを・ト′第物・、用災ま ー : 毅著 / ー物を物 プロフェショナル・シェルプログラミング オブジェクト指向データベース 砂原秀樹 / 石井秀治 / 植原啓介 / 林周志共著 石塚圭樹著 A5 判 256P 定価ー十税旧 BN4-7561-1632-9 B5 判 440P 定価ー十税旧 BN4-7561-1909-3 改訂新版オブジェクト指向プログラミング デバッガの理論と実装 石塚圭樹著横手靖彦監修 Jonathan B. Rosenberg 著吉川邦夫訳 A5 判 368P 定価ー十税旧 BN4-7561-0276- x A5 判 300p 定価ー十税旧 BN4-7561-1745-7 h邯://宀 . arcs.ne.jp/direct/ . Web で OK!! 0 オプジェ外指向ス列プト言語 RubY 「オプジェクト指向スクリプト言語 Ruby 」目次抜粋 まつもとゆきひろ / 石塚圭樹共著 00 ■■ ■第■■■ 企業内研修・引用によるカスタムメイド・ OEM 供給に関してのお問い合わせ先 : 法人営業担当 ( 03 ) 5351-8640 ・表示価格は消費税を含みません。・本製品は書店および書籍を扱っているパソコンショップでお買い求めください。・品切れの際は書店にてこ注文いただくか、通信販売を こ利用ください。・通信販売のお問い合わせ先 : 株式会社アスキーイーシー電話 ( 03 ) 5351-8202 http://www.arcs.ne.jp/direct/ 株式会社アスキー 〒 151-8024 東京都渋谷区代々木 4-33-10 電話 ( 03 ) 5351-8194 http://www.ascii.co.jp/ 公式解説書 ア世界初マ
C O T 刊 T S 000 20- ヨ ー特集 1 1 BS ロではじめよう ! いま、 BS ロカしい浅見賢〃 / 旧 v6 でつなごう許先明な / 身近になった旧 v 旧 v6 プリインストールマシン梅本肇 20 / NetBS ロで Linux アプリケーションを利用 しよう高原寛 27 / 開発の最前線を追いかけよう ! 午先明 35/FreeBS ロ - current 今野元之イ 0 / CVS で OpenBS 口を最新に保つ鈴木斉イ 2 / CVS リボジト リを入手して活用しよう今野元之イ 5 ー特集 21 50 辱、ま中 プログラミングをはじめよう ! プログラミンク環境を作ろう ! 花井浩之 / プログラミングッールを使おう ! 花井浩 之 60/CVS 入門小金丸信幸 / 日本語化総論ー国際化プログラミングのすすめ塩 崎拓也 83 / 日本語の文字コードについてわたなべごうめ / XPG4 ロ L による国際化環 境の構築塩崎拓也 88 / 国際化プログラミングの実際わたなべごう 96/X Window System における国際化プログラミングわたなべごう 7 の / 電子メールクライアント B sa の日本語化中井幸博 III/FORTRAN から RubY まで鴨浩靖〃 5 / 記号処 理言語五十嵐新女、鴨浩靖、立木秀樹、新出尚之〃 7 / オプジェクト指向言語榊隆、 大島芳樹〃 9 ー特集 31 BS ロ日本語環境構築術 コンソールで日本語を使う増田佳泰 7 幻 / バッケージによる日本語環境の構築ー NetBSD 編坂本一樹 72K / ports を利用して日本語環境を構築する一 OpenBSD 編 鈴木斉 7 引 Software 個人で入手する LJN Ⅸのソース神戸隆博 7 イ 2 / で一もんくんの作り方 23 新連載 BS ロでゲームをハックしよう ! 沼田一成四 0 連載 デーモン君のソース探検氷山素子な 8 / USB デバイスドライバ プログラミング前川将秀ゎイ / NetBS ロ移植の実際堀内岳人 7 / ロ a 「 win をハックする ! 浜田直樹〃イ / BS ロサーバーと Windows/Mac との共存、管理のツボ長橋賢吾 780 / 導師へ の道中野賢 78 イ / BS ロ on Business 京都産業大学一 600 台の Linux を支える F 「 eeBS ロ 3 / 0 旧 & New Books 砂原秀樹 202 mono モノ探検隊 2 の 秋葉原焼肉屋夜話ノ % BSD NEWS 7 Book Review 20 イ プロジェクト短信 207 バックナンバーのお知らせ 2 読者プレゼント 235 付録 CD - 日 OM について 238 g 〃尾 . ・ S ん Kanno ん 0 . ・Ⅳ 0 たハわの観 / (STUDIO ん 4 / DOU ) 一三ロ 、、第アミイ第【イ第 ア 、第、 5 い 員、を第ア気贒
れたのが、 PL/I である。当時、科学技 術計算には FORTRAN が、事務処理に は COBOL が主に使われていたが、その 両方を置き換え、さらに 衄処理系 や OS の記述にも使われることを目標と したのだが、言語仕様のあまりの大き さから、期待されたほどは普及しなか った。 A 01 のコミュニティでは、 ALGOL 60 の後継言語が求められるようになり、 さまざまな言語が提案された。それら の中のひとつが後継に採用され、 ALGOL 68 と名付けられた。 ALGOL 68 も言語仕様が巨大なため、あまり使 われることがなかった。ほば同じ時期 に作られた ALGOL 60 の子孫たちの中 では、むしろ、言語仕様を絞り込んだ pascal や EucIid のほうがよく使われた。 PL/I と ALGOL 68 の失敗の教訓は、 多くの機能を詰め込むことよりも単純 さを保つことか、ロⅱロ設計において重 要であるということだ。しかし、それ は、簡単なことではないようである。 プログラミング言語の歴史では、この あと、何度も、同じ失敗が繰り返され ている注リ PL/I と ALGOL 68 の失敗の後に開発 された BCPL と c は、単純さと記述カ の両立に成功した言語といってよいだ ろう。この 2 つの言語の以下の 2 つの特 徴が成功の要因であろう。 ・従来、言語処理系内部の概念であっ た左辺値と右辺値が 衄仕様上の 概念として現れている。 ・プリミテイプとライプラリが明確に 区別されている。 この 2 つの特徴を持つ言語としては、 ほかにも、 BIiss などがある。 プログラミングバラダイム 1970 年代には、手続き型言語とは異 なるプログラミングパラダイム ( プロ グラミングの基本的な考え方の枠組 ) が発見された。関数型プログラミング と論理型プログラミングである。それ 以降、これらのプログラミングパラダ イムに基づくプログラミング言語が開 発されるようになり、現在もそれは続 いている プログラムを、数学的な意味での関 数定義の形で記述するのが、関数型プ ログラミングである。 関数型言語は、 FP から始まると考え るのが無難だろう。 LISP と APL も関数 型言語に分類されることもあるので、 これらを含めると関数型言語は 1960 年 に始まることになってしまうが、関数 型プログラミングが意識されるように なったのは FP の発表以降であることも あり、また、 LISP も APL も関数型プロ グラミングと呼ぶには苦しい機能を多 く持っているので、関数型言語は FP か ら始まるとしておこう。 FP は、実用的なプログラミングに用 いるには苦しいが、その後、実用的な 関数型言語が数多く開発されている。 たとえば、 ML 、 HOPE 、 Miranda 、 HaskeII などがある。 プログラムを、論理式の形で記述す るのが、論理型プログラミングである。 論理型言語は pr 。 g から始まるとす るのが一般的である。いくっか、先駆 的な言語はあるが、それらは、かなら すしも論理プログラミングの理論に基 づいているとはいえない。 現在使われている論理型言語の大部 分は、 p ro g かその子孫である。 Concurrent prolog と parlog と GHC は、 いすれも、並列処理機能を加えた prolog の子孫である。 オプジェクト指向言語 「オプジェクト指向言語」に明確な 定義はない。したがって、ある言語が オプジェクト指向言語であるかどうか を、明確に判定することはできない。 「オプジェクト指向」がキーワード として意識されるようになったのは S m a Ⅱ t a 1 k - 8 0 の功績であるので、 sma Ⅲ a ⅸをオプジェクト指向言語に含 めることに異論のある人はほとんどい ないだろう。 Simula67 と CLU もオプジ ェクト指向言語に含めるか、オプジェ クト指向の原型とみなすことが多い。 Ada もオプジェクト指向言語に含める ことがある。 ModuIa-2 をオプジェクト 指向言語に含めることも、まれにある。 既存の言語にオプジェクト指向の機 能を加える形で作られた言語も多い。 たとえば、 c をオプジェクト指向化し たものとして、 Objective c と c + + があ る。 CLOS は、 Common Lisp 上のオプ ジェクト指向システムである。 今では、オプジェクト指向なスクリ プト言語も存在する。そのようなもの としては、 Ruby が有名である。 注 1 筆者の私見では、 Ada と CommonLisp が同じ失敗を犯している。 C + + も、このままでは危ない。 77 BSD magazine 2000 NO. 3
プログラミング環境を作ろう の イメージソース花井浩之 /Hiroyuki Hanai hanai@imgsrc. CO. JP 牛 2 プ回クラミ町クをはしめよう ! 特集 2 ンクを UNIX の大きな特徴のひとつに ェアができれば世界中の人が使ってく にサーバーとして活躍している、など れるし、一財産を築くことも可能だ。 というのはよく聞く話である。このよ の OS がプログラマのためのものである という点が挙げられるだろう。中でも ちょっと話が飛躍してしまったのでも うに、コンピュータにとって命ともい BSD はその特徴がきわだっており、生 とに戻そう。 えるソフトウェアを制作するための作 まれたときから現在に至るまで、プロ いきなりプログラムを書けと言われ 業がプログラミングなのである。 ても、戸惑ってしまう方も多いと思う。 グラマによりプログラマのために開発 言でソフトウェアといっても、か そもそもプログラミングとはどういう なり奥が深いものであり、さきほど述 されてきたものであると言える。ハッ カー魂ともいうべき精神は、脈々と受 ことなのか ? どうすればプログラム べた B S D や Wi n d ow s といった O S け継がれ、今も BSD の中に生きている が書けるのか ? プログラムを書いた (Operating System) もソフトウェアで のである。 ことのない人にとってはわからないこ あるし、いわゆる O ⅲ ce ツールと言われ さて、そんな BSD でも最近はプログ るものや web プラウザももちろんソフ とだらけである。 こではプログラミ ラマ以外の人々も多く使うようになっ ングの基本的な考え方を踏まえながら、 トウェアである。一度使っただけで捨 てきた。サーバーを構築するために BSD でプログラミング環境を構築する てられるようなシェルスクリプトもま BSD を用いる人もいるし、デスクトッ ためさまざまな手法について紹介しよ たソフトウェアである。 プ環境として用いる人もいる。もちろ さて、ソフトウェアというのはコン ん、なにに使おうがその人の自由であ ピュータに対する命令をひとまとめに プログラミングとは ? るし、 BSD はさまざまな用途に用いる したものであるが、コンピュータが理 ことができる極めて自由度の高い OS で 解できる命令を人間が直接記述するこ あると思う。一方、特に目的もなく 別に大上段に構えるわけではないの とは非常に難しいため、コンピュータ 言語という便利な道具を利用してソフ BSD をインストールしてしまった人も だが、プログラミングを始めるにはプ いるであろう。なんとなく BSD をイン ログラミングというものがどういうこ トウェアを作成することになる。コン ピュータ言語とは「言語」と言われる ストールしてしまったけどなにをした となのかを理解しておかなければいけ らいいんだろう ? と思っている人。 ないだろう。 だけあって文法が定義されており、 こでプログラミングに そんな人はまずプログラムを書いてみ ついて簡単に整理しておこう。 我々はその文法に従ってコンピュータ に対する命令をプログラムするのだ。 よう。コンピュータはソフトウェアが コンピュータはソフトウェアがなけ なければただの箱だ。ただの箱にソフ ればただの箱であると冒頭で書いたの 世の中には非常にたくさんのコンピュ トウェアという息吹を与えることで、 ータ言語があり、それぞれ独自の文法 だが、これはまさにそのとおりであり、 とても便利な道具に変身するのだ。し ソフトウェアがコンピュータを良くも を持っている。また、コンピュータ言 語には大きくわけて二種類のものがあ かもそのソフトウェアが、他人の作っ 悪くもしてしまう。同じ pc でも たものではなく自分で作ったものであ る。 1 つはコンパイラ型と言われ、文法 Wind 。 ws が載っているときには調子が に従って書いた命令の集まり ( プログ った場合を想像してみてほしい。ワク 悪くしよっちゅうリプートする必要が ワクしてこないだろうか ? 自分の思 ラム ) をコンピュータが理解できる形 あったのが、 BSD や Linux に載せ換え にコンパイル ( 翻訳 ) し、そのコンパ いどおりにコンピュータを動かすこと てからは途端にバリバリと働くように イルしたものをコンピュータが実行す ができるのだ。それに、良いソフトウ なり、半年くらい一度もリプートせす BSD magazine 57 2000 No. 3
特集 2 プ回クラミプクをはしめよう ! カ ( ファイル ) へ出力するためである なお、 FreeBSD 、 NetBSD 、 OpenBSD 、 こはコンピュータ言語の文法につ そして BSD / OS には標準でプログラミ いて解説する場ではないので、 c のこ が、一度改行するともとの行を訂正す ング環境が揃っているため、構築とは とについて知りたい場合は本章の最後 ることができないし、一度作ったファ いっても実際の利用方法の解説や、さ で紹介する書籍に当たっていただきた イルを編集することもできないので、 らに便利にするためのツールの紹介を い。上のソースコードは「 hello, world 」 お遊び程度に思っておけばいいだろう 行うことにする。 という文字列を表示するという非常に ( システム管理者としては重宝すること 単純なものである。 もたまにあるのだが・・ C によるプログラミング ソースコードとは、上でも述べたが コンバイル / リンク 人間が理解できる文法で書かれたコン プログラミング環境を整えるために ピュータへの命令の集まりであるが、 作成したソースコードは、コンパイ は、その仕組みをしつかりと把握して 通常、これはテキストファイルであり、 ラでコンパイル ( 翻訳 ) し、リンカで おくことが必要である。そのために、 リンク ( 連結 ) することによって、実 工デイタを用いて編集するのが一般的 簡単な例をもとにプログラムができあ だ。工デイタには好みのものを用いれ 行可能なものとなる。つまりコンパイ がるまでの過程を具体的に見ていくこ ばいいのだが、 BSD ( に限ら $UNIX ラやリンカがなければプログラミングは とにする。 全般 ) ではⅵもしくは Emacs が 2 大工デ できないことになる。 BSD には、もち 大まかな流れは図 1 のようになる。 イタであろう。どちらがいいのか、に ろんコンパイラやリンカが揃っており、 プログラムを実行したときになにも ついては Usenet やさまざまなメーリン OS のインストールが終わった瞬間から グリストで嫌というほど繰り返されて 不具合がないことももちろんあるのだ プログラミングを楽しむことができる が、通常はソースコードの編集からデ おり、ほとんど宗教論争のようなもの のだが、他の os ( 特に商用のもの ) で なので各人の好みで決めていただけれ バッグの過程を何度も繰り返してプロ はなかなかそうもいかない。 Windows グラムが完成することになる。こで、 ば、と思う。取りあえず好みのエディ でも solaris でも HP-UX でも、 OS とは別 ソースコードという言葉は初めて出て タを用いて上記のソースコードが含ま に開発環境を買わなければプログラミ きたと思うが、これは使用する言語の れる hello. c というファイルを作成しよ ングを行うことができないのだ。 文法に従って記述されたコンピュータ う ( ディレクトリは適当なものを作成 への命令の集まりである。 してそこでやるのがいいだろう ) 。 さて、余談に近いのだが、上記の ソースコードの編集 hel 缸 c のように短いものであれば工デ main() こでは、リスト 1 のようなソ イタを用いなくとも cat ( 1 ) を用いて作成 ースコ することも十分可能だ ( 図 2 ) 。 ードを例に取る。非常に有名な、 c の 教科書である K & R [ 1 ] の最初に出て これは、 cat ( 1 ) が標準入力 ( キーボー ド ) から来たデータをそのまま標準出 くるプログラムだ。 マリスト 1 h 訓 0 ℃ #include く stdio . h> printf ( " he110 , world*n") ; $ cat > he110. c ←ソースコードをタイプ ← CtrI + D を入力 ソースコードの編集 コンバイルリンク プログラムの実行 デバッグ ← B シェル系 ← C シェル系 $ type cc cc is /usr/bin/cc $ which cc /usr/bin/cc 図 3 cc があるかどうか調べる 図 1 プログラミングの流れ 53 BSD magazine 2000 No. 3
伝えもアスキーの http://www.arcs.ne.jp/direct/ Web で OK!! 0 実習 C 言語新版 田口景介著 ALS 判 / 288 ペーシ 本体価格 1 , 800 円 信頼と実績の 1 冊が待望の全面改訂 ! 数値データの扱 い / 型変換 / 配列 / メモリ管理 / 関数 / 複数ファイルの コンパイルなど、 C 言語でプログラミングを行う際に必 須の知識を詳しく解説。 オブジェクト指向 オアノエ外指向スグ〃ト言語 スクリプト言語 Ruby まつもとゆきひろ / 石塚圭樹著 B5 判 / 576 ページ 本体価格 4 , 80 円 日本初の快楽プログラミング言語 Ruby のすべてをその 作者が公開 ! R u b y によるプログラミングの基礎から、 オブジェクト指向プログラム開発、ⅲ side Ruby 、 C 言語 による Ruby 拡張などを詳細に解説します。 ドアスキー・ラーニンクシステム ( 、アスキー・ラーニンクシステム 五ロ 五ロ 入門 C 言語新版 田口景介著 B5 変型判 / 288 ページ 本体価格 1 , 600 円 C 言語入門の大ベストセラー ! 豊富なサンプルプログラ ミングを用いて、 C 言語とは何か / 変数 / 制御構造 / 条 件分岐 / 文字と文字列 / 関数 / ポインタ / 構造体など、 C 言語プログラミングの基礎知識を詳細に解説します。 五ロ 五ロ 新版 新刊 Ruby C 0 に e Java コア Java2 VoI. 1 基礎編 Cay S. Horstmann 、 Gary CorneI 共著 コアー 2 B5 判 / 768 ペーシ 本体価格 6 , 800 円 Java プログラムの構造、オブジェクト指向プログラミング、 ◆踵 Swing 、イベント処理、ストリーム処理など、 Java プログラ 」 A A 5 E R ーを 5 ミングの基礎知識を豊富なサンプルコードを用いて詳細 に解説。 新刊 VOI.I 基 SQL Server SQL Se 「 ve 「 SQL Server ス 0 M 「 05 研に SQL Server 7 ⑩ M に「 0 0 SQL Server ス 0 データウェアハウス入門 Michael Corey 他著 B5 判 / 456 ペーシ 本体価格 3 , 800 円 SQL Server ス 0 DBA ハンドブック Mark Spenik, Orryn SIedge 著 B5 判 / 944 ページ CD-ROMI 枚付属 ( サンカレコードを収録 ) 本体価格 7 , 200 円 SQL Se Ⅳ e 「データベースの設計・管理に役立つ、最新 ノウハウや重要なチェックポイントを実際の業務にすぐに 使える形で提供します。 DBA ハンドブック テータウェアハウス入門 00 Ⅲリ、、 ( ツ ッスキ - 出宿を 0 よリは 0 ・ 最新の SQL Server 7.0 を使用し、意思決定支援ソリュ ーションであるデータウェアハウスを設計、管理、セットア ップするためのガイドとなり、実践的に解説しています。 イ解 5 . アス - 出新第 M C P / M C S E Borland DeIphi 5 0 マイクロンフト認定技第資格試 MCP/ MCSE Mi 0 、 0 日 Certified 5 stems kngineer 必須用語典 ー ) CSK をサーとス第第に 一様ーアスキーラーニングメディア第第編 MC 円 MCSE 受験者必携 合格直結の頻出用語 0 可 hi 5 BorIand DeIphi 5 オフィシャルコースウェア基礎編 服部誠著 B5 判 / 320 ペーシ 本体価格 2 , 800 円 統合開発環境の使い方から、 Pasc 引の基礎、各コンポー ネントの説明とプログラミング方法、デバック方法など、 Borland De ゆ hi5 の入門書として最適。インプライズトレー ニングセミナーで採用され、その講師が執筆する信頼の書 である。 MCP/MCSE 必須用語辞典 株式会社 CSK 教育サービス事業部著 A5 判 / 328 ページ 本体価格 2 , 800 円 MCP / MCSE 受験者必携の用語辞典。人気の 9 科目に対応 した 1 1 00 語を厳選。マイクロソフト認定トレーナーが、 キーポイントを多数の図解を交えてわかりやすく解説。 頻出用語が一目でわかる重要マークつき。 M ⅲ 050h ( ⅱ d 円 0k55i0n 新刊 オフィシャルコースウェア アスキーエ・第 株式会社アスキー 〒 151-8024 東京都渋谷区代々木 4-33-10 電話 ( 03 ) 5351-8194 http://www.ascii. CO. jp/
マリスト 4 xtapp. c #include く XII/Intrinsic . h> #include く X11 / She11. h> #include く XII/Xaw/Labe1. h> / * アプリケーションクラス名 * / #define CLASSNAME "XSampIe" / * フォールバックリソース ( リソースファイルが無い場合のデフォルト ) static String fallback ロ "*title: Eng1ish Tit1e" "*label . label: He110 Wor1d! " NULL int main(int argc , char **argv) XtAppContext app ; Widget top ; Xt S et LanguagePro c (NULL , NULL , NULL ) ; / * ロケール初期化用設定 * / / * アプリケーション生成 * / top = XtVaOpenApp1ication(&app , &argc , NULL) ; XtVaCreateManagedWidget ("label" CLASSNAME , NULL, 0 , argv, fallback, sessionSheIIWidgetC1ass , IabeIWidgetCIass , top , NULL) ; XtReaIizeWidget (top) ; Xt AppMainLoop ( app ) ; / * リアライズ * / / * メインループ * / れていく。 マリスト 5 リソースファイル ( 日本語版 ) * ernat ional : true —*-fixed—medium—norma1--24— *fontSet : *title: 日本語のタイトル *label. label: こんにちは、世界 ! xsample で良いだろう。これだけで、 実験するためには $HOME/$LANG/ ースファイルの配置場所に置けば良い。 リソースファイルは、上述したリソ すれば良い。 ある。コンパイル方法は図 2 のように 典型的な " H 謝。 w 。 rld " プログラムで サンプルを示す ( リスト 4 、 5 ) 。 XTooIkit (Athene 、 Midget) での簡易 簡単に国際化されたプログラムになる わけである。刈 ib に比べて記述量が非 常に少ないことに気付くだろう。 以上で XIib/XToolkit を利用した「国 際化プログラミング」の概要の説明を 終わる。基本的には、低レベルの知識 は、「ライプラリの作製者」にしか必要 ないのだが、中でどのようなことが行 われているかは知っていると役に立つ 場合もあるだろう。 実際のプログラムでは、やはり国際 化されたツールキットを使うのが楽で ある。「コードセット非依存の処理」 「文字列の外部ファイル化」の基本原 則を守っておけば比較的容易に作成で きる。最近なら、その他のツールキッ トである Gtk や Qt の整備が進んでいる。 XT 。。ⅸ it とはかなり違うが、基本的な 概念は同じである。 みなさんの作られるプログラムが、 はじめから「国際化」して作成される ことを期待したい。 参考文献 [ 1 ] 国際化プログラミング 18N ハンド ブック 清兼義弘・末廣陽一編著 共立出版 ISBN4 ー 320 ー 02904 ー 6 X/XToolkit のプログラミングについ ても詳しい。国際化を考えている プログラマは必携。 いるが書店販売は行われていない。 soum. co. (p) からこれの翻訳がでて 書かれている。創夢 (http://www. これらを見れば必要なことは全部 lnterface ・ X Toolkit lntrinsics ー C Language ・ Xlib - C Language X lnterface, xc/docs 以下にある。 [ 4 ] x 付属のドキュメント まず入手は不可能。 2 冊だが、日本語訳版は絶版につき、 x プログラミングを行う上で基本の ISBN4-89052-801 ー 4 フトバンク 0 ・ REILLY & ASSOCIATES, INC / ソ ス・プログラミンクマニュアル [ 3 ] x ツールキット・イントリンシク ISBN4 ー 89052-398 ー 7 フトバンク O'REILLY & ASSOCIATES, INC / ソ [ 2 ] x ⅱ b プログラミングマニュアル % make CFLAGS="-I/usr/XIIR6/inc1ude" LDLIBS="-L/usr/X11R6/Iib -1Xaw -1Xt -1Xmu ー 1X11 " xtapp 注 9 正確にはもっと複雑。この処理は XtResolvePathname(3Xt) と XtFindFile(3Xt) を用いて行われており、 NLSPATH と同様の機能を提供している。詳細はこれら のマニュアル、および、 x ( l) のマニュアルなどを参照してほしい 図 2 コンバイル方法 770 BSD magazine 2000 NO. 3
る。もう 1 つはインタープリタ型と呼ば れるもので、文法に従って書いたプロ グラムをインタープリタが随時解釈し ながらコンピュータに命令を実行させ ていく仕組になっている。一般には前 者のほうが後者よりもかなり良いパフ ォーマンスを発揮するが、後者は非常 に手軽なのでちょっとした作業をする 場合に使われることが多い。 以下に主なコンピュータ言語を挙げ ・コン / ヾイラ型 ておく。 そのようなものはマイナーなものなの でここでは考えない。また、 Java は両 者の中間であると考えることができる が作業の手順などから言えばコンパイ ラ型に属すると考えられる。 さて、現在はインタープリタ型の言 語がかなり流行っているようだ。これ は、 Web でインタラクテイプなサイト を作るための CGI という仕組みを利用 するときに perl や Ruby がよく用いられ ることや、計算機自身の処理速度が速 くなったためにインタープリタ型言語 の遅さがあまり気にならなくなったた めであろう。しかし、やはり大規模な ソフトウェアやハードウェアを触る必 要があるようなソフトウェアではコン パイラ型の言語が主流であるし、プロ グラミングと言えばコンパイラ型の言 語をバリバリと使いこなす姿が思い浮 かぶのは筆者だけではないと思う。プ ログラマを募集したら応募してきた全 員が perl しか書けなかったというので はちょっと悲しい ( 作り話ではなく実 際にあった話だ ) 。もちろん、 perl が c に比べて劣っているとか、 perl しか書 けない人はプログラミングの能力が低 い、などというわけではない。が、優 れたプログラマはコンパイラ型の言語 である C や C + + をバリバリと使いこなし ているのが現実だ。 またしても話がそれてしまったよう なので元に戻そう。プログラミングを 行う上で言語の選択が非常に重要にな るのは確かなのだが、プログラミング 環境の構築はそれほど言語に左右され るものではない。基本的な部分はどの 言語にでも通用するか、もしくは簡単 に応用できるものである。 こでは、 利用言語として c を想定し、プログラ ミング環境を構築していくことにする。 C 、 C + + 、 Objective C 、 Fortran 、 ・インタープリタ型 perl 、 Ruby 、 Tcl 、各種 shell 、 JavaScnpt 、 もちろん、世の中には c のインター プリタというものも存在するのだが、 インタープリタ言 グラムにすると、 うになっているからである。本文の he Ⅱ 0. c を PerI 用のプロ となっており、コンバイル / リンクという作業が必要ないよ デバッグ プログラムの実行 ソースコードの編集 ログラミングの流れが、 とても便利である。これは、インタープリタ型言語でのプ タープリタ型の言語は日常ちょっとしたことをする際には 本文ではコンパイラ型の言語を取り上げているが、イン # ! /usr/bin/perl 可能だ。 ば、 PerI などを使って GUI なプログラムを制作することも つなのだろう。さらに、 Tk というツールキットを利用すれ タ型の言語が ( もちろん、 /bin/sh も ! ) 流行る理由のひと この手軽さも PerI や日 uby 、 Python といったインタープリ とするだけでプログラムが実行できてしまうのだ。恐らく $ . / he110. pl いれば ( なければ付けて ) 、 となる。この he Ⅱ 0. というファイルに実行権限が付いて print " he110 , orld \ Ⅱ " 52 BSD magazine 2000 NO. 3
2 プ回クラミンクをはしめよう ! 特集 2 FORTRAN から Ruby まで プログラミング言語の歴史を知る の 鴨浩靖 /KAMO Hiroyasu wd@openbsd.ics.nara-wu.ac.jp ゝミンクを しかし、当時の FORTRAN の制御構 リタと呼ぶ。コンパイラによる実行と この記事では、高水準言語の誕生か 造もデータ構造も貧弱であった。それ インタープリタによる実行の中間ない らオプジェクト指向の普及までのプロ らの抽象度の低さは、今日の基準で しは複合的な実行方式もある。たとえ グラミング言語の歴史を、おおさつば 「高水準言語」と呼んでよいものか疑 ば、中間言語にコンパイルして、中間 に振り返る。限られた誌面で流れをつ 言語のコードをインタープリトする方 わしいほどである。 かむことが目的なので、数多くの言ロロ 現代的な手続き型言語の基本的な制 式、実行時に必要な部分を逐次コンパ のうち、ほんの一部しかとりあげるこ 御構造であるプロックと条件分岐とル とができない。お気に入りの言語がと イルする、インクリメンタルコンパイ ープがはじめて現れたのは、 ALGOL りあげられなくて不満を感じる読者も ルなどがある。 60 である。 ALGOL 60 は、 1960 年に最 このような実行方式の違いは、処理 多いだろうが、ご容赦願いたい。 系の性質であって、言語の性質ではな 初の規格がまとめられた。 局水準言語 レコード ( 構造体 ) がはじめて現れ い。したがって、「コンパイラ言ⅱロ 「インタープリタ言語」という言葉は、 たのは、 COBOL である。 COBOL のレ コードの構文も意味も現代的な言語の CPU が直接実行するのが、機械語で 誤りである。 レコードとは異なるが、その先駆とみ ただし、インタープリタで実現する ある。機械語の命令と一対一に対応す なすことができる。 COBOL の言語設計 ことを想定して設計された言語は存在 る命令の列を基本とするプログラミン は 1960 年に完了した。 する。そのような言語のうち、システ グ言語が、アセンプリ言語である。機 動的データ構造の起源は、 Lisp のリ ムの拡張を主な用途とするものを、ス 械語と一対一には対応しない抽象的な ストであろう。最初の Lisp が発表され クリプト言語と呼ぶことが多い。 UNIX 己述を行うプログラミング言語が、高 たのは、 1960 年である。 では、 AWK や perl がよく使われている。 こで、「高水準」 水準言語である。 こうしてみると、現代的な手続き型 とは、機械語への依存性が低い、すな 夜明け 言語の基本的な制御構造とデータ構造 わち、抽象さの水準が高いという意味 は、 1960 年に出そろっていることがわ である。 手続き型言語の基本的な制御構造と かる。しかし、 1 つの言語でそれらを一 実行方式 データ構造の起源を探ってみよう。 通り持っているものが現れるのは、そ れよりも少し後になる。 もっとも歴史の古いプログラミング 言語が FORTRAN である。 1957 年に最 高水準言語で書かれたプログラムを 多機能と単純さ 機械語 ( または、アセンプリ言語 ) 初のリリースが行われた。 計算式を書けば数値計算をさせるこ よるプログラムに変換することを「コ 1960 年代も後半になると、より高機 とができるというのは、今となっては ンパイルする」といい、それを行う処 能な言語が求められるようになってき 当たり前のことだが、当時としては画 理系をコンパイラと呼ぶ。高水準言語 期的だった。計算式から機械語命令列 で書かれたプログラム、または、プロ 0 FORTRAN と COBOL と ALGOL 60 の グラムを構文解析したものを解釈実行 を生成することから、 FORTRAN コン 機能を兼ね備え、さらに新しい機能も パイラのことを「自動プログラミング」 することを「インタープリトする」と ふんだんに盛り込んだ言語として作ら いい、それを行う処理系をインタープ と呼ぶ人までいたらしい。 BSD magazine 775 一三ロ 2000 No. 3