- 1 名前:デフォルトの名無しさん [04/01/10 03:45]
- 第四世代
- 357 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 15:03:59 ]
- HPの電卓?
- 358 名前:356 mailto:sage [2008/01/27(日) 17:17:11 ]
- >>357
そうです。RPNの間違いでした。
- 359 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 18:59:27 ]
- HP41CV,HP28,HP48SX,HP32S,と使ってきましたよ。
ちなみに今使っているHP35は問題大あり!
- 360 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 10:12:19 ]
- Adobe高速JavaScript実装、バイトコードにForthを採用
journal.mycom.co.jp/news/2008/02/07/011/index.html
- 361 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 15:34:36 ]
- LLVM涙目
- 362 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 21:52:21 ]
- 単なるスタックベースのVMなだけじゃないの?
JavaVMとか既存のVMと一緒でしょ
- 363 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 22:40:23 ]
- 急に某ゲーム機上で動くforthが作りたくなって>>339が挙げてるやつ読んでるんだが(まあこれはi386用だけど)、わかりやすいなこれ
実を言うと今までforthはあまり理解してなかったけど、モヤモヤしてたことがすっきりしてきた しかしforthってシンプルで美しいなぁ Lispやsmalltalkに負けないと思うのに、このマイナーさ…
- 364 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 00:09:41 ]
- concatenative languageあたりをキーワードにWebをさまよってみると良いよ。
joy factorあたりが面白いかね。おいらも俺言語作成中。
- 365 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 00:24:42 ]
- factor は良いねぇ。秘かに期待している。
- 366 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 11:50:59 ]
-
基本的に 1.stackの一番上と二番目の値に対して演算 2.stackの一番上だけ取り除く 3.stackのn番目と一番目を交換 の機能だけがあると思ってていい?
- 367 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 07:10:53 ]
- concatenativeに?
それならスタックに対する関数適用だけかな
- 368 名前:デフォルトの名無しさん [2008/03/20(木) 14:28:46 ]
- forthのコメントってもしやforthで書かれてる?
( コメント ) ←これ
- 369 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 15:22:35 ]
- >>368
実装にもよるけど、 ワード ( を読むと、フラグが立って、ワード ) まで無視する。 Forth で書いてある、ってこういう意味ってことでいいのかな?
- 370 名前:デフォルトの名無しさん [2008/03/20(木) 15:50:12 ]
- >>369
いやなんかマクロみたいな機能を使って書かれているのかなーと forth知らないので全然分かんないんですけど 要するに↓みたいにforth言語で書かれているのか?ってことです : ( hoge hoge ... ;
- 371 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 20:15:20 ]
- 『標準FORTH』だと pp.166 にある。
: ( 29 WORD DROP ; IMMEDIATE 29 は ')' のコード WORD はスタックトップと同じキャラが出てくるまで入力を読んで、 その先頭のアドレスをスタックトップに置くワード。DROP は説明の 必要ないな。IMMEDIATE は直前に定義されたワードを、 イミディエイトワードにするワード。 C マガジンのきだあきらさんの連載『千言万語』の Forth の時に 紹介してたネタだったような気もする。
- 372 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 20:16:04 ]
- 千言万語単行本にならねーかな
- 373 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 21:37:32 ]
- 追加。
イミディエイトワード、というのが、プログラムの実行時ではなく 読み込み時に意味を持つワードなので、マクロのような機能と 言えるかもしれません。
- 374 名前:デフォルトの名無しさん [2008/03/21(金) 07:42:46 ]
- >>371-373
サンクス www.geocities.jp/naosacra/mops/particle2/immediate.html これ見てるけどimmediateの意味がいまいちわからん… 何のためのものなんだ? : ( 29 WORD DROP ; IMMEDIATE 例えば↑にimmediateがついてなかったらどういう動作になるんだろう
- 375 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 08:55:03 ]
- 仮に ( がイミディエイトワードで無かったとすると、
: hoge ほげほげ ( ほげほげ ) ; とか書いた場合に、hoge の定義の一部として、実行される部分になって しまいます。定義中でも直ちに実行されるワードがイミディエイトワードです。
- 376 名前:デフォルトの名無しさん [2008/03/22(土) 10:18:31 ]
- >>375
なるほど 理解した。サンクス
- 377 名前:デフォルトの名無しさん [2008/03/27(木) 22:38:05 ]
- 最近、Concatenativeな言語というもの目にしたんでage
- 378 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 00:23:41 ]
- なんか酷いのみつけてきたwwwww
ちょっと草植えときますね型言語 Grass www.blue.sky.or.jp/grass/doc_ja.html スタックマシン使ってるってだけみたいだが(俺には良く分からん)
- 379 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 10:36:35 ]
- forth厨はなんでもかんでもスタックマシンにするな
- 380 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 02:09:52 ]
- factorでHelloWorldのCGIやってみた
httpdからのfactor起動はバッチファイルで USING: io ; "Content-type: text/html; charset=Shift_JIS\n\n" print "<HTML><head><title></title></head>\n<body>" print "はろ〜factor表\示可能\" print "<br>\n</body></HTML>" print なんか楽しいw
- 381 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 03:00:58 ]
- あれ?factorの新しいの入れたら日本語出なくなった
エンコード関係?
- 382 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 14:10:30 ]
- factorソースから入れるのめんどくさいな・・・
gitなんて初めて知ったよ
- 383 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 17:56:33 ]
- 何か面白い話無い?
- 384 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 11:05:57 ]
- スタック1本で動作する処理系作れ
- 385 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 16:18:58 ]
- バロースのメインフレームはシングルスタックなんだぜ?
- 386 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 18:37:49 ]
- wikipediaより
> スタックを1つしか持たないスタックマシンは、 > 計算モデルとしては非常に弱い。例えば、1-スタックマシンでは、 > 0n1n(0の並びの後に同じ個数の1が並ぶ言語)のような単純な言語も認識できない。 > 1-スタックマシンの計算能力は、有限オートマトンよりも高いが、 > 決定性プッシュダウン・オートマトンよりも低い。 > 一方、複数のスタックを持つスタックマシンはチューリング機械と等価である。 > 例えば、2-スタックマシンでは、チューリング機械をエミュレートできる > (チューリング機械のヘッド位置から左側のテープをひとつのスタックが代替し、 > 右側のテープをもうひとつのスタックが代替する)。 へぇ〜
- 387 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 00:50:58 ]
- factorのドキュメント消えてら
- 388 名前:デフォルトの名無しさん [2008/08/01(金) 21:55:57 ]
- V
en.wikipedia.org/wiki/V_(programming_language) Onyx www.canonware.com/onyx/ Forthもこれらも俺には使いこなせないんだけどね orz
- 389 名前:388 mailto:sage [2008/08/01(金) 21:57:15 ]
- Vはこっちのページも
code.google.com/p/v-language/
- 390 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 03:04:06 ]
- Forthの実装中sage
実装法のドキュメント付きで晒すかも
- 391 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 04:01:08 ]
- forthって、引数の数ミスるだけで崩壊するよな
>>390 どんな俺フォースを見せてくれるんだい? 誰もいないしここ、日記帳のつもりで使ってくれよ。
- 392 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 06:07:26 ]
- 久々にレスキタワァ*・゜゚・*:.。..。.:*・゜(n‘∀‘)η゚・*:.。. .。.:*・゜゚・* !!!!!
- 393 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 08:44:15 ]
- >>390
www.google.co.jp/search?hl=ja&q=codepad&btnG=%E6%A4%9C%E7%B4%A2&lr= どんな言語使って作るかしらん こんなの補助として使ってみるのも便利かもしらん
- 394 名前:390 mailto:sage [2008/08/02(土) 14:40:33 ]
- 過疎っぷりに見てる人もいないと思ったら、意外といたのね。
>>391 Forthの実装は初めてなので、古典的で教科書通りのIndirect Threaded Code、 Cで書いた仮想マシンの上で動かすってかんじで。 今はMac OS XとLinux(x86)とLinux Zaurus(arm)の上でぽちぽち書いてる。 ポータビリティーは良いのでメモリがあって速度も気にしなければ 簡単にマイコンにも移植可能だと思う。H8なら余裕かな。 今月のトラ技の78K0基板持ってるんだけど、こっちはきついかも。 >>392 あばばばばばば >>393 おお、こんな面白いのがあったのね。 とりあえずアカウント取ってみた。 このスレに落書きしつつ、blogにまとめてけばいいかな。 ANS-ForthのCORE準拠を目指して www.taygeta.com/forth/dpans.html 読んでるんだけど、けっこうめんどいなあ。 ある程度実装の目処がたったらコード晒してくつもり。 少々お待ちを。
- 395 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 22:59:11 ]
- Forth は実装が簡単だって聞いてたんで、
自分も作ってみようとちょっと調べたんだけど、 仕組みがよく分からなかったし(ワードの定義とか)、 規格に沿った物にしようとすると意外に仕様が大きくて、 挫折しますた><
- 396 名前:390 mailto:sage [2008/08/05(火) 23:09:27 ]
- >>395
辞書まわりは次の10個のワードがあればOK(たぶんね) CREATE COMMA(,) [ ] IMMEDIATE TICK(') COLON(:) SEMICOLON(;) FIND WORD このあたりのワードの挙動は、 www.annexia.org/forth ここのjonesforthを参考にすればいいと思う。 これをインスパイヤしたCと日本語のドキュメントを書いてるんだが・・・仕事が忙しくてね・・・ これをざーっと読んで、yforthあたりの簡単な処理系のコード眺めて 実際に動作を確かめればANS-Forthの準拠もそう難しくないかと。 たださ、ANS-Forthって処理系の内部の規定しすぎじゃね? もっと好きなようにやらしてくれよ。一回確保したWORDが二度と解放できないとか、 文字列はヌル終端しない代わりに文字数を記憶するとか、ちょっと気持ち悪い気がする。
- 397 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 23:23:59 ]
- >文字列はヌル終端しない代わりに文字数を記憶する
これは正当だと思う。ヌル終端がどれだけのバグを生み出しているか……
- 398 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 21:05:50 ]
- 実装としては文字列をヌル終端にしても可。
但し、文字数は必要、かつ、 ヌル終端を当てにしたコードを書いても一般には動く保証なし。 が規定の内容と思われます。他の規定も同様。
- 399 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 19:23:22 ]
- ASCIIZはねーよマジで
- 400 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 16:38:27 ]
- でも、C言語で作られたプログラムとの連携したいときは、NUL文字終端がいいよね。
C言語で作られたプログラムの数の多さ、便利さから言うと、無視できないなと。
- 401 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 18:30:35 ]
- Cは捨てるのがよろしいかと。
C++をbetter Cとして使う方がまだましだと思う。 C++を使えないようなリソースのキツい環境で使うんだったらforthを直書きした方が良いんじゃね?
- 402 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 00:15:50 ]
- >C++をbetter Cとして使う
それ最悪
- 403 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 00:15:21 ]
- 402 と同感だが、better Cとして使うのは FORTH 実装にはない(価値が少ない)だろ。
自己学習として作るならまだしも、 FORTHに期待される動作環境だったらアセンブリレベルの設計が必要だろ。 C++使うならC++的設計をしろって。
- 404 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 00:31:36 ]
- forthチック俺言語のプロセスが回った記念カキコ。
forthだと引数管理がけっこう面倒だと思うけど、wordの名前に 引数の数の情報を盛り込んだら楽にならんかね? 俺言語ではこんな感じでドットの数=引数の数にしているんだけど、どう思う? 1 2 ..sum 1 2 3 .:sum 名前の衝突も起こりにくくなって一石二鳥かと思うんだけど。
- 405 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 09:31:38 ]
- ドット打つのがひたすらめんどくさそう
ifだと.:ifになるの?
- 406 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 21:05:33 ]
- こういう風にしたらどう?
・引数可変のワードは # で始まることとする ・ワード [ は現在のパラメータスタックポインタの値を リターンスタックに積む ・ワード ] は現在のパラメータスタックポインタの値と リターンスタックポインタのトップの値の差から パラメータ数を計算しパラメータスタックに積む たとえば [ 10 20 30 ] #sum と書くと、#sum実行直前にはパラメータスタックは 10 20 30 3 となっていて、#sumは3つの数の和を求めればいいことがわかる。
- 407 名前:404 mailto:sage [2008/08/27(水) 22:38:18 ]
- >405
そこは構文糖使った方がよろしいかと (a ? b ! cの三項演算子とか) >406 それも考えたけど、そうするとConcatenativeのメリットが死ぬんだよね。 できるだけ前の計算結果に依存しないように考えると、セパレータのようなものを スタックに積むのは良くないので、ワード単体で引数までを意味するようにしたい、 ということですな。
- 408 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 02:39:56 ]
- prologみたいにsum/3みたいにするとか。
よく判ってないが。
- 409 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 17:01:15 ]
- 引数管理しなきゃいけないようなコードの構成だと崩壊しそう
- 410 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 03:11:26 ]
- しばらくforthやってたら他の言語がいじれなくなってて驚いた。
のめり込むのは危険だなw
- 411 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 03:16:06 ]
- >>407
そのセパレータってリスト終端のnullに相当するから あながち間違ってないと思う。
- 412 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 21:54:56 ]
- concatenativeの論理を詰めて行くと、
スタックの機構はコード設計のための因子から外されるのかも。
- 413 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 22:34:55 ]
- >411
Wordの中でWordを呼ぼうとすると破綻するよ。 >412 結局はトップを基点とした対称性(みたいなもの)になるからな。 対称性があれば何でもOK
- 414 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 00:29:26 ]
- スタック型プログラミング言語の最少命令セットを探して
Whitespaceに辿りついたのですが、 これよりも言語仕様的に小さいスタック型言語ってあります?
- 415 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 01:55:39 ]
- define
call return conditional jump push pop これだけで足りるかな?
- 416 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 07:09:50 ]
- callに条件をつければjumpも省けるんじゃないか?
- 417 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 03:17:37 ]
- それより、ひと目で何やってるか判るforth作ってくれないかな。
>>54-65とか何やってるのかわからん。 記号覚えればいいんだろうけど。 : は定義っぽいということは文脈で判った。許す。 >rとかr>は何かと。 ;は文の終り? LISPでいう 'a は (quote a)です、みたいに特殊記号をあまり使わずに 誰が見ても大体判るように、平易な形にならないかな。
- 418 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 17:56:08 ]
- >>417
: word でワードの定義開始、;で定義の終端 >r,r>はリターンスタックへのプッシュとポップ >>54の括弧内はそのワードを実行するとデータスタックの状態がどう変わるかをコメントで表している 他の言語と違って裸のスタックが丸見えなんよ
- 419 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 02:22:08 ]
- リターンスタックに何をプッシュ(とポップ)するの?TOSの内容ってこと?
>rとr>って判りにくいと思う。 一瞬で見分けられないというか。 不等号ちがうんかと。 記号使わずに全部記述的にできないかな。 mindとかそんなのかな。
- 420 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 03:00:42 ]
- わかりやすい文法が欲しいのならforth系はあきらめた方がいいと思うよ
- 421 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 06:08:32 ]
- : pushTOStoReturnStack postpone >r ; immediate
: popFromReturnStackToTOS postpone r> ; immediate
- 422 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 12:26:50 ]
- 自分も420に賛成する、forthは裸の2スタックマシンのアセンブラと思えばいいんだけど、それがつらいとちょっときついと思う
ただ、それがインタラクティブ環境を作るあたりと小さな核で構築できるのが非常に面白いのでがんばって覚えてみてよ。 逆に言うと簡単にぶっ壊れるとも言う
- 423 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 16:59:48 ]
- Cとかの他の言語の常識持ち込もうとしてるヤツいないか?
「Forthではこう書く」ってのに納得いかないなら 悪いことは言わんから、使うのやめとけ
- 424 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 17:54:20 ]
- スタックっつうのはあくまで機械にやさしいものであってユーザーフレンドリーなものじゃないしな
- 425 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 18:38:23 ]
- 頻繁にスタックを意識しないといけないのは悪いForthコード
- 426 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 20:05:40 ]
- 正直アセンブラの方が楽だよ
- 427 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 20:24:33 ]
- 慣れると気持ちいいよJoy。forthは知らんけど
- 428 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 20:29:08 ]
- >426
Forthは仮想スタックマシンのアセンブラだから、 (仮想)マシンの理解度によるだろな。
- 429 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 22:29:45 ]
- いや、もっと視認しやすい記号セットを使ってくれって話だろ。
ハイライトできるエディタで単語登録するか、トランスレータでもかますのがいいと思う。
- 430 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 23:01:49 ]
- ところでリターンスタックって別に必要なの?
普通のCPUは1本だよね。 スタックに対して相対アドレッシングがないからってことかな?
- 431 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 23:57:29 ]
- >419
>rとr>は確かに見た目がわかりにくい。 よほどのことが無い限り使わない。 localがあれば要らない。 >430 呼出しのときにデータスタックで直接パラメターを渡すためでしょう。
- 432 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 00:00:27 ]
- >>430
普通のアーキテクチャだと関数呼び出しのスタックにパラメータも突っ込んじゃうけど forthはデータのpushと関数呼び出しの戻りアドレスが入るスタックが別なんよ。 っていうか別だから面白いことができるので、一緒だったらループとかで涙が出そうだと思う。
- 433 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 00:10:21 ]
- SP, BPレジスタに相当するものがあれば良いのでは
- 434 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 17:45:11 ]
- リターンスタックとデータスタックが一緒だと、
リターンアドレスを壊さないようにデータをいじるのがメンドイ。 リターンアドレスが詰まれている位置を避けるようにして スタックをアクセスしなきゃいけないから。 それはSPとBPがあってもメンドイことに変わりはない。
- 435 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 19:46:33 ]
- >>430
まあ、便利だから? 実装としてはバローズのメインフレーム見たく演算とリターン アドレス保存を一本のスタックでこなすものもあるよ。
- 436 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 21:37:24 ]
- factorだともうひとつスタックあるよ
- 437 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:25:44 ]
- データスタックとリターンスタックがないと
チューリングマシンと等価じゃないらしいぞ
- 438 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 00:17:09 ]
- >>437
等価じゃないとはよく聞くけど、等価じゃないとする説明ってどっかにないですかね。 それで実用で困ることありますかね。
- 439 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 01:12:05 ]
- 今理解した。
リターンスタックってそのままBP相当じゃん。 ほんとはBPポインタ一個あれば十分だよね? 素直にBPを持たずにわざわざリターンスタックなんて用意してるのは、 スタックマシンと言えなくなるからかね。 なんだかなあ。
- 440 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 03:10:12 ]
- BPあってもメモリがないとな
- 441 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 03:49:49 ]
- 今理解した。
BPってそのままリターンスタック相当じゃん。 ほんとはリターンスタックあれば十分だよね? 素直にリターンスタックを持たずに、わざわざBPなんて用意してるのは、 レジスタマシンと言えなくなるからかね。 なんだかなあ。
- 442 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 07:20:41 ]
- >>437
メモリアクセスできない純粋なスタックマシンなら、スタックが二本ないと チューリング等価ではないかも知れないが、FORTHはメモリアクセス @ ! が あるから、たとえスタック一本であってもチューリング等価じゃね? 考えてみればわかるが、メモリアクセスがあるとスタックの本数を自由に増やせる。 FORTHとスタックマシンとConcatenative言語は、それぞれ別の概念で、 単純に等号で結べないから、何について話しているのか意識しないと混乱すると思われ。
- 443 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 09:51:29 ]
- ForthのVMとしては、
論理的には最低限二つの区別されたスタックがある。 標準的な実装での利点(v.s.スタックフレーム方式)は、 サブルーチン間でのデータのコピーが減らせること。 スタックフレーム一本でやるのはCとかでも標準的な実装だけど、 VMという同じ抽象度で比べれば、Cにはスタックは無い。 VMが実装できれば機械自体の仕組みはどうでも良い。
- 444 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 13:26:57 ]
- 込み入った話は分からんけど、
とりあえずBF書けたらチューリング完全じゃなかったっけ?
- 445 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 14:12:31 ]
- なんか話が噛み合ってない気がする。
- 446 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 15:11:57 ]
- なんでそこまでチューリングマシンにこだわるのかわからん。
Forthがチューリングマシンであろうとなかろうと Forthで実用的なプログラムは書ける。 あともう一人、やたらリターンスタックを排除したがる奴も 何をしたいのかさっぱりわからん。
- 447 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 17:47:31 ]
- まず当たり前の大前提の確認からだけど、Forthはチューリング完全だから。
仮にForthの仕様からリターンスタックだけを排除したとしても(それはForthとは呼べないだろうが) チューリング完全だ。理由は>>442 リターンスタックがBPで代用できるとか正直意味わからん。 スタック演算自体理解してない希ガス。
- 448 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 18:27:08 ]
- リターンスタックという名前がいかんのだろ。
- 449 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 18:35:04 ]
- >>437
スタックオートマトンとスタックマシンをごっちゃにしてる気がする。
- 450 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 18:39:13 ]
- >>448
むしろリターンスタック以外の名前があるなら知りたいものだが。
- 451 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 19:02:41 ]
- >442
大雑把にはこんな感じかね。 ・データスタック: 引数&戻り値 ・リターンスタック: 実行する命令列(辞書で展開された単語含む) リターンスタックというよりもオーダースタックといった方がちょうど良い気がするけどね
- 452 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 19:25:44 ]
- リターンアドレスを積んでいるからリターンスタック
それでいいと思うが、難しく考えすぎじゃね?>>451
- 453 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 19:28:44 ]
- Aスタック←→Bスタック
だったら勘違いが起きなかったと思う。
- 454 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 19:34:19 ]
- >>453
むしろ勘違いを引き起こしそうなんだが。 リターンスタックが難しいんじゃなくて、 リターンアドレスをスタックに積むという 当たり前の関数呼び出し規約を説明しなければ、 理解されない時代になったということか…
- 455 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 21:59:43 ]
- なんでリターンスタックの名前で混乱とか勘違いがあるの?
ひょっとして、リターンと聞いて戻り値を連想しちゃう人がいる、とか? だとしたらかなりキビシい状況だな。
- 456 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 01:09:11 ]
- カールスタックの方が一般的じゃね?
- 457 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 01:09:52 ]
- あ、カールじゃなくてコールスタック
|

|