新・闘わないプログラマ No.33

プログラマの困惑


「闘わないプログラマ」なんて言ってますけど、前から書いているとおり、私はプログラマという範疇には入らないと自分で思っています。というか、「私はプログラマだ」などと言ったら、ホンモノのプログラマから顰蹙を買いそうです。
とは言え、プログラムを全く作らないわけでも無いので、それなりにプログラミングの世界も知っていますし。なんか知らないけど、社内では一番C言語に詳しい人間と思われているようで、今も新入社員に教えていたりするわけですけどね。

ところで、いま個人的に定期購読している雑誌は「日経バイト」だけです。お金が無いのと、今ではWebほとんどの情報が得られるので、わざわざ雑誌を買わなくても、ということでほとんど購読を止めてしまいました。「日経バイト」は何故まだ取っているかと言うと、別に無いよう・・・じゃない、内容(相変わらず、MS-IMEは学習せんなぁ)がいいから、というわけでは無く、なんとなく5年契約してしまったので、その契約がまだ切れていないだけだったりするんですけどね。そんなわけで、「日経バイト」は毎月律義に送られてくるのですが、最近は封を切りもしないで、そのままほったらかしにしてあることもよくあります。
昨日、部屋の掃除をしていたら、そんな封を切ってもいない「日経バイト」が出てきたんですね。「せっかくだから読んでみるか」と開けてみると、1998年の6月号で、特集が「21世紀のプログラミング」、ちょっと興味があったので読んで見たのですが、(「日経バイト」1998年6月号、131ページ)

Windows NT 5.0以降はあらゆるプログラムがCOMオブジェクト(ActiveXサーバ・コンポーネント)の集合体へと変貌し、個々のユーザがVBScriptやJavaScriptなどのスクリプト言語を使って、これらのオブジェクトを自由自在に操るようになる

なんかねぇ、「は〜あ」とため息が出てしまいます。別に方向性としてはそんなに間違っているとは思いません(ただ、全部が全部そうなる、というか、そうすべきものでも無いと思う)けど、特定の会社の特定の技術だけをそういう形で取り上げるのはねぇ、それも技術的に優れている、とは言い難いものを。何も、そこまでマイクロソフトに媚びないといけないんですか。

すみません、前フリが長くなってしまいました。
最近、今後のプログラミングがどうなって行くのか、ということに言いようの無い不安を感じてしまっているんです。プログラムを開発し、それを動作させるための寄って立つ基盤、環境と言ってもいいですけど、これが強固で、かつある程度の期間にわたって不変でないと、開発する立場の人間としては、大変困るのです。
かなり抽象的な表現になってしまいましたが、具体的には、プログラミング言語やAPI(Application Programming Interface)の仕様、ふるまい、とったものがころころ変わるようでは、安心してプログラムを作ることが出来ないのです。
プログラミング言語の仕様は、COBOLやC言語のように標準化されている言語ならまだいいのですが、最近はVisual Basicのような独自仕様の言語や、スクリプト言語のように、はたして言語仕様が厳密に定義されているかどうか怪しい言語が幅を利かすようになってきています。
APIはシステム(これをOSだけと限ってしまうと語弊があるので、とりあえず「システム」と言っておきます)とのやりとりを規定しています。APIの仕様が変わったり、同じやり取りをしても、動きが変わったりすれば、プログラマとしては大変困ることになるわけです。最近のWindowsのAPIが凄い勢いで増殖している、しかもOSのバージョンによって振る舞いが違う、というのを見るにつけ、出るのはため息ばかりです。

もちろん、APIをシコシコ呼び出すようなプログラミングスタイルは時代遅れだ、という指摘はある意味当たっています。APIというかシステム(OS)をラッピングするオブジェクトを使ってプログラミングするのが今風のやりかたかも知れません。私もそのこと自体には異存はあるわけでは無いのです。
Microsoft Visual C++というWindowsの開発環境には、MFC(Microsoft Foundation Class)というクラスライブラリが付いてきます。これを使えば、Windows APIはオブジェクトとしてラッピングされます。で、これを使えば、APIを使う場合に比べて容易にプログラミングできる・・・・はずなのですが・・・・。実際はMFCはあまりにも不審な動きをすることが多くて、私なんか使うのが恐いです。なんか、だいぶバグが潜んでいるんじゃないかな、なんて想像してしまいます。
私自身は、オブジェクト指向プログラミングはあまりしたことがありません(古い世代なもので)けど、それ自体は否定はしません。ちゃんと設計されて、バグの無いクラスライブラリを安心して使えるのなら、ぜひともそういうプログラミングスタイルに移行したいと思いますし、開発コストを考えれば、そうすべきだと思います。

最近は「分散オブジェクト」が注目を集めています。オブジェクト指向プログラミングでは、オブジェクトを組み合わせて、それらの間の通信を行いながら、全体として一つのプログラム、というか、システムを構成します。分散オブジェクトでは、それらのオブジェクトが複数のコンピュータに分散して配置されて、コンピュータネットワーク自体があたかも一つのコンピュータであるかのごとく、システムがその上で実行されます。
この考え方自体は別に新しいものではなく、昔からあるのもです。RPC(Remote Procedure Call)なんかは、その前身にあたるものと言っても過言ではない(ですよね、自分でもよく分からないで言っている(^^;))ですし、昔から、コンピュータ技術者の夢である、と言っても過言ではないと思います。
分散オブジェクトといえば、CORBAとかDCOMといった技術がありますが、特に、Microsoftの提唱しているDCOMにはすごく不安を感じています。そもそも、あの会社、こういうことの出来る技術力がある会社だとは、どうしても思えないんですよね。

以前、アメリカの話として「大学・大学院のComputer Scienceの課程を優秀な成績で卒業した学生は、大挙してMicrosoftに入社している」という記事をどこかで読んだことがあるのですが(どこだったかなぁ・・・ご存知の方、いらっしゃいませんか?)、これ本当なんでしょうかね。少なくとも、本当に優秀な人材は行かないと思うけどなぁ。
私事ですが、私だったら絶対に行かないと思う・・・・だって、そんな悪魔に魂を売り渡すような真似・・・(^^;) 数年前に、転職斡旋会社から、そういうお誘いがあったのですが(あのころ、マイクロソフトの日本法人は、かなりの数の人材を探していたようですね、そういうお誘いを受けた人は、知り合いにも何人かいましたし)、きっぱりと断りました。
それはともかく、ああいう体質の会社って、いい技術は生まれないし、育たない、と思います。トップに気に入ることばかりを考えているようじゃね。UNIXの文化とは大違いですから。UNIXの文化は、数知れない人たちの手によって支えられていながら、それでも、ある意味の思想性を失わないのも、プログラマたちの「他のハッカーに笑われたくない」という一心と、健全な競争と淘汰の仕組み、があるからではないか、と私は勝手に思っているのですが。

最近、マイクロソフトは、オンライントランザクション処理(たとえば、銀行の勘定系システムのような基幹業務処理)のような分野にまで進出しようとしていますね。この分野は、今まではIBM等のメインフレームの牙城だったところなのですが・・・。DCOMにMTS(Microsoft Transaction Server)を使えば、安全に分散トランザクション処理が出来る、というのがマイクロソフトのうたい文句ですが・・・・私は、それを聞いて、眉がツバでべちょべちょになってしまいました(^^;)
でもなぁ、こんなうたい文句を会社のトップが信用して、NTで基幹業務システムを作れ、などと言い出したりしたら・・・・考えるだけで恐ろしい。この分野は過去の経験がどれだけあるか(どれだけトラブって痛い目に会ったか)が重要な世界で、ぽっと出の製品が入り込めるようなところじゃあ無いです。IBMのCICSやIMSなんかは何十年にもわたって基幹業務を支えてきた実績と経験があるわけですから。

というわけで、今回は何の話やら、よく分からなくなってきました。内容的にも、分からない人には全然分からない内容ですし・・・・。
とにかく、このまま行けば、21世紀のプログラミング環境はバラ色でも何でも無くて、いまよりずっと大変になるような気がしてなりません。と、強引に結論を出したところで、今回はこれで失礼します。
次回は、もっと易しい内容にしたいなぁ、なんて思っていますけど、どうなることやら。

[前へ] [次へ]

[Home] [戻る]


mailto:lepton@amy.hi-ho.ne.jp