[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[b-free: 1087] Re: はじめまして
隆一です。
From: 片桐 明 <killy@rigy.co.jp>
Subject: [b-free: 1085] Re: はじめまして
Date: Wed, 25 Feb 1998 13:17:28 +0900
> 落合さん、こんにちは。リギーコーポレーションの片桐です。
>
... [snip] ...
> Javaはプリミティブではスタックマシンなので、原理的にFORTHは乗せやすい
> ようですし、現にVM上のFORTHが出ているようですが、そのすぐ上のレベルになる
> と関数型言語になってしまうので、実際にスタックマシンとして使えるのは
> とても下の部分だけになります。(たとえば、クラスライブラリなどはこの上に
> 構築されているため、プリミティブレイヤでは使えないようですね)
>
> で、Mindの場合にはこのプリミティブレイヤの単語がとても多いんですね。少し
> 乱暴な話ですが、Javaのプリミティブワードの識別が8bitですんでいるのに比べて
> MindのMコードは16bitであるということからもお分かりいただけるかと思いま
> す。(すみません、あまり詳しくありませんので(^^;、ひょっとすると、Javaで
> 言う「プリミティブ」はさらに2層に別れるのかも知れません)
>
> Java:
> プリミティブ語は最低限にとどめ、あとはそれを呼び出す形で上位ワード
> を定義している(クラスライブラリも)
> FORTH:
> Javaに近い
> Mind:
> 多くのビッグワードをプリミティブとして実装している(たとえば、文字列
> 操作単語など)
>
> これまた乱暴な見解なんですが、Javaが遅いというのは、オブジェクト指向だ
> ったりVMの性能とかいうものではなく、プリミティブワードを押さえた結果なん
> だと思います。これは良い悪いではなくて思想によるものなんでしょう。
あまり、Java の VM には詳しくないのですが(と予防線を張っておきます)。
この場合のプリミティブワードというのは、実際の CPU の機械語で直接実行
される部分だと思います。で、Java の場合はネイティブメソッドという形で、
クラスライブラリの中に機械語を埋め込むことができるようになっているはず
です。もちろん、クラスライブラリのほとんどは仮想機械語で作っていると思
いますが。
多分、配布されている JDK に入っているクラスライブラリの中で、機械依存
/OS 依存 の部分については、ネイティブメソッドで書かれていると思います。
(ま、このネイティブメソッドがあるおかげで、Java のセキュリティに穴を
あけることも簡単にできちゃうわけですが)
Java の VM は、Smalltalk とか Lisp のバイトマシンの流れに従っているよ
うな気がします(この辺憶測です)。つまり、どちらかというとプリミティブな
機能だけを VM で提供するというものです(RISC 的な思想?)。
> 元祖FORTHでは、たとえば配列メンバのアクセスは、配列先頭アドレスとインデッ
> クスをもらったあと、掛け算と足し算することでアクセスするわけですが、この
> 部分の計算はFORTHレベルで記述するのが普通です。Mindではその計算もまたプリミ
> ィティブで(MS-DOSではアセンブラ記述で)おこなっています。
>
> というわけで、VMの・・正確にはプリミティブレイヤの上にMindを乗せること
> は可能ではあるのですが、恐らく現在のようなCでカーネル書いたものに比べて
> だいぶ遅くなるのではないかと思います。でもそれを承知でやるのも面白いよう
> に思います。
クラスライブラリ(の一部)が機械依存になることを承知の上ならば、速度が必
要な一部の機能についてはネイティブメソッドの機構を使って、Mind を載
せることも可能だと思います。
ただ、こうすると、OS / CPU 毎にクラスライブラリを作る必要がありますが。。。
> もう一つのやりかたとしては、Javaの上位の機構・・リストクラス(コレクシ
> ョンって言うんですか?)のデータ構造そのものをスタックとして使い、void *
> みたいな(Javaで何て書くのか知りませんが・・)「何でも有り」のエレメント
> をほうり込むという形でスタックマシンを実現する方法もあるかと思います。こ
> いつはもっと遅くなるとは思いますけど、そのかわりクラスライブラリが使える
> というメリットが有るようです。
>
> では。
p----------------------------------------------------------------------q
| FROM R.Night |
| E-mail: |
| naitoh_r@soft.hitachi.co.jp |
| rnaitoh@st.rim.or.jp |
| Key fingerprint = 89 EB 77 95 40 C0 3C CC 37 A1 A7 FA 1C 66 FF D0 |
b----------------------------------------------------------------------d