2 part forth (909レス)
上下前次1-新
354: 2007/12/22(土)11:53 AAS
dsForthがアドエスで動くのはガイシュツ?
355: 2008/01/04(金)04:23 AAS
notガイシュツ
356(1): 2008/01/27(日)13:50 AAS
このスレの人たちが使う電卓はRPLだったりするの?
357(1): 2008/01/27(日)15:03 AAS
HPの電卓?
358: 356 2008/01/27(日)17:17 AAS
>>357
そうです。RPNの間違いでした。
359: 2008/01/27(日)18:59 AAS
HP41CV,HP28,HP48SX,HP32S,と使ってきましたよ。
ちなみに今使っているHP35は問題大あり!
360: 2008/02/07(木)10:12 AAS
Adobe高速JavaScript実装、バイトコードにForthを採用
外部リンク[html]:journal.mycom.co.jp
361: 2008/02/07(木)15:34 AAS
LLVM涙目
362: 2008/02/07(木)21:52 AAS
単なるスタックベースのVMなだけじゃないの?
JavaVMとか既存のVMと一緒でしょ
363: 2008/02/16(土)22:40 AAS
急に某ゲーム機上で動くforthが作りたくなって>>339が挙げてるやつ読んでるんだが(まあこれはi386用だけど)、わかりやすいなこれ
実を言うと今までforthはあまり理解してなかったけど、モヤモヤしてたことがすっきりしてきた
しかしforthってシンプルで美しいなぁ
Lispやsmalltalkに負けないと思うのに、このマイナーさ…
364: 2008/02/17(日)00:09 AAS
concatenative languageあたりをキーワードにWebをさまよってみると良いよ。
joy factorあたりが面白いかね。おいらも俺言語作成中。
365: 2008/02/17(日)00:24 AAS
factor は良いねぇ。秘かに期待している。
366: 2008/02/18(月)11:50 AAS
基本的に
1.stackの一番上と二番目の値に対して演算
2.stackの一番上だけ取り除く
3.stackのn番目と一番目を交換
の機能だけがあると思ってていい?
367: 2008/02/19(火)07:10 AAS
concatenativeに?
それならスタックに対する関数適用だけかな
368(1): 2008/03/20(木)14:28 AAS
forthのコメントってもしやforthで書かれてる?
( コメント ) ←これ
369(1): 2008/03/20(木)15:22 AAS
>>368
実装にもよるけど、
ワード ( を読むと、フラグが立って、ワード ) まで無視する。
Forth で書いてある、ってこういう意味ってことでいいのかな?
370: 2008/03/20(木)15:50 AAS
>>369
いやなんかマクロみたいな機能を使って書かれているのかなーと
forth知らないので全然分かんないんですけど
要するに↓みたいにforth言語で書かれているのか?ってことです
: ( hoge hoge ... ;
371(1): 2008/03/20(木)20:15 AAS
『標準FORTH』だと pp.166 にある。
: ( 29 WORD DROP ; IMMEDIATE
29 は ')' のコード
WORD はスタックトップと同じキャラが出てくるまで入力を読んで、
その先頭のアドレスをスタックトップに置くワード。DROP は説明の
必要ないな。IMMEDIATE は直前に定義されたワードを、
イミディエイトワードにするワード。
省2
372(1): 2008/03/20(木)20:16 AAS
千言万語単行本にならねーかな
373(1): 2008/03/20(木)21:37 AAS
追加。
イミディエイトワード、というのが、プログラムの実行時ではなく
読み込み時に意味を持つワードなので、マクロのような機能と
言えるかもしれません。
374: 2008/03/21(金)07:42 AAS
>>371-373
サンクス
外部リンク[html]:www.geocities.jp
これ見てるけどimmediateの意味がいまいちわからん…
何のためのものなんだ?
: ( 29 WORD DROP ; IMMEDIATE
例えば↑にimmediateがついてなかったらどういう動作になるんだろう
375(1): 2008/03/21(金)08:55 AAS
仮に ( がイミディエイトワードで無かったとすると、
: hoge ほげほげ ( ほげほげ ) ;
とか書いた場合に、hoge の定義の一部として、実行される部分になって
しまいます。定義中でも直ちに実行されるワードがイミディエイトワードです。
376: 2008/03/22(土)10:18 AAS
>>375
なるほど
理解した。サンクス
377: 2008/03/27(木)22:38 AAS
最近、Concatenativeな言語というもの目にしたんでage
378: 2008/03/28(金)00:23 AAS
なんか酷いのみつけてきたwwwww
ちょっと草植えときますね型言語 Grass
外部リンク[html]:www.blue.sky.or.jp
スタックマシン使ってるってだけみたいだが(俺には良く分からん)
379: 2008/03/31(月)10:36 AAS
forth厨はなんでもかんでもスタックマシンにするな
380: 2008/04/03(木)02:09 AAS
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
省1
381: 2008/04/10(木)03:00 AAS
あれ?factorの新しいの入れたら日本語出なくなった
エンコード関係?
382: 2008/05/14(水)14:10 AAS
factorソースから入れるのめんどくさいな・・・
gitなんて初めて知ったよ
383: 2008/06/03(火)17:56 AAS
何か面白い話無い?
384: 2008/06/05(木)11:05 AAS
スタック1本で動作する処理系作れ
385: 2008/06/05(木)16:18 AAS
バロースのメインフレームはシングルスタックなんだぜ?
386: 2008/06/05(木)18:37 AAS
wikipediaより
> スタックを1つしか持たないスタックマシンは、
> 計算モデルとしては非常に弱い。例えば、1-スタックマシンでは、
> 0n1n(0の並びの後に同じ個数の1が並ぶ言語)のような単純な言語も認識できない。
> 1-スタックマシンの計算能力は、有限オートマトンよりも高いが、
> 決定性プッシュダウン・オートマトンよりも低い。
> 一方、複数のスタックを持つスタックマシンはチューリング機械と等価である。
省4
387: 2008/07/17(木)00:50 AAS
factorのドキュメント消えてら
388(1): 2008/08/01(金)21:55 AAS
V
外部リンク:en.wikipedia.org
Onyx
外部リンク:www.canonware.com
Forthもこれらも俺には使いこなせないんだけどね orz
389: 388 2008/08/01(金)21:57 AAS
Vはこっちのページも
外部リンク:code.google.com
390(4): 2008/08/02(土)03:04 AAS
Forthの実装中sage
実装法のドキュメント付きで晒すかも
391(1): 2008/08/02(土)04:01 AAS
forthって、引数の数ミスるだけで崩壊するよな
>>390
どんな俺フォースを見せてくれるんだい?
誰もいないしここ、日記帳のつもりで使ってくれよ。
392(1): 2008/08/02(土)06:07 AAS
久々にレスキタワァ*・゜゚・*:.。..。.:*・゜(n‘∀‘)η゚・*:.。. .。.:*・゜゚・* !!!!!
393(1): 2008/08/02(土)08:44 AAS
>>390
外部リンク:www.google.co.jp
どんな言語使って作るかしらん
こんなの補助として使ってみるのも便利かもしらん
394: 390 2008/08/02(土)14:40 AAS
過疎っぷりに見てる人もいないと思ったら、意外といたのね。
>>391
Forthの実装は初めてなので、古典的で教科書通りのIndirect Threaded Code、
Cで書いた仮想マシンの上で動かすってかんじで。
今はMac OS XとLinux(x86)とLinux Zaurus(arm)の上でぽちぽち書いてる。
ポータビリティーは良いのでメモリがあって速度も気にしなければ
簡単にマイコンにも移植可能だと思う。H8なら余裕かな。
省12
395(1): 2008/08/04(月)22:59 AAS
Forth は実装が簡単だって聞いてたんで、
自分も作ってみようとちょっと調べたんだけど、
仕組みがよく分からなかったし(ワードの定義とか)、
規格に沿った物にしようとすると意外に仕様が大きくて、
挫折しますた><
396: 390 2008/08/05(火)23:09 AAS
>>395
辞書まわりは次の10個のワードがあればOK(たぶんね)
CREATE
COMMA(,)
[
]
IMMEDIATE
省14
397: 2008/08/05(火)23:23 AAS
>文字列はヌル終端しない代わりに文字数を記憶する
これは正当だと思う。ヌル終端がどれだけのバグを生み出しているか……
398: 2008/08/06(水)21:05 AAS
実装としては文字列をヌル終端にしても可。
但し、文字数は必要、かつ、
ヌル終端を当てにしたコードを書いても一般には動く保証なし。
が規定の内容と思われます。他の規定も同様。
399: 2008/08/08(金)19:23 AAS
ASCIIZはねーよマジで
400: 2008/08/09(土)16:38 AAS
でも、C言語で作られたプログラムとの連携したいときは、NUL文字終端がいいよね。
C言語で作られたプログラムの数の多さ、便利さから言うと、無視できないなと。
401: 2008/08/09(土)18:30 AAS
Cは捨てるのがよろしいかと。
C++をbetter Cとして使う方がまだましだと思う。
C++を使えないようなリソースのキツい環境で使うんだったらforthを直書きした方が良いんじゃね?
402: 2008/08/10(日)00:15 AAS
>C++をbetter Cとして使う
それ最悪
403: 2008/08/11(月)00:15 AAS
402 と同感だが、better Cとして使うのは FORTH 実装にはない(価値が少ない)だろ。
自己学習として作るならまだしも、
FORTHに期待される動作環境だったらアセンブリレベルの設計が必要だろ。
C++使うならC++的設計をしろって。
404(1): 2008/08/27(水)00:31 AAS
forthチック俺言語のプロセスが回った記念カキコ。
forthだと引数管理がけっこう面倒だと思うけど、wordの名前に
引数の数の情報を盛り込んだら楽にならんかね?
俺言語ではこんな感じでドットの数=引数の数にしているんだけど、どう思う?
1 2 ..sum
1 2 3 .:sum
名前の衝突も起こりにくくなって一石二鳥かと思うんだけど。
405(1): 2008/08/27(水)09:31 AAS
ドット打つのがひたすらめんどくさそう
ifだと.:ifになるの?
406(1): 2008/08/27(水)21:05 AAS
こういう風にしたらどう?
・引数可変のワードは # で始まることとする
・ワード [ は現在のパラメータスタックポインタの値を
リターンスタックに積む
・ワード ] は現在のパラメータスタックポインタの値と
リターンスタックポインタのトップの値の差から
パラメータ数を計算しパラメータスタックに積む
省5
407(1): 404 2008/08/27(水)22:38 AAS
>405
そこは構文糖使った方がよろしいかと (a ? b ! cの三項演算子とか)
>406
それも考えたけど、そうするとConcatenativeのメリットが死ぬんだよね。
できるだけ前の計算結果に依存しないように考えると、セパレータのようなものを
スタックに積むのは良くないので、ワード単体で引数までを意味するようにしたい、
ということですな。
408: 2008/08/28(木)02:39 AAS
prologみたいにsum/3みたいにするとか。
よく判ってないが。
409: 2008/09/19(金)17:01 AAS
引数管理しなきゃいけないようなコードの構成だと崩壊しそう
410: 2008/09/25(木)03:11 AAS
しばらくforthやってたら他の言語がいじれなくなってて驚いた。
のめり込むのは危険だなw
411(1): 2008/09/25(木)03:16 AAS
>>407
そのセパレータってリスト終端のnullに相当するから
あながち間違ってないと思う。
412(1): 2008/09/25(木)21:54 AAS
concatenativeの論理を詰めて行くと、
スタックの機構はコード設計のための因子から外されるのかも。
413: 2008/09/25(木)22:34 AAS
>411
Wordの中でWordを呼ぼうとすると破綻するよ。
>412
結局はトップを基点とした対称性(みたいなもの)になるからな。
対称性があれば何でもOK
414: 2008/10/01(水)00:29 AAS
スタック型プログラミング言語の最少命令セットを探して
Whitespaceに辿りついたのですが、
これよりも言語仕様的に小さいスタック型言語ってあります?
415: 2008/10/01(水)01:55 AAS
define
call
return
conditional jump
push
pop
これだけで足りるかな?
416: 2008/10/01(水)07:09 AAS
callに条件をつければjumpも省けるんじゃないか?
417(1): 2008/10/02(木)03:17 AAS
それより、ひと目で何やってるか判るforth作ってくれないかな。
>>54-65とか何やってるのかわからん。
記号覚えればいいんだろうけど。
: は定義っぽいということは文脈で判った。許す。
>rとかr>は何かと。
;は文の終り?
LISPでいう 'a は (quote a)です、みたいに特殊記号をあまり使わずに
省1
418: 2008/10/02(木)17:56 AAS
>>417
: word
でワードの定義開始、;で定義の終端
>r,r>はリターンスタックへのプッシュとポップ
>>54の括弧内はそのワードを実行するとデータスタックの状態がどう変わるかをコメントで表している
他の言語と違って裸のスタックが丸見えなんよ
419(1): 2008/10/03(金)02:22 AAS
リターンスタックに何をプッシュ(とポップ)するの?TOSの内容ってこと?
>rとr>って判りにくいと思う。
一瞬で見分けられないというか。
不等号ちがうんかと。
記号使わずに全部記述的にできないかな。
mindとかそんなのかな。
420: 2008/10/03(金)03:00 AAS
わかりやすい文法が欲しいのならforth系はあきらめた方がいいと思うよ
421: 2008/10/03(金)06:08 AAS
: pushTOStoReturnStack postpone >r ; immediate
: popFromReturnStackToTOS postpone r> ; immediate
422: 2008/10/03(金)12:26 AAS
自分も420に賛成する、forthは裸の2スタックマシンのアセンブラと思えばいいんだけど、それがつらいとちょっときついと思う
ただ、それがインタラクティブ環境を作るあたりと小さな核で構築できるのが非常に面白いのでがんばって覚えてみてよ。
逆に言うと簡単にぶっ壊れるとも言う
423: 2008/10/03(金)16:59 AAS
Cとかの他の言語の常識持ち込もうとしてるヤツいないか?
「Forthではこう書く」ってのに納得いかないなら
悪いことは言わんから、使うのやめとけ
424: 2008/10/03(金)17:54 AAS
スタックっつうのはあくまで機械にやさしいものであってユーザーフレンドリーなものじゃないしな
425: 2008/10/03(金)18:38 AAS
頻繁にスタックを意識しないといけないのは悪いForthコード
426(1): 2008/10/03(金)20:05 AAS
正直アセンブラの方が楽だよ
427: 2008/10/03(金)20:24 AAS
慣れると気持ちいいよJoy。forthは知らんけど
428: 2008/10/03(金)20:29 AAS
>426
Forthは仮想スタックマシンのアセンブラだから、
(仮想)マシンの理解度によるだろな。
429: 2008/10/03(金)22:29 AAS
いや、もっと視認しやすい記号セットを使ってくれって話だろ。
ハイライトできるエディタで単語登録するか、トランスレータでもかますのがいいと思う。
430(3): 2008/10/03(金)23:01 AAS
ところでリターンスタックって別に必要なの?
普通のCPUは1本だよね。
スタックに対して相対アドレッシングがないからってことかな?
431: 2008/10/03(金)23:57 AAS
>419
>rとr>は確かに見た目がわかりにくい。
よほどのことが無い限り使わない。
localがあれば要らない。
>430
呼出しのときにデータスタックで直接パラメターを渡すためでしょう。
432: 2008/10/04(土)00:00 AAS
>>430
普通のアーキテクチャだと関数呼び出しのスタックにパラメータも突っ込んじゃうけど
forthはデータのpushと関数呼び出しの戻りアドレスが入るスタックが別なんよ。
っていうか別だから面白いことができるので、一緒だったらループとかで涙が出そうだと思う。
433: 2008/10/04(土)00:10 AAS
SP, BPレジスタに相当するものがあれば良いのでは
434: 2008/10/04(土)17:45 AAS
リターンスタックとデータスタックが一緒だと、
リターンアドレスを壊さないようにデータをいじるのがメンドイ。
リターンアドレスが詰まれている位置を避けるようにして
スタックをアクセスしなきゃいけないから。
それはSPとBPがあってもメンドイことに変わりはない。
上下前次1-新書関写板覧索設栞歴
あと 475 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.026s