SAK 図書館
パソコンの歴史
まずは、息抜きにパソコンについて、ちょっと勉強。(^^) (けっこう、いいかげんなので、読み流す程度に。) (笑い) ■コンピュータの生い立ち 現在のコンピュ−タは、フォン・ノイマン(だったと思う) の一命令を順に実 行していくアーキテクチャを継承しています。 ただ、この様なアーキテクチャは人口知能などのプロセッサには不向きで、新 しいアーキテクチャによるプロセッサもあります。 しかし、こう言う特殊分野を除けば、すべてのコンピュータはノイマン型とな っています。 ■電卓とコンピュータを別けるもの 単純に言って、プログラミングが可能かどうかと言うこと。 そのプログラミングに『条件判定』命令があると言うことだと思います。 いつかは人間のパートナになれるほどのお利口な AI が出来るといいですね。 まだまだ計算機の延長を超えることができません。 それに比べ、人間って、なんて賢いんでしょう。 ■パーソナルコンピュータの歴史 現在のパソコンプロセッサの元祖は 4004 と言う CPU になると思います。 一般にパソコンのプロセッサが登場したのは、8080 あたりからです。 この改良版みたいな Z80 が世界を制覇しました。 4004 4bits 知らない 8080 8bits インテル Z80 8bits 5MHz ザイグロ NEC PC-8001、SHARP MZ 6502 8bits モステクノロジー APPLE 8086-8087 16bits 5MHz 〜 8MHz インテル NEC PC-9801 V30 16bits 10MHz 日本電気 NEC PC-98 シリーズ 68000 16bits モトローラ APPLE MAC Z8000 16bits ザイグロ (日の目は見なかった) 80186-80187 16bits インテル 80286-80287 32bits 12MHz インテル EPSON ノートシリーズ 80386-80387 32bits 16MHz 〜 33MHz インテル NEC PC-9801DA 68040 32bits モトローラ 80486 32bits 25MHz 〜 100MHz インテル IBM PS/V Pentium 32bits 60MHz 〜 233MHz インテル IBM PC750 PentiumII 32bits 233MHz 〜 450MHz インテル PentiumIII 32bits 450MHz 〜 866MHz インテル インテルでは、486 以降は数値演算コプロセッサ(末尾 7) が CPU とワンパッ ケージになりました。(コプロセッサ: 浮動小数点や三角関数など数値演算を 高速に行う専用プロセッサ。CPU で計算するより思いっ切り速い。) 一方、OS は、BASIC そのものが OS の役目を果たしていた時代から、DOS が 主流になり、Windows 3.0 から一気に Windows シフトが加速しました。 Z80 N-BASIC 8086 N-BASIC86、CPM/86、DOS 1.0、Windows 1.0 80386 DOS 5.0、Windows 2.11/386、Windows 3.0 Pentium Windows 3.1、Windows 95 PentiumII Windows 98、Windows 2000 ■ソフトウェアの歴史 一般の人がパソコンを使い始めるためには、どうしても普及ソフトと言うもの が必要でした。その意味で一太郎とロータス123 は記憶に残るでしょう。 123 は非常に優れたソフトでしたが、OS に Windows を使用する Excel とは 比較にならず、また、Windows 版 123 の出来が悪かったこともあって、ロー タスはシェアを失ったと思います。 一太郎は、これはもうなんと言っていいのか、私の感性とは合わないです。 センタリング一つするのにメニューを操作しまくらなければならず、しかも空 白調整のセンタリングとなっては限界。しかし、逆に初心者には使い方がわか りやすく日本を制覇したのかもしれません。 Excel の出来に比べると開発チームの違いか Word の初期版はカスのようなも のでした。日本の罫線文化に弱く、普通の文章以外使いたくないタイプ。 Excel で作ったものを貼り付ける機能がなかったら消えていったと思います。 そんなこともあってか、Windows 版をかなり後になってから出した一太郎では ありましたが、なんとかまだシェアを維持しているのではないでしょうか。 ただ、世界シェアのない一太郎はインタネが普及する中、つらい戦いとなるで しょう。DOS の世界でデータベースと言えばハピネスインタフェースで有名な 桐も Windows 版を出さず、消えていってしまいました。 一時、Windows 版のソフトがいろいろ出ましたが、自然淘汰の力は強く、マイ クロソフトの天下となってしまいました。これは、おもしろくないですね〜。 Z80 N-BASIC、Assembler 8086 N-BASIC86、Assembler、C 80386 MS-BASIC、MASM、C、Pascal、一太郎、123、Word、Excel Pentium VB、C、Delphi、Word、Excel、Access 開発言語系は、DOS の時代、C や Assembler が主流でしたが、Windows にな って、もはや Assember で書ける時代ではなくなりました。 ほとんど C で Windows プログラムは書かれています。 もっとも、これは OS や市販ソフトレベルの話で、ソフトウェアベンダなど OA では、VB が主流です。 Delphi は、Pascal の VB 版みたいなものですが、性能的には C に近く市販 ソフトも作れるベースです。 ただ、そこまでするなら C の方がもっと良いし、OA に Pascal を使うまでも ないと言う難しい位置づけ言語です。 アメリカでは教育言語として Pascal が広く普及しているので、あちらでのシ ェアは凄いものがあるかもしれません。 日本はどちらかと言うと、Basic が教育に使われることが多いので、Delphi が生き残れるかは難しいところ。 ■開発言語の特徴 だいたいメジャーな言語は限られている。マイクロソフトとボーランドがシェ アを分け合っているが、最近、今一つボーランドは元気がない。 Assemble: MASM C : MS-C、Borland C Pascal : Delphi Basic : VB MASM: マクロアセンブラは、直接 CPU のマシン語命令と対になったニーモニック でコーディングするので、すべての資源をプログラミングできる。 ただ、ハードにどうしても依存してしまうので、移植性なんてものはない。 もっとも、Windows マシンのハード構成はどれも似たようなものではある。 CSEG SEGMENT ASSUME CS:CSEG ORG 0000H START: PUSH DS PUSH DX MOV DX ,OFFSET MSG PUSH CS POP DS MOV AH ,09H INT 21H POP DX POP DS MOV AX ,4C01H INT 21H MSG DB 'Copyright (C) 1992-1996 Y.SAK ',0DH,0AH,'$' CSEG ENDS END START アセンブラでは、特定の IC を直接モードセットしたり、プリンタインタフ ェースの 8255A を制御して、プリンタのドットひとつひとつを制御したり などできる。 当然ではあるが、こんな言語で Windows プログラムミングはしたくない。 C: アセンブラベースに近いところから、OA まで広い範囲で使用できる。 移植性が良く、コンパイラのオブティマイズ機能が高度なことは有名である。 個人的には、ここ 8 年ほど C の世界に住んでいる。 フリーソフトウェアやシェアウェアなど、凝ったもの向きと思う。 コンパクトで高速な独立型オブジェクトを生成する。 int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInst, LPSTR CmdLine, int CmdShow) { MSG msg; #ifdef SET_ACCS HWND hWnd; HANDLE hAccs; #endif // ウィンドウ準備 #ifdef SET_ACCS if ((hWnd = WinInit(hInstance, hPrevInst, CmdLine, CmdShow, &hAccs)) == NULL) return(ERR_RET); #else if (WinInit(hInstance, hPrevInst, CmdLine, CmdShow) == NULL) return(ERR_RET); #endif // メッセージループ #ifdef SET_ACCS while (GetMessage(&msg, NULL, NULL, NULL)) { if (TranslateAccelerator(hWnd, hAccs, &msg) == NULL) { TranslateMessage(&msg); DispatchMessage(&msg); } } #else while (GetMessage(&msg, NULL, NULL, NULL)) { TranslateMessage(&msg); DispatchMessage(&msg); } #endif return(msg.wParam); } C を崇拝する人も多いが、OA 程度に C を使用するのは無用の長物と思う。 その性能の 10% も使いこなせないだろう。 また、C++ になると、ガクっとスピードが落ちてしまう。 C++ で、定義済み Windows スタイルを使用するなら、VB と変わらない。 Delphi: ほぼ、C と同じであるが、制御構造は C に劣ると思う。 しかしながら、C のライブラリより、Pascal のユニットの考えたかの方が、 より優れている。コンパイル速度も速く、そこそこのオプティマイズ機能も 持っている。但し、昔の Pascal はコプロセッサが使えなかった。 Delphi は使えるようになってるかも。 {メツセージループ} {$IFNDEF SET_ACCS} while GetMessage(message, NULL, 0, 0) do begin TranslateMessage(message); DispatchMessage(message); end; {$ELSE} while GetMessage(message, NULL, 0, 0) do begin if TranslateAccelerator(hwindow, haccs, message) = NULL then begin TranslateMessage(message); DispatchMessage(message); end; end; {$ENDIF} halt(message.wparam); Windows 流儀でプログラミングするだけなら、C との差はほとんどない。 ただ、C 同様に OA に使う必要があるかというと疑問である。 VB: 素人プログラマでも容易に Windows プログラミングを可能とした功績は高 い。VB で作ったようなものがシェアウェアで登録される時代である。 他の言語と違い、どうしても実行にランタイムと言う物が必要となる。 可搬性に欠けるので、プライベートではメインで使うことはない。 また、処理性能も最低のランクに入る。Windows へのフック関数やコールバ ック関数作成など、出来ないことも多い。 しかしながら、わずかのコードで処理を実現でき、インタプリタ環境で簡単 に作成、デバックできると言う他の言語の追随を許さない魅力もある。 特に OA で使用する機能には必要十分で、VB でさえそのほとんどの機能を 使用することはないたろう。 ファイル入出力が大半を占める OA プログラミングでは、速度差も吸収され、 もっとも適した言語となる。 その昔の Basic では、文字変数領域の整理(ガーベージコレクション) が 実にうっとしかった。最近の VB では CPU パワーのせいかガーベージコレ クションをやってるのに気がついたことがない。 ■ウェブ系開発言語の特徴 JAVA(クライアントサイド): C やってた人間は、ほんど違和感なく使えると思います。 更に C が苦手としていた文字列の扱いが実に簡単。 ただ、ポインタが使えないのは、とってもかなしいかも。 JAVA もアプリケーション、アプレット、コンソールなどいろいろ種類があ りますが、私としては、クライアントサイドスクリプトなら、JAVA 優勢と 言うところでしょうか。 一時、なんでも JAVA と言う声を聞いたのですが、そこまで行くには、まだ、 時間がかかるように思います。 特に言語構造が C に近いので、「できる」と「なんでもできる」の差は凄 く大きいと考えます。私は「できる」程度ですね。(^◇^;) ASP-VB Script(サーバサイド): サーバサイドの JAVA-Script では、データベースのアクセスがかなり面倒 に感じました。VB 経験者なら、VB Script が一番開発効率がいいでしょう。 ただ、動作速度が遅いのと、自作関数の DLL を用意しないと、あまり、使 い心地が良くありません。 私の場合、VB Script にない機能は、VB6 で DLL として作成しました。 CGI-Perl(サーバサイド): C に近いとは思うんですが、かなり違いますよね? ASP が動けば、これに頼ることはないのですが、一般のブロバイダサーバだ と Perl のみが多いです。 私も少し覚えておこうと思います。