2 part forth (907レス)
1-

531
(1): 2008/10/12(日)15:50 AAS
>>529
んー、やっぱり、思い込みでForthを理解したつもりになるんじゃなくて、
本格的に触ってみたほうが良いと思うんだけどな。

>実行中のWORDの次のWORDを辞書の中から探せるようにする仕組みが必要
通常、Forthは実行時には、スレデッドコードにコンパイルされた命令列を、
上にも出ているnextルーチンで辿るだけなので、仕組みというほどの仕組みはないよ。

>実行中のWORDの中身を変更するのが大変(VMのスタックに積んでいるWORD含む)
間接スレッディングのForthだと定義済みのワードの変更は、一カ所ポインタを書き換える
だけで済むはず。

>番兵などの終了処理が必須
番兵というかワードの最後にnextルーチンへのジャンプかnextルーチン自身を書き込むだけ。

>VM側に「WORDを実行する」という手順が必要になる
スレデッドコードのForthの命令列は、ワードへのポインタが並んでいるだけで、
「WORDを実行する」という意味のインストラクションは必要ないよ。
532: 464 2008/10/12(日)23:25 AAS
本格的に触るのは……あの構文は色々と嫌だ。
[条件] IF [肯定時] ELSE [否定時] THEN とか。
せめて条件算子的だったらなぁ。[条件] ? [肯定時] : [否定時] ;

>531
細かいことを言うと、nextルーチンが辞書内のスレッデッドコード構造の詳細を知らなきゃ
ならないので、VMと辞書の関連が密になりそうな気がします。スレッデッドコードをスタックに
pushしてVM内に取り込んじゃえば辞書内の構造を気にする必要無いし。
まあ、最適化のために作り込んでも良い気がするけどね。そこは将来の課題ということで。

>一カ所ポインタを書き換えるだけで済むはず。
WORD自体を置換する場合はそうですね。WORDの挿入や削除はたぶん難しいかと。
そんな特殊なことは禁止にして、新規にWORD定義させた方が良いかも知れないけど。
あるいは無名WORDとかスキップWORDを用意するとか。

>「WORDを実行する」という意味のインストラクションは必要ないよ。
あれ?VMに保存されている「現在実行中のWORD」って、間接ポインタじゃないの?
(nextの動作を考えると、間接ポインタじゃないと色々と面倒臭そうな)
実行前に間接参照からWORDを探す操作が一段余計に必要になるかと思ってた。
533
(1): 2008/10/12(日)23:34 AAS
>VMと辞書の関連が密

というか、それがFORTHの肝のような気がする。
534: 2008/10/13(月)00:16 AAS
スレデッドコード自体、ワードへのポインタを並べたものでしかないから、
ジャンプとかコールとかそういう類のインストラクションをデコードする必要がない、
という意味ね。
あとForthの実装にはダイレクトスレデッドなものもあるよ。
nextルーチンからみると命令列を順に辿ってるだけであって、
「辞書からワードを毎回探している」ってわけじゃないしね。

それより、スタックに命令列を毎回pushするオーバーヘッドのほうがよほど大きいと思うし、
nextルーチンに比べてシンプルとも思えないんだな。

ま、いろいろ悩んで勉強して、これだ!と思える言語デザインに邁進してください、と。
このスレが本当に久しぶりに活性化したのは間違いないしね。
535: 2008/10/13(月)00:21 AAS
>>533
間接スレデッドの場合、Forthコンソールの側から見ると、
逆コンパイルしやすかったり、便利な面はたしかにあるけれど、
VMつうかnextルーチンから見ると、単にポインタを辿っているだけなので、
構造として、VM実装と辞書構造が密、というわけでもないと思う。
実際VM実装テクニックとしてのスレデッドコードは、今や、Forth以外でも
当たり前の技術になってるし。
536: 2008/10/27(月)00:52 AAS
jonesforth読んだ。
ソース付きなので理解しやすい。

OS Xで動かそうとしたが挫折した。
OSXのGASではマクロが対応してないみたいだ。
537: 2008/11/23(日)01:13 AAS
急にスレが進んだと思ったら、止まるのも急だよなこのスレ
やっぱ誰も使ってないってこったな
538: 2008/11/26(水)17:30 AAS
外部リンク[php]:www.intellasys.net

なんか並列forthマシンっぽいw
539
(1): 2008/12/27(土)14:00 AAS
factor使ってる奴いる?
540: 2008/12/27(土)21:13 AAS
とりあえず入れてみたけど特に使ってないなw
541: 539 2008/12/28(日)01:26 AAS
factorおもしろいぜ。デプロイするとスタンドアロンで動く物もできるし。
542: 2008/12/29(月)13:31 AAS
やっぱだめだこの言語。
人間工学から著しく反してる。
543: 2008/12/29(月)19:52 AAS
サルが人間工学語ってやがる。
544: 2008/12/29(月)21:45 AAS
自分の思考をスタック処理に最適化させればいいんだよw
545: 2008/12/29(月)22:06 AAS
forthに慣れるのはそんなに大変なことじゃないと思うけどなあ。

まあ、問題をごく単純な部分に細分して考えることができないと、
スタック処理が爆発しがちになるとはいえますね。
でも、問題の細分ができない人は、どの言語でプログラミングしても
たかが知れてる。
546: 2009/01/01(木)11:45 AAS
Lispのマクロ的なことができるってほんと?
547: 2009/01/01(木)11:56 AAS
イミディエイトなワードのことかな。
結果としては似たようなことができると言えなくもないけど、
Lispのマクロみたいな2度evalするみたいな高水準のものじゃありません。
548: 2009/01/07(水)22:44 AAS
つまり・・・どういうことだってばよ?
549: 2009/01/07(水)23:39 AAS
factorならlispのマクロと同じようなことができるよ
550: 2009/01/08(木)00:11 AAS
同じ機能を達成できるとしても言語が違えばそこに至るロジックは異なる。
具体的に何がしたいのか特定しないと。
factorはおもしろい言語だが、関数型言語のフリし過ぎなのがイヤラシくもある。
551: 2009/01/09(金)12:30 AAS
何かサンプルが欲しいな。
552: 2009/01/09(金)22:47 AAS
外部リンク[html]:ancient.s6.xrea.com
553: 2009/02/26(木)00:17 AAS
組み込み用FORTH検討中・・・
554: 2009/03/07(土)05:11 AAS
part 1 の URL ってないの?
555: 2009/03/07(土)10:00 AAS
2chスレ:tech
556: 2009/03/07(土)10:13 AAS
: Mops ( オブジェクト指向FORTH -- ) ;
2chスレ:tech
557: 2009/03/07(土)13:25 AAS
thanks
558: 2009/03/07(土)18:54 AAS
このスレも長いね
559: 2009/03/07(土)21:43 AAS
factorとかJoyとか触ってる奴いないのかよ
560
(1): 2009/03/07(土)23:32 AAS
普通の関数型言語に比べてどういうメリットがあるのか分からない。
1-
あと 347 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.016s