ここから本文です

バーチャルマシン(VM)の普遍性について .

hos********さん

2010/2/2118:17:42

バーチャルマシン(VM)の普遍性について
.

一見無関係な話から始まりますが、今日ピアノのコンサートに行ってふと思ったわけです。ピアノという楽器の鍵盤も楽譜の書き方読み方も、数百年単位でほぼ同じ形や機能を維持しているし今後もされていくと思います。

しかし、コンピュータのプログラミングの世界では様々な言語やOS、ハードウェアが交錯していて、ピアノのように一度覚えたらどこへ行っても同じ方法が通用する、という訳にはいかない。言語によって書き方が違うし、同じC言語でもMS-DOSの頃とWindowsでは使うライブラリ等も違うから随分変わってくる。Javaならばバーチャルマシンだから一貫性があると思いきや、一番最初のバージョンのJavaのランタイムはすでに公式には入手できない。

そこで、コンピュータのプログラミングの世界でもピアノや楽譜のように数百年単位で、しかも場所や環境を越えて共通して使えるものはいつか出てくるのか?または自分で作ることが出来るのか?ということをいつも思っているわけです。例えば、狭い範囲で見ればDirectXは頻繁にバージョンアップするため、バージョン間の違いを吸収する独自ライブラリを使っている開発者も多いでしょう。この独自ライブラリには、例えばゲーム開発ならばゲーム開発にとって普遍的に必要な機能や性能を搭載することによって成立するのでしょう。だったら、コンピュータ上でもキーボード等の入力、ディスプレイ等の出力、各種演算や記憶など普遍的な機能さえ確立してしまえば良いはず。

どうしてこんな事を考えるかというと、新しい機能やOSや言語が現れるたびに「また覚えなおすことが増えた、やらされることが増える」という気持ちも持ってしまうからです。(進化のために必要なんでしょうが)コンピュータの世界がこうしたものに惑わされない「普遍」を手に入れる、いわゆる枯れるためには後何年必要なんでしょうか?今、そのシステムを作り始めるのは時期尚早でしょうか??

閲覧数:
320
回答数:
2

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

qui********さん

2010/2/2122:30:19

> 普遍的な機能さえ確立してしまえば良いはず
とは思いますけど、確立しているとはとても言えない状況だと思います。

入力は十年後もキーボード+マウスでしょうか。
ディスプレイは「3D化」されたりしないでしょうか。いまさらベクタスキャンはないでしょうけど...
演算や記憶の能力が例えば10倍になったら、それはI/Oその他に質的な変化を生んだりしないでしょうか。CUIからGUIへの変化のように。

「音楽」は人類の歴史とともにあったと思いますので数千年以上、楽譜が今の形として完成されたのはせいぜいここ2~300年でしょうか。ピアノが最初の鍵盤楽器から今の形として完成するまでにどれだけかかったかは知りませんが、100年以下ということはないでしょう。

対するコンピュータの歴史は? ソロバンとか機械式計算機はともかくとして電気/電子計算機になってからまだ100年はたっていませんよね。ENIACが1946年だそうですから、そこからやっと65年といったところですか。時間だけが尺度ではありませんけれど、まだまだ普遍化できるほど完成された領域にあるとは思えませんし、私が生きているうちにその領域に達するとも思えません。

この質問は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

khu********さん

2010/2/2202:06:30

----------------------------------------
コンピュータを、「2進法を基底として動作する、プログラム蓄積方式のもの」と定義するならば、「普遍」は 1950 年代から、何も変わっていません。
確かに、デバイスは変わり、ビット数は増え、クロック数は増え、台数も飛躍的に増え、使われ方も変わってきましたが、コンピュータの動作原理は、この 60 年間、何も変わってはいません。

質問者様の言われている変化は、私に言わせれば、「使い方の変化」に過ぎません。プログラミングも、コンピュータの使い方の1つに他なりません。
かつては0/1スイッチを1つずつ操作したものが、紙テープ入力になり、アセンブラが開発され、キーボードとパンチカード入力になり、コンパイラが開発され、ディスプレイがプリンタから CRT になり、VM や仮想環境が出てきましたが、これらは全て、CPU をどう使うか、という話です。
CPU そのものは、今も昔も、「普遍」的な原理で動作しています。

私は 30 年来、コンピュータと付き合っていますが、電卓も MS-DOS も Windows も Linux も、全て同じものに見えます。COBOL も PL/I も VB も C も C++ も .NET も Java も JavaScript も PHP も、私が知っているプログラミング言語と環境は、その背後に、いつも機械語の存在が見えます。

ご質問にある、「各種演算や記憶など普遍的な機能」を確立しているのは、まさに機械語であると私は思います。
機械語の知識や、コンピュータの動作原理が分かっていれば、「また覚えなおすことが増えた、やらされることが増える」という気持ちは、あまり大きくありません。「ああ、また似たような事か」とは思いますけれども(苦笑)。

----------------------------------------
ただ、機械語には、CPU 毎の機種依存性があり、これを乗り越える事は容易ではありません。CPU には、どうしても、出来る事と出来ない事があるからです。たとえば、Windows PC が恩恵を受けている仮想記憶は、昔の 4 ビット CPU では実現不可能です。
従って、質問者様の希望に沿う、「究極の標準」を作ろうとすれば、世界最小の機能を持つ CPU(たとえば Intel 4004 など)のエミュレータを作れば良い、という事になるのですが、果たして、そんなものを誰が使うでしょうか。

世間がコンピュータに求める機能は、日々、上がっていきます。それに連れて、CPU の機能も増えていきます。同様に、プログラミング技術も肥大していきます。
もし、こうした要求が無かったとしたら、我々は、今でも 4 ビットや 8 ビットのコンピュータを使い、インターネットやウェブブラウザなど出現すらしていなかったでしょう。

----------------------------------------
とは言え、標準が無い状況、というのは、大変つらいものです。
そのつらさを何とかしようとして、かつて PL/I では中間言語が提起されたわけですし、やがては JavaVM が提起されました。近年では Microsoft による .NET が、それらの努力の延長線上にあります。
また、失敗例ではありますが、我が国ではシグマ・プロジェクトという、コンピュータの標準化計画もありました。

しかし、前述の通り、コンピュータの進歩は止みません。
標準化は、どうしても、その時に実現可能な事しか対象になりません。そして、「その時」とは、常に過去です。
従って、究極の標準――未来永劫にわたって変わらない――、とは、最も過去のものを対象にする、という事になってしまいます。
そして、それは非実用的なものでしかありません。

標準は、その時の過去を包含する、とも言えます。だから、「新しく提起される標準」は、常に肥大しますし、提起サイクルは長くなっていきます。
その長さが、どれだけ長くなれば「枯れた」と言えるのか、「今」が時期尚早かどうかは、誰にも分からないでしょう。

----------------------------------------
付記:
話の枕に水を差すようで済みませんが、ピアノは、この数百年の間で、大きく変化してきた楽器です。鍵盤配置、フットペダルの配置と意味、そして楽譜でさえも、大きく変わってきました。現代のピアノ奏者は、一流であればあるほど、そうした歴史的な経緯や、作曲家が当時いた環境や、作曲当時の楽譜の事を考えて演奏しています。
決して、「今あるピアノ」だけが、ピアノなのではありませんし、ピアノは「枯れた楽器」でもありません。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる