2 part forth
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
96NO5 初心者ですがthinking forth読んでます。
さっそく詰まりました。
: + BL WORD NUMBER DROP ;
で+を再定義すると中置記法で3 + 4できるとあり、確かに7が得られるのですが、
どうしてそうなるのか分かりません。
(別に中置記法で書きたいわけではありません)
BLが(ボーイズラブではなく)空白の文字コード、
WORDがアドレスを得る、
DROPは . と同じですよね?
NUMBERがポイントなのでしょうが…
どなたか解説してくれませんか? >>867
昔々にFORTHをほんのちょっとかじっただけの通りすがりだけど、最後に + が
抜けとるよね。
: + BL WORD NUMBER DROP + ;
その抜けとる(再定義前の後置記法で加算する)+ に 3 4を渡して
3 4 +
をさせるために4をスタックに積むことをさせとるんだと思う。
空白で区切られた”4”を取ってきて、数字に換えてスタックに乗せといて(元々
の) + に渡たしてる、かな。
. は 印刷で、DROPはスタックから一つ捨てるのような。
ていうか、そこ読んでる時点ではわからんでもいいのでは。 >>267
この事情おしえて!
できるんなら全部後置がいいと思ってた。
どんななるほどな理由があるんだろう? ; とか UNTIL のように可変長引数を扱うには先頭に目印が必要になるね。
>>265がちぐはぐと言っているのがどれのことなのかはわからんが。 じゃあ1足して2掛けるワードhogeの定義は
: hoge 1 + 2 * ;(hogeとは:1を足して2で掛けることである)
だけど別に
: 1 + 2 * hoge ;(1を足して2で掛けることをhogeとする)
とか
: 1 + 2 * ; ." hoge" def(1を足して2で掛けることを"hoge"という名前で定義する)
みたいな文法もあり得たのかな?
本体、定義するワードの識別子名
という並びではなく、
定義するワードの識別子名、本体
の並びなのは、何かの事情があっての必然なのか、たまたまなのか、それが知りたいです。 機能的にはどっちでも可能だろうけど、人が書くコードとしては識別子を前に置く方が
わかりやすいからじゃないかと思う。
あと、ディクショナリに登録する際に : からスタックトップ方向にスキャンするなら
識別子が後ろに置かれると一つ先読みが必要になってちょっと面倒くさい。 forthって人の都合よりコンピュータの都合優先みたいなイメージだったので人の読みやすさのためだったとしたら意外でした。
後半は納得しました。そうかそれでか…
ありがとうございました。 >>872
昔の貧弱なメモリとCPUでコンパイラ作るんだから
文法優先じゃなくてコンパイラの事情優先でそうなんだろ 8年と半年掛かって>>624の言ってる事がようやくわかった。
ここの人って、何周か回っちゃってFORTHに行き着いてるんだね。
いや、SECDマシンってFORTHそっくりじゃん?!と書きに来ました。
では、また・・・。 Oforth使ってる人いますか?
なんとなくSmalltalkぽいですね apt のgforth.73使ってたんだけどアップデしたらメチャクチャ快適になった…
色付くわhelpコマンド付くわでしゅごい >>816
このurl、forthで検索するとあちこちに見掛けるんだけど閉鎖しちゃったのかな
waybackにもgoogle cacheにも残ってない… >>885
>waybackにもgoogle cacheにも残ってない…
http://web.archive.org/web/20160425023618/http://www.h7.dion.ne.jp/~samwyn/forth/gforth/Floating-Point-Tutorial.html 技術的というより哲学っぽいので敬遠してたthinking forth今更読んだけど代名詞の言語というのがしっくり来た
どんな言語でもちゃんと書かれれば最上層のコード派読みやすいけどForthがとりわけ読みやすいのはこれだよな
最下層はほとんどアセンブラなのにこの極端性よ でもスタックイジイジするのパズルみたいでめちゃくちゃ楽しいんだよなあ、くやしい… もはや(8ビット)PCのためではなく(マニアックな)人間のための言語。 久々に書き込みあったと思えば
あけおめ!
今どきforthは趣味だろうけど良い趣味だよ
あとAndroid版のgforthは関数電卓代わりに毎日使ってる 今勉強中だけどおもしろい
しかしパーシングワードはどうにかならんかったのか
定義の底に埋もれたnameが解釈時に吸い込んだりするのが文脈飛んで分かりにくい…
psみたいに/name {code} exch def方式のほうが一貫性あったのではないか FORTHへの招待って古い本買ったんだけど、PICK/ROLLのindexが1始まりだったり、今の処理系と結構違うよね
長々とハードの話から始まり機能紹介までで終わってて、具体的なコーディングテクニックまでたどり着いてない…
モダンでオススメな本ってあるかな 初学者だけど
まあレトロなところに惹かれたのは否定できないな
有名な"FORTH思考"とか、一般プログラミング作法の啓蒙書としては素晴らしい
ブロックの章立ての章とかよく考えさせられる、まあ実ファィルに置き換えて写経してるけど 古の8bit機みたいな小さいマシンでnextルーチン書くところから始めてみたい