2 part forth (907レス)
2 part forth http://mevius.5ch.net/test/read.cgi/tech/1073673931/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
531: デフォルトの名無しさん [sage] 2008/10/12(日) 15:50:56 >>529 んー、やっぱり、思い込みでForthを理解したつもりになるんじゃなくて、 本格的に触ってみたほうが良いと思うんだけどな。 >実行中のWORDの次のWORDを辞書の中から探せるようにする仕組みが必要 通常、Forthは実行時には、スレデッドコードにコンパイルされた命令列を、 上にも出ているnextルーチンで辿るだけなので、仕組みというほどの仕組みはないよ。 >実行中のWORDの中身を変更するのが大変(VMのスタックに積んでいるWORD含む) 間接スレッディングのForthだと定義済みのワードの変更は、一カ所ポインタを書き換える だけで済むはず。 >番兵などの終了処理が必須 番兵というかワードの最後にnextルーチンへのジャンプかnextルーチン自身を書き込むだけ。 >VM側に「WORDを実行する」という手順が必要になる スレデッドコードのForthの命令列は、ワードへのポインタが並んでいるだけで、 「WORDを実行する」という意味のインストラクションは必要ないよ。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/531
532: 464 [sage] 2008/10/12(日) 23:25:00 本格的に触るのは……あの構文は色々と嫌だ。 [条件] IF [肯定時] ELSE [否定時] THEN とか。 せめて条件算子的だったらなぁ。[条件] ? [肯定時] : [否定時] ; >531 細かいことを言うと、nextルーチンが辞書内のスレッデッドコード構造の詳細を知らなきゃ ならないので、VMと辞書の関連が密になりそうな気がします。スレッデッドコードをスタックに pushしてVM内に取り込んじゃえば辞書内の構造を気にする必要無いし。 まあ、最適化のために作り込んでも良い気がするけどね。そこは将来の課題ということで。 >一カ所ポインタを書き換えるだけで済むはず。 WORD自体を置換する場合はそうですね。WORDの挿入や削除はたぶん難しいかと。 そんな特殊なことは禁止にして、新規にWORD定義させた方が良いかも知れないけど。 あるいは無名WORDとかスキップWORDを用意するとか。 >「WORDを実行する」という意味のインストラクションは必要ないよ。 あれ?VMに保存されている「現在実行中のWORD」って、間接ポインタじゃないの? (nextの動作を考えると、間接ポインタじゃないと色々と面倒臭そうな) 実行前に間接参照からWORDを探す操作が一段余計に必要になるかと思ってた。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/532
533: デフォルトの名無しさん [sage] 2008/10/12(日) 23:34:45 >VMと辞書の関連が密 というか、それがFORTHの肝のような気がする。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/533
534: デフォルトの名無しさん [sage] 2008/10/13(月) 00:16:22 スレデッドコード自体、ワードへのポインタを並べたものでしかないから、 ジャンプとかコールとかそういう類のインストラクションをデコードする必要がない、 という意味ね。 あとForthの実装にはダイレクトスレデッドなものもあるよ。 nextルーチンからみると命令列を順に辿ってるだけであって、 「辞書からワードを毎回探している」ってわけじゃないしね。 それより、スタックに命令列を毎回pushするオーバーヘッドのほうがよほど大きいと思うし、 nextルーチンに比べてシンプルとも思えないんだな。 ま、いろいろ悩んで勉強して、これだ!と思える言語デザインに邁進してください、と。 このスレが本当に久しぶりに活性化したのは間違いないしね。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/534
535: デフォルトの名無しさん [sage] 2008/10/13(月) 00:21:58 >>533 間接スレデッドの場合、Forthコンソールの側から見ると、 逆コンパイルしやすかったり、便利な面はたしかにあるけれど、 VMつうかnextルーチンから見ると、単にポインタを辿っているだけなので、 構造として、VM実装と辞書構造が密、というわけでもないと思う。 実際VM実装テクニックとしてのスレデッドコードは、今や、Forth以外でも 当たり前の技術になってるし。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/535
536: デフォルトの名無しさん [sage] 2008/10/27(月) 00:52:54 jonesforth読んだ。 ソース付きなので理解しやすい。 OS Xで動かそうとしたが挫折した。 OSXのGASではマクロが対応してないみたいだ。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/536
537: デフォルトの名無しさん [sage] 2008/11/23(日) 01:13:24 急にスレが進んだと思ったら、止まるのも急だよなこのスレ やっぱ誰も使ってないってこったな http://mevius.5ch.net/test/read.cgi/tech/1073673931/537
538: デフォルトの名無しさん [sage] 2008/11/26(水) 17:30:54 ttp://www.intellasys.net/index.php?option=com_frontpage&Itemid=64 なんか並列forthマシンっぽいw http://mevius.5ch.net/test/read.cgi/tech/1073673931/538
539: デフォルトの名無しさん [sage] 2008/12/27(土) 14:00:32 factor使ってる奴いる? http://mevius.5ch.net/test/read.cgi/tech/1073673931/539
540: デフォルトの名無しさん [sage] 2008/12/27(土) 21:13:14 とりあえず入れてみたけど特に使ってないなw http://mevius.5ch.net/test/read.cgi/tech/1073673931/540
541: 539 [sage] 2008/12/28(日) 01:26:48 factorおもしろいぜ。デプロイするとスタンドアロンで動く物もできるし。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/541
542: デフォルトの名無しさん [sage] 2008/12/29(月) 13:31:00 やっぱだめだこの言語。 人間工学から著しく反してる。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/542
543: デフォルトの名無しさん [sage] 2008/12/29(月) 19:52:22 サルが人間工学語ってやがる。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/543
544: デフォルトの名無しさん [sage] 2008/12/29(月) 21:45:56 自分の思考をスタック処理に最適化させればいいんだよw http://mevius.5ch.net/test/read.cgi/tech/1073673931/544
545: デフォルトの名無しさん [sage] 2008/12/29(月) 22:06:52 forthに慣れるのはそんなに大変なことじゃないと思うけどなあ。 まあ、問題をごく単純な部分に細分して考えることができないと、 スタック処理が爆発しがちになるとはいえますね。 でも、問題の細分ができない人は、どの言語でプログラミングしても たかが知れてる。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/545
546: デフォルトの名無しさん [sage] 2009/01/01(木) 11:45:56 Lispのマクロ的なことができるってほんと? http://mevius.5ch.net/test/read.cgi/tech/1073673931/546
547: デフォルトの名無しさん [sage] 2009/01/01(木) 11:56:23 イミディエイトなワードのことかな。 結果としては似たようなことができると言えなくもないけど、 Lispのマクロみたいな2度evalするみたいな高水準のものじゃありません。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/547
548: デフォルトの名無しさん [sage] 2009/01/07(水) 22:44:24 つまり・・・どういうことだってばよ? http://mevius.5ch.net/test/read.cgi/tech/1073673931/548
549: デフォルトの名無しさん [sage] 2009/01/07(水) 23:39:44 factorならlispのマクロと同じようなことができるよ http://mevius.5ch.net/test/read.cgi/tech/1073673931/549
550: デフォルトの名無しさん [sage] 2009/01/08(木) 00:11:19 同じ機能を達成できるとしても言語が違えばそこに至るロジックは異なる。 具体的に何がしたいのか特定しないと。 factorはおもしろい言語だが、関数型言語のフリし過ぎなのがイヤラシくもある。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/550
551: デフォルトの名無しさん [sage] 2009/01/09(金) 12:30:14 何かサンプルが欲しいな。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/551
552: デフォルトの名無しさん [sage] 2009/01/09(金) 22:47:55 http://ancient.s6.xrea.com/factor/cookbook.html http://mevius.5ch.net/test/read.cgi/tech/1073673931/552
553: デフォルトの名無しさん [] 2009/02/26(木) 00:17:58 組み込み用FORTH検討中・・・ http://mevius.5ch.net/test/read.cgi/tech/1073673931/553
554: デフォルトの名無しさん [sage] 2009/03/07(土) 05:11:31 part 1 の URL ってないの? http://mevius.5ch.net/test/read.cgi/tech/1073673931/554
555: デフォルトの名無しさん [sage] 2009/03/07(土) 10:00:54 http://piza.2ch.net/tech/kako/987/987562311.html http://mevius.5ch.net/test/read.cgi/tech/1073673931/555
556: デフォルトの名無しさん [sage] 2009/03/07(土) 10:13:20 : Mops ( オブジェクト指向FORTH -- ) ; http://pc.2ch.net/tech/kako/1000/10001/1000118518.html http://mevius.5ch.net/test/read.cgi/tech/1073673931/556
557: デフォルトの名無しさん [sage] 2009/03/07(土) 13:25:33 thanks http://mevius.5ch.net/test/read.cgi/tech/1073673931/557
558: デフォルトの名無しさん [sage] 2009/03/07(土) 18:54:17 このスレも長いね http://mevius.5ch.net/test/read.cgi/tech/1073673931/558
559: デフォルトの名無しさん [sage] 2009/03/07(土) 21:43:31 factorとかJoyとか触ってる奴いないのかよ http://mevius.5ch.net/test/read.cgi/tech/1073673931/559
560: デフォルトの名無しさん [sage] 2009/03/07(土) 23:32:50 普通の関数型言語に比べてどういうメリットがあるのか分からない。 http://mevius.5ch.net/test/read.cgi/tech/1073673931/560
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 347 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.010s