何故だ Windows NT
インターネット黎明のころ、パソコン通信のBBSへの書き込みした方からその当時どんな雰囲気だったかを聞きます。
com(150/269) 96/06/19 23:53 何故だ Windows NT
708B
DLL で malloc() したメモリを、アプリ側で free() しようとすると落ちる。
どうやら、DLL とアプリではヒープが違う模様。
メモリ空間は共通だけどね。(だからポインタは使える)
気がつくのに、約半日費やす。
VC++ で、AppWizard 使ってダイアログアプリを作る。
バックグラウンドで処理をする必要が有ったので、アプリケーションクラスのOnIdle() をオーバーライドするけど、ルーチンを通らない。
どうやら、ダイアログアプリではダイアログクラス側にメッセージループが
有るので、アプリクラス側の OnIdle() は通らない模様。
ただし、ダイアログをモードレスにすればうまくいくかもしれないけど
まだ試してません。
これも、気がつくのに約半日費やす。
1996年の時点でWindows NT上でVisual C++つかってプログラムしていて、うまく動作せずに時間を費やしたとの書き込みです。ユーザーが呼んだDLLが確保したメモリなら、ユーザー側の気のような気がするものの、ピープが違うそうでアプリケーションプログラムが停止するようです。メモリ空間は共通なそうなのですが、きちんと管理されているとのこと。
1996年頃か。ということはWindowsNTでOpenGLアプリを開発してた頃やなぁ。
VC++自体はもうちょっと前から触ってっていうか、一番最初のVC++1.0から使ってる。ポン橋にパッケージ買いに行って、バカでっかいのをハンドキャリーして会社に持って帰った思い出。なんでバカでっかいかって言うと、紙のマニュアルが山ほど付属してるからなんよ。一方メディアも物凄くて、フロッピーが数十枚とかだったような気がする。VC++をインストールするだけで半日仕事とか平気で掛かってた。今では考えられんな。
VC++1.0の頃はWindows3.1だったので、モデリングツールなどを開発してたかな。WindowsNTが出てOpenGLをサポートしたことで、ではNT上でCGツールを作ってみようかということで触り始めたんよね。当時はCG屋さんだったので。
ちなみにWindowsプログラミングはVC++で始めたので、最初からMFCを使ってました。のちにとても評判悪くなるMFCですが、この頃はまだそんなに評判悪くなかったような気がする。なんせ比較相手がWindows APIを直接呼ぶことだからねぇ。それに比べれば、大抵の処理をラップしてくれるMFCは便利だった。んでもまあ、結局Windows APIレベルの知識も必要になるので「猫でもわかるWindowsプログラミング」とかには随分お世話にはなったもんだった。
VC++と言えば、個人的には初めて触った統合開発環境でもあった。エディタもだし、AppWizardとClassWizardがあるのも便利ではあった。今となっては当たり前のものだけど、それが20年以上前に実現してたったのも凄い話だよな。別にMicrosoftが特別に偉いってわけでもないとは思うけど。ただ、20年以上経って結局自分は今はエディタはvi使ってるのでむしろ退化してたりもするんよな。VSCode使えよと我ながら思うけど、多分死ぬまでvi使うと思う。念のため、使ってるのはvimだけど、viとしての機能しか使ってないからviなの。今、オリジナルviってどこの環境で使えるんかなぁ。FreeBSDとかに入ってるのも別物に置き換わってるよね確か。
とかまあいろいろ思い出して書いてみたけど、本題であったDLLのメモリ空間とかダイアログアプリのメッセージループとか、いまだに分からん。多分こんな感じじゃなかろうかと推測して終わり。これは今でも自分の悪い癖やなぁと思う。まるで成長してない!
Windows NT 3.1の日本語版が1994年、Windows NT 3.5が1994年、Windows NT 3.51が1996年の年始あたりにそれぞれ発売されているようです。一般のユーザーはWindows 95を使用しているころ、OSとアプリケーションの領域を分離して管理するNT系のWindowsは高い安定性をもっている分、当時の書き込みのようにアプリケーションの作り方によっては落ちてしまうことがあるようです。
Microsoft Visual C++ 1.0は1993年に発売のC++開発環境で、とてつもなく箱が大きくて重く、入手するのは良いものの持ち歩くには厳しいものだったそう。印刷されたマニュアルが大量に付属しているのがその理由とあって、その重みにはご利益があったのかも。どんなものか検索してみるとオークションにオブジェにいかがですかと出品されています。



巨大な箱にCDケース、そしてマニュアルがどっさり。この箱のほとんどが紙で埋まっている状態を考えると持ち歩きたくなくなるのもわかります。引用した写真の3枚目は英語版 Visual C++ 1.0のフロッピーディスク。日本語版は、さらにたくさんのフロッピーディスクが供給されていたと思われるので、ディスクを入れ替えて読み込んでインストールとなるとコメントの通り半日仕事になりそうです。
C++の言語自体のユーザーズガイドに加えて、たくさんのWindowsの解説に、MFC (Microsoft Foundation Class Library) が付属しているのもあって、どうしてもマニュアルが多くなってしまうのでしょう。いまとなってはオンラインで検索することで必要とするライブラリや使い方を見付ける事が出来ますが、まだインターネット上のドキュメントも少なく、それぞれのパソコンの資源もまだ少ない状態では、あらゆることが網羅された詳細な紙の資料こそが各プログラマにとって命綱として大切だったのかもしれません。当時は他の開発環境や開発言語においてもたくさんの紙のマニュアルが付属していたようで、Microsoft Visual C++はWindowsに対応する環境であることと、そのライブラリを含むという理由もあって、飛びぬけて付属資料の冊数が多いようです。
こんな大きな箱であれば、パソコンショップの一角を占有していそうです。ハードウェアではなく、ソフトウェアの大きな重い箱をぐっと持ち上げレジに持っていく方々の不思議な光景がひろがっていたのだと思います。
用語
・ポン橋
大阪の日本橋駅周辺に広がる電気街および地域。パソコンショップも多数存在する。大阪においてパソコン関連ハードウェア、ソフトウェアを入手するのに便利。
・猫でもわかるプログラミング
丁寧な解説とサンプルで超初心者を対象とするプログラム教室のwebページ ( http://www.kumei.ne.jp/c_lang/ ) ネコでもわかるようにと記載されている通り丁寧な解説がされている。現在はC/C++/C#と、色々な言語もあつかっており、書籍化もされていてよりプログラム初心者のより身近な存在に。
・統合開発環境
エディタでプログラムを書き、コンパイル、アセンブル、リンク、デバッグなどをシェルやコマンドプロンプトなどの文字の指示で行ったりしていた実行ファイルの作成を、すべてひとまとめにした上でグラフィカルユーザーインターフェイスでわかりやすくし、コーディング・コンパイル・ビルド・デバッグといった作業を効率的におこなえるようにした環境およびソフトウェア。それまではプログラムを編集、実行ファイル作成、デバッグそれぞれに対しての理解が必要で、その習得だけでも時間がかかっていた。現在ではほとんどが統合開発環境としてまとめられており、プログラムに集中し、効率よく開発できるようになっている。
インターネット黎明のころの草の根BBSももりこみつつ、いろんなエピソードをつめこんだ「ちょっと偏ったインターネット老人会へようこそ」を同人誌として頒布予定です。
参加予定イベント
11月6日 おもしろ同人誌バザール@神保町2022秋
11月20日 第七回技術書同人誌博覧会
同人サークル BLACK FTZやってます twitter @black_ftz