1 名前:デフォルトの名無しさん [04/01/10 03:45.net] 第四世代
2 名前:デフォルトの名無しさん [04/01/10 06:07.net] 参考リンク lab.ee.uec.ac.jp/text/treat6s.html www.geocities.jp/naosacra/index.html
3 名前:デフォルトの名無しさん [04/01/10 18:52.net] hoshu
4 名前:デフォルトの名無しさん [04/01/11 06:10.net] ほっしゅ つーか誰もいねえな
5 名前:デフォルトの名無しさん mailto:sage [04/01/11 09:33.net] いまや衰退してしまった FORTH に対してムーアが、 ── FORTH にすまないことをした。あやまらなくてはならない。 と、しんみり言った言葉が胸を打つ。 林 晴比古 著、オペラ座のパソコン、初版 P.123 作成者がこう言ってるんだから、もう終了でいいんじゃない ?
6 名前:デフォルトの名無しさん mailto:age [04/01/11 17:42.net] OpenFirmwareとか地味に使ってるじゃないすか
7 名前:デフォルトの名無しさん mailto:age [04/01/12 07:31.net] しかしmopsスレの住人とかどこにいったんだろう? タイトルのつけかたがまずかったな…。
8 名前:デフォルトの名無しさん mailto:sage [04/01/12 08:33.net] 一時期興味があったが冷めてしまったなぁ。今は関数型言語が楽しい。 何か面白い話題でもあると良いんだけど。
9 名前:デフォルトの名無しさん mailto:age [04/01/12 14:18.net] 何か作るかあ。
10 名前:デフォルトの名無しさん mailto:sage [04/01/12 18:59.net] forthの特徴は関数型とか述語記述とかそういう次元の話ではなくて ただ単に逆ポーランド表記である と見た場合、そこに新たにオブジェクト指向だとか いろいろな概念を付け加えるのは案外容易なのかなと考えているのですがどうだろうか
11 名前:デフォルトの名無しさん mailto:sage [04/01/12 19:04.net] >>10 昔laplaceってのがあったなぁ。
12 名前:デフォルトの名無しさん mailto:sage [04/01/12 19:25.net] >>11 なんスかそれ?ラプラス変換?
13 名前:デフォルトの名無しさん mailto:sage [04/01/13 01:27.net] ASCIIに載ってたFORTHの変種なんだけど、よく覚えてない。 リストが扱えるようになってたような気がする。
14 名前:デフォルトの名無しさん mailto:sage [04/01/13 02:33.net] ふむ…。 web上にはそれに関するリソース見つけきれないです。 もう少し探してみよう。 検索の過程でなんとなくひっかかった情報達 ttp://mizotec.s27.xrea.com/slang/overview.html ttp://www.kt.rim.or.jp/〜tyamamot/forth/c4th.html ttp://homepage2.nifty.com/logic/ ttp://www.kt.rim.or.jp/〜tyamamot/forthj/forthj.html prologとかなり親和性が高い様な気がするなあ
15 名前:デフォルトの名無しさん mailto:sage [04/01/13 20:40.net] 保守っておこう
16 名前:デフォルトの名無しさん mailto:sage [04/01/13 21:59.net] 最低でも実装しなければいけない命令ってどれぐらいあるだろうか?
17 名前:デフォルトの名無しさん [04/01/14 20:07.net] 着手 age
18 名前:デフォルトの名無しさん mailto:sage [04/01/16 01:48.net] 保守 sage
19 名前:デフォルトの名無しさん mailto:sage [04/01/17 18:18.net] 開発中 保守 sage
20 名前:デフォルトの名無しさん [04/01/19 23:38.net] 誰か助けてヨ
21 名前:デフォルトの名無しさん mailto:sage [04/01/20 00:47.net] 最近勉強を始めてみようと gforth 導入しますた・・・ 寂れてますね・・・
22 名前:デフォルトの名無しさん mailto:sage [04/01/20 01:20.net] ですね(^^)
23 名前:デフォルトの名無しさん [04/01/20 02:02.net] ttp://directory.google.com/Top/Computers/Programming/Languages/Forth/ を巡っております。 ttp://webdev.amsystech.com/mlosh/ ここのソースを参考にして処理系作ろうかと思案中。
24 名前:デフォルトの名無しさん [04/01/21 22:49.net] hoth
25 名前:デフォルトの名無しさん [04/01/22 01:21.net] forthはおもしろい言語だとは思うんだが、 何に使うかが問題だよね。 自作アプリにスクリプトを付けるなんて用途には最適かもね。 コアな部分がCで数十ライン、デフォルトのワードを100個内蔵しても 1Kラインで済んだし。
26 名前:デフォルトの名無しさん mailto:sage [04/01/22 01:41.net] ユーザに書かせるスクリプトじゃなくて、内部で処理するバイトコードが FORTH系ってのは結構あるんじゃないかと。 処理系の高機能化と簡素化を両立する手段のひとつとして。
27 名前:デフォルトの名無しさん [04/01/22 03:49.net] >>14 のttp://www.kt.rim.or.jp/〜tyamamot/forth/c4th.htmlは ちょっと電波臭いけど面白いと思う。
28 名前:デフォルトの名無しさん mailto:sage [04/01/22 09:10.net] >>26 スタックマシンということなら、JVMとか。
29 名前:デフォルトの名無しさん mailto:sage [04/01/22 12:48.net] >>25 あぷ
30 名前:デフォルトの名無しさん [04/01/22 13:14.net] pc2.2ch.net/test/r.i/tech/1070886635/60
31 名前:デフォルトの名無しさん mailto:age [04/01/24 01:47.net] あげ
32 名前:デフォルトの名無しさん [04/01/24 23:57.net] >>29 アップした。 homepage.mac.com/holythunderforce/FileSharing1.html
33 名前:デフォルトの名無しさん mailto:sage [04/01/25 00:07.net] >>32 ダウソ出来んばい
34 名前:デフォルトの名無しさん [04/01/25 00:55.net] むか〜し、MZ80でForthを走らせてたのを思い出した。懐かしい
35 名前:デフォルトの名無しさん [04/01/25 03:14.net] どっか上げられるウプローダ知らない?
36 名前:29 mailto:sage [04/01/25 07:09.net] ダウソできたよ
37 名前:デフォルトの名無しさん [04/01/26 16:37.net] 盛り上がらねーな
38 名前:デフォルトの名無しさん [04/01/27 17:18.net] ホッ種
39 名前:デフォルトの名無しさん [04/01/31 01:43.net] >>28 JVMってJavaのVMのこと? ありゃFORTHとはぜんぜん違うよ。 ところで コンソールから読み込んだFORTHの構文をJava VMのマシン語に コンパイルしつつ、 メモリに書き込んでそこにジャンプして実行ってのを考えたりも したんだけど....。 まずPCレジスタが公開されてない。PCいじるインストラクションがあったとしても、 クラスローダーが認めた由緒正しいインスタンス以外のオフセットに ジャンプすると例外が発生するとかの仕様がある。 ハックできなそう。つか、できない。 つまらん、と思ってJavaの勉強やめた。
40 名前:デフォルトの名無しさん mailto:sage [04/02/02 00:26.net] おまえらforthでEmacsを作れ
41 名前:デフォルトの名無しさん [04/02/03 00:45.net] ムーアさんの思想とはかけはなれてるな
42 名前:デフォルトの名無しさん mailto:sage [04/02/03 13:43.net] スレタイわかりにくすぎ>1
43 名前:デフォルトの名無しさん [04/02/03 22:37.net] >>11 ラプラスって、確かLisp+Forthだったみたいだけど、ちゃんと読む前にアスキーを捨てられて詳細が解らんです。でも確かに有りました。私も詳細が知りたい。
44 名前:デフォルトの名無しさん [04/02/06 01:05.net] マジでforthで何かつくりたいんだけど、 何かネタないかね。 40が言うようにエディタ?
45 名前:デフォルトの名無しさん mailto:sage [04/02/07 03:32.net] 仕様書 FORTHコンパイラを内蔵し、それ自体がFORTH実行環境であり FORTHにより拡張可能なエディタ。 仮想敵をEmacsとし、Emacsで可能なことはすべて実現させることを 最終目標とする。 ただしキーバインドはWordStar準拠とする。 あとはよろしく
46 名前:デフォルトの名無しさん mailto:sage [04/02/07 04:56.net] WordStar入れるならWindows標準のキー定義も入れてくれ ところでFORTHの場合FFI関係の作りは楽なのかな
47 名前:デフォルトの名無しさん mailto:sage [04/02/10 16:13.net] 天文シミュレーションのような プログラムシミュレーション programinginging..^.^.
48 名前:デフォルトの名無しさん mailto:sage [04/02/15 21:17.net] www.zetetics.com/bj/papers/oofs.htm OO な Forth っていっぱいあるねぇ。Prolog と Lisp と Forth で処理系の多さを 競ったら、どれがトップになるだろうか。
49 名前:デフォルトの名無しさん mailto:sage [04/02/16 06:25.net] Forthまんせー pc2.2ch.net/test/read.cgi/tech/1074996153/159-175nofirst
50 名前:デフォルトの名無しさん mailto:sage [04/02/17 23:29.net] >>48 LispとForthはToyプログラム的な処理系も含めると星の数ほど あるからねぇ。Prologは知らないけれど。 ForthのOO拡張もいっぱいあるけど、forth好きな人には、 わずかなメモリの無駄や、実行速度のオーバーヘッドも 許せないってタイプが多い気がする。 (そして、やりすぎるとColorForthになる。。。) >>49 速度もマンセーだが、マクロと同等以上の、 抽象化能力を持つForthマンセー。 メタプログラミングマンセー。
51 名前:デフォルトの名無しさん mailto:sage [04/02/18 00:21.net] >>50 基本的には同意なんだが。マクロと同等以上というほどメタプログラミング 的には勝ってないような…。昔 LISPer と競った経験から言うと、効率では 勝てると思うけど、記号処理(構文解析とか)入ってくると分が悪いと思われ。 FORTH ライク構文なら無敵だと思うけど。
52 名前:デフォルトの名無しさん mailto:sage [04/02/18 01:21.net] >>51 そうかな?「マクロ以上」は言い過ぎかもしれないけど、 >>49 の多重ループの展開なんかは、マクロ並みの 抽象化だと思うけどな。
53 名前:デフォルトの名無しさん mailto:sage [04/02/18 03:39.net] いっちょ処理系でも作るか
54 名前:デフォルトの名無しさん mailto:sage [04/02/18 12:24.net] 話題少ないし、おまいら、クイズで楽しみませんか? 第1問 dup ( a -- a a ) swap ( a b -- b a ) drop ( a -- ) >r ( a -- return stack: a ) r> ( return stack: a -- a ) 以上5つのワードだけで、 2dup ( a b -- a b a b ) を定義すれ。
55 名前:デフォルトの名無しさん mailto:sage [04/02/18 12:25.net] 第2問 同じく 3dup ( a b c -- a b c a b c ) を定義しる。
56 名前:デフォルトの名無しさん mailto:sage [04/02/18 12:27.net] 第3問 : foo twice ." Hello" ; でfooを実行すると HelloHello を出力するようなtwiceを定義してみれ。
57 名前:デフォルトの名無しさん mailto:sage [04/02/18 17:59.net] : 2dup >r dup r> dup >r swap r> ; : 3dup >r 2dup r> dup >r swap >r swap r> r> ; >>56 immediateを使う? よく思い出せん。
58 名前:54-56 mailto:sage [04/02/18 19:06.net] >>57 2dup、3dup、お見事っす。 >>56 はimmediateを使うという解答もアリですが、 immediateを使わないちょっとトリッキーだけど もっとシンプルな方法があります。
59 名前:デフォルトの名無しさん [04/02/19 17:08.net] 人少ないなぁ。 第4問 : AA reverse ." AA" ; : BB AA ." BB" ; : CC BB ." CC" ; でCCを実行すると CCBBAA を出力するようなreverseを定義すれ。 ‥‥‥実はコレ第3問のヒントだったりする。
60 名前:デフォルトの名無しさん [04/02/19 21:25.net] Forth のお勧め本ってどんなのありますか? 最近RPNに萌えてます。 HPの電卓欲しくなっちゃった。
61 名前:デフォルトの名無しさん mailto:sage [04/02/19 23:02.net] 自分は「標準Forth」 www.amazon.co.jp/exec/obidos/ASIN/4320022475/ref=sr_aps_b_/249-4245738-4019557#product-details でForthを学んだんだけど絶版だろうね。 古本屋か図書館で探すしかないと思われ。 英語でも良ければ、 home.iae.nl/users/mhx/sf.html ここのChapter 1から順に読んでいくのがオススメ。
62 名前:デフォルトの名無しさん [04/02/20 12:42.net] 懲りずに第5問。 : foo ." 1 " resume ." 2 " resume ; : bar ['] foo call/cc ." 3 " resume ." 4 " drop ; で、barを実行すると、 1 3 2 4 と表示するような、resumeとcall/ccをがんがって定義してみれ。 ちなみに、この2つのワードは以下のスタックコメントに示すような 引数と返り値を持つものとする。 resume ( continuation -- continuation' ) call/cc ( xt -- continuation ) # ワード名とスタックコメントの名前がアレですが、 # 字面に惑わされなければ、仕様を満たすのは簡単なはず。 # 第3問〜第5問は基本的に同じカラクリ、というのがヒント。
63 名前:デフォルトの名無しさん mailto:sage [04/02/21 08:41.net] Mindって分家?単に日本語で書けるForth?
64 名前:デフォルトの名無しさん [04/02/21 10:29.net] MindはいろいろForthにない仕様があったので、 MindはForthから派生した別言語と考えても良いと思う。
65 名前:_| ̄|○ mailto:sage [04/02/23 20:44.net] ホント、人が居ないyo....._| ̄|○ 誰も見てないかもしれないけど解答編。 >>56 : twice r> dup >r >r ; >>59 : reverse r> r> swap r> swap >r swap >r >r ; >>62 : resume r> swap >r ; : call/cc r> swap execute ; ‥‥リターンスタックをいじるとヘンなことができて面白いよね。 ‥‥‥‥‥。 _| ̄|○
66 名前:デフォルトの名無しさん mailto:sage [04/02/24 14:02.net] >>65 スマン、しばらく見てなかった。 >>56 はwordの最後までを二回ってことだったか。 次のwordだけを、かと勘違いしてた。 って>>62 はそう書いてるな。
67 名前:デフォルトの名無しさん mailto:sage [04/02/25 12:33.net] >>66 >wordの最後までを二回ってことだったか。 わざと曖昧に書きますた。引っかけ問題のようなもので‥‥。
68 名前:デフォルトの名無しさん mailto:sage [04/03/24 03:33.net] 浪なみ
69 名前:デフォルトの名無しさん [04/04/07 03:14.net] age
70 名前:デフォルトの名無しさん [04/04/08 03:12.net] mops for win 希望
71 名前:デフォルトの名無しさん mailto:sage [04/04/10 01:00.net] やっぱ判りにくいよこれ。 LISPはわかったんだが。。。
72 名前:デフォルトの名無しさん mailto:sage [04/04/10 01:09.net] 慣れです。
73 名前:デフォルトの名無しさん mailto:sage [04/04/10 15:58.net] よくわからないけど、 スタック2本あるんだよね? あとWordとExcelが入っているとか、いないとか。 正直よくわからない。
74 名前:デフォルトの名無しさん mailto:sage [04/04/10 16:00.net] それと、気になった事だけど、 >>65 人居ない、なんて連呼してると ほんとに人いなくなるよ もっと前向きに行こうよ
75 名前:デフォルトの名無しさん mailto:sage [04/04/10 20:12.net] 了解。
76 名前:デフォルトの名無しさん [04/04/13 10:13.net] Chuck Mooreってチューリング賞もらってないよね? threaded code発明したのってChuckでしょ?
77 名前:デフォルトの名無しさん mailto:sage [04/04/13 14:34.net] チューリング賞のことは知らないが、 threaded code発明したはChuck Mooreです。
78 名前:デフォルトの名無しさん mailto:sage [04/04/13 21:50.net] threaded codeってそんなに画期的なことなの? Z80で言えば CD xx yy のCDを無くして、メモリ消費が約2/3になるってだけでしょ?
79 名前:デフォルトの名無しさん mailto:sage [04/04/13 23:10.net] www.kt.rim.or.jp/~tyamamot/forthj/threaded-codej.html
80 名前:デフォルトの名無しさん mailto:sage [04/04/13 23:16.net] コードが小さくて速いので多くのVMがthreaded codeを採用している。 昔のプロセッサでは、アセンブリで書いたコードよりもForthのコードの 方が速かったことさえあるという。(伝説)
81 名前:デフォルトの名無しさん mailto:sage [04/04/14 18:53.net] 速いのはいいんだけど、 コード読み書きがしんどいと思わない? 変数とかあまり使わないみたいだから、 フローを初めから追っていく必要あるし。 結局この言語もライブラリ次第かなと思った。
82 名前:デフォルトの名無しさん mailto:sage [04/04/15 00:05.net] 逆ポーランドをむしろ好む人々も結構な数おりますが、 Stack Juggling がコードを読みにくくするという人も います。 Forthコードの見通しを良くするには、他の言語よりも かなり小さな単位でワードを定義するのがよろしいかと。 極端な話、1ワードはせいぜい5行までで記述し、 10行を超えるワードは分割すべきであるとか。 スタックコメントを活用し、小さなTestを繰り返し ながらボトムアップにくみ上げていくと意外に、 スタックだけで問題解決できていたりします。
83 名前:デフォルトの名無しさん [04/04/15 09:40.net] 無限ループから抜け出す方法はありますか? begin...againだと抜け出せないみたいなのですけど。
84 名前:デフォルトの名無しさん mailto:sage [04/04/15 12:08.net] >>83 ループ部分をワードに切り出してexitでワードごと抜けてください。
85 名前:デフォルトの名無しさん mailto:age [04/05/05 21:29.net] 電脳書房の新着案内で「標準 FORTH」入ったっていうから見に行ったら もうsold outですた。はやッ! ちなみに漏れが持ってるFORTH本は「パソコンユーザのためのFORTH入門」 (A.ウィンフィールド著 寺島元章訳 1986年初版) 薄いけど、なかなか渋い良い本です。 ちょっと前まであまりなかったlisp本やsmalltalk本も最近は沢山でてるのにな。 forth本も出版してほしい。
86 名前:デフォルトの名無しさん [04/05/12 00:53.net] dayone
87 名前:デフォルトの名無しさん mailto:sage [04/05/13 01:02.net] 昔からPostscriptが有名なんだからいいんじゃ
88 名前:デフォルトの名無しさん mailto:sage [04/05/13 01:03.net] ぜんぜん関係ないけどAdobeて最初聞いた時 病気の名前かと思った
89 名前:デフォルトの名無しさん [04/05/14 20:43.net] FORTHは、なんか団体が弱いイメージがある。 Adobeが中心になって盛り上げるかしれ。 AdobeってFORTH系言語で一番儲けてる会社だろ?
90 名前:デフォルトの名無しさん mailto:sage [04/05/17 20:13.net] AdobeのPostScriptって、FORTHとは似て非なる言語と聞きましたが。 (詳細はわからないです。ゴメソ) 団体が弱いっつーか、なんつーか、 「コアなマニアは熱狂的にFORTHを支持している」って噂は良く聞くけど、 その「コアなマニア」って一体ドコにいるのよ? って感じですね。 ググっても、今でも熱心にFORTHやってるサイト見つからないんですよね。 (数年全然更新されていないサイトとかは結構見つかる)
91 名前:デフォルトの名無しさん mailto:sage [04/05/17 22:20.net] マニアたちはcomp.lang.forthに巣食ってますが、 web siteは寒い状況。
92 名前:デフォルトの名無しさん [04/05/24 03:49.net] >>41 ムーアさんの思想詳細希望
93 名前:デフォルトの名無しさん [04/05/26 00:58.net] >>90 gforthとか、ベンチマークサイトで活躍してるとこぐらいしか見たことないね。 やっぱ、Schemeに対するSICPや、Perlのラクダ本みたいな有名所の良書が必要なのか。 それとも英雄が必要なのか。
94 名前:デフォルトの名無しさん [04/05/26 16:12.net] >>93 いい本があると、かなり違うかもね。
95 名前:デフォルトの名無しさん mailto:sage [04/05/26 21:19.net] >>92 ttp://www.kt.rim.or.jp/~tyamamot/forth/c4th.html しかしムーアタソは変なものを作るねぇ。 ttp://www.kt.rim.or.jp/~tyamamot/forth/c4th.html
96 名前:95 mailto:sage [04/05/26 21:24.net] 下のリンクは間違い。 正しくは、ttp://www.eforth.com.tw/academy/chips/mup.htm
97 名前:デフォルトの名無しさん mailto:sage [04/05/27 12:58.net] 俺の思うForthの偉い人 Chuck Moore www.colorforth.com/ M. Anton Ertl www.complang.tuwien.ac.at/projects/forth.html Bernd Paysan www.jwdt.com/~paysan/index.html Mike Hore www.powermops.org/
98 名前:デフォルトの名無しさん mailto:初かきこ [04/06/06 06:49.net] 遥か昔のByte誌でForth特集をやってるんですね www.colorforth.com/byte.htm
99 名前:デフォルトの名無しさん [04/06/07 05:18.net] Forthで書かれたCやJavaなんてナンセンス ------------同じ理由で--------------- CやJavaで書かれたForthなんてナンセンス! Forthは問題の解決に役立つツールを素早く作れる だからプロトタイピングにとても向いている GNU Forth? それはそれで結構だけれどね 小気味良く動く本来の持ち味は失われるだろう
100 名前:デフォルトの名無しさん [04/06/07 05:39.net] ANS/ISO標準化は結局のところ草の根Forth処理系を淘汰することにしか役に立たなかった 標準化で潤うのはForth社であり、開発効率が上がると考えた大企業、陸海空軍 やがて草の根の支持を失ったForthは全く廃れた・・・と少なからず思われているようだ www.forth.com/Content/Clients.htm
101 名前:デフォルトの名無しさん mailto:sage [04/06/11 22:26.net] forth で国内ページをぐぐると、トップが厚生労働省ってのが悲しい。 2番目もプログラム言語とは全然関係ないし。
102 名前:ジャパン mailto:I guarantee [04/06/12 13:15.net] 婦女暴行事件 でぐぐると、トップに首相の名が現れる国です
103 名前:デフォルトの名無しさん mailto:sage [04/06/13 04:16.net] forthのソースが読みたいんですけど一番小さいのて何ですかね?
104 名前:デフォルトの名無しさん mailto:sage [04/06/13 05:43.net] >>103 : 2* DUP + ;
105 名前:デフォルトの名無しさん mailto:sage [04/06/13 06:02.net] 移植の参考にしたいという意味ならコア・ワード数を最小限に絞ったeFORTH いろいろな実行環境のソースが公開されているよ 元々は6502用に書かれたFigForthも小さいけどね 辞書構成にさまざまな形式があって、どちらも速度アップの余地ありってところ
106 名前:デフォルトの名無しさん mailto:sage [04/06/13 07:27.net] >105 ありがと しかしアセンブラかきついなぁ
107 名前:デフォルトの名無しさん mailto:sage [04/06/13 09:09.net] >>106 習うより慣れろってやつじゃないの? どれか動くForth系を触りながら中身を調べるって手もあるし しかし、これだけH8が普及しているのに国内で移植したっていう例は無いのかな H8 eFORTHのソースがあるんだから、ほとんどそのままで行けるハズ 関係ないけど、あのHPなんとかならんのかね・・・さくっと削除するとかさ Forth Interest Group, Japan
108 名前:デフォルトの名無しさん mailto:sage [04/06/13 16:52.net] >107 確かにリンクしか存在せず更新もされない研究会てのもあるだけ無駄つうか
109 名前:デフォルトの名無しさん mailto:sage [04/06/13 17:11.net] だいたい本家サイトに無視されちゃってる ↓それに比べてエライ違いですね www.figuk.plus.com/
110 名前:デフォルトの名無しさん mailto:sage [04/06/14 09:13.net] >>103 これなんてどう? コンパクトな方だと思うけど。AVRなら命令セットが素直だし参考ってことで。 www.cqpub.co.jp/toragi/download/2002/TR0209F/TR0209F.HTM ただ、これもそうなんだけど、世に言う「FORTHコンパイラ」は本来の自立した柔軟性に欠けるから手直しがいるだろうね。 本気でやるならATmegaなんかに載せると良さそう。セルフでフラッシュが書き込みできるから。確かH8はそこがサポートされてない。
111 名前:デフォルトの名無しさん mailto:sage [04/06/18 08:23.net] ATMELだと32ビットのARMが出てるね。
112 名前:デフォルトの名無しさん mailto:sage [04/06/18 11:32.net] アセンブラ関わる時点で移植性は捨てねばならん
113 名前:デフォルトの名無しさん mailto:sage [04/06/18 20:45.net] 処理系の移植? 他言語でも移植時のアセンブラ記述はありだと思うけど。 リアルタイムアプリの移植にしてもそうだよね、部分的に使うだけかも知れないけどさ。 Forthでクロスコンパイルって移植技もあるみたいだけど詳しいことは判らないな。
114 名前:103 mailto:sage [04/06/19 02:17.net] Gforthのソース見たけど結構Cで書かれてるね。 ヘタレなオレはCで書かれたForthもどきでも読んでみるよ その前に図書館で見つけたFORTHへの招待でも読んで再勉強。
115 名前:デフォルトの名無しさん mailto:sage [04/06/19 19:22.net] キモは二本のスタックの実装とリンクリストやワードの構成でしょうね。 第三のスタックを使ったりとか、突っ込めばいろいろ奥深いものがありそうだけど。 何種類かあるカーネルの構造について詳しく解説されているページがあって 英文だけどかなり参考になると思う。最小限のアセンブラソース付きです。 www.zetetics.com/bj/papers/
116 名前:デフォルトの名無しさん mailto:sage [04/06/25 00:32.net] あ〜ぁ、放置されちゃってスタックが埃まみれじゃん
117 名前:デフォルトの名無しさん mailto:sage [04/06/27 22:40.net] 昔、漏れが晒したやつはデータスタックとリターンスタックのほかに コンパイル時にジャンプ先アドレスを保存するために使うコントロールフロースタックの 3本構成でつくりますた。
118 名前:デフォルトの名無しさん mailto:sage [04/06/28 14:03.net] >>117 なるほど。コントロールフロースタックって何に使うのかと思ったら、そういう使い方をするんですね。さっそく採り入れてみようかな。 現在JSR型のものをワンチップCPUに移植中。データスタックとリターンスタックのどちらもトップを固定メモリーアドレス上に置いてます。かなり書き進んだところでハタと考えました。エディタは・・・どうしよう?
119 名前:デフォルトの名無しさん [04/07/13 12:39.net] さりげなく関連ページちゃんと書いてあるのな
120 名前:デフォルトの名無しさん [sage] mailto:sage [04/07/13 21:01.net] Amazon.com forth の検索結果:4件 並べ替え: 1. 実用FORTHテクニック入門 西川 利男 (著) 出品者から通常2営業日以内に発送 【マーケットプレイス】 新品/ユースド価格 : ¥1,300
121 名前:デフォルトの名無しさん mailto:sage [04/07/14 07:27.net] 日本語プログラミングコンテスト実行委員会 実行委員長 審査委員会 審査委員長 西川利男(科学ライタ、元工業技術院主任研究官) 実行委員 片桐 明(スクリプツ・ラボ代表)
122 名前:デフォルトの名無しさん [04/07/16 22:20.net] 詳しいひといるう? ワードの仕組み(仕様)教えてよ
123 名前:デフォルトの名無しさん mailto:sage [04/07/16 22:59.net] >>122 あんまり詳しくないけど、どういう処理系のどんなワードの仕様か 書けば答えてくれる人もいるかも。
124 名前:デフォルトの名無しさん mailto:sage [04/07/16 23:20.net] >>123 処理系を作ろうと思っているんですが、辞書から探すのに効率のいい ワードの仕様ってどんなんだろうと 思って聞いたんですけど、 www-lab.ee.uec.ac.jp/text/forth/ ここ参考にしてやってみることにしました。
125 名前:デフォルトの名無しさん mailto:sage [04/07/17 02:43.net] >>124 資料は79年標準仕様のものなので、現在の94年版も併せて参考にするのが良いと思う。 FORGETのように消えているワードがあったりする。DPANS94で検索すると出て来ます。 79年標準はFIG-FORTH 6502版を下敷きにしているから、そのソースも探してみると良い。 スタックの実現や、ワードや辞書の構造は処理系ごとに自由が認められているので 実際のところ自分がスマートだと考える仕様がベスト。
126 名前:デフォルトの名無しさん mailto:sage [04/07/18 19:11.net] crを完全にスペースに置き換えた場合(全てのワードを即時実行にする)、 何か弊害あります?
127 名前:デフォルトの名無しさん mailto:sage [04/07/18 20:57.net] >>125 FORGET は旧式の拡張ワードとして未だ生きながらえているね。 新ワードは MARKER。前もって、MARKER word としてヘッダーを作っておいて 後の実行時に word cr でヘッダー以後のワードを消し去るという使い方。 変数をプログラムメモリと別の領域に置く方式への配慮という感じがする。
128 名前:デフォルトの名無しさん mailto:sage [04/07/18 21:09.net] >>126 即時実行型のFORTHでは過去にGraFORTHを触ったことがあります。 コロン定義なしでDO LOOP文を入力するとリターンキーで実行する。 最初からそういう形の仕様で考えてあれば弊害はないはずですよ。
129 名前:デフォルトの名無しさん mailto:sage [04/07/18 21:56.net] >>128 コロン定義無しっすかあ 厳しいなあ 即時実行するかしないかの1bitスイッチとそれを操作する[,]の2つのワードを作っておいて [ ワード名 命令 ] DEFW なんてやり方も考えてみましたけど 実装がめ、めんどそうやなあ〜 スペースのみで全て即時実行の方がミニマリズム全開でカッチョエ〜とか思いますけど いた仕方ない cr待ちに変えるかあ〜
130 名前:デフォルトの名無しさん mailto:sage [04/07/18 23:29.net] >>129 > [ ワード名 命令 ] DEFW これだったら通常のコロン定義の方がシンプルでは? どうせなら [ 命令 ] DEFW ワード名 とか。 でも即時実行のみでやるなら /ワード名 [ 命令 ] DEFW かな……。 Postscriptみたいだ‥‥‥。
131 名前:デフォルトの名無しさん mailto:sage [04/07/18 23:38.net] >スペースのみで全て即時実行 Forthは基本的にスペースが来たら即時実行という考え方で良いと 思うんですが。 ただ、 ・immediate属性でないワードはコロン定義の間は実行せずにコード生成 ・immediate属性のワードはいつも即時実行 というルールに従っていれば。
132 名前:デフォルトの名無しさん mailto:sage [04/07/19 00:25.net] >>131 やっとimmediateの使い方を理解できました。 シェルと構文解析を同時に考えるから混ざってしまってたのか・・・ >>130 定義されてないワードが来たらワード定義に移るとか考えましたが、 デバッグというか間違えた時しにそうなのでなかったことにします。
133 名前:デフォルトの名無しさん [04/08/17 12:39.net] 今さらながらプログラマーズ ハンドブックをForth社に注文した。 入手できるうちで現在の標準を一番反映したものになっているのだと思う。 オーダー番号は22だったけど、やっぱりForthって超マイナーなのかな?
134 名前:デフォルトの名無しさん mailto:sage [04/08/22 01:06.net] 唯我独尊言語
135 名前:デフォルトの名無しさん mailto:sage [04/08/24 08:37.net] >>134 「どれ一つとして尊くない命はなく、だからこそ尊いというお釈迦様の言葉・・・」
136 名前:デフォルトの名無しさん mailto:sage [04/08/24 18:17.net] 「どれ一つとして尊くないForthはなく、だからこそ尊いというおムーア様の言葉・・・」
137 名前:デフォルトの名無しさん mailto:sage [04/08/24 18:37.net] >>136 パチパチパチ! 君に500 CELL分け与えよう。 500 cells allot
138 名前:134 mailto:sage [04/08/25 20:55.net] >>135-137 そんな高尚なつもりではなかったんだが、 ま、いいか。 Forthを信ぜよ、栄光あれ!
139 名前:133 mailto:sage [04/08/26 06:01.net] 正味5日間でプログラマーズ ハンドブックが届きました。$49.95の価値は十分にあると思う。というか、'94標準FORTHに関してはこれが現実的に唯一のガイドブック。送料は色々選べる中から$11のものをチョイス。(amazon.comでは本のみ$71.35) 肝心の中身はネットに頼って調べているよりも断然良かった。'94標準ばかりが能じゃないけど、どこかで方言がずらりと並ぶワードリストを見たことがあるから、やっぱり標準化は必要悪だったのかも知れないね。
140 名前:デフォルトの名無しさん mailto:sage [04/08/26 09:26.net] >>139 いいなあ。欲しいなあ。
141 名前:デフォルトの名無しさん mailto:sage [04/08/26 13:21.net] ISO/IEC 15145:1997 Informatinon technology -- Programming languages -- FORTH はどうなのよ。あんまり情報がないけど、たぶん'94FORTH。
142 名前:デフォルトの名無しさん mailto:sage [04/08/26 13:48.net] >>141 www.eos.org.eg/web_en/cat/items/d26479.html これだったらANSが出している高い準拠解説書の方が良さそう プログラマーズの共著者の一人は天文台時代からムーアの秘書? をやっていた現Forth Incの社長でdpansの委員長を務めている人物 ・・・だから >$49.95の価値は十分にある かな
143 名前:デフォルトの名無しさん [04/08/30 05:42.net] forthは、下手すっとアセンブラより難しいの こんなの流行るわけないだよ
144 名前:デフォルトの名無しさん mailto:sage [04/08/30 14:57.net] みいちゃんはあちゃんにちゃんで寝るえ〜
145 名前:デフォルトの名無しさん mailto:sage [04/08/30 20:57.net] 電波系が混じってるから下げるしかないね
146 名前:デフォルトの名無しさん mailto:sage [04/09/01 18:19.net] DPANS94ってのはISOのやつとは別物?
147 名前:デフォルトの名無しさん mailto:sage [04/09/01 21:02.net] マイナー言語はISOで定義されたからって それが標準になるわけじゃないんだよな なんのためのISOだよ
148 名前:デフォルトの名無しさん mailto:sage [04/09/11 23:35:50.net] >>146 ネットで公開されているDPANS94は下書きの最終段階のもので、正式な標準ドキュメントはANSIから得るよう公開ページに書かれているね。 実際のところ公開されているものは承認されたものだから、イコール標準ドキュメントとみなして差し支えないと思うけど。 それから、ANS Forth ANSI X3.215:1994 は ISO/IEC 15145:1997と同一だそうです。 forth.com/forth/fph-0.html
149 名前:デフォルトの名無しさん mailto:sage [04/10/07 12:00:14.net] May the FORTH be with you!
150 名前:デフォルトの名無しさん mailto:sage [04/10/09 16:17:30.net] >>149 by Oh! MZ (ねたに反応…、これでいいよね?)
151 名前:デフォルトの名無しさん mailto:sage [04/11/07 19:36:28.net] Fifthは?
152 名前:デフォルトの名無しさん mailto:sage [04/11/07 20:21:10.net] Fifthは腹を切って死ぬべきだ。 また、彼らはただ死んで終わるものではない。 唯一神ムーアが地獄の火の中に投げ込む者達だ。 彼らの支持者も同様だ。 理由はthleded codeを殺すなら自分が死ぬべきだからだ。 詳しい理由はwww.complang.tuwien.ac.at/forth/threaded-code.html で熟知すべし。
153 名前:デフォルトの名無しさん mailto:sage [04/11/07 20:22:02.net] threadのスペルミスった....orz
154 名前:デフォルトの名無しさん mailto:sage [04/11/08 23:35:14.net] >>151 最新版 ttp://www.runesoft.co.jp/soft/r16_fifthaile.html
155 名前:デフォルトの名無しさん mailto:sage [04/11/10 22:13:43.net] なんかすごい展開になってるな
156 名前:デフォルトの名無しさん mailto:sage [04/11/11 22:16:08.net] lispはlisper、 rubyはrubyist、 pythonはpythonian、 ではFORTHを使う人はなんと呼ばれるのでしょうか?
157 名前:デフォルトの名無しさん mailto:sage [04/11/11 23:07:00.net] >>156 Jedi
158 名前:156 mailto:sage [04/11/12 22:06:36.net] >>157 こんなカコイイ答えが返ってくるとは思わなかったのでびっくりです。
159 名前:デフォルトの名無しさん mailto:sage [04/11/13 08:44:06.net] FORTHの暗黒面とはなんでしょうか、お師匠様。
160 名前:デフォルトの名無しさん mailto:sage [04/11/14 22:38:00.net] >>159 ... スタック?
161 名前:デフォルトの名無しさん mailto:sage [04/11/15 21:46:00.net] それはムーアの無用の用の有用のヨーダ
162 名前:デフォルトの名無しさん mailto:sage [04/11/19 22:41:18.net] Forthは米国では根強い人気がある、と言われてるのに、 amazon.comの言語カテゴリにはForthが無いんですけど、、
163 名前:デフォルトの名無しさん mailto:sage [04/11/21 21:32:11.net] Forthを日常的に使っている方っていますか? どんな用途に使ってますか? #個人的興味のために作ってる、、ってのが一番多いかな #自分がそうだし
164 名前:デフォルトの名無しさん mailto:sage [04/11/21 22:11:10.net] 仕事で毎日Postscriptプリンタ使ってます。 って冗談はともかく、最近は趣味以外の用途には ほとんど使われてないんじゃないの?
165 名前:デフォルトの名無しさん mailto:sage [04/11/21 23:30:57.net] とりあえず処理系のコアの部分だけ作って、 1 2 + . とか入力したら 3 って表示されて、 「わーい、動いた〜」とか言って安心してあとは放置、 ってパターンが一番多い希ガス。 処理系のコアだけ作るなら、そこそこ実力あるプログラマーなら簡単。 ただ実際、実用に使うとなると、C言語使えば済むから、 わざわざ FORTH を実用レベルまで完成度を高める気がしないんだよね。 8ビット機時代みたいに、 まともな高級言語のコンパイラが個人では入手困難だったころには、 比較的簡単に作れる FORTH って魅力的だったんだけど。
166 名前:デフォルトの名無しさん mailto:sage [04/11/23 04:39:05.net] www.gihyo.co.jp/books/syoseki-contents.php/4-7741-2177-0 Forthは出てこないが、中身は仮想スタックマシンの作り方だよ。 著者は文系出身の女性。中田センセとの2ショットあり
167 名前:デフォルトの名無しさん mailto:sage [04/11/23 09:20:06.net] Forth本て少ないよね。 っていうか、ここ15年ほど出てない、、 昔「標準FORTH」って本持ってたけど捨ててしまったorz
168 名前:デフォルトの名無しさん mailto:age [04/11/27 23:36:10.net] 4th
169 名前:デフォルトの名無しさん mailto:sage [04/11/30 05:17:34.net] >>166 スレ違いです。 氏ね
170 名前:デフォルトの名無しさん mailto:sage [04/11/30 07:47:33.net] どうせ過疎スレなんだし堅い事言うなよ。
171 名前:デフォルトの名無しさん mailto:sage [04/12/05 12:16:00.net] 過疎なるがゆえの矜持ですよ
172 名前:デフォルトの名無しさん mailto:sage [04/12/10 21:28:17.net] スレタイの並びの意味がやっとわかった
173 名前:デフォルトの名無しさん mailto:sage [04/12/30 21:50:26.net] え、どういう忌み?
174 名前:デフォルトの名無しさん mailto:sage [05/01/03 15:53:10.net] あれだ、2chって新スレとか上がったスレが上に来るだろ。 これこそまさにスタックというやつだ。
175 名前:デフォルトの名無しさん mailto:sage [05/01/03 20:36:46.net] 2chはtopのスレ以外にもアクセスできるから、スタックではないだろう。
176 名前:デフォルトの名無しさん mailto:sage [05/01/07 23:50:07.net] オフセットするんでいいんでない
177 名前:デフォルトの名無しさん mailto:sage [05/01/08 09:59:50.net] スレはpop出来ないじゃないか。
178 名前:デフォルトの名無しさん [05/01/13 09:38:30.net] Naoさんのページの新着情報に、"Thinking Forth"が公開され(てい)るという情報が。 わーい。これから読みます。 一応URL貼っておきます。 thinking-forth.sourceforge.net/ Naoさんいわく、「本物の名著」だそうで。
179 名前:デフォルトの名無しさん mailto:sage [05/01/13 21:52:52.net] 読んだらおせてください。
180 名前:デフォルトの名無しさん mailto:age [05/01/21 00:05:42 .net] >>43 が気になるage
181 名前:デフォルトの名無しさん mailto:age [05/01/22 02:17:00 .net] 人来い
182 名前:デフォルトの名無しさん [05/01/22 18:57:50 .net] ou
183 名前:デフォルトの名無しさん [05/01/23 09:49:26 .net] 4TH
184 名前:デフォルトの名無しさん mailto:sage [05/01/29 19:53:43 .net] じぇぢ
185 名前:デフォルトの名無しさん mailto:sage [05/02/06 06:52:57 .net] PIC18forthを作ったヒトがいるらしい。Pythonで書いたっていうけど forthはforthで書くのが正しいんじゃなかったっけ? ttp://lists.rfc1149.net/pipermail/picforth/2005-January/000279.html
186 名前:デフォルトの名無しさん mailto:sage [05/03/09 21:12:32 .net] >forthはforthで書くのが正しいんじゃなかったっけ? ?
187 名前:デフォルトの名無しさん mailto:sage [05/03/10 08:17:06 .net] forth環境自身に移植用のツールやらが入ってるのさ。
188 名前:デフォルトの名無しさん mailto:sage [2005/03/29(火) 20:41:02 .net] あ そういうことですか
189 名前:デフォルトの名無しさん [2005/04/06(水) 20:19:05 .net] forthの仕組みがわかるサイトないですか
190 名前:デフォルトの名無しさん mailto:sage [2005/04/08(金) 13:08:38 .net] >189 ttp://www.forth.org/
191 名前:デフォルトの名無しさん [2005/04/08(金) 22:07:02 .net] forthには呆れた
192 名前:デフォルトの名無しさん mailto:sage [2005/04/08(金) 22:22:18 .net] 認知症ですか
193 名前:デフォルトの名無しさん mailto:sage [2005/04/11(月) 01:13:26 .net] 日本の FORTH 界の総本山 www.forth.go.jp/
194 名前:デフォルトの名無しさん [2005/04/22(金) 21:22:42 .net] FORTH使えねえ・・
195 名前:デフォルトの名無しさん [2005/04/22(金) 21:23:16 .net] FORTHでまともなアプリ作ってみろよ あんのか?
196 名前:デフォルトの名無しさん mailto:sage [2005/04/23(土) 11:58:23 .net] 君が使ってるマザボのBIOSの半分ぐらいはforthの可能性があるな。 あと、君がPSプリンタ使ってればpostscriptという形でforthが動いているわけで。 組み込み世界ではわりと普通に使われてますが何か?
197 名前:デフォルトの名無しさん [2005/04/23(土) 12:59:24 .net] 嘘ばっか ソース晒してみろよ PSはFORTHじゃねーし
198 名前:デフォルトの名無しさん mailto:sage [2005/04/23(土) 18:04:23 .net] www.answers.com/topic/forth-programming-language ほい。とりあえずSunがSparcシリーズのBIOSの記述に使ってるらすぃ。 あとASUSが採用してたはずなんだが、すぐに出てこなかった。 あと、PostScriptとforthの関係性な。 c2.com/cgi/wiki?ForthPostscriptRelationship
199 名前:デフォルトの名無しさん mailto:sage [2005/04/23(土) 18:11:18 .net] ググってやっと見つかったのか お疲れさん
200 名前:デフォルトの名無しさん mailto:sage [2005/04/23(土) 18:45:38 .net] >ソース晒してみろよ 組み込みソフトなんてのはネジと同じ単なる部品。 どこの世界に「ウチはxxのネジを使ってます」なんて言いふらす自動車屋があるってんだよ。 バカかこいつ(w
201 名前:デフォルトの名無しさん [2005/04/23(土) 18:54:35 .net] その言い訳はマイナー言語全般で使えるね 参考になるよ
202 名前:デフォルトの名無しさん [2005/04/23(土) 18:56:09 .net] で、組み込みとPS以外は無いの?
203 名前:デフォルトの名無しさん mailto:sage [2005/04/23(土) 21:17:09 .net] 無かったら何?
204 名前:デフォルトの名無しさん [2005/04/23(土) 21:37:02 .net] FORTH使えねえ・・
205 名前:デフォルトの名無しさん mailto:sage [2005/04/23(土) 21:52:22 .net] お前には使えねえ・・
206 名前:デフォルトの名無しさん [2005/04/23(土) 22:23:51 .net] おめえは使えるのか? だとしたら、何か一発、でかい事しようぜ?!
207 名前:デフォルトの名無しさん [2005/04/23(土) 22:41:36 .net] Forthって予約語とか命令とかってどれくらいあるの? 簡単なスタック計算機なら作ったことあるんだけど、どれくらい拡張するとForthになるんだろう。
208 名前:デフォルトの名無しさん [2005/04/23(土) 22:44:52 .net] スタック計算機って、おめえ、1 2 + とかだろ? そんなんじゃプログラミング言語とはいえねえわな。 その形式で制御文とか関数定義考えたこたあるか?
209 名前:デフォルトの名無しさん [2005/04/23(土) 22:45:20 .net] アプリってなんだ
210 名前:デフォルトの名無しさん [2005/04/23(土) 22:48:00 .net] >>208 > そんなんじゃプログラミング言語とはいえねえわな。 もういいからそこらへんで冷たくなってろ
211 名前:デフォルトの名無しさん mailto:sage [2005/04/23(土) 23:02:44 .net] >208 数字が出たら、素直にスタックに積んで、 トークンが出たら、変数領域を参照して、あったらスタックに積んで、 なかったら、命令領域を参照してあったら、命令にスタックそのものを渡して計算させる。 命令と変数は基本的にstd::mapを使ってコールバックの形などで実現する。 whileとかの解析で思考が詰まってたところだよ。 いっその事、字句解析機もコールバックに渡してしまおうとおもってた。 字句解析には、BOOST::tokenizerを使う。 スタックに積む形式はBOOST::anyあたりがいいかなーと、バリアント変数好きの自分は考えていた。 辞書作成(実質サブルーチン)はちょっとてまかかりそうだけど、evalっぽいの実装すればいけそうだとか考えてた。 とかとか、漠然と考えたことはあるんだけど、実行効率は落第点だろうね。
212 名前:211 mailto:sage [2005/04/23(土) 23:07:40 .net] 素材はもちろんC++ アプリにくっつけて、Forthスクリプトもいいかなーとか妄想してる。
213 名前:デフォルトの名無しさん mailto:sage [2005/04/23(土) 23:30:54 .net] そして誰もいなくなった。
214 名前:デフォルトの名無しさん [2005/04/23(土) 23:40:47 .net] FORTH使えねえ・・
215 名前:デフォルトの名無しさん mailto:sage [2005/04/23(土) 23:55:35 .net] がんばれ
216 名前:デフォルトの名無しさん [2005/04/24(日) 00:04:53 .net] なんでもちろんC++なのかねえ。 普通アセだろ?こんなの
217 名前:デフォルトの名無しさん mailto:sage [2005/04/24(日) 00:45:22 .net] 土日らしいな
218 名前:デフォルトの名無しさん mailto:sage [2005/04/24(日) 08:22:03 .net] >>211 FORTHへの招待 ,Harry Katzan,Jr. 池野信一監訳 近代科学社 1600円 ISBN4-7649-0082-3 C3050 読んでみればFORTHの実装がどれだけお手軽か分かる。 絶版なんでOPACで持ってる図書館を探してくれ。
219 名前:211 mailto:sage [2005/04/24(日) 15:41:48 .net] >>216 アセンブラできません。(笑 趣味グラマなんで。 >>218 ずいぶん古い文献のようですね。1984年か。 僕、2歳かな・・・。なんだか感慨深いですね。
220 名前:211 mailto:sage [2005/04/24(日) 16:48:33 .net] 地元の図書館の検索ページ行ってみたが、ないな。 僕の手が届く(自作できそうな)処理系ってbarinf*ckとforth位なんだよなー。 構文解析作るの面倒だし、うーん。
221 名前:デフォルトの名無しさん mailto:sage [2005/04/24(日) 17:02:19 .net] >>220 県内の図書館は大抵連携していて他館のも借り出せるから、 他の図書館も探すべし。 (県内図書館の横断検索システムが大抵ある。) 最悪でも国会図書館から地元の図書館へ借り出せる。 (ただし館内閲覧のみ)
222 名前:デフォルトの名無しさん mailto:sage [2005/04/24(日) 19:52:47 .net] >>221 詳しいんだね。 それで、県の横断検索でもみつかったけど大学の図書だ。 こういうのも横断して借りれるのかな。ちょっと躊躇してるけど、試してみようかな。 Thx! #しかし便利だな。この検索方法。
223 名前:デフォルトの名無しさん mailto:sage [2005/04/24(日) 21:05:06 .net] Forthなんか自作しても誰も褒めてくれないよ Lispにしとけば?
224 名前:デフォルトの名無しさん mailto:sage [2005/04/25(月) 18:34:25 .net] 別に人に褒めてもらうために処理系作るわけじゃないし。
225 名前:デフォルトの名無しさん mailto:sage [2005/04/25(月) 21:02:47 .net] Forthなんか自作しても誰も使わないよ Lispにしとけば?
226 名前:デフォルトの名無しさん mailto:sage [2005/04/25(月) 21:20:05 .net] やけに伸びてると思ったら‥‥。 >>211 >whileとかの解析で思考が詰まってたところだよ。 FORTHの場合、多くの制御構造はbranchと0branch (無条件相対ジャンプと条件ジャンプ)命令を実装したら FORTH自身で作れる。 >>218 の本とか読んでみなされ。 あと、遠い昔にForth(というかMops+自作Lib)で作った 「メモ帳アプリもどき」のソースを晒しときますね。 ttp://gdsz.hp.infoseek.co.jp/cgi-bin/yukiwiki/yukiwiki.cgi?mycmd=read&mypage=mNote
227 名前:211 mailto:sage [2005/04/26(火) 20:43:23 .net] ttp://www-lab.ee.uec.ac.jp/text/forth/man/man.html こういうの発見。 意外とC並みのことができそうな感じ。 でも、スクリプトとしてはあんま必要なさそうなのが結構あるなー。 一つのスタックにdoubleとintを混在させる方法が結構面倒そうだ。 やっぱ、Boost::anyかなぁ・・・。any使っとくとその後の拡張が楽そうだな。(Win方面のハンドルとか。) うーん。 トンカチを持ってる人はすべての問題が釘に見えるっていうのがあるけど、 なんかそんな感じに陥っていそうな感じだ。 どうしよ。 >>226 オブジェクト指向のforthかな?? マニュアルないから、パラメータの意味がわかりにくいな。(引数とかとか。) でも、ちゃんとアプリできてるのはすごいと思う。 適当なOS向けの拡張ってどうやってやるんだろう。 Boost::anyにハンドル類を突っ込むしか思い当たらない・・・。 スタック何本いるんだろ。3本かな・・・?? というか、キューとかにしちゃってもいいのか??
228 名前:デフォルトの名無しさん mailto:sage [2005/04/28(木) 19:20:51 .net] ホンダガラッタ ヘンダガラッタ フンダガラッタ フン!フン! エッグマンが現れた。
229 名前:デフォルトの名無しさん mailto:sage [2005/04/28(木) 23:40:24 .net] > 一つのスタックにdoubleとintを混在させる方法が結構面倒そうだ。 実数は実数スタックに積むんじゃね?
230 名前:デフォルトの名無しさん mailto:sage [2005/04/29(金) 12:19:01 .net] はぁ?ナニ言ってんのおまえ
231 名前:デフォルトの名無しさん mailto:sage [2005/04/29(金) 13:09:33 .net] >>229 は正しい事言ってるんだけど。FORTHとして。 FORTHの言語仕様をろくに確認しないうちに、 思い込みで作り始めてる香具師がいるわけで。
232 名前:デフォルトの名無しさん mailto:sage [2005/04/29(金) 18:05:54 .net] >>231 =229 はぁ?ナニ言ってんのおまえ
233 名前:デフォルトの名無しさん mailto:sage [2005/04/29(金) 20:55:41 .net] このスレはもうだめぽ。
234 名前:デフォルトの名無しさん mailto:sage [2005/05/01(日) 01:45:08 .net] >>227 C言語レベルでオゲーなら、↓こんな所からコードを読んでみるのは、いかがでせぅか? T4th eshop.advanet.co.jp/formmail/t4th.html GForth www.jwdt.com/~paysan/gforth.html GikoForth gikoforth.s13.xrea.com/gikoforth.html T4thは正確にはモドキらしいけど、日曜プログラミング程度で突付ける程度の気楽さですよ。 > 適当なOS向けの拡張ってどうやってやるんだろう。 ぱっと思いつくのは、Win32 APIのLoadLibraryとGetProcAddressを呼び出す ワード(命令)を用意すれば いいんじゃないかな?と。 >というか、キューとかにしちゃってもいいのか?? STLのstackも確かqueueの特殊系だったので、それで良いと思いますよ。 (上のはCで実装しているけど、まぁ似たような感じだし)
235 名前:227 mailto:sage [2005/05/01(日) 04:00:31 .net] 先日brainf*ckを自作してみたら、大体C++のクラスで150行位になった。 僕が保守できる限界がこれ位なだよなー。結構ヘタレ。 >>234 thx! あまり長いソースはよんだことないからなー。 1000行はちょっと長いね。まーいいか。 地道によんでみます。 >ぱっと思いつくのは、Win32 APIのLoadLibraryとGetProcAddressを呼び出す >ワード(命令)を用意すれば いいんじゃないかな?と。 うまいまわし方はわからんけど、簡単そうですね。 >というか、キューとかにしちゃってもいいのか?? どうしてこんなこといっちゃったんだろう。 意図忘れちゃった。(汗
236 名前:227 mailto:sage [2005/05/02(月) 21:43:03 .net] www.uploda.org/file/uporg88200.lzh スタック電卓作ってみました。 形にはなってない感じですが・・・。 とりあえず、ソースはまだカオス化してないはずなので興味があるなら読んでみてください。 変数等は使えません。辞書も無理。 拡張は、クラスStackCalcのenumのTokennumを必要数増やして、 メソッド、Doの中にあるstd::stringのtoken[]に命令文を追加して、 switch文に新しい数字を増やして、 新しいメソッドを書くだけ。 こんなに簡単。(笑 扱いはMain.cppを見てください。 エラー処理はほぼしてないです。 あー、これをどれだけ拡張すると、forthになるのやら。 制御構文がネックだなー。Boost::tokenizerはバックして解析できないみたいだし・・・。 あと、ファイルは二日ほどで消える予定です。
237 名前:236 mailto:sage [2005/05/02(月) 21:46:48 .net] あ、URLのh抜くの忘れてた。
238 名前:デフォルトの名無しさん mailto:sage [2005/05/08(日) 03:21:28 .net] 保守上げ
239 名前:デフォルトの名無しさん [2005/05/08(日) 03:28:55 .net] 保守上げ。リバイバル。
240 名前:デフォルトの名無しさん mailto:sage [2005/05/10(火) 22:55:12 .net] Forth さばいばる
241 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 23:05:01 .net] いや、ぜんぜん生き残ってないし
242 名前:デフォルトの名無しさん [2005/05/18(水) 19:40:57 .net] 三回転半腰捻り腰痛対策age
243 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 04:28:13 .net] S-Langはスタックベースの言語なんだね。 でも構文見るとまるでCだ。
244 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 05:14:52 .net] SLangの少ない日本語ページ mizotec.s27.xrea.com/slang.html genjo9.lit.let.hokudai.ac.jp/keita/read.cgi?S-Lang&l=jp
245 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 03:08:40 .net] あれ? ここってforthスレだよねぇ〜・・・(謎
246 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 03:24:28 .net] fifth
247 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 23:58:45 .net] ミットコンッドッリアアアッァァアァァァァァァァァァァァアアアアアァァァァア。 age
248 名前:デフォルトの名無しさん [2005/06/05(日) 23:59:43 .net] うぉぉおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおぉぉぉぉぉぉりゃぁぁぁぁぁぁぁぁぁぁぁぁあぁぁぁっぁぁぁっぁぁぁぁぁっぁぁぁぁ age
249 名前:デフォルトの名無しさん mailto:sage [2005/06/06(月) 04:47:43 .net] ttp://www.retroforth.org/
250 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 07:23:13 .net] ttp://stackempty.info
251 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 21:25:18 .net] ↑ブラクラ と書かれると嫌だろ? ちゃんと何のリンクかぐらい書けや
252 名前:デフォルトの名無しさん mailto:sage [2005/06/22(水) 14:44:53 .net] サーバーが見つかりません
253 名前:デフォルトの名無しさん mailto:sage [2005/06/22(水) 21:45:27 .net] と書かれると嫌だろ? ちゃんと何のリンクかぐらい書けや
254 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 15:05:46 .net] 数年前の記事ですが... I Hate Forth ttp://embedded.com/story/OEG20010731S0028 I Love Forth ttp://embedded.com/showArticle.jhtml?articleID=9900308
255 名前:デフォルトの名無しさん mailto:sage [2005/09/02(金) 18:54:36 .net] ムーアさん、亡くなった?
256 名前:名無しさん@そうだ選挙に行こう mailto:sage [2005/09/11(日) 20:49:19 .net] そんな話聞いた事無いけどな。 Dr. Moogなら亡くなったが。
257 名前:デフォルトの名無しさん [2005/11/09(水) 00:49:06 .net] hoth
258 名前:デフォルトの名無しさん mailto:sage [2005/11/12(土) 02:24:58 .net] こんだけ過疎な理由はなんだ? Forthの悪いところでも晒していこうぜ。 ちなみにおれはアセンブラより難解だと思ってる一人だぜ。
259 名前:デフォルトの名無しさん [2005/11/12(土) 06:28:32 .net] 俺はPythonやJavaより読みやすいと思ってる一人だぜ.
260 名前:デフォルトの名無しさん [2005/12/07(水) 02:41:39 .net] 何か話題ないのか
261 名前:デフォルトの名無しさん mailto:sage [2005/12/07(水) 10:20:28 .net] FORTH にある ROT って つまり age のことだよね? 最近やっと気付いたよ w
262 名前:デフォルトの名無しさん mailto:sage [2005/12/07(水) 22:57:42 .net] : age ROT ;
263 名前:デフォルトの名無しさん mailto:sage [2005/12/07(水) 23:57:33 .net] sage は SWAP でいいのかな? : sage SWAP ;
264 名前:デフォルトの名無しさん mailto:sage [2005/12/08(木) 02:35:14 .net] やっぱり : foo bar ; より /foo { bar } def の方がわかりやすいなあ : を imdsw_on ; を imdsw_offとかにすれば ちょっとはわかるような わからんか
265 名前:デフォルトの名無しさん mailto:sage [2005/12/10(土) 01:54:03 .net] FORTHは全部が後置記法に統一されてないのがちぐはぐで嫌
266 名前:デフォルトの名無しさん [2005/12/16(金) 14:42:09 .net] age
267 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 19:51:11 .net] >>265 FORTHの中の人の事情がいろいろ表に出てきてるから。 事情がわかると「なるほど」と思う。
268 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 20:26:43 .net] >>265 硬いこというなよ。普通の言語だって演算子の優先順位とかあるじゃんか。 ソースも1文字ずつ後ろから読んでたら面白かったのに>forth
269 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 22:34:35 .net] 前から後ろから
270 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 08:06:49 .net] でも入口と出口は一緒 pushしてpop 「おめでとうございます。元気な男の子ですよ」
271 名前:デフォルトの名無しさん [2005/12/17(土) 10:33:36 .net] interlog
272 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 12:43:43 .net] そこで、swapしちゃいます
273 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 13:46:53 .net] HTROFに改名しますた
274 名前:デフォルトの名無しさん [2006/01/07(土) 18:05:41 .net] 自然数 N が与えられたとき、 1 から N までの数字を N 個並べる組み合わせをすべて 列挙するプログラムは Forth で書くとどうなりますか? 例えば N = 3 のとき 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 となるようにです。 よろしくおながいします。
275 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 23:31:47 .net] ゅしほ
276 名前:デフォルトの名無しさん [2006/03/05(日) 10:04:15 .net] >>27 のリンク先で 「WORDというワードは呪われた代物で、無いほうがよい」っていうのはどういう意味かね。 ほとんど表記法を変更する目的でしか使われないからかな。
277 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 16:17:17 .net] 訳注に書いてあるとおり。 プログラムの可読性を損ねるからだと思われ。
278 名前:http://www.vector.co.jp/soft/win95/util/se072729.html mailto:http://msdn2.microsoft.com/ja-jp/library/h2k70f3s.aspx [2006/03/18(土) 22:15:13 .net] TextSS のWindowsXP(Professional)64bit対応化おながいします もしくは64bitにネイティブ対応したテキスト置換ソフトありますか? そういや64bitにネイティブ対応している2chブラウザてありましたっけ?
279 名前:デフォルトの名無しさん mailto:sage [2006/03/30(木) 18:03:27 .net] 手軽に手に入る唯一のFORTHチップ? www.offete.com/ep32book.html
280 名前:デフォルトの名無しさん mailto:sage [2006/03/30(木) 18:17:19 .net] オライリーの表紙に龍はないだろ
281 名前:デフォルトの名無しさん [2006/05/02(火) 18:58:48 .net] >>274 こんな感じか? たぶんもっと美しいやり方があるのだろうが、ヘタレの 俺にはこの程度しかわからん。 variable x 0 x ! : make.stack 1+ 1 do i loop ; : clean.stack x @ 0 do drop loop ; : fn recursive dup 2 = if drop .s swap .s swap else >r r@ 0 do J 1 - fn J 1 - roll cr loop r> drop then ; : show.all dup x ! dup 0 = if ." Error" drop else dup 1 = if .s else cr make.stack dup fn drop then x @ clean.stack then ; 3 show.allとかやってみて。
282 名前:デフォルトの名無しさん [2006/05/18(木) 11:40:06 .net] Thinking FORTH を CCL で日本語化するプロジェクトが進行中。 本日作業分担を大まかに決める予定。 日本FORTH研究会の会報をPDF・オープン化することも本日の議題。 LL Ring! Language Update に出るか否かも本日決定? 第3世代 FIG JAPAN 立ち上げたいなぁ。
283 名前:274 mailto:sage [2006/05/18(木) 12:01:42 .net] >>281 激しくありがとうございます
284 名前:デフォルトの名無しさん mailto:sage [2006/05/18(木) 16:13:05 .net] >>282 期待age
285 名前:デフォルトの名無しさん [2006/05/18(木) 16:13:50 .net] sageいれちまった... orz
286 名前:デフォルトの名無しさん mailto:sage [2006/05/18(木) 16:19:51 .net] というか日本支部生きてたのか(w
287 名前:デフォルトの名無しさん [2006/06/01(木) 02:25:15 .net] >>286 生きてません。本家FIGでもリンクがなくなっています。 とはいえ、三世代FIG-JAPAN設立構想も検討中。
288 名前:デフォルトの名無しさん mailto:sage [2006/08/09(水) 18:37:34 .net] LL Ringに参戦するようだが、勝算はどれくらいだろう?
289 名前: mailto:sage [2006/08/23(水) 21:25:38 .net] Windows上で動くFORTHってない? DOS窓で動くやつじゃなくて、APIとか叩けるやつ。
290 名前:デフォルトの名無しさん mailto:sage [2006/08/30(水) 06:22:31 .net] つ win32forth
291 名前:デフォルトの名無しさん mailto:sage [2006/08/30(水) 08:50:36 .net] LLRing乙でした。
292 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 23:05:33 .net] FORTHマンセー
293 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 16:45:01 .net] 最近話題無いの?
294 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 22:50:10 .net] back and forthです。
295 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 22:51:33 .net] joyとかの話する?
296 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 13:32:14 .net] 今更forth使ってる人は自分で問題解決できる人ばっかだからなあ
297 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 07:31:20 .net] >>296 解決できない俺はどうすれば・・・
298 名前:デフォルトの名無しさん mailto:sage [2006/10/26(木) 00:39:00 .net] 質問すればいいんじゃねえの?! しかしこのスレ 2年以上経つのにまだ300行ってないのか
299 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 22:20:47 .net] なんかニュースないの?
300 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 22:26:12 .net] >>298 >2年以上経つのにまだ300行ってないのか FORTHプログラム張りなんだぜ?
301 名前:デフォルトの名無しさん mailto:sage [2006/11/28(火) 05:56:22 .net] test >>261-265 >>266 ,267
302 名前:デフォルトの名無しさん mailto:sage [2006/11/29(水) 12:28:15 .net] : hoge foo bar ; { foo bar } hoge def #コードブロック * foo bar hoge def #なし
303 名前:デフォルトの名無しさん [2006/12/09(土) 03:15:37 .net] age factorcode.org/
304 名前:デフォルトの名無しさん [2006/12/10(日) 21:07:56 .net] 虎擬の新年号付属基板に移植するプロジェクト
305 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 05:05:37 .net] >>301 おばかな流れにワロス
306 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 04:43:44 .net] a
307 名前:デフォルトの名無しさん [2007/02/27(火) 19:51:33 .net] b
308 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 20:28:16 .net] FORTH のすごいところは 対話型の言語でありながらコンパイラだってとこじゃないのかなぁ…
309 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 20:57:50 .net] forthの凄いところは2スタックマシンと辞書による入れ子構造だと思う。
310 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 12:31:00 .net] (・∀・ )っ/凵 ⌒☆ VisualForthマダー?
311 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 12:34:49 .net] >>310 ムーアたん自ら開発済み。 www.colorforth.com/index.html
312 名前:デフォルトの名無しさん [2007/03/30(金) 06:30:41 .net] 最近のCPUって、プログラムの自己書き換えができないとか聞いたけど、 そうだとするとFORTH実装するのつらいよね。
313 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 07:48:32 .net] たしかに今も昔もCPUの回路は自分で変更できないな。
314 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 23:27:06 .net] メモリ書き換えればいいじゃん >312
315 名前:デフォルトの名無しさん mailto: [2007/03/31(土) 16:33:43 .net] >>314 最近のCPUってもコードキャッシュに先読みしたりしているから、 下手にメモリを書き換えると、先読みしたコードと、実際のメモリのコードが一致しなくなる。 ので、正常に動作しなくなったり、パイプラインにペナルティが発生して、動作がおそくなったりするらしい。 FORTHって、新しくワードを追加すると、自分自身が大きくなっていくような言語だから、 そこらへんどうすればいいのかわからない。 だれか教えてくれんかな。
316 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 05:04:00 .net] FORTH以前にコンピュータの基礎知識が混乱してるな。
317 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 12:54:31 .net] >>316 FORTHの事、知らないだろ。
318 名前:デフォルトの名無しさん [2007/04/01(日) 13:11:17 .net] >>313 VBばっかり使ってないで、ハーバードアーキテクチャとノイマンアーキテクチャの違いに付いて勉強しろよ(w
319 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 16:33:44 .net] 最近だとこの関係でJITコンパイラとXDビットでも問題になってましたな。 JIT関係にノウハウありそうだけど、良く判らん
320 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 05:03:35 .net] べつに何の困難もないと思うけどな。 パラメータスタックなんて自由度の低いポインタみたいなもんじゃん。
321 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 23:18:58 .net] なんかよくわからんけど、問題になりそうなのは、既存ワードの書き換え時だと思うので、 ワード書き換え→キャッシュをフラッシュ でいいと思う。
322 名前:デフォルトの名無しさん [2007/04/23(月) 23:27:41 .net] いかにForthでも、線路を作りながら電車を走らせるようなことはありません。 ワードをコンパイルした後、そのワードを実行するまでには 少なくとも実行ワード名を読み込むI/Oプロセスが介在するので、 人間にとっては一瞬でも、機械には一服する余裕があります。 あと、Forthのワードのオーバーライドは、 関数型言語によくあるようにプログラムの全体についてそのワードの定義を更新するのではなく、 再定義後に読み込まれる部分についてしか効果がありません。 後から遡って定義を変更できるようにするには、 初めから特別な方法で定義しておくようになっています。 こんな感じでどうでしょう。
323 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 06:20:31 .net] forthの人気のなさは異常
324 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 23:36:56 .net] 異常だな。〜 if 〜 then 〜 else のせいだったりするんかね? ……forthに何があったらもっと流行るかな?
325 名前:sage [2007/04/24(火) 23:53:34 .net] て、むしろ正常ってこと?
326 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 23:24:51 .net] Forthを使いたいと思う人より、Forthの処理系を造りたいと思う人の方が多そうな予感
327 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 07:13:54 .net] 自分もForthを作っているクチ 毎日、Forthでプログラム作ってるぜ!って奴はいますか?
328 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 08:55:54 .net] ど素人の趣味なので毎日はしませんが、Forth系じゃないコードはほとんど書きません。 むしろForthでForthを作れば良いのではないかと思います。
329 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 12:17:29 .net] >328 Schemeみたいに最低限のプリミティブを用意して、それからForthを組むようにしたら面白いかもね。 Lispだとこんな感じか。 ttp://ja.wikipedia.org/wiki/LISP#.E6.9C.80.E5.B0.8F.E3.81.AELISP Forthの場合、スタック関連の操作、代入、分岐、Immediate、postponeぐらいで 実装できそうな気がする
330 名前:328 mailto:sage [2007/04/30(月) 21:27:11 .net] >>329 古典的なForthみたいにですね。 昔はアセンブリで書いた核の部分は、今はCでいいですからね。 ただ、何を核にすれば必要十分なのかについて、あまり資料がないですね。 四則演算と論理演算(ビット操作)もあった方がいい気もしますが、どうなんでしょう (Lispは四則演算はいらない?)。 gforthはそういうやり方らしいですけど、 実行速度のためCで書き込むプリミティブを多めに取ったと書いています。 はじめ漠然と考えていたのは、間接スレッディングのforth環境の上でネイティブ方式のforthを頭から書いてしまう というようなことでした。Executableフォーマットのファイルを作るのが結構面倒ですけど。 そこまでしなくても、Cのダイナミックライブラリとのインターフェイスがforth上で書ければ、 ほとんど何でもforthでできるんですけどね。 逆に言えば、マシンやOSの低レベルの仕様を調べないと派手なことをするのは難しいので、 そこが難点かも知れません。 もともとforthは言語仕様自体は貧弱なので、 アプリケーション毎に自前の言語を組上げていくみたいな面白さもあります。 インプットストリームも弄れるので、シンタックスまで変更できますし。 それがあまり面白がられていないということですかね。
331 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 09:02:05 .net] 昔、近所の古本屋で標準FORTHを100円で保護したのだが、捨ててしまった。漏れの馬鹿。 ところで、Beginning Forthを注文した。米国からなので2週間くらいかかりそう。
332 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 22:37:02 .net] Forthはともかく資料不足。よって今更ながら英語の入門書をもう一個: ttp://www.mpeforth.com/books.htm 『Programming Forth』 - Stephen Pelc et al.
333 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 04:42:21 .net] 汎用で考えるとやっぱり今どきスタックは32ビット長ですよねえ。 そこで移植にお勧めの埋め込み用32ビットプロセッサって何がありますか? I/Oがたっぷり用意されているので遊べるかなって思いますがどうでしょう。
334 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 20:39:30 .net] パフォーマンス優先ならSHじゃね? 最近秋葉でも手に入りやすくなったし。 FORTHコンパイラをアセンブラでガリガリに書きたい人なら アセンブラが書きやすいH8かな。
335 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 19:20:03 .net] φ(。。) めもめも
336 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 20:54:14 .net] HDLだけでFORTHは作れる?
337 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 13:07:14 .net] >>336 作れるみたいですね やってみたことないけどw ttp://www.ultratechnology.com/chips.htm この中のMicroCoreって初めて知りました ttp://www.microcore.org/
338 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 16:12:13 .net] joyの話しようぜ
339 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 23:22:38 .net] 後で読む: i386 / Linux 向け Forth コンパイラの作り方。 ttp://www.annexia.org/_file/jonesforth.s.txt
340 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 15:51:44 .net] CでForthの処理系を書いてみた。 GCにはBoehm GC、辞書にはJudy Arrayを使ったので ほとんど手間がかかっていないわりに速かった。 まだ単純な処理しか出来ないけどrubyとかより速いかも。
341 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 00:15:24 .net] ささやかな期待
342 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 19:36:42 .net] rubyより遅いforhtなんてあるのか?
343 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 19:51:26 .net] >>342 rubyで書けばいいんじゃね?
344 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 17:21:13 .net] >>343 激しく楽しくない気が
345 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 19:36:18 .net] >>340 GC?
346 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 20:36:49 .net] >>345 Garbage Collector でそ。
347 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 22:29:09 .net] (forthに)GC? てことじゃないか?
348 名前:345 mailto:sage [2007/10/03(水) 23:33:04 .net] >>347 フォローありがとうございます。 >>346 すみません。347さんの線でお願いします。 どう使うのかなあ?と。
349 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 15:23:24 .net] concatenative
350 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 11:41:29 .net] " hoge" は汚なく感じるな "hoge" か " hoge " だろと
351 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 01:35:58 .net] www.forthfreak.net/index.cgi?ForthBestPractices Programming guidelines when you start doing forth programming: * try to keep your words to one line, two lines max * try not to pass more than 3 items on the stack to a word, preferably only 2 * try not to juggle more than 3 items on the stack within a word if you can
352 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 17:49:19 .net] FreeBSD 6.2 では boot loder の動作を コントロールするために ficl という forth が使われていて るので、勉強中です。 FreeBSD のサーバーをリモートから管理しています。 以前のバージョンでは nextboot(8) で別ディスク上のカーネルを 次回のみテスト的に起動する設定ができたのですが、今のバージョン 6.2 では nextboot(8) では同一ディスク内のカーネルのテスト的起動しかできません。 二台のディスクがついているマシンのそれぞれのディスクに別々にOSを インストールして、交互にアップデートをかけたいのです。 リモートからのコントロールしかできないので、ssh のアクセスができなく なると一万円払ってOS再インストールなので そんなわけで、forth のcodeを見ているのですが、難しいです。 orz FreeBSDのloader 改造したりしている人はいませんか?
353 名前:デフォルトの名無しさん [2007/11/03(土) 19:38:03 .net] いまふ
354 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 11:53:19 .net] dsForthがアドエスで動くのはガイシュツ?
355 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 04:23:01 .net] notガイシュツ
356 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 13:50:29 .net] このスレの人たちが使う電卓はRPLだったりするの?
357 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 15:03:59 .net] HPの電卓?
358 名前:356 mailto:sage [2008/01/27(日) 17:17:11 .net] >>357 そうです。RPNの間違いでした。
359 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 18:59:27 .net] HP41CV,HP28,HP48SX,HP32S,と使ってきましたよ。 ちなみに今使っているHP35は問題大あり!
360 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 10:12:19 .net] Adobe高速JavaScript実装、バイトコードにForthを採用 journal.mycom.co.jp/news/2008/02/07/011/index.html
361 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 15:34:36 .net] LLVM涙目
362 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 21:52:21 .net] 単なるスタックベースのVMなだけじゃないの? JavaVMとか既存のVMと一緒でしょ
363 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 22:40:23 .net] 急に某ゲーム機上で動くforthが作りたくなって>>339 が挙げてるやつ読んでるんだが(まあこれはi386用だけど)、わかりやすいなこれ 実を言うと今までforthはあまり理解してなかったけど、モヤモヤしてたことがすっきりしてきた しかしforthってシンプルで美しいなぁ Lispやsmalltalkに負けないと思うのに、このマイナーさ…
364 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 00:09:41 .net] concatenative languageあたりをキーワードにWebをさまよってみると良いよ。 joy factorあたりが面白いかね。おいらも俺言語作成中。
365 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 00:24:42 .net] factor は良いねぇ。秘かに期待している。
366 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 11:50:59 .net] 基本的に 1.stackの一番上と二番目の値に対して演算 2.stackの一番上だけ取り除く 3.stackのn番目と一番目を交換 の機能だけがあると思ってていい?
367 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 07:10:53 .net] concatenativeに? それならスタックに対する関数適用だけかな
368 名前:デフォルトの名無しさん [2008/03/20(木) 14:28:46 .net] forthのコメントってもしやforthで書かれてる? ( コメント ) ←これ
369 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 15:22:35 .net] >>368 実装にもよるけど、 ワード ( を読むと、フラグが立って、ワード ) まで無視する。 Forth で書いてある、ってこういう意味ってことでいいのかな?
370 名前:デフォルトの名無しさん [2008/03/20(木) 15:50:12 .net] >>369 いやなんかマクロみたいな機能を使って書かれているのかなーと forth知らないので全然分かんないんですけど 要するに↓みたいにforth言語で書かれているのか?ってことです : ( hoge hoge ... ;
371 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 20:15:20 .net] 『標準FORTH』だと pp.166 にある。 : ( 29 WORD DROP ; IMMEDIATE 29 は ')' のコード WORD はスタックトップと同じキャラが出てくるまで入力を読んで、 その先頭のアドレスをスタックトップに置くワード。DROP は説明の 必要ないな。IMMEDIATE は直前に定義されたワードを、 イミディエイトワードにするワード。 C マガジンのきだあきらさんの連載『千言万語』の Forth の時に 紹介してたネタだったような気もする。
372 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 20:16:04 .net] 千言万語単行本にならねーかな
373 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 21:37:32 .net] 追加。 イミディエイトワード、というのが、プログラムの実行時ではなく 読み込み時に意味を持つワードなので、マクロのような機能と 言えるかもしれません。
374 名前:デフォルトの名無しさん [2008/03/21(金) 07:42:46 .net] >>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 .net] 仮に ( がイミディエイトワードで無かったとすると、 : hoge ほげほげ ( ほげほげ ) ; とか書いた場合に、hoge の定義の一部として、実行される部分になって しまいます。定義中でも直ちに実行されるワードがイミディエイトワードです。
376 名前:デフォルトの名無しさん [2008/03/22(土) 10:18:31 .net] >>375 なるほど 理解した。サンクス
377 名前:デフォルトの名無しさん [2008/03/27(木) 22:38:05 .net] 最近、Concatenativeな言語というもの目にしたんでage
378 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 00:23:41 .net] なんか酷いのみつけてきたwwwww ちょっと草植えときますね型言語 Grass www.blue.sky.or.jp/grass/doc_ja.html スタックマシン使ってるってだけみたいだが(俺には良く分からん)
379 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 10:36:35 .net] forth厨はなんでもかんでもスタックマシンにするな
380 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 02:09:52 .net] 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 .net] あれ?factorの新しいの入れたら日本語出なくなった エンコード関係?
382 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 14:10:30 .net] factorソースから入れるのめんどくさいな・・・ gitなんて初めて知ったよ
383 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 17:56:33 .net] 何か面白い話無い?
384 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 11:05:57 .net] スタック1本で動作する処理系作れ
385 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 16:18:58 .net] バロースのメインフレームはシングルスタックなんだぜ?
386 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 18:37:49 .net] wikipediaより > スタックを1つしか持たないスタックマシンは、 > 計算モデルとしては非常に弱い。例えば、1-スタックマシンでは、 > 0n1n(0の並びの後に同じ個数の1が並ぶ言語)のような単純な言語も認識できない。 > 1-スタックマシンの計算能力は、有限オートマトンよりも高いが、 > 決定性プッシュダウン・オートマトンよりも低い。 > 一方、複数のスタックを持つスタックマシンはチューリング機械と等価である。 > 例えば、2-スタックマシンでは、チューリング機械をエミュレートできる > (チューリング機械のヘッド位置から左側のテープをひとつのスタックが代替し、 > 右側のテープをもうひとつのスタックが代替する)。 へぇ〜
387 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 00:50:58 .net] factorのドキュメント消えてら
388 名前:デフォルトの名無しさん [2008/08/01(金) 21:55:57 .net] 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 .net] Vはこっちのページも code.google.com/p/v-language/
390 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 03:04:06 .net] Forthの実装中sage 実装法のドキュメント付きで晒すかも
391 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 04:01:08 .net] forthって、引数の数ミスるだけで崩壊するよな >>390 どんな俺フォースを見せてくれるんだい? 誰もいないしここ、日記帳のつもりで使ってくれよ。
392 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 06:07:26 .net] 久々にレスキタワァ*・゜゚・*:.。..。.:*・゜(n‘∀‘)η゚・*:.。. .。.:*・゜゚・* !!!!!
393 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 08:44:15 .net] >>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 .net] 過疎っぷりに見てる人もいないと思ったら、意外といたのね。 >>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 .net] Forth は実装が簡単だって聞いてたんで、 自分も作ってみようとちょっと調べたんだけど、 仕組みがよく分からなかったし(ワードの定義とか)、 規格に沿った物にしようとすると意外に仕様が大きくて、 挫折しますた><
396 名前:390 mailto:sage [2008/08/05(火) 23:09:27 .net] >>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 .net] >文字列はヌル終端しない代わりに文字数を記憶する これは正当だと思う。ヌル終端がどれだけのバグを生み出しているか……
398 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 21:05:50 .net] 実装としては文字列をヌル終端にしても可。 但し、文字数は必要、かつ、 ヌル終端を当てにしたコードを書いても一般には動く保証なし。 が規定の内容と思われます。他の規定も同様。
399 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 19:23:22 .net] ASCIIZはねーよマジで
400 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 16:38:27 .net] でも、C言語で作られたプログラムとの連携したいときは、NUL文字終端がいいよね。 C言語で作られたプログラムの数の多さ、便利さから言うと、無視できないなと。
401 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 18:30:35 .net] Cは捨てるのがよろしいかと。 C++をbetter Cとして使う方がまだましだと思う。 C++を使えないようなリソースのキツい環境で使うんだったらforthを直書きした方が良いんじゃね?
402 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 00:15:50 .net] >C++をbetter Cとして使う それ最悪
403 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 00:15:21 .net] 402 と同感だが、better Cとして使うのは FORTH 実装にはない(価値が少ない)だろ。 自己学習として作るならまだしも、 FORTHに期待される動作環境だったらアセンブリレベルの設計が必要だろ。 C++使うならC++的設計をしろって。
404 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 00:31:36 .net] forthチック俺言語のプロセスが回った記念カキコ。 forthだと引数管理がけっこう面倒だと思うけど、wordの名前に 引数の数の情報を盛り込んだら楽にならんかね? 俺言語ではこんな感じでドットの数=引数の数にしているんだけど、どう思う? 1 2 ..sum 1 2 3 .:sum 名前の衝突も起こりにくくなって一石二鳥かと思うんだけど。
405 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 09:31:38 .net] ドット打つのがひたすらめんどくさそう ifだと.:ifになるの?
406 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 21:05:33 .net] こういう風にしたらどう? ・引数可変のワードは # で始まることとする ・ワード [ は現在のパラメータスタックポインタの値を リターンスタックに積む ・ワード ] は現在のパラメータスタックポインタの値と リターンスタックポインタのトップの値の差から パラメータ数を計算しパラメータスタックに積む たとえば [ 10 20 30 ] #sum と書くと、#sum実行直前にはパラメータスタックは 10 20 30 3 となっていて、#sumは3つの数の和を求めればいいことがわかる。
407 名前:404 mailto:sage [2008/08/27(水) 22:38:18 .net] >405 そこは構文糖使った方がよろしいかと (a ? b ! cの三項演算子とか) >406 それも考えたけど、そうするとConcatenativeのメリットが死ぬんだよね。 できるだけ前の計算結果に依存しないように考えると、セパレータのようなものを スタックに積むのは良くないので、ワード単体で引数までを意味するようにしたい、 ということですな。
408 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 02:39:56 .net] prologみたいにsum/3みたいにするとか。 よく判ってないが。
409 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 17:01:15 .net] 引数管理しなきゃいけないようなコードの構成だと崩壊しそう
410 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 03:11:26 .net] しばらくforthやってたら他の言語がいじれなくなってて驚いた。 のめり込むのは危険だなw
411 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 03:16:06 .net] >>407 そのセパレータってリスト終端のnullに相当するから あながち間違ってないと思う。
412 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 21:54:56 .net] concatenativeの論理を詰めて行くと、 スタックの機構はコード設計のための因子から外されるのかも。
413 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 22:34:55 .net] >411 Wordの中でWordを呼ぼうとすると破綻するよ。 >412 結局はトップを基点とした対称性(みたいなもの)になるからな。 対称性があれば何でもOK
414 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 00:29:26 .net] スタック型プログラミング言語の最少命令セットを探して Whitespaceに辿りついたのですが、 これよりも言語仕様的に小さいスタック型言語ってあります?
415 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 01:55:39 .net] define call return conditional jump push pop これだけで足りるかな?
416 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 07:09:50 .net] callに条件をつければjumpも省けるんじゃないか?
417 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 03:17:37 .net] それより、ひと目で何やってるか判るforth作ってくれないかな。 >>54-65 とか何やってるのかわからん。 記号覚えればいいんだろうけど。 : は定義っぽいということは文脈で判った。許す。 >rとかr>は何かと。 ;は文の終り? LISPでいう 'a は (quote a)です、みたいに特殊記号をあまり使わずに 誰が見ても大体判るように、平易な形にならないかな。
418 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 17:56:08 .net] >>417 : word でワードの定義開始、;で定義の終端 >r,r>はリターンスタックへのプッシュとポップ >>54 の括弧内はそのワードを実行するとデータスタックの状態がどう変わるかをコメントで表している 他の言語と違って裸のスタックが丸見えなんよ
419 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 02:22:08 .net] リターンスタックに何をプッシュ(とポップ)するの?TOSの内容ってこと? >rとr>って判りにくいと思う。 一瞬で見分けられないというか。 不等号ちがうんかと。 記号使わずに全部記述的にできないかな。 mindとかそんなのかな。
420 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 03:00:42 .net] わかりやすい文法が欲しいのならforth系はあきらめた方がいいと思うよ
421 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 06:08:32 .net] : pushTOStoReturnStack postpone >r ; immediate : popFromReturnStackToTOS postpone r> ; immediate
422 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 12:26:50 .net] 自分も420に賛成する、forthは裸の2スタックマシンのアセンブラと思えばいいんだけど、それがつらいとちょっときついと思う ただ、それがインタラクティブ環境を作るあたりと小さな核で構築できるのが非常に面白いのでがんばって覚えてみてよ。 逆に言うと簡単にぶっ壊れるとも言う
423 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 16:59:48 .net] Cとかの他の言語の常識持ち込もうとしてるヤツいないか? 「Forthではこう書く」ってのに納得いかないなら 悪いことは言わんから、使うのやめとけ
424 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 17:54:20 .net] スタックっつうのはあくまで機械にやさしいものであってユーザーフレンドリーなものじゃないしな
425 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 18:38:23 .net] 頻繁にスタックを意識しないといけないのは悪いForthコード
426 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 20:05:40 .net] 正直アセンブラの方が楽だよ
427 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 20:24:33 .net] 慣れると気持ちいいよJoy。forthは知らんけど
428 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 20:29:08 .net] >426 Forthは仮想スタックマシンのアセンブラだから、 (仮想)マシンの理解度によるだろな。
429 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 22:29:45 .net] いや、もっと視認しやすい記号セットを使ってくれって話だろ。 ハイライトできるエディタで単語登録するか、トランスレータでもかますのがいいと思う。
430 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 23:01:49 .net] ところでリターンスタックって別に必要なの? 普通のCPUは1本だよね。 スタックに対して相対アドレッシングがないからってことかな?
431 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 23:57:29 .net] >419 >rとr>は確かに見た目がわかりにくい。 よほどのことが無い限り使わない。 localがあれば要らない。 >430 呼出しのときにデータスタックで直接パラメターを渡すためでしょう。
432 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 00:00:27 .net] >>430 普通のアーキテクチャだと関数呼び出しのスタックにパラメータも突っ込んじゃうけど forthはデータのpushと関数呼び出しの戻りアドレスが入るスタックが別なんよ。 っていうか別だから面白いことができるので、一緒だったらループとかで涙が出そうだと思う。
433 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 00:10:21 .net] SP, BPレジスタに相当するものがあれば良いのでは
434 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 17:45:11 .net] リターンスタックとデータスタックが一緒だと、 リターンアドレスを壊さないようにデータをいじるのがメンドイ。 リターンアドレスが詰まれている位置を避けるようにして スタックをアクセスしなきゃいけないから。 それはSPとBPがあってもメンドイことに変わりはない。
435 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 19:46:33 .net] >>430 まあ、便利だから? 実装としてはバローズのメインフレーム見たく演算とリターン アドレス保存を一本のスタックでこなすものもあるよ。
436 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 21:37:24 .net] factorだともうひとつスタックあるよ
437 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:25:44 .net] データスタックとリターンスタックがないと チューリングマシンと等価じゃないらしいぞ
438 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 00:17:09 .net] >>437 等価じゃないとはよく聞くけど、等価じゃないとする説明ってどっかにないですかね。 それで実用で困ることありますかね。
439 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 01:12:05 .net] 今理解した。 リターンスタックってそのままBP相当じゃん。 ほんとはBPポインタ一個あれば十分だよね? 素直にBPを持たずにわざわざリターンスタックなんて用意してるのは、 スタックマシンと言えなくなるからかね。 なんだかなあ。
440 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 03:10:12 .net] BPあってもメモリがないとな
441 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 03:49:49 .net] 今理解した。 BPってそのままリターンスタック相当じゃん。 ほんとはリターンスタックあれば十分だよね? 素直にリターンスタックを持たずに、わざわざBPなんて用意してるのは、 レジスタマシンと言えなくなるからかね。 なんだかなあ。
442 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 07:20:41 .net] >>437 メモリアクセスできない純粋なスタックマシンなら、スタックが二本ないと チューリング等価ではないかも知れないが、FORTHはメモリアクセス @ ! が あるから、たとえスタック一本であってもチューリング等価じゃね? 考えてみればわかるが、メモリアクセスがあるとスタックの本数を自由に増やせる。 FORTHとスタックマシンとConcatenative言語は、それぞれ別の概念で、 単純に等号で結べないから、何について話しているのか意識しないと混乱すると思われ。
443 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 09:51:29 .net] ForthのVMとしては、 論理的には最低限二つの区別されたスタックがある。 標準的な実装での利点(v.s.スタックフレーム方式)は、 サブルーチン間でのデータのコピーが減らせること。 スタックフレーム一本でやるのはCとかでも標準的な実装だけど、 VMという同じ抽象度で比べれば、Cにはスタックは無い。 VMが実装できれば機械自体の仕組みはどうでも良い。
444 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 13:26:57 .net] 込み入った話は分からんけど、 とりあえずBF書けたらチューリング完全じゃなかったっけ?
445 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 14:12:31 .net] なんか話が噛み合ってない気がする。
446 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 15:11:57 .net] なんでそこまでチューリングマシンにこだわるのかわからん。 Forthがチューリングマシンであろうとなかろうと Forthで実用的なプログラムは書ける。 あともう一人、やたらリターンスタックを排除したがる奴も 何をしたいのかさっぱりわからん。
447 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 17:47:31 .net] まず当たり前の大前提の確認からだけど、Forthはチューリング完全だから。 仮にForthの仕様からリターンスタックだけを排除したとしても(それはForthとは呼べないだろうが) チューリング完全だ。理由は>>442 リターンスタックがBPで代用できるとか正直意味わからん。 スタック演算自体理解してない希ガス。
448 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 18:27:08 .net] リターンスタックという名前がいかんのだろ。
449 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 18:35:04 .net] >>437 スタックオートマトンとスタックマシンをごっちゃにしてる気がする。
450 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 18:39:13 .net] >>448 むしろリターンスタック以外の名前があるなら知りたいものだが。
451 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 19:02:41 .net] >442 大雑把にはこんな感じかね。 ・データスタック: 引数&戻り値 ・リターンスタック: 実行する命令列(辞書で展開された単語含む) リターンスタックというよりもオーダースタックといった方がちょうど良い気がするけどね
452 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 19:25:44 .net] リターンアドレスを積んでいるからリターンスタック それでいいと思うが、難しく考えすぎじゃね?>>451
453 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 19:28:44 .net] Aスタック←→Bスタック だったら勘違いが起きなかったと思う。
454 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 19:34:19 .net] >>453 むしろ勘違いを引き起こしそうなんだが。 リターンスタックが難しいんじゃなくて、 リターンアドレスをスタックに積むという 当たり前の関数呼び出し規約を説明しなければ、 理解されない時代になったということか…
455 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 21:59:43 .net] なんでリターンスタックの名前で混乱とか勘違いがあるの? ひょっとして、リターンと聞いて戻り値を連想しちゃう人がいる、とか? だとしたらかなりキビシい状況だな。
456 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 01:09:11 .net] カールスタックの方が一般的じゃね?
457 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 01:09:52 .net] あ、カールじゃなくてコールスタック
458 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 01:24:45 .net] カールはスナックだな
459 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 07:35:22 .net] カールと言えば薄べったいのが出てることを最近知った。 従来品に比べて口の裏に張り付きにくいのはメリットだが、 少し物足りない気がした。
460 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 11:21:56 .net] Forth では昔からリターンスタックと呼んできたので、その伝統に則ればいいと 思うんだけどな。Wikipedia だと項目はコールスタックで立てられているが。
461 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 12:10:36 .net] コールスタック->カールスナック->コーンスターチ->張り付かないならカールじゃない 勉強し過ぎでしょう。
462 名前:461 mailto:sage [2008/10/06(月) 12:30:27 .net] 補:そもそもForthが一般的じゃない
463 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 21:49:04 .net] ・リターンスタックが普通のCPUで言うとことの「スタック」。 ワード(Cで言うところの関数、実際にはサブルーチン) を呼ぶと呼び出し戻るためのアドレスを積む。 # 普通のCPUでCALL命令(68系だとBSR、JSR)を実行すると # リターンアドレスがスタックに積まれるのは理解しているよね? ・データスタックってのは、言ってみれば「無限に増えるアキュムレータ」って感じ。 ・「辞書」が命令コードストレージ、C言語でいえばTEXTセグメント Forthの本質は上記3点をおさえて置けば理解できるんだが。 BPがリターンスタックと等価なんて言ってる人とか、 >・リターンスタック: 実行する命令列(辞書で展開された単語含む) >リターンスタックというよりもオーダースタックといった方がちょうど良い気がするけどね なんて言っている人、本当に理解できてるの?
464 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 00:25:52 .net] >463 いや、別にWORDがサブルーチンである必要はないんじゃない?WORD毎の環境要らないんだし。 Cとの相性を考えるとサブルーチンにした方が良いと思うけど。 あと、CPUのアーキテクチャには疎いんだけど、最近のCPUでスタック持ってるのってあったっけ?
465 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 06:15:51 .net] x86アーキテクチャには思いっきりスタックポインタがありますが? >>464 のいう「最近のCPU」が非ノイマンアーキテクチャとかを指すなら スタックがないCPUもあるかも知れないけど。
466 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 06:37:45 .net] >>464 前半は実装と仕様が混乱してそう。 後半は、たぶん、CPUの「レジスタアーキテクチャ」「スタックアーキテクチャ」と データ構造としてのスタックを混同している。 Wikipediaやblog読んで理解した気にならないで実際に自分で手を動かしてみなよ。 ちょっと恥ずかし過ぎるぞ、あんた。
467 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 12:34:16 .net] >>464 の言ってる「スタック」はハードウェアスタックのことと思われる。 >>463 の 「データスタックってのは、言ってみれば「無限に増えるアキュムレータ」って感じ。」 ってのは、確かにハードウェアスタックを思わせる記述だが。
468 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 13:28:27 .net] post,preのincやdec付きレジスタ間接参照命令があればデータスタックと等価だよね? リターンスタックってのはサブルーチンコール時に戻りアドレスをpushする為のレジスタの事でしょう? なら今時のCPUで無い物の方が珍しいと思うんだけど
469 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 20:49:02 .net] x86って俺の生まれる前からあるな。 定年過ぎた方には最近なんでしょうけど。
470 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 21:09:44 .net] 定年過ぎて無く立ってプロセッサ自体30年の歴史しかないじゃないか
471 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 21:36:31 .net] 最近のCPUは古いアーキテクチャのものがほとんどだよね。 細かいところは違うんだろが。 >>468 >戻りアドレスをpushする為のレジスタ レジストリって意味? RISCだと、戻りアドレスを保存するレジスタがあること多いよね。 まあ、リターンスタックは、 リターンアドレスを積むため専用(原則)のスタック ってことがわかれば、いいじゃない。 データスタックと別にある利点もわかってるわけでしょ。 本当は「リターンスタックがあること」じゃなくて、 データスタックが複数のワードを横断して固定されていること、 の方が特徴だよね。 普通の言語の実装だと、 データスタックがサブルーチンごとに別々にリターンスタックの中にあって、 受け渡すデータはコピーする、 という感じなわけだ。比喩的に言えば。 アセンブリレベルでもリターンアドレスのpush/popが自動になってるなら、 気付かない人がいてもしょうがない。
472 名前:464 mailto:sage [2008/10/07(火) 23:32:13 .net] >465 いや、スタックポインタ(レジスタ)じゃなくてスタック。>467 の通りですな。>463で『アドレスを積む』とか 書いているからHWスタックのことかと思った。 スタックを内部に持つCPUの話があった記憶があったので勘違いしたわ。すまんね。 forthあんまり詳しくないんで済まんのだけど、『リターンスタックには、ワードを呼ぶと呼び出し戻るため のアドレスを積む』んだっけ? 正規化の観点からは『まだ実行していないWORD』もリターンスタックに積めた方が便利だと思うけど。 WORDコンパイルの実装で手が抜けなくなるし……
473 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 23:56:37 .net] >>472 意味が理解できん。 「まだ実行してないWord」を積む、って具体的に何を積むの? まだ実行してないワードのアドレスなら辞書に入ってると思う(関節スレッディングの場合)
474 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 04:22:01 .net] >>469 いまでも現役バリバリで使われていて マイクロソフトの最新OS「VISTA」がポーティングされる x86アーキテクチャが「最近のCPU」では無いとでも? あるいはCore2DUOとかがX86アーキテクチャじゃないとでも思ってる?
475 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 06:31:12 .net] >>472 Forthと関係なく、関数の呼び出し元に戻るためにアドレスをスタックに積む、 という動作は、アセンブリレベルでは普通の関数呼び出し規約。 Forthは言語レベルでリターンスタックを操作できる言語だけど、 普通は意識しなくてもいいから、リターンアドレスが何のために存在しているのか 理解できない人がいても不思議じゃないけど、せめてもう少し自分で勉強して欲しい。
476 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 06:35:19 .net] >forthあんまり詳しくないんで済まんのだけど、 とか、逃げをうたず自分で触ってみろよ。
477 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 14:37:36 .net] 441だけど盛り上がってるね。 自分なりのまとめ。 リターンスタックはBPとcall/retの役割がある。 call/retを他の命令で書くと ・関数の呼び出し push $LNEXT jmp func $LNEXT: ・関数のret pop ecx ; $LNEXTのアドレスがecxに入る jmp [ecx] ・関数のはじめ push ebp mov ebp, esp ・関数のおわり mov esp, ebp pop ebp こうなる。 つまりBPはリターンスタックのトップと同じ。 BPを基点にすればデータスタックだけでも同じ事ができる。 「ボクが考えたforth」ではリターンスタックは必要ない。
478 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 18:17:31 .net] >>441 =477 それを実際に作って発表したら いままで君をバカにしていた連中にギャフンと言わせられるよ。 ガンバ。
479 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 18:47:05 .net] で、その「ボクが考えたforth」では、 パラメタはどうやって渡すんだ?
480 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 19:05:03 .net] どう考えても普通にCALL/RETした方が速そうだけど わざわざ面倒くさくしてどうするの? あと、ENTER/LEAVEとか使わないの
481 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 21:00:40 .net] >>477 もはやどこから突っ込んで良いものやら… 二つほど疑問が。 一つ目。 >>479 も言ってるけれど、その実装だとパラメタの受け渡しが面倒そうなのだが。 たとえば、その実装方法で、 : foo drop drop 3 4 5 ; 1 2 foo としたときにスタックがどのように変化していくのか書いてみてくれ。 解決方法を考えられなくもないが、たぶん独立したリターンスタックが あるほうがシンプルだと思われ。 二つ目。 リターンスタックを操作する命令はどうやって実装するの? これも独立したリターンスタックがあるほうがシンプルだと思われ。 forthじゃない何かをつくろうとしているのだろうか?
482 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 21:16:43 .net] 二つ目用の問題も書いておくよ。 : bar 1 2 3 >r >r 1 + r> r> ;
483 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 23:38:28 .net] 混乱してるようだから、 まず、ネイティブの場合とスレッディングの場合を分けて考えた方がいい。 ネイティブForthで自然な実装では、 SP=リターンスタックポインタ(RSP) BP=データスタックポインタ(DSP) となってる。 UNIX/Cの普通のスタックを知ってれば、機能的な対応は明瞭なはず。 リターンスタックが伸びても、DSPは別フレームに移らないのがForthのポイント。 ちなみに、Forthでも局所変数が使えるヤツがあって、 その局所変数には、リタースタック中にフレームを作って割り当てるのが普通。 これも、標準のスタックがわかってれば意味は明瞭。 スレッディング(直接・間接)方式だと、 呼出しはCallじゃないから、 BPをRSPにしてもかまわんが、 パラメタとリターンアドレスの混合は、 Forthでは無謀。動的にチェックが必要な上に、完璧にはできそうにない。
484 名前:464 mailto:sage [2008/10/09(木) 01:15:39 .net] 446です。 forthは興味半分で使ったレベルでしかないですね…… concatenative俺言語の設計の参考にしているぐらいです。 >473 リターンスタックを「次に実行する命令の列」という形に抽象化すると、「現在処理中のWORD」と 「ソースコードを解釈したWORD」「Dictionaryに保持されているWORD列」…つまり呼び出されて いないWORDを対称(等価/交換可能)に扱うことができるようになるので、バーチャルマシンの 構造を簡単化することができるかと思います。 ……forthで許されているのかしらんけど。
485 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 06:24:10 .net] リターンスタックに積んであるリターンアドレスは、 「これから実行される命令列」へのポインタそのものと見なせるから、 そのアイデアが新しいとは思えないけどな。 Forthぐらいバーチャルマシンの実装が簡単な言語もないし。 ただ、リターンスタックの意味がよくわからないままに、 他の言語のように抽象構文木を再帰的に処理するような 実装にしていると、リターンスタック操作の実装で悩むの かもしれない。
486 名前:464 mailto:sage [2008/10/09(木) 08:54:40 .net] >485 >463は呼び出したWORDを積むことを前提にしているし、>451 >472で言ってるのが >463 >473で 思い切り否定されてるので、forthじゃそういう考え方無いのかな、と思った。 もしforthでもそういう使い方しているんだったらおいらの不勉強だね。
487 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 10:46:32 .net] >>486 485のいってる意味は、 スレッディング方式のforthでは、 辞書は実行されるワードのポインタのリストとみなせるわけで、 リターンアドレスというのは、辞書内への戻りアドレス、 つまり、これから実行されるワードのリストへのポインタといえる ということと思われる。 ワードのポインタを直接リターンスタックに積み込むような、 インストラクションキャッシュみたいな仕様のリターンスタックの実装は、 ちょっと聞いたことが無い。 というかそれじゃリターンスタックじゃない。
488 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 20:52:04 .net] 487の言わんとすることを俺なりに解釈してみる… : foo dup + ; : bar foo drop ; bar の処理中に foo を実行するときに、 foo の次の drop のアドレスをリターンスタックに積む。 それで、foo の実行終了時にリターンアドレスから戻り先を取る。 これが、さっき積んだ drop のアドレスということ。 で、「drop のアドレス」っていうのを「ポインタ」と呼んでいる。
489 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 21:08:57 .net] fooが呼ばれたときのリターンアドレスは 「dropのアドレス」というより 「dropの直前のアドレス」だ。 微妙なニュアンスに聞こえるかもしれないが。 : bar foo ( ここ ) drop ; ( ここ ) と書いた部分に戻ってくる。
490 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 21:12:38 .net] : foo dup + ; : bar dup * ; : baz foo ( ここ ) bar ( そこ ) ; foo が呼ばれたときリターンスタックには( ここ )が積まれてる。 bar が呼ばれたときリターンスタックには( そこ )が積まれてる。 bar というワード自身がリターンスタックに積まれているのではない。
491 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 21:16:04 .net] ついでに >>56 のリターンスタックを使ったパズルの説明でも書いておこう。 問題は、 : foo twice ." Hello" ; で、 HelloHello を出力する twice を定義しろというパズル。
492 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 21:22:30 .net] 解答は、 : twice r> dup >r >r ; 何が起きているか説明すると、twice が呼ばれたとき、リターンスタックには、 : foo twice ( ここ ) ." Hello" ; 上の( ここ )が積まれている。 twice は最初に r> を実行して、( ここ ) をリターンスタックからデータスタックに移している。 次の dup で ( ここ ) がデータスタックに二つ積まれた状態になる。 最後に、 二つの >r で ( ここ ) が二つリターンスタックに戻される。
493 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 21:27:12 .net] さて、定義されたワードの終端に到達したので Forthは、 リターンスタックからリターンアドレスを一つ取り出してそこに戻ろうとする。 : foo twice ( ここ ) ." Hello" ; ↑これの ( ここ )に戻ってくるわけだね。 そして、Helloを出力する。 そしてまた定義されたワードの終端に到達するので、Forth は リターンスタックからリターンアドレスを一つ取り出してそこに戻ろうとするわけだ。 つまり、もう一度 ( ここ ) に戻る。 もう一度、Helloが出力されたら、次にリターンスタックからpopされる リターンアドレスは foo を呼び出したアドレスなので、ここでようやく、 foo の実行が終了することになる。
494 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 21:29:45 .net] リターンスタックに積まれているリターンアドレスは、 次に実行すべきワード単体ではなくて、 それ以降、実行すべきコード全体の先頭を指し示すアドレスだ、 と、理解できたかしらん?
495 名前:488 mailto:sage [2008/10/10(金) 00:34:56 .net] (ここ) は分かってるつもりなんですが、 メモリアドレス的に的確に伝えるには難しいような気が。。。 : baz foo ( ここ ) bar ( そこ ) ; 16bitアドレス環境として、スレデッドコードで考えると、 (ここ)は foo のアドレスと同じか、それとも +1 でしょうか? # foo のアドレス +2 すると bar のアドレスですよね なんかアホなこと言っているようですみません。
496 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 00:55:01 .net] >>495 「barのアドレス」と書くとbazの定義の中のbarの呼び出しのあるアドレスなのか、 それともbar自身の定義のアドレスなのか混乱するから、 ( ここ ) と表現したわけで、その違いがわかってるなら問題ないですよん。 あとポインタってわかるよね?
497 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 01:03:18 .net] >>495 その言い方で言えば、(ここ)はbarのアドレスですね。 正確には、bazの定義の中のbarのアドレス。 >>490 での例を少し補って、 : foo dup + ; : bar ( あっち ) dup * ; : baz foo ( ここ ) bar ( そこ ) ; と書けば、「barというワード自身」というのは( あっち )のことになる。
498 名前:496 mailto:sage [2008/10/10(金) 01:20:54 .net] >>497 補足ありがとう。 >>486 の書き込みの問題点を考えてみると、Forthのリターンスタックは、 明らかに「WORDを積」んではいない。 WORDを積むという表現で想起されるのは、>>497 の( あっち ) を積むという ことだとForth使いは受け取るだろうから。 そして ( ここ ) や ( そこ ) は明らかに>>484 の「次に実行する命令の列」を 指し示しているわけなので、何が新しいのかよくわからない、という感想に なるのだと思う。
499 名前:464 mailto:sage [2008/10/10(金) 01:36:27 .net] >498 新しいかどうかなんて知らんよ。単にWORDの扱いを正規化できてVMが簡素になるっつうだけの話。 >497で言及している(ここ)(そこ)みたいな間接ポインタをVMで扱う必要も無くなるし。 まあ、その皺寄せをWORDに押し込んでるだけなんだけどね。
500 名前:496 mailto:sage [2008/10/10(金) 01:42:51 .net] >>499 なんていうか… 「(ここ)(そこ)みたいな間接ポインタ」というそれそのものが、 アセンブリ言語の時代からある「リターンアドレス」という概念なんですよ…。 Forthはそれをリターンスタックに分離して保存・復帰しているだけのこと。
501 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 06:35:09 .net] >>491 >そして、Helloを出力する。 . "Hello" がなんでHelloを出力することになるの? "Hello" . じゃないのはなんで? 文字列リテラルは特別扱い?
502 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 08:32:35 .net] >500 今は実際のリターンアドレスの話をしとらんよ。 リターンスタックを「次に実行する命令の列」という形に抽象化するっつうとるだろうに。
503 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 08:46:05 .net] >>501 ." とか、 前付きの " は、Forthではただの引用符じゃなくて、一つのワード。 だから、Helloとの間に空白が要る。 但し、終わりの " はセパレーターだから、空白なしで良い。 前にも出てたけど、 Forthでは文字列リテラルはポインタと長さの二つの数値で表す。 「.」は、トップアイテムを一つpopして値をプリントするワードだから、 " Hello" . だと5がプリントされるだけ。文字列ポインタがスタックに残る。 「."」 が 「次の " までの文字列をプリントする」というワード。 文字列をスタックに積んだときは " Hello" type とやる。
504 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 08:52:55 .net] >>502 だから、「次に実行する命令列」は辞書の中に既にあるんであって、 それはスタックである必要はなくて、いってみればアレイ。 辞書の中で実行は動的に行ったり戻ったりするから、 やっぱりリターンアドレスの保存は必要。
505 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 09:06:11 .net] >>503 >「."」 が 「次の " までの文字列をプリントする」というワード。 なんじゃそら ワロタ
506 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 17:24:55 .net] factorだと文字列リテラルはあるよ
507 名前:488 mailto:sage [2008/10/10(金) 22:08:31 .net] >>496 ,497 サンクス スレデッドコードと書いておいて誤解がなかったようだ。 497 のレスだと、俺の中では「次のワード」という認識になる。 (あっち)という表現を使えば確かに誤解はなくなる。 なんだか、リターンスタックのデータ内容と、 (サブルーチン)リターンアドレスを混同した希ガス
508 名前:464 mailto:sage [2008/10/11(土) 00:37:41 .net] >504 「必要がないから積まない」じゃなくて、「VMの原理を簡単にするために積む」んだって。 VMが辞書の中を行ったり来たりしないようにするのが目的。 もちろん、VMの仕事をWORDに移管しただけの話だし、スタックが大きくなるデメリットもあるけどな。
509 名前:504 mailto:sage [2008/10/11(土) 01:03:24 .net] >>508 つまり、ワードを全部インラインにするということ? それなら確かに理論的には可能だし、リターンスタック自体要らない。 普通は、大きくなるのはスタックじゃなくて辞書だな。 まあ、辞書からインラインで展開したものを リターンスタックにコピーしてもいいけど、 ランタイムにやるなら相当動作が遅くなると思う。 それに、 なぜそのためにスタックというデータ構造を使うのかがわからない。 後ろから先に積んでいくことになるわけだが。 その発想はインストラクションキャッシュだと思う。 だから、むしろキューがいいと思う。 ソフトウェア的にやると相当遅いとは思うけど、 論理的には可能だと思うよ。
510 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 02:00:15 .net] サンクス >693 5 ソースコード 6 boost::spirit というので激しく不安になるな。 というか、スクリプトの入門というのなら、BASICタイプ言語の作成とかCタイプ言語の作成 とか分散しないで、どっちか一つに集中すべきじゃない? 入門だったら、むしろ構文はシンプルなforthライクにして、エンジンの中身に拘るべきだと思うけど……
511 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 02:02:28 .net] 誤爆スマソ
512 名前:464 mailto:sage [2008/10/11(土) 02:18:22 .net] >509 いや、基本はWORD呼び出し時に展開(そのWORDに定義されたWORD列をスタックに押し込む)。 WORDコンパイル時に全部インラインに展開するわけじゃないです。 #高速化を目的として、WORDコンパイル時にある程度はインライン化することになると思うけど。 WORDに定義されたWORD列を、実行時にその場で積んでその場で処理する必要があるから、 FIFOの仕組みが必要になります。 まあ、小まめにWORDの積み降ろしをやらなきゃいけないから、確かに重そうだけどね。
513 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 05:37:05 .net] 464のやり方は、ありえなくはないけどForth的じゃないね。 どっちかっていうとJava VMのJITコンパイラみたいな。 Forthはシンプルな実装で軽い、ってイメージ。
514 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 06:54:12 .net] >>464 のやり方だと実行の度にリターンスタックに命令列のコピーが発生するわけだな。 対して普通のForthはリターンアドレス一つのコピーで済む。 Forthでは関数の戻り場所を実行時に入れ替えたりできる( >>59 , >>62 ) わけだけど、 >>464 のやり方だと命令列自体の入れ替えになるから相当面倒。 Forthの自由度をわざわざ減らしている気がするんだけどな。 でも作るというならがんがれ。 様々な進化があってこそ発展もある。
515 名前:464 mailto:sage [2008/10/11(土) 13:07:00 .net] >513 いや、実装はこっちの方がシンプルだよ。辞書の解釈を全部WORDに押し付けることができるから。 ただ、スタック操作が増えるから重くなる方向だけどね。 >514 リターンアドレス前提だと難しいよね。作業用スタックがもう一本ありゃいいんだけど。 俺言語のVMだと自前スタックで実装しているので大した話じゃないです。
516 名前:464 mailto:sage [2008/10/11(土) 13:22:12 .net] >514 ちょっと補足。 複数のWORDを押し込もうとすると確かに面倒だね。 俺言語でも 1. 無名WORDを作る 2. 1.のWORDに実行するWORDを押し込む 3. 1.のWORDをリターンスタックに押し込む といったパック化が必要になります。
517 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 13:26:05 .net] 464のVMだが、 ハードウェアレベルではもう一般化してる インストラクションのプリフェッチとおなじだよね。 マシン語のデコーダレベルでのVMという感じか。 実装する場合の最難題は条件付きジャンプだと思う。 IFとか不定ループをどう載せるかが鍵だな。 これを考えると、VMが仕組みとして単純になるかどうかは微妙だと思う。 まあ、ベタでやればできそうな気はするが、 ハードウエアの仕組みをソフトウェアで二重にしてるだけのような気がしないでもない。
518 名前:464 mailto:sage [2008/10/11(土) 13:38:04 .net] >514 思い出した……>59を実現するにはreverse自体のパック化も必須なんだっけ。 そういや>59みたいな操作をどうしようか悩んだな。 ただ、こういったWORDを跨ぐ暗黙的なリターンスタック制御てけっこう危険じゃない? 個人的にはWORDはデータスタックの状態にのみ依存すべきだと思うけど、WORDを越えた 範囲までリターンスタックを操作できるようにすると、WORD同士の依存関係が出てしまって 連鎖性(concatenative)が崩れるような気がする。 forthの条件分岐でも、セパレーターを使った明示的な制御をしているわけだし。
519 名前:464 mailto:sage [2008/10/11(土) 13:49:31 .net] 連投スマソ >517 そうか、CPUだともう一般的なのか……。さすがに天才的な変態が集まる業界だな。 やっぱりCPUのアーキテクチャ勉強しないといけないなあ。 IFは構文解析で逃げました。 block := block ? WORD1 ! WORD2 という三項演算子を用意して、条件分岐用WORDに解釈するようにしました。 不定ループの構文を用意するかどうかは検討中です。
520 名前:517 mailto:sage [2008/10/11(土) 13:59:32 .net] もうすこし考えてみたんだが、 ワードがどこかで他のワードを呼び出し、そのワードがどこかで他のワードを呼出し... という場合には、 ワードシーケンスに展開する段階で、 展開すべき個所をたどるためのリターンスタックが必要な気がする。 だから、464のVMは、 普通のForthでの実行と同じ動作でワード系列をコピーして、 それから順番にInterpretして実行するという感じになって、 単なる二度手間ではないかな。
521 名前:464 mailto:sage [2008/10/11(土) 15:30:32 .net] >520 どのみちリターンスタック(実行する命令列を保存する専用スタック)が必要なのはその通り。 WORDの動作:普通のForthでの実行と同じ動作でワード系列をコピー VMの動作: 順番にInterpretして実行する というところがポイントですな。VMは辞書のこととか考える必要がないのでシンプルになります。 その代わり「辞書からWORD列を拾ってリターンスタックに展開する」というWORDが必要になるけど。 確かにコピーする手間はムダな気もするんだけどね…… 辞書のWORD列を直接トレースするのと比べてどんぐらい余計な手間がかかってるんだろう? ポインタ操作数回&アクセス数回レベルだと思うけど。
522 名前:514 mailto:sage [2008/10/11(土) 18:35:01 .net] >>518 普通はリターンスタックとか継続とか触れない言語の方が多いから、 Forthではなく俺言語を作るつもりなら、言語デザイナであるお前様自身の 判断で実現可能にしてもいいし、そうでなくしてもいいと思うよ。 ただForthは言語レベルでリターンスタックを操れる結果、協調的マルチタスクやら コルーチンやら言語実装のレベルで普通対処するものも、ライブラリレベルで実現できる柔軟さがある。 リターンスタックは他の言語にはないForthの特徴の一つだからね。 俺言語でなんとか実現する方法を悩んでみるのも楽しいんじゃない?
523 名前:514 mailto:sage [2008/10/11(土) 18:47:48 .net] あとForthのVMって相当シンプルだよ。 アセンブリ言語で書かれた昔のForthとかコアの部分はアセンブリ言語で数行レベルだった気がする。 どのへんが複雑だと思ったのかは興味がある…
524 名前:517 mailto:sage [2008/10/11(土) 21:01:10 .net] >>521 いや、そうではなくて、 「WORDの動作」の中の、「普通のForthと同じ動作で」ってところに、 リターンアドレスを保存するスタックという意味でのリターンスタックが、もう必要なのではないかということ。 あと、言葉の問題として、 大きい意味でのワードを展開する動作のところからもうInterpreter(=VM)の動作というのが普通だと思う。 つまり、VMの動作の前半をWORDの動作と呼んで違う名前にしたから、 残ったVMの動作が簡単に見えるというだけなんじゃないかな。 辞書中のワードから始めると、ForthのVMよりも(多分プリミティブ)WORDの系列を作る部分が余分で、 より複雑になってると思う。 でも、自分の言語を作るのをやめろといってるんじゃないよ。 むしろ応援してる。 ちょっと話題はそれるけど、Forthというか、スタック指向言語は、 コンパイラライターフレンドリーなんだよね。 だから、Forthコード書くよりForth(風オレ言語)VMを書く人が多かったりするわけだが、 ホントはForthでアプリケーションを書くときも「オレ言語」を作るつもりで書くと良いと思ってる。
525 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 21:33:08 .net] Forthの用語って独特な言い回しがあるからな。 知らない人は結構混乱する。 スレデッドコードのForthの場合、ソースコードを解釈してスレデッドコードを 生成することをコンパイルといい、スレデッドコードを生成する部分を外部インタープリタ、 スレデッドコードを解釈実行する部分を内部インタープリタと呼ぶ。 (これで良かったよな?同志?) このスレでVMと言った時に内部インタープリタだけなのか、外部インタープリタも含むのか? どっちだろうか?
526 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 00:45:26 .net] >>525 テキストを読み込んで、 1) ワードを辞書内で特定 2) だめならリテラルに変換 3) ダメならエラーで終了。 という部分が外部インタープリタ 1)または2)で成功したときに モードに応じてコンパイル(Forth的意味)するか実行する のが内部インタープリタ だと思ってました。 Forthはテキストインプットも弄れるという面白さもあるよね。 Forth VMというと、外部も含むのかな。 上のリターンスタック云々の話は、 内部インタープリタのことだと思うけど。
527 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 07:57:23 .net] 内部インタプリタて(スレッドコードで実装してる場合は)nextルーチンのことじゃなかったっけ。
528 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 08:49:02 .net] そうNEXTルーチン。アセンブリ言語で数行、という奴。
529 名前:464 mailto:sage [2008/10/12(日) 15:10:26 .net] >522 その辺は「自由と責任」というやつですな。「銃で足をブッとばす自由」でもあるけど。 >どのへんが複雑だと思ったのかは興味がある… 自分でも何でだったっけな、と過去の記憶を探り出してみたけど、 ・実行中のWORDの次のWORDを辞書の中から探せるようにする仕組みが必要 ×実行中のWORDの中身を変更するのが大変(VMのスタックに積んでいるWORD含む) ×番兵などの終了処理が必須 --> VM側のスタックに積むことにすればpop&top参照で正規化できるし、元の値を コピーするからWORD変更にも影響されない。 ・VM側に「WORDを実行する」という手順が必要になる --> VM側のスタックに積むことにすればpushで正規化できる ぐらいかもしれない。 コンパイル時にWORDの中身が確定するforthだとあんまり問題にならなそうだね。
530 名前:464 mailto:sage [2008/10/12(日) 15:20:28 .net] >524 「スタックに複数のデータを押し込む操作は機械語レベルだとアトミックにならない」ということ?? C++で実装しているから意識していなかったけど、そうかもしれないですね。 少なくともプリミティブで実装する必要あるね。 >ForthのVMよりも(多分プリミティブ)WORDの系列を作る部分が余分で、 これは狙ってやっていることだから仕様がないですね。 まあ、俺言語ではVM自体もWORD扱いにしているのですが……
531 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 15:50:56 .net] >>529 んー、やっぱり、思い込みでForthを理解したつもりになるんじゃなくて、 本格的に触ってみたほうが良いと思うんだけどな。 >実行中のWORDの次のWORDを辞書の中から探せるようにする仕組みが必要 通常、Forthは実行時には、スレデッドコードにコンパイルされた命令列を、 上にも出ているnextルーチンで辿るだけなので、仕組みというほどの仕組みはないよ。 >実行中のWORDの中身を変更するのが大変(VMのスタックに積んでいるWORD含む) 間接スレッディングのForthだと定義済みのワードの変更は、一カ所ポインタを書き換える だけで済むはず。 >番兵などの終了処理が必須 番兵というかワードの最後にnextルーチンへのジャンプかnextルーチン自身を書き込むだけ。 >VM側に「WORDを実行する」という手順が必要になる スレデッドコードのForthの命令列は、ワードへのポインタが並んでいるだけで、 「WORDを実行する」という意味のインストラクションは必要ないよ。
532 名前:464 mailto:sage [2008/10/12(日) 23:25:00 .net] 本格的に触るのは……あの構文は色々と嫌だ。 [条件] IF [肯定時] ELSE [否定時] THEN とか。 せめて条件算子的だったらなぁ。[条件] ? [肯定時] : [否定時] ; >531 細かいことを言うと、nextルーチンが辞書内のスレッデッドコード構造の詳細を知らなきゃ ならないので、VMと辞書の関連が密になりそうな気がします。スレッデッドコードをスタックに pushしてVM内に取り込んじゃえば辞書内の構造を気にする必要無いし。 まあ、最適化のために作り込んでも良い気がするけどね。そこは将来の課題ということで。 >一カ所ポインタを書き換えるだけで済むはず。 WORD自体を置換する場合はそうですね。WORDの挿入や削除はたぶん難しいかと。 そんな特殊なことは禁止にして、新規にWORD定義させた方が良いかも知れないけど。 あるいは無名WORDとかスキップWORDを用意するとか。 >「WORDを実行する」という意味のインストラクションは必要ないよ。 あれ?VMに保存されている「現在実行中のWORD」って、間接ポインタじゃないの? (nextの動作を考えると、間接ポインタじゃないと色々と面倒臭そうな) 実行前に間接参照からWORDを探す操作が一段余計に必要になるかと思ってた。
533 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 23:34:45 .net] >VMと辞書の関連が密 というか、それがFORTHの肝のような気がする。
534 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 00:16:22 .net] スレデッドコード自体、ワードへのポインタを並べたものでしかないから、 ジャンプとかコールとかそういう類のインストラクションをデコードする必要がない、 という意味ね。 あとForthの実装にはダイレクトスレデッドなものもあるよ。 nextルーチンからみると命令列を順に辿ってるだけであって、 「辞書からワードを毎回探している」ってわけじゃないしね。 それより、スタックに命令列を毎回pushするオーバーヘッドのほうがよほど大きいと思うし、 nextルーチンに比べてシンプルとも思えないんだな。 ま、いろいろ悩んで勉強して、これだ!と思える言語デザインに邁進してください、と。 このスレが本当に久しぶりに活性化したのは間違いないしね。
535 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 00:21:58 .net] >>533 間接スレデッドの場合、Forthコンソールの側から見ると、 逆コンパイルしやすかったり、便利な面はたしかにあるけれど、 VMつうかnextルーチンから見ると、単にポインタを辿っているだけなので、 構造として、VM実装と辞書構造が密、というわけでもないと思う。 実際VM実装テクニックとしてのスレデッドコードは、今や、Forth以外でも 当たり前の技術になってるし。
536 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 00:52:54 .net] jonesforth読んだ。 ソース付きなので理解しやすい。 OS Xで動かそうとしたが挫折した。 OSXのGASではマクロが対応してないみたいだ。
537 名前:デフォルトの名無しさん mailto:sage [2008/11/23(日) 01:13:24 .net] 急にスレが進んだと思ったら、止まるのも急だよなこのスレ やっぱ誰も使ってないってこったな
538 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 17:30:54 .net] ttp://www.intellasys.net/index.php?option=com_frontpage&Itemid=64 なんか並列forthマシンっぽいw
539 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 14:00:32 .net] factor使ってる奴いる?
540 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 21:13:14 .net] とりあえず入れてみたけど特に使ってないなw
541 名前:539 mailto:sage [2008/12/28(日) 01:26:48 .net] factorおもしろいぜ。デプロイするとスタンドアロンで動く物もできるし。
542 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 13:31:00 .net] やっぱだめだこの言語。 人間工学から著しく反してる。
543 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 19:52:22 .net] サルが人間工学語ってやがる。
544 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 21:45:56 .net] 自分の思考をスタック処理に最適化させればいいんだよw
545 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 22:06:52 .net] forthに慣れるのはそんなに大変なことじゃないと思うけどなあ。 まあ、問題をごく単純な部分に細分して考えることができないと、 スタック処理が爆発しがちになるとはいえますね。 でも、問題の細分ができない人は、どの言語でプログラミングしても たかが知れてる。
546 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 11:45:56 .net] Lispのマクロ的なことができるってほんと?
547 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 11:56:23 .net] イミディエイトなワードのことかな。 結果としては似たようなことができると言えなくもないけど、 Lispのマクロみたいな2度evalするみたいな高水準のものじゃありません。
548 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 22:44:24 .net] つまり・・・どういうことだってばよ?
549 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:39:44 .net] factorならlispのマクロと同じようなことができるよ
550 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 00:11:19 .net] 同じ機能を達成できるとしても言語が違えばそこに至るロジックは異なる。 具体的に何がしたいのか特定しないと。 factorはおもしろい言語だが、関数型言語のフリし過ぎなのがイヤラシくもある。
551 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 12:30:14 .net] 何かサンプルが欲しいな。
552 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 22:47:55 .net] ancient.s6.xrea.com/factor/cookbook.html
553 名前:デフォルトの名無しさん [2009/02/26(木) 00:17:58 .net] 組み込み用FORTH検討中・・・
554 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 05:11:31 .net] part 1 の URL ってないの?
555 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 10:00:54 .net] piza.2ch.net/tech/kako/987/987562311.html
556 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 10:13:20 .net] : Mops ( オブジェクト指向FORTH -- ) ; pc.2ch.net/tech/kako/1000/10001/1000118518.html
557 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 13:25:33 .net] thanks
558 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 18:54:17 .net] このスレも長いね
559 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:43:31 .net] factorとかJoyとか触ってる奴いないのかよ
560 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 23:32:50 .net] 普通の関数型言語に比べてどういうメリットがあるのか分からない。
561 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 10:51:09 .net] forthは関数型ちゃうし
562 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 12:22:51 .net] >>560 はなんでこのスレにいるんだ?
563 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 19:52:03 .net] いや、factorがって事なんだが。
564 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 20:01:58 .net] なんで関数型言語と比較するんだ? Factor = forth + 無名関数とオブジェクト指向だよ
565 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 13:57:45 .net] 全然Forthと関係ない話だが、AMDのシニアアーキテクトが チャック・ムーアって名前なのは結構心臓に悪いな。
566 名前:デフォルトの名無しさん [2009/06/24(水) 08:13:56 .net] 何か話題無いかな
567 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 14:24:21 .net] LLイベントでの発表者募集中とか
568 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 05:23:56 .net] ┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘ おっぱい!おっぱい!
569 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 22:57:04 .net] Pythonスレに帰れw
570 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 07:11:33 .net] 今更ながら FORTH 勉強しようと思ってるんだけど、 何かいい本ある? できれば日本語がいいけど英語も可。
571 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 10:23:23 .net] 絶版多し
572 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 21:39:14 .net] 触りしか読んでないけど ttp://www.forth.com/starting-forth/
573 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 07:32:04 .net] >>570 Let over Lambda日本語版
574 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 20:52:17 .net] >>573 たしかそれってlispの本じゃないか?
575 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 20:57:56 .net] lispでforthを作る本
576 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 22:31:17 .net] www.amazon.co.jp/dp/4434133632
577 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 05:33:45 .net] gforth でググるとNVIDIAのグラボしかヒットしない。 Bingだと forth だけがヒットする。愛してるよMS
578 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 23:02:30 .net] あほな質問かとは思うがよかったら教えてくれ スタック型言語にはスタックオーバーフローってある? それともヒープにあたるものをスタックとしてつかている?
579 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 23:10:10 .net] 両方ともYESだよ。
580 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 23:17:25 .net] オーバーフローだけじゃなくスタックアンダーフローも楽しめるぞ
581 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 23:31:56 .net] さんきゅー、Jedi!
582 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 03:45:38 .net] そのネタもう飽きた 次そゆこと言った奴はダークサイドな
583 名前: tor.rootkit.de mailto:age [2009/08/17(月) 17:57:34 .net] 自動焼人 ★ = 自動保守 ◆KAWORUKOFI = 自動保守#K9K?_D[L 名言集 その2 『お前が規制系キャップ取れるか審査してやるよ』 yutori7.2ch.net/test/read.cgi/news4vip/1249830540/ ID:PVAf+dux0 = 自動焼人 ★ > 36 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:31:30.02 ID:PVAf+dux0 > >>33 > キャップとコテハンの違いは何? > 46 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:38:05.34 ID:PVAf+dux0 > >>45 > その回答では落ちるなw > 答えは教えないがw > 50 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:41:29.96 ID:PVAf+dux0 > Q.キャップとコテハンの違いは何? > A.2ちゃんねるのボランティアの登録制度 > それがお前の答えかw > 52 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:43:10.06 ID:PVAf+dux0 > まぁ、どうせ正解が出るわけもないし、次の問題。 > 君が思う面白いスレはどんなの? ---------------------------------------------- この自動焼人 ★メールマガジンの配信停止をご希望される方は qb5.2ch.net/test/read.cgi/sec2chd/1250169591/ にて自動焼人 ★までご連絡ください
584 名前:デフォルトの名無しさん [2009/10/06(火) 10:44:14 .net] . 1. HTML で検索した結果 1〜10件目 / 約5,040,000,000件 . 2. PHP で検索した結果 1〜10件目 / 約2,970,000,000件 . 3. Java...... で検索した結果 1〜10件目 / 約 835,000,000件 . 4. Forth. で検索した結果 1〜10件目 / 約 323,000,000件 . 5. Ruby.. で検索した結果 1〜10件目 / 約 275,000,000件 . 6. perl..... で検索した結果 1〜10件目 / 約 245,000,000件 . 7. Python... で検索した結果 1〜10件目 / 約 204,000,000件 . 8. pascal... で検索した結果 1〜10件目 / 約 170,000,000件 . 9. Delphi で検索した結果 1〜10件目 / 約 127,000,000件 10. VisualBasic...で検索した結果 1〜10件目 / 約 121,000,000件 11. lisp... で検索した結果 1〜10件目 / 約. 26,700,000件 12. fortran で検索した結果 1〜10件目 / 約. 21,300,000件 13. COBOL で検索した結果 1〜10件目 / 約. 18,500,000件 14. HSP で検索した結果 1〜10件目 / 約. 12,300,000件 15. FreeBasic.. で検索した結果 1〜10件目 / 約 6,320,000件 16. Tcl/Tk. で検索した結果 1〜10件目 / 約 4,940,000件 17. QBasic で検索した結果 1〜10件目 / 約 4,190,000件 18. VisualC.... で検索した結果 1〜10件目 / 約 1,360,000件 19. DarkBASIC. で検索した結果 1〜10件目 / 約 1,320,000件 20. BasicStudio で検索した結果 1〜10件目 / 約 304,000件 21. N88basic. で検索した結果 1〜10件目 / 約 215,000件 22. f-basic で検索した結果 1〜10件目 / 約 109,000件 23. ActiveBasic で検索した結果 1〜10件目 / 約. 89,800件 24. 99BASIC.... で検索した結果 1〜10件目 / 約. 11,500件 3Dprogramming で検索した結果 1〜10件目 / 約794,000件 2Dprogramming で検索した結果 1〜10件目 / 約. 57,400件 intel で検索した結果 1〜10件目 / 約729,000,000件 amd で検索した結果 1〜10件目 / 約355,000,000件
585 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 11:33:58 .net] J の検索結果 約 1,650,000,000 件中 1 - 10 件目 (0.25 秒) 圧倒的だな。 ja.wikipedia.org/wiki/J_ (プログラミング言語)
586 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 11:36:17 .net] すみません、嘘でした。。。
587 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 13:38:04 .net] C の検索結果 約 3,910,000,000 件中 1 - 10 件目 (0.32 秒)
588 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 13:39:59 .net] >>584 <-こいつどこで検索したんだ HTML の検索結果 約 8,490,000,000 件中 1 - 10 件目 (0.23 秒) 古いコピペか
589 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 13:42:51 .net] D の検索結果 約 4,780,000,000 件中 1 - 10 件目 (0.24 秒) 時代はもはやDですよ。
590 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 13:44:54 .net] Brain F*ck の検索結果 約 162,000,000 件中 1 - 10 件目 (0.22 秒) Brain Fuck の検索結果 約 5,190,000 件中 1 - 10 件目 (0.30 秒) Brain Fsck の検索結果 約 28,500 件中 1 - 10 件目 (0.33 秒)
591 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 21:50:04 .net] Fuck の検索結果 約 156,000,000 件中 1 - 10 件目 (0.19 秒)
592 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 00:25:23 .net] A の検索結果 約 15,560,000,000 件中 1 - 10 件目 (0.06 秒) 時代は A だった。
593 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 09:27:28 .net] forth検索しにくすぎる
594 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 18:04:33 .net] www.forth.org/ wiki.forthfreak.net/index.cgi?
595 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 14:14:43 .net] lab.ee.uec.ac.jp/text/forth/doc/WordName.html このページの仕様だとNFの後にLFが来てるけど、jonesforthだとLFが最初だよね。 NFが先だとFINDの時にLFを出すのに手間がかかると思うんだけど、 NFがLFより前にあるメリットって何かあるのかな?
596 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 00:14:06 .net] padding の有無の違いかと
597 名前:デフォルトの名無しさん [2009/11/30(月) 00:21:59 .net] www.h7.dion.ne.jp/~samwyn/forth/gforth/index.html Gforth マニュアルの和訳 (現在、チュートリアルまで)
598 名前:デフォルトの名無しさん [2010/01/05(火) 18:09:33 .net] ronware.org/reva/wiki/Index.php Reva 非標準系 Forth (ミニマリスト系) パブリックドメイン、コアは FASM で記述 プリミティブワードは商用 Forth や GCC 並みに高速 Windows の DLL や Linux の共有ライブラリを呼び出し可 豊富なライブラリが付属
599 名前:デフォルトの名無しさん [2010/01/16(土) 15:33:34 .net] www.h7.dion.ne.jp/~samwyn/forth/RetroLanguage.html Retro (Forth) の和訳 www.h7.dion.ne.jp/~samwyn/forth/winconsole.zip オリジナルのコンソール版仮想マシンを Windows 専用に移植したもの TinyC のみでビルド可、TinyC の conio.h を利用 超応急措置的改変だが、文字列に日本語も使用可 ビルド済み EXE とオリジナルの retroImage も同梱
600 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 19:17:24 .net] スレがなくて似たようなスレということでやってきたんだけど postscriptの話題もOKですか? forthはif文は逆ポーランドじゃないんですね
601 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 19:38:03 .net] 誰もいないし カーペット敷いときますね %!PS /carpet { dup 0 eq { pop 4 {dup 0 rlineto 90 rotate} repeat pop } { 4 { 3 { 2 copy 1 sub exch 3 div dup 3 2 roll carpet 0 rmoveto } repeat 90 rotate } repeat pop pop }ifelse }def 100 500 translate 0 0 moveto 300 3 carpet stroke showpage
602 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 00:04:39 .net] ttp://factorcode.org/ 今死んでね?
603 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 00:58:37 .net] 中の小人が忙しいといってるな
604 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 17:43:19 .net] FORTHって、ちょっとずつ作れてなんだか良いね。 関数とかじゃなくて、演算子を作りながら進んでる感じ。
605 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 23:45:47 .net] のんびりのんびり(^。^)y-.。o○
606 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 05:05:43 .net] 何気にコンパイル = 2パスなところがミソなんだね。 最初IF文とか巧妙にスタックで実現しているのかと思った。
607 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 19:34:13 .net] Factor 座談会 ttp://oss.infoscience.co.jp/factor/roundtable/
608 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 05:20:29 .net] 蔵書を整理していたら マイコンピュータ No3 特集すぐ動くFORTH などと言うものが出てきた、1981年の本なのでZ80とかApple向けの実装の話だったりする 思わずScanSnapで取り込んでしまった
609 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 17:04:11 .net] リギー、かわいいよリギー
610 名前:デフォルトの名無しさん [2010/08/11(水) 11:24:30 .net] age
611 名前:デフォルトの名無しさん [2010/12/28(火) 08:18:41 .net] age
612 名前:デフォルトの名無しさん mailto:sage [2010/12/28(火) 09:18:30 .net] ムーア先生がさらにあさっての方向に。 www.greenarrays.com/ 144コアのforthマシンとか誰得
613 名前:デフォルトの名無しさん mailto:sage [2010/12/28(火) 09:43:38 .net] いつものことじゃん いちいち驚くなよ
614 名前:デフォルトの名無しさん [2010/12/31(金) 23:45:15 .net] Ubuntu GNU/LINUX10.04を使ってます。 先日、倉庫を整理していたら「パソコン・ユーザのためのFORTH入門」(近代科学社)が 出てきました。懐かしいので、”Ubuntu FORTH”で検索してみてgFORTHの存在を知り さっそくインストールしてみました。FORTHとの出会いはOh!MZの連載記事「掟やぶりの magiFORTH」ですが、当時はSーOSを入力していなかったので実際にFORTHに触れる のは今回が初めてです。 よろしくお願いします。
615 名前: 【大吉】 mailto:sage [2011/01/01(土) 00:04:06 .net] !omikuji あけおめ
616 名前:デフォルトの名無しさん mailto:sage [2011/01/01(土) 23:57:48 .net] >>614 清水和人だったな、懐かしい
617 名前:デフォルトの名無しさん [2011/01/04(火) 08:09:35 .net] >>616 「掟破りのmagiFORTH」は山田伸一郎さんの書いた記事でした。 1985年か1986年のOh!MZ 3月号に掲載されています。
618 名前:デフォルトの名無しさん mailto:sage [2011/01/04(火) 20:00:48 .net] >>617 おっとゴメン、もう記憶があやふやだわ 俺はLispの方にハマったな こうもとやすひこの記事とか楽しく読んでいた
619 名前:デフォルトの名無しさん [2011/02/11(金) 21:03:43 .net] >>13 >>43 ForthとLISPの両方の特徴を生かした言語Laplasの論文 汎用簡易言語としてみたインタプリタ言語Laplas ci.nii.ac.jp/els/110002895171.pdf?id=ART0003223525&type=pdf&lang=jp&host=cinii&order_no=&ppv_type=0&lang_sw=&no=1297425029&cp= L a p 1 a s 一マイクロ・コンピュータに適した新らしい言語一 eprints.lib.hokudai.ac.jp/dspace/bitstream/2115/41966/1/130_145-156.pdf
620 名前:デフォルトの名無しさん mailto:sage [2011/02/11(金) 21:15:45 .net] 日本語プログラミング言語Mind mimizun.com/2chlog/tech/piza2.2ch.net/tech/kako/976/976753657.html 24 名前:名無しさん@お腹いっぱい。 :2000/12/21(木) 06:19 Forthやった後でLISP学ぶとすんげえわかりやすい。 簡易LISPってかんじ。 25 名前:名無しさん@お腹いっぱい。 :2000/12/21(木) 11:22 そういえば、 forth lisp + 2 / な言語が昔ASCIIに載ってた。ラプラスとかいう奴。 トンボグラフィックス(タートルグラフィックスの3D版)とか搭載してて面白かった。 26 名前:名前ついてますか? :2000/12/21(木) 22:51 あれは面白かった... lambdaとか使わなくても関数抽象できたし。 #原田さんはその後も変なものを作るので要注目 27 名前:奥さん、名無しです :2000/12/22(金) 04:24 >>26 え、それなにどうやってやるの。
621 名前:デフォルトの名無しさん [2011/02/11(金) 21:20:48 .net] 28 名前:名前ついてますか? :2000/12/22(金) 09:10 stackが前提だから (1 +) で (lambda (x) (+ x 1)) 相当。 うーん、closureつければ今でもいけないかしらん.. 30 名前:名前ついてますか? :2000/12/25(月) 14:11 そうそう。といいつつ age 29 名前:名無しさん@お腹いっぱい。 :2000/12/22(金) 11:14 xを先にstackに置いといてからそのリスト置いてapplyってこと? 32 名前:29 :2000/12/26(火) 10:35 >>30 そうなのか。それだと関数抽象っていうより アセンブラのウルテクみたいだな、って思った。 34 名前:名前ついてますか? :2000/12/27(水) 14:10 >>32 関数抽象なんて高尚な概念も stack levelに落として考えれば、 禁断の秘技程度なのです。って落ちじゃだめ? # ちなみに同じ stack machine でも JavaVMじゃできない >>26-27 原田 康徳さんの論文s ci.nii.ac.jp/author?q=%E5%8E%9F%E7%94%B0%E5%BA%B7%E5%BE%B3
622 名前:デフォルトの名無しさん mailto:sage [2011/02/11(金) 21:28:52 .net] これか ttp://ci.nii.ac.jp/naid/120001758800 「機関リポジトリ本文(無料)」ってリンクからたどってくとPDFで本文読めるな
623 名前:デフォルトの名無しさん [2011/02/11(金) 23:23:10 .net] >>622 >>619 の上のほうで示したリンク先「汎用簡易言語として見たインタプリタ言語Laplas」は ci.nii.ac.jp/naid/110002895171 こっちで見れるね
624 名前:デフォルトの名無しさん mailto:sage [2011/02/12(土) 00:27:43 .net] SECD Machineみたいな、LispやMLを実装するすためのスタックマシンに自然なForthって感じか。 ざっとみたけど、lambdaはあっても、Closureはないみたいだな。
625 名前:デフォルトの名無しさん [2011/03/07(月) 10:54:59.82 .net] だなw
626 名前:デフォルトの名無しさん [2011/05/28(土) 09:22:21.04 .net] 保守
627 名前:デフォルトの名無しさん mailto:sage [2011/05/29(日) 07:57:22.03 .net] いつのまにかWikipediaのMindの記事が大幅に書き換わってるな
628 名前:デフォルトの名無しさん mailto:sage [2011/06/06(月) 07:09:36.69 .net] おムーア様の過去の著作公開 ttp://www.colorforth.com/POL.htm
629 名前:天使 ◆uL5esZLBSE mailto:sage [2011/07/02(土) 23:26:16.04 .net] >>620 --------------------------- (((((((( 日本語プログラミング言語Mind ))))))))(キリ!!ッッ!!!! ------------------ ((((((((((( え、それなにどうやってやるの。 )))))))))))(キリキリッッ!!!キリッキリッッッッ!!!!キリッッ!!!!ッッ!!!! ------(きリッ! お前らってどうみてもゴミだよな
630 名前:デフォルトの名無しさん mailto:sage [2011/07/30(土) 14:34:39.15 .net] 保守
631 名前:デフォルトの名無しさん mailto:age [2011/09/10(土) 06:58:08.33 .net] 時代はFORTH
632 名前:デフォルトの名無しさん mailto:sage [2011/09/10(土) 23:29:07.15 .net] forth出ても200超えられないorz
633 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 20:56:54.15 .net] ttp://builds.factorcode.org/package?os=windows&cpu=x86.32 factorの新しいのきてるぅ
634 名前:デフォルトの名無しさん [2012/01/16(月) 22:00:32.22 .net] 保守
635 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/03/30(金) 23:52:09.58 .net] factor(等のforth系)は頭がトコロテンになるな。 でもプログラミング自体をパズルとして楽しめるような気がする。
636 名前:デフォルトの名無しさん mailto:sage [2012/06/26(火) 23:53:01.65 .net] ttp://builds.factorcode.org/package?os=windows&cpu=x86.32 新しいのキター
637 名前:デフォルトの名無しさん mailto:sage [2012/06/27(水) 01:49:33.00 .net] スタックコンピュータって言う書籍買ってみた 古い本だけどFORTHとスタックマシンへの愛がすげー
638 名前:デフォルトの名無しさん mailto:sage [2012/06/27(水) 07:17:19.22 .net] おお、あれは名著だ。
639 名前:デフォルトの名無しさん mailto:sage [2012/06/27(水) 10:13:02.11 .net] >>636 初めてさわった なにこれ、楽しい
640 名前:デフォルトの名無しさん [2012/06/28(木) 11:00:23.05 .net] >638 原書はまだPDFで全公開してるのかな?
641 名前:デフォルトの名無しさん mailto:sage [2012/06/28(木) 11:06:29.92 .net] ttp://builds.factorcode.org/package?os=windows&cpu=x86.64 64bit版キター
642 名前:デフォルトの名無しさん mailto:sage [2012/06/28(木) 11:09:24.65 .net] >>640 ttp://www.ece.cmu.edu/~koopman/stack_computers/
643 名前:デフォルトの名無しさん [2012/06/30(土) 00:15:59.63 .net] >>639 forth系ってパズル的な楽しさがあるよな
644 名前:デフォルトの名無しさん mailto:sage [2012/06/30(土) 22:46:42.75 .net] ttp://builds.factorcode.org/package?os=windows&cpu=x86.32 また新しいのキター
645 名前:デフォルトの名無しさん mailto:sage [2012/07/03(火) 20:28:16.05 .net] また来ましたな バージョンアップ祭りの季節?
646 名前:デフォルトの名無しさん mailto:sage [2012/07/10(火) 22:11:13.67 .net] FORTHを学ぶサイトを作った - 西尾泰和のはてなダイアリー d.hatena.ne.jp/nishiohirokazu/20120710/1341924363
647 名前:デフォルトの名無しさん mailto:sage [2012/07/11(水) 23:13:14.19 .net] またニューバージョンきたで
648 名前:デフォルトの名無しさん mailto:sage [2012/07/12(木) 22:57:24.59 .net] ttp://builds.factorcode.org/package?os=windows&cpu=x86.32 今日の更新
649 名前:デフォルトの名無しさん mailto:sage [2012/07/14(土) 19:15:25.30 .net] 本当によくバージョンアップくるな
650 名前:デフォルトの名無しさん mailto:sage [2012/07/15(日) 18:51:42.95 .net] あ、きてる
651 名前:デフォルトの名無しさん mailto:sage [2012/07/18(水) 15:12:10.06 .net] 毎度!
652 名前:デフォルトの名無しさん mailto:sage [2012/07/19(木) 20:54:07.43 .net] 2012-07-17
653 名前:デフォルトの名無しさん mailto:sage [2012/07/20(金) 14:00:53.36 .net] 2012-07-19
654 名前:デフォルトの名無しさん mailto:sage [2012/07/20(金) 17:48:26.40 .net] 何だ何だ?
655 名前:デフォルトの名無しさん mailto:sage [2012/07/20(金) 22:56:25.07 .net] ttp://builds.factorcode.org/package?os=windows&cpu=x86.32 ニューバージョンが来たってことでしょ
656 名前:デフォルトの名無しさん mailto:sage [2012/07/20(金) 23:55:48.43 .net] うーん、それニューバージョンって言うものか? 一見するとリリースノートもないし、開発者向けにビルドし直したもので、 一般のユーザー向けに作られたものじゃないと推察するのだが。 本スレに書いてる人、何が変わったか把握してる?
657 名前:デフォルトの名無しさん mailto:sage [2012/07/21(土) 09:31:12.80 .net] ステマのにおい
658 名前:デフォルトの名無しさん mailto:sage [2012/10/08(月) 20:25:47.38 .net] .
659 名前:デフォルトの名無しさん [2012/10/11(木) 20:10:49.89 .net] shuffle shuffle
660 名前:デフォルトの名無しさん mailto:sage [2012/10/18(木) 19:40:10.82 .net] test
661 名前:デフォルトの名無しさん mailto:sage [2012/11/12(月) 06:30:53.31 .net] &nbsp;test
662 名前:デフォルトの名無しさん mailto:sage [2012/11/12(月) 07:13:40.73 .net] &#160;test
663 名前:デフォルトの名無しさん mailto:sage [2012/11/15(木) 22:25:43.78 .net] a a a a
664 名前:デフォルトの名無しさん mailto:sage [2012/11/15(木) 22:28:35.87 .net] a a    a
665 名前:デフォルトの名無しさん [2012/11/22(木) 22:57:21.32 .net] 保
666 名前:デフォルトの名無しさん [2013/03/06(水) 01:21:39.12 .net] 保守 何か面白い話題無いのかな
667 名前:デフォルトの名無しさん mailto:sage [2013/03/06(水) 09:59:04.64 .net] I think so.
668 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 11:11:43.39 .net] Laplasの人自身による解説があった blog.goo.ne.jp/viscuit/e/3ffb6c90b91f75911cef4198ee394c09
669 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 11:46:01.28 .net] www.viscuit.com/ https://twitter.com/viscuit
670 名前:デフォルトの名無しさん mailto:sage [2013/03/18(月) 01:17:00.32 .net] >>117 のコントロールフロースタックについてもうちょっと詳しく聞きたい ジャンプ先って何へのジャンプ先?
671 名前:デフォルトの名無しさん mailto:sage [2013/03/18(月) 01:23:17.50 .net] あああちゃんと調べてなかった、ここの説明でわかったよ www18.atwiki.jp/imops-forth/pages/34.html
672 名前:デフォルトの名無しさん mailto:sage [2013/03/18(月) 19:30:42.45 .net] forthの最大の欠点ってfactorみたいなオブジェクト指向にしたときにスタックに積んだ引数と関数の期待する型が違ったときに困る事だとおもうんだけど コンパイラのレベルでこれってなんとかならんの?
673 名前:デフォルトの名無しさん mailto:sage [2013/03/18(月) 22:45:55.67 .net] 普通の関数型言語と一緒じゃね? 全てのトークンに引数型と戻り値型を対応付けて、コンパイル時に 型解決すれば良いと思うけど。
674 名前:デフォルトの名無しさん mailto:sage [2013/03/28(木) 01:26:47.80 .net] Windows上のFactorで日本語表示させる方法がわからん
675 名前:デフォルトの名無しさん mailto:sage [2013/03/28(木) 01:53:15.83 .net] "日本語" H{ { font-name "メイリオ" } } format nl で表示できた。 あとはlistenerのfont-nameを書き換えられたらいいのかな。
676 名前:デフォルトの名無しさん [2014/01/05(日) 03:24:36.20 .net] 保守
677 名前:デフォルトの名無しさん [2014/01/05(日) 21:15:32.75 .net] 保守!!! Forth は実用に耐えるのですか?特に可読性的に
678 名前:デフォルトの名無しさん mailto:sage [2014/01/05(日) 22:21:30.32 .net] >>677 Forth の達人 (= プロの Forth 屋) なら、数十万行でも苦にならないそうな。 ライフゲーム wiki.forthfreak.net/index.cgi?GameOfLife BASIC インタプリタ home.iae.nl/users/mhx/basic.frt FALSE インタプリタとコンパイラ https://github.com/benhoyt/false-forth その他 wiki.forthfreak.net/index.cgi?ForthCode wiki.forthfreak.net/index.cgi? みんな目的に特化したプログラミングをするので、汎用ライブラリやフレームワークは無いに等しいけれどね (個々の実装に特化したものならそれなりにあるけど)。
679 名前:デフォルトの名無しさん [2014/01/05(日) 23:08:26.86 .net] thx まさかこんなに早く返事がくるとは思わなかった!
680 名前:デフォルトの名無しさん mailto:sage [2014/01/06(月) 05:54:37.02 .net] 常に人はいるんだわ 単に新しい話題がなんにもないだけで
681 名前:デフォルトの名無しさん [2014/01/06(月) 15:05:08.84 .net] >>678 Forthの力ってすげー。 >>680 なる おもしろそうだな。 RPNで文法が統一されているところが超COOLだ! 俺が作ってみようじゃないか?! ちなみに慣例や伝統はしらぬから、 皆が想像しているものと大きく違うと思うがな!!
682 名前:デフォルトの名無しさん mailto:sage [2014/01/06(月) 17:56:02.28 .net] >>681 期待してます!
683 名前:デフォルトの名無しさん [2014/01/06(月) 20:20:59.69 .net] 文字列はどういう風に扱えばよいのですか?
684 名前:デフォルトの名無しさん mailto:sage [2014/01/06(月) 21:14:53.59 .net] >>683 文字数と文字列本体からなる構造体のアドレス(ポインタ)、とか。
685 名前:デフォルトの名無しさん mailto:sage [2014/01/06(月) 22:41:12.49 .net] 日本語情報なら www-lab.ee.uec.ac.jp/text/forth/ www.h7.dion.ne.jp/~samwyn/forth.htm 後者の Gforth マニュアル www.h7.dion.ne.jp/~samwyn/forth/gforth/index.html は「OS コマンドライン引数用ワード」まで訳してある (残りは未訳)。 また、ANS Forth ではない独自仕様だけども、 www.h7.dion.ne.jp/~samwyn/forth/RetroLanguage.html www.h7.dion.ne.jp/~samwyn/forth/Ngaro.html www.h7.dion.ne.jp/~samwyn/forth/retroimage.htm も Forth 自体の実装を目論むなら参考になるかも (ちなみに現在の RetroForth はこれよりもう少し進化してる)。
686 名前:デフォルトの名無しさん mailto:sage [2014/01/06(月) 23:19:19.70 .net] >>683 684の追記ですが、素のFORTHだとスタックには数値しか置けないので 文字列のアドレスがスタックに積まれます。 もちろんFactorの様に、なんでもスタックに積めるのもアリです。 私もなんでも積めるように実装して、まぁうまく行ったのですが >>672 の方と同じ問題もあったので、スタックには数値しか置けない 実装も試してみたいと思っています。
687 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 09:04:59.98 .net] ややこしい物は全部辞書に突っ込むとかの手も。
688 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 11:29:30.09 .net] >>687 文字列等をワードの定義に置き換えてしまう、と言うことでしょうか? この場合、最終的にスタックに積まれる物は何になるのでしょうか?
689 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 12:34:21.76 .net] >>688 の自己レスですが、辞書にと言うことは素FORTHの話だと思うので 文字列を辞書に登録後、そのアドレスがスタックへ積まれることになりますね。
690 名前:681 [2014/01/13(月) 14:43:11.44 .net] 681です。 インタプリタでいいよね?
691 名前:デフォルトの名無しさん mailto:sage [2014/01/15(水) 17:15:27.03 .net] >>690 バイトコードとかスレッデッドコードインタプリタであればFORTHの普通過ぎると思う(誰もが一度はやる) JIT(AnyCPU向け)実装とか,Factor見たいな構造をスタックに詰めるとかの部分をがんばらないとn番煎じになっちゃうから何か独自のがんばりが必要だと思うよ。 というかFactorが凄いのでアレ超えて欲しいな(アイデアだけでも) OSSでがんばるならこっそりコントリビュートする人はこのスレにも多そうだからがんばれ!
692 名前:デフォルトの名無しさん mailto:sage [2014/01/15(水) 23:01:48.08 .net] 最初はベタな書き方でいいと思う
693 名前:デフォルトの名無しさん [2014/01/16(木) 04:52:38.68 .net] Forth で Forth を書くんだ
694 名前:デフォルトの名無しさん mailto:sage [2014/01/17(金) 10:55:03.71 .net] >>690 インタプリタだと、Forthの制御構造とかループが 意外とうまく行かなくて楽しいよ。 >>693 このスレの上の方にもありますが、Let over Lambdaでは LispでForthを書いて、そのForthでLispを作ってますね。
695 名前:デフォルトの名無しさん mailto:sage [2014/01/26(日) 21:50:03.79 .net] forthインタプリタありすぎてどれを使えばいいかよく分からないけど とりあえずgforth使っておけばいいのかな
696 名前:デフォルトの名無しさん mailto:sage [2014/01/26(日) 22:12:55.38 .net] とりあえずなら何使ってみてもいいと思うよ
697 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 11:46:12.62 .net] 自分でインタプリタ書いてみるのも良い
698 名前:デフォルトの名無しさん [2014/02/20(木) 20:29:49.07 .net] forthfreak.net/jsforth80x25.html
699 名前:デフォルトの名無しさん mailto:sage [2014/03/12(水) 13:38:35.60 ID:ZbttMlJE.net] www.worldofspectrum.org/infoseek.cgi?regexp=^Forth-83$&pub=^Lennart+C.+Benschop$ Forth-83 の ZX Spectrum (欧州版 MSX1 のような Z80A 8 ビットパソコン) 版。 Forth-83_Extras.zip に Forth アセンブラ記述の実装ソースあり。FIG-Forth ベースらしく、最小限 のプリミティブワード以外は FIG-Forth と同じく Forth 自体で記述されてる。
700 名前:デフォルトの名無しさん mailto:sage [2014/03/12(水) 17:03:35.35 ID:f26liuj5.net] あの頃のPCに標準装備されてるのがゲイツBASICでなくてForthだったらPC世界は今とは随分違ったものになってただろうな。
701 名前:デフォルトの名無しさん mailto:sage [2014/03/12(水) 17:20:04.88 ID:w2TVy3P1.net] >>700 カシオの電卓もきっとRPNに! BASICってコンピュータが何をしてくれるのかを学ぶのには適してるとおもうけどなあ FORTHもそうだけどREPL環境のあるコンピュータ言語だとBASIC,FORTH,LISPの御三家があるけど、どれが一番よかったんだろう?
702 名前:デフォルトの名無しさん mailto:sage [2014/03/12(水) 17:26:49.46 ID:EfiLuccu.net] Lispがベストだが、いかんせん大食らい過ぎる。 Forthも悪くない。 Basicの奴はREPLのようなREPLでないような微妙なコマンドラインだしなぁ。
703 名前:デフォルトの名無しさん mailto:sage [2014/03/12(水) 17:41:55.19 ID:w2TVy3P1.net] >>702 実マシンのメモリモデル的にはBASICが一番合う気がするんだよね。 で関数定義を基本とするならLISPが一番。(引数と関数の関係が一目瞭然なので) で、FORTHだとFACTORみたいにオブジェクトとメッセージみたいな含みができれば最高なのにという感じ という個人的な感想をもっちゃう。 >Basicの奴はREPLのようなREPLでないような微妙なコマンドラインだしなぁ。 forgetで+とか以降を消して涙目とかは流石にBASICじゃできないと思うのでそこら辺のシステム空間とユーザ空間みたいな区別はあっても良いかもしれない
704 名前:デフォルトの名無しさん mailto:sage [2014/06/03(火) 01:33:51.03 ID:pa2cdK6+.net] >>704 そんなこたないんだが、arm用に特化したforth処理系ってのが存在しないのも事実なのでなんと言えばいいんだろうか。 ちなみに特化しなくても何とかなっちゃうのがforthの良い所だったり、何も無いところから作り込んでもそんなに手間じゃなかったりするのも魅力だったりする。 でもRaspberry PiみたいなLinuxが動いちゃう環境ならforth使う理由が殆どないよ。 むしろ生の機械語を直接書かないと駄目なような環境に向いてる。
705 名前:デフォルトの名無しさん mailto:sage [2014/06/03(火) 11:48:06.91 ID:XzYLHg3E.net] raspberry pi forth でググったらなんか出てくるみたいだが。 というか、rasp pi 衰退したOSや言語の敗者復活リングみたいになっててオモロイw
706 名前:デフォルトの名無しさん mailto:sage [2014/06/04(水) 16:39:08.74 ID:2ij5JthN.net] まさにそれ ttp://star.gmobb.jp/koji/cgi/wiki.cgi?page=AVR%A5%D3%A5%C7%A5%AA%C3%BC%CB%F6%A4%CE%C0%BD%BA%EE
707 名前:デフォルトの名無しさん [2014/08/13(水) 10:22:44.64 ID:MV0il0Eo.net] ★2ch勢いランキングサイトリスト★ ☆ +ニュース板 ・ 2NN ・ 2chTimes ☆ +ニュース板新着 ・ 2NN新着 ・ Headline BBY ・ Unker ☆ +ニュース板他 ・ Desktop2ch ・ 記者別一覧 ☆ 全板 ・ 全板縦断勢いランキング ・ スレッドランキング総合ランキング ☆ 実況板 ・ 2勢 ・ READ2CH ・ i-ikioi ※ 要サイト名検索
708 名前:デフォルトの名無しさん [2015/02/05(木) 18:47:19.10 ID:Wisgh0P5.net] >>705
709 名前:デフォルトの名無しさん mailto:sage [2015/03/28(土) 16:14:22.33 ID:JCsZnGie.net] みんな生きてる?
710 名前:デフォルトの名無しさん mailto:sage [2015/03/28(土) 16:52:42.19 ID:iNpGjoni.net] ." live!"
711 名前:デフォルトの名無しさん mailto:sage [2015/03/30(月) 19:02:34.24 ID:ZHuPrBLY.net] 書籍が高すぎる
712 名前:デフォルトの名無しさん mailto:sage [2015/03/31(火) 21:06:19.08 ID:2fh/fl2T.net] windowsとLinuxで動作するISO準拠処理系プリーズ
713 名前:デフォルトの名無しさん [2015/04/01(水) 21:02:18.21 ID:A/TYeiEx.net] もう漏れしかいないのか ついに手に入れた「FORTHへの招待」 さっそく読もう
714 名前:デフォルトの名無しさん mailto:sage [2015/04/01(水) 23:35:21.77 ID:6DGYq49D.net] 懐かしい本だな それと「スタックコンピュータ―CISC RISCとスタックアーキテクチャ」はバイブルだ
715 名前:714 [2015/04/02(木) 05:49:55.97 ID:ZYrODdip.net] なんかROMとRAMの説明から始まってて和露他 いいからFORTHの説明はじめろや
716 名前:デフォルトの名無しさん mailto:sage [2015/04/09(木) 21:33:48.07 ID:DFOBVCzK.net] 読み終わった >>714 とFORTH入門を注文した FORTH入門は一万円以上した
717 名前:デフォルトの名無しさん mailto:sage [2015/04/09(木) 22:41:41.16 ID:LdJOGzfd.net] >>716 原著はWeb上にあるよね home.iae.nl/users/mhx/sf.html 日本語版もほしいけど
718 名前:デフォルトの名無しさん mailto:sage [2015/04/12(日) 19:17:21.15 ID:4Fcd4Vhe.net] おk読了 次は>>714 だ
719 名前:デフォルトの名無しさん mailto:sage [2015/04/12(日) 19:25:26.49 ID:3ERnJGQj.net] >>718 715はスタックマシンとForthへの愛に満ちているので毒されると悶死できるぞ
720 名前:719 mailto:sage [2015/04/15(水) 17:48:12.32 ID:SFWZvMHG.net] 知識不足のため理解しきれていない部分もあるがなんとか最後まで読んだ ↓この文が最高でした RISCプロセッサのUnix/Cプログラマが8Mから16Mバイトより少ないメモリでは不満足で、 128Kバイトのキャッシュを要求しているときに、Forthプログラマたちはまだ、 スタックマシンに64Kバイト以上のメモリが本当に必要かどうかを熱心に議論している
721 名前:デフォルトの名無しさん mailto:sage [2015/04/18(土) 09:39:32.64 ID:W8H7yv/P.net] 次の段階へ移行
722 名前:デフォルトの名無しさん [2015/05/04(月) 16:20:21.65 ID:McZN4pHS.net] 日本のForthコミュニティって無いの?
723 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 16:33:45.12 ID:/hwLfRb3.net] まだ人いるか?
724 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 16:56:02.08 ID:szzze12E.net] >>722 つくろーぜ >>723 いるぞー
725 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 17:44:37.74 ID:kE0VI/DI.net] >>723 居るぜー ForthだけじゃなくてLispも入るけど組み込み機器でデバッガを内包したいような時って選択肢無いんだよね。 でLispよりもForthの方が実メモリ食わないんで本当にチープな組み込み機器だとコレ知らないと死ねる。
726 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 18:06:54.59 ID:McZN4pHS.net] 意外と居てびっくりした! 作ろうか
727 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 18:43:39.64 ID:McZN4pHS.net] >>725 Forthに慣れてる人がどんなデバッガ作るのか(どんなとこ見るのか)気になる
728 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 19:28:19.74 ID:/hwLfRb3.net] >>727 別の人だけど デバッガとしてFORTHのインターフェースをつかうってことじゃね?
729 名前:デフォルトの名無しさん mailto:sage [2015/05/06(水) 15:56:46.02 ID:pB1d0kiO.net] ちょっと面白いネタ見つけた 「スタックコンピュータ」の中の人、Forthの上でのグラフリダクションを研究してたらしい。 url長すぎって言われたんで↓でググってくれ TIGRE: Combinator Graph Reduction on the RTX 2000
730 名前:デフォルトの名無しさん mailto:sage [2015/05/07(木) 11:41:15.23 ID:PQFXQAsu.net] やってる人はいまもやってるんだねえ
731 名前:デフォルトの名無しさん mailto:sage [2015/05/07(木) 14:26:59.51 ID:PQFXQAsu.net] 「FORTH入門」すごいつかえる 処理系内部まで書かれているから自作するための参考になる
732 名前:デフォルトの名無しさん mailto:sage [2015/05/07(木) 19:26:45.21 ID:43KhqhpP.net] あのイラストも結構好きだ
733 名前:デフォルトの名無しさん mailto:sage [2015/05/09(土) 01:15:17.53 ID:91zCXcbE.net] ブート処理にforth 系のficl 使ってたOSがluaに切り替えてくみたいだが やはりさわれる人の絶対数が多い言語に移ってくもんなのだろうか。 あと昔出版されて今じゃアマゾンでプレ値がついてそうなforth系の本、県立図書館で検索したら閉架に結構あったけど たまたまなのか規模でかいとこなら普通に在庫あるのかな?
734 名前:デフォルトの名無しさん mailto:sage [2015/05/09(土) 08:08:38.65 ID:D66ceLoP.net] >>733 FreeBSD?
735 名前:デフォルトの名無しさん mailto:sage [2015/05/10(日) 13:17:55.74 ID:wSg+R97A.net] >>734 そそ。まだ先の予定っぽいけど
736 名前:デフォルトの名無しさん mailto:sage [2015/05/11(月) 10:05:34.87 ID:jfjxFlJu.net] FORTHと直接の関係はないんだけど 実行ファイルのダンプを保存してあとから実行するのってどうするの? LISPの単体で動く実行ファイルの作り方と同じ仕組みだと思うのだけど どうすればいいのかわからん
737 名前:デフォルトの名無しさん mailto:sage [2015/05/13(水) 23:24:57.10 ID:ZhcbFads.net] いまだにわからん
738 名前:デフォルトの名無しさん [2015/05/14(木) 14:19:50.60 ID:WhzKfy7h.net] VMをアセンブリでかくかcでかくか
739 名前:デフォルトの名無しさん mailto:sage [2015/05/19(火) 12:28:41.76 ID:CmG/oeDB.net] >>736 辞書と変数の設計に依るけど、単純にバイト列を展開するんじゃダメなのかな? RetroForthがそんな設計だったような。 ちょっと挑戦してみようかな。
740 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 22:36:02.69 ID:ifeDc53Z.net] そのバイト列に展開するのが難しそうだ
741 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 22:44:08.10 ID:vwZF4gL5.net] OS依存になるよね、任意にcore dumpできるUnix系だとやりやすいかも Fig FORTHだとOSに依存しないからできそうな気もする #MC68000のFig FORTHをmotorolaのTutorial基板で触った事しかないんでうろ覚え
742 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 23:14:56.31 ID:3QTDhBFd.net] レス早くてワロタ Perlに同じような機能があったたはずだからちと調べてみゆ
743 名前:デフォルトの名無しさん [2015/07/06(月) 12:32:57.19 ID:YQDXrDaK.net] 間接スレッデッドコードについて質問があります IFなどの条件分岐ではそのワードの呼び出し箇所毎にパラメータが違うと思うのですが その場合でも箇所毎にワードが生成されるのでしょうか?
744 名前:デフォルトの名無しさん [2015/07/10(金) 00:42:46.31 ID:wrUthjuc.net] もう解決したのかな? ちょっとどういう質問なのかわからないので、詳しい人期待age
745 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 06:46:58.31 ID:AaGOVdy1.net] >>743 いやたしか分岐先アドレスはスレッドに格納されるはず つまりスレッドにはワードヘのポインタ以外にジャンプ用アドレスが含まれる
746 名前:デフォルトの名無しさん mailto:sage [2015/07/17(金) 08:59:20.64 ID:Hk7N5du5.net] 全てをアセンブリで実装しようとしたら手がつけられなくなったので とりあえずコア以外はcで実装すことに変更すた しっかし本当おもしれえ nextは僅か4命令だぞ
747 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 13:27:49.52 ID:xBzkS6DZ.net] コアが実装できたら、後はforthで書こうぜ!
748 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 13:55:45.77 ID:4KZmkVpL.net] >>746 今時のCPUだとアセンブリの方が実装しやすくない?
749 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 14:11:29.17 ID:MJkUXIxe.net] blog.livedoor.jp/itsoku/archives/45591554.html
750 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 14:12:29.69 ID:MJkUXIxe.net] Forthユーザ発見
751 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 15:38:28.81 ID:3XAPUy2X.net] このスレの連中は矢張りRPNやRPL電卓を使ってるのかな?
752 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 16:33:35.15 ID:5U/xTE1h.net] 電卓は持ってないけど、何か試したり計算するときはFactorとか使ってるよ
753 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 17:09:30.61 ID:5U/xTE1h.net] Sukunaの人とか、もうForth触ってないのかな? いろいろ話聞いてみたかった。
754 名前:デフォルトの名無しさん mailto:sage [2015/08/06(木) 16:45:29.10 ID:2u/3OVyT.net] スレッデッドコード用vm実装記念
755 名前:デフォルトの名無しさん mailto:sage [2015/08/06(木) 17:06:23.35 ID:0X10zjbP.net] 乙、おめ
756 名前:デフォルトの名無しさん [2015/08/08(土) 23:27:26.32 ID:HMF33mTD.net] 復活
757 名前:デフォルトの名無しさん [2015/08/10(月) 18:29:16.42 ID:XUokgt8i.net] できてきた I/OをCからアセンブリに実装し直してさらに小さくする age
758 名前:デフォルトの名無しさん [2015/08/13(木) 14:07:02.04 ID:H7bzx0I1.net] ところでみんなコードは小文字大文字どっちでかいてる?
759 名前:デフォルトの名無しさん mailto:sage [2015/08/13(木) 16:00:05.24 ID:TIALnNkC.net] >>758 今はfactor大好きなので小文字かなー 昔VT100でForth使ってたときは大文字だったよー(ワードの大文字小文字は入力時に大文字変換されてたりとか:処理系が大文字のみだと辞書のワードを圧縮したりとかしてたりする貧乏メモリ用だったりとか)
760 名前:デフォルトの名無しさん mailto:sage [2015/08/15(土) 15:19:53.94 ID:fkPcgHEe.net] 小文字で書ぃてるょ
761 名前:デフォルトの名無しさん mailto:sage [2015/08/15(土) 15:24:43.03 ID:fkPcgHEe.net] 処理系作ってようやく何やってるのかわかったけど、>>56 とか>>62 面白いなあ
762 名前:デフォルトの名無しさん mailto:sage [2015/09/16(水) 00:48:03.18 ID:VN2DGtV9.net] なんども あきては なんども やる
763 名前:デフォルトの名無しさん [2015/09/19(土) 22:00:25.70 ID:GM7+1MtI.net] ふーむ少なくとも仮想機械はアセンブリで書かなければ移植は難しいな 一方コンパイラはcで書いてもあとでそれ自身に移植可能 あと最近2chで擬古猫見ないね
764 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 09:27:11.26 ID:jWUV6tHKA] >ふーむ少なくとも仮想機械はアセンブリで書かなければ移植は難しいな つttp://www.forthworks.com/retro 俺ForthではあるけれどVMはCで簡潔に書かれているから めちゃくちゃいろんな言語に移植されて動いてるぞ
765 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 21:43:04.76 ID:IsRJDN+gd] >>764 Cで書かれたのは移植性が凄く高いけど ハードウェアスタックを使いにくいので 古いCPUでは性能が大きく下がっちゃう というか、VMって言うレベルじゃないでしょ アセンブラでもわずか数行〜十数行
766 名前:デフォルトの名無しさん [2015/12/31(木) 06:27:31.47 ID:shctMMuK.net] あげ
767 名前:デフォルトの名無しさん mailto:sage [2015/12/31(木) 06:51:07.49 ID:shctMMuK.net] phaendal.hatenablog.com/ ↑FORTHの関しての記事があるのであげとま
768 名前:デフォルトの名無しさん mailto:sage [2015/12/31(木) 10:17:38.69 ID:KKAqg1l1.net] 馬鹿には無理
769 名前:デフォルトの名無しさん [2015/12/31(木) 10:33:47.60 ID:/wbyPP1f.net] 便乗age research.microsoft.com/en-us/um/people/simonpj/papers/slpj-book-1987/slpj-book-1987.pdf
770 名前:デフォルトの名無しさん mailto:sage [2016/01/01(金) 09:58:20.44 ID:kXdPExCb.net] あけおめ!
771 名前:デフォルトの名無しさん [2016/01/10(日) 13:33:35.16 ID:z1pxpAJ/.net] 人いるんか!
772 名前:デフォルトの名無しさん [2016/01/10(日) 23:48:42.16 ID:/2nnPZOa.net] フォースの覚醒
773 名前:デフォルトの名無しさん mailto:sage [2016/01/11(月) 08:24:42.35 ID:lZl+kkOU.net] 復活の時は近い
774 名前:デフォルトの名無しさん mailto:sage [2016/01/11(月) 16:40:56.58 ID:I0GTrlSH.net] Erlang/Elixirに浮気中
775 名前:デフォルトの名無しさん mailto:sage [2016/01/11(月) 19:48:51.43 ID:nxq211rs.net] >>774 あれ、俺書き込んだ? ってマジで思った
776 名前:デフォルトの名無しさん mailto:sage [2016/01/12(火) 10:27:02.83 ID:LOHPMzQN.net] 今処理系実装してるけど実用的にしようとなると結構難しいな
777 名前:デフォルトの名無しさん [2016/01/18(月) 21:50:56.98 ID:jq3Y7yyE.net] この言語の面白いところは低水準で動的なことをすべて行えること コールスタックまで直接制御できるから継続のようなことも簡単にできる 一方でコンピュータサイエンスとしてのセンスはかけらもなくとても原始的だ
778 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 10:50:22.29 ID:aPv8m3ec.net] だれかこいよ 寂しいな。。。
779 名前:デフォルトの名無しさん [2016/01/21(木) 12:56:52.61 ID:zpe1QHZ3.net] >3 pop
780 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 14:03:53.56 ID:aPv8m3ec.net] >>779 ∧_∧ ∧_∧ ) ( )) ;つ 乙ノ (_ ノ | ((_ノ~∪
781 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 02:24:26.04 ID:EeNvrSL9.net] >>779 それhoshuや、pushちゃう 自分が幼少の頃に親父の読んでたInterfaceって本のなかにtitって言語の紹介があったのがForth系言語のなれそめだったなぁ。 そのアトはHPの電卓とFigForthの68K版をMC68000のKit上で動かしてからはまった感じだわ
782 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 13:27:11.36 ID:7GZnHmXQ.net] ErlangでFORTHっていうかideoneすげー ideone.com/GTo0rm
783 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 15:42:45.07 ID:dviPRblt.net] まだちゃんといて安心したよ。。。
784 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 15:06:52.25 ID:Ih+3kdbT.net] いまつくっているんだがやはり設計が古すぎる 予定を変更してシェルを分離させる
785 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 18:12:17.44 ID:1S5ux+s6.net] 意味が分からん。主語くらい略さないで入れろ。
786 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 04:19:18.92 ID:fodjyooQ.net] 標準のFORTHでバイナリを呼び出すための機構ってある?
787 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 09:41:43.11 ID:PS/Qpp4W.net] stack overflow
788 名前:デフォルトの名無しさん [2016/01/27(水) 21:20:50.27 ID:JOMz1gR9.net] 処理系によるかもだか、 スタッフオーバーフローだけじゃなくアンダーフローも味わえる
789 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 15:23:31.07 ID:z4NOVyYm.net] 失礼 スタックマシンのチップを購入したい どこかいい入手ルートはないか
790 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 02:45:46.59 ID:WhucjpIR.net] >>789 ARMとか十分にスタックマシンしてると思うのだが 昔の本当にちっちゃいやつが欲しいってのだと今ならトラ技付録FPGAで作る方が入手性は優しい希ガス
791 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 09:14:36.21 ID:CursrUUy.net] >>790 そうではないです データスタックを持っているマシンがほしいのです
792 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 19:04:31.14 ID:eSxr0LUY.net] 具体的に欲しいチップを書いた方が
793 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 20:54:10.95 ID:affLGCHB.net] 間接スレッデッドコードはネイティブと比較してどのぐらいメモリ削減効果があるのでしょうか どなたかデータかその参照を教えてもらえませんか
794 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 15:12:30.92 ID:p5oR4ktM.net] GNUの実装についてホムペは変わってないけど開発進んでるのな しかもAndroid版も有りやがる
795 名前:デフォルトの名無しさん mailto:sage [2016/03/12(土) 12:26:01.29 ID:x2aIRV1Q.net] >>789 greenarrays.com
796 名前:デフォルトの名無しさん mailto:sage [2016/03/12(土) 23:49:41.78 ID:88to1Dnq.net] このFORTHってのは少なくとも古典的なものは強くノイマン型アーキテクチャに依存してるのな
797 名前:デフォルトの名無しさん mailto:sage [2016/03/13(日) 14:02:52.50 ID:KRhmXkXRG] >>791 MC68000系ならデータスタック放題>>793 間接と直接の違いをインストラクションレベルで比較すればおおよそわかろうに 逆にCPU絞らないと答えようない>>796 いろんな意味でアセンブラだったから
798 名前:デフォルトの名無しさん mailto:sage [2016/03/13(日) 19:45:46.56 ID:B/df0Unxc] こっちでレスしても
799 名前:デフォルトの名無しさん mailto:sage [2016/03/13(日) 20:15:36.16 ID:KRhmXkXRG] うん なんとなくわざと
800 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 07:21:36.48 ID:4qqZTEIs.net] QUIT ( -- ) Clears all stacks and returns control to the terminal. No message is given. GForth 1 2 3 4 5 ok .s <5> 1 2 3 4 5 ok quit .s <5> 1 2 3 4 5 ok は?だれか説明してよ!
801 名前:デフォルトの名無しさん [2016/03/28(月) 06:53:30.25 ID:pr7JX2mY.net] 過疎ってるなぁ
802 名前:デフォルトの名無しさん mailto:sage [2016/03/30(水) 19:26:03.16 ID:qYZ8N3Ke3] >>801 そうだね〜 独学で始めた人が辿り着いて 飽きちゃうか 本格的な言語の実装を勉強しはじめると 離れていっちゃう感じ
803 名前:デフォルトの名無しさん [2016/03/31(木) 17:14:17.24 ID:HiG8h3J6.net] windows10 64bit版にてswiftforth評価版が動きません。 どなたか解決策を知りませんか?
804 名前:デフォルトの名無しさん mailto:sage [2016/04/01(金) 13:02:30.15 ID:50lRt7vL.net] 流行る要素が無いよね
805 名前:デフォルトの名無しさん mailto:sage [2016/04/02(土) 23:14:22.41 ID:2gBYslTZ.net] >>803 俺もだ 誰かおすえて
806 名前:デフォルトの名無しさん mailto:sage [2016/04/04(月) 07:02:35.55 ID:hhHTa9vL.net] ねんがんの「パーソナルエキスパートシステム」をてにいれたぞ!
807 名前:デフォルトの名無しさん mailto:sage [2016/04/06(水) 21:09:55.72 ID:s4LMXlxO.net] >>806 一体なにができるの?バカな漏れには全くわからん
808 名前:デフォルトの名無しさん mailto:sage [2016/04/07(木) 14:56:44.89 ID:eXkP/TbN.net] 「パーソナルエキスパートシステム入門」だった… >>807 forthでエキスパートシステム書くって本らしい。 (まだ来てない。)
809 名前:デフォルトの名無しさん mailto:sage [2016/04/13(水) 21:48:47.74 ID:eHTpuWMC.net] >>808 なんだそりゃ!? 相も変わらずFORTHコミュニティは我が道を逝くな(藁('A`)
810 名前:デフォルトの名無しさん mailto:sage [2016/04/14(木) 01:11:18.38 ID:FsF2j7W4.net] >>809 Use the forth Luke.ってくらいだしな
811 名前:デフォルトの名無しさん [2016/04/27(水) 03:12:26.27 ID:fW/sUK0/.net] FORTH社公式サイトなんかモダンな感じにリニューアルされているぞ
812 名前:デフォルトの名無しさん mailto:sage [2016/04/28(木) 06:46:01.82 ID:6C4hGrzb.net] ほんまや… つか、キャッチ見る感じFPGA対応とかやってっぽい?
813 名前:デフォルトの名無しさん mailto:sage [2016/04/29(金) 00:42:56.46 ID:T+fk1/ws.net] それに比べMPEときたら。。。
814 名前:デフォルトの名無しさん mailto:sage [2016/04/30(土) 13:33:33.16 ID:+u6TG0xk.net] >>812 なにをもって対応というのか知らんがFPGAを使ったソリューションはあるね
815 名前:デフォルトの名無しさん [2016/05/03(火) 01:28:59.09 ID:3SS4lwd4.net] XTがImmediateかどうか調べるワードってある?
816 名前:デフォルトの名無しさん mailto:sage [2016/05/03(火) 13:54:49.01 ID:nk6XRDP5.net] >>814 forthでfpgaの回路組めるとかだったら面白いなw
817 名前:デフォルトの名無しさん mailto:sage [2016/05/06(金) 02:21:23.49 ID:FS8HTadE.net] いま逆ポーランド記法で書ける正規表現エンジンを作ろうか考えているんだけどAB*C|こんな感じにね もうすでにあったりするんだろうか?あForth上でね?教材としてあるのは知っているから Forthのもつ動的コンパイルを利用することで高移植性のJITエンジンが実装できると思ってね ( 自らをコンパイルすることができる言語はこういったスクリプトやインタプリタを移植性を保ったまま簡単に高速化できるところが素晴らしいよね) エグって呼んで〜
818 名前:デフォルトの名無しさん mailto:sage [2016/05/06(金) 02:23:03.98 ID:FS8HTadE.net] >>815 たぶん標準ではないな 文字列ベースならFINDがあるんだけどね
819 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 01:39:08.36 ID:NOiY1sCF.net] forthに足りないのはコマンド言語だ。 forthのプロシージャー呼び出しはすべてディクショナリ内に限られるため外部プログラムを効率よく利用できない。 シェルスクリプトのように外部forthプログラムをうまく呼び出す機構があればいいが。。。 スタックをパイプのようにプログラムで共有するとおもしろいかもしれない。
820 名前:デフォルトの名無しさん [2016/10/07(金) 16:43:56.85 ID:oA26EQDq.net] gforthで実数演算たとえば、 1.0 +2.0 の様なものをしたいのですが、 1.0e0 2.0e0 + . としても 1.0e0 2.0e0 f+ . としても結果が得られません。 実数演算はどうすればいいのでしょうか。 ご教示お願いいたします。
821 名前:デフォルトの名無しさん mailto:sage [2016/10/07(金) 17:47:53.85 ID:ah4nbj/y.net] www.h7.dion.ne.jp/~samwyn/forth/gforth/Floating-Point-Tutorial.html
822 名前:デフォルトの名無しさん [2016/10/07(金) 19:28:13.23 ID:oA26EQDq.net] >>821 これは、読んだのですが、実例が初心者には敷居が高くて よく理解できません。 2.0 + 3..0 のような簡単な例を示した物は ないでしょうか。
823 名前:デフォルトの名無しさん [2016/10/07(金) 23:18:29.98 ID:oA26EQDq.net] >>822 結局、FACTORに乗り換えました。 こちらの方が判り易くて、すぐ実数演算(浮動小数点演算)ができるように なりました。
824 名前:デフォルトの名無しさん mailto:sage [2016/10/08(土) 01:43:58.77 ID:ID/gDwfMW] >1.0e0 2.0e0 f+ . これの最後を 「.」ではなく「f. 」にすれば、おそらく望んだとおりの結果が得られるかと つまり、 1.0e0 2.0e0 f+ f.
825 名前:デフォルトの名無しさん mailto:sage [2016/10/08(土) 01:48:01.15 ID:ID/gDwfMW] わははw
826 名前:デフォルトの名無しさん mailto:sage [2016/10/09(日) 06:39:24.29 ID:pfNs/KcX.net] 週明け、ちょっと面白いforthの論文読めるかもしれない。 forthっていうより、その上に作られたkevoって風変わりなOOP言語のだけどさ。
827 名前:デフォルトの名無しさん mailto:sage [2016/10/17(月) 19:24:52.26 ID:HyFRmQUJ.net] >>820 その場合 . じゃなくて f.
828 名前:デフォルトの名無しさん [2016/11/06(日) 00:15:56.03 ID:RpZeQ9IA.net] Factorのチュートリアル分かりにくい。Racketを見習え
829 名前:デフォルトの名無しさん [2016/12/30(金) 20:20:02.53 ID:XiEG6f+8.net] もう2016年も終わりだな
830 名前: 【末吉】 【2等 10,000,000円】 mailto:sage [2017/01/01(日) 11:49:42.83 ID:wqx7ZaQB.net] .
831 名前:デフォルトの名無しさん mailto:sage [2017/01/03(火) 10:53:07.10 ID:KXR/d/nR.net] ことしもよろしく!
832 名前:デフォルトの名無しさん [2017/01/03(火) 12:26:49.35 ID:qzU7aiCI.net] >>830 2等おめ
833 名前:デフォルトの名無しさん mailto:sage [2017/02/04(土) 16:41:26.43 ID:6xXEHIbo.net] うんこ 話題ねーなー
834 名前:デフォルトの名無しさん [2017/02/04(土) 16:44:12.53 ID:e9aNESBj.net] あへ
835 名前:デフォルトの名無しさん mailto:sage [2017/02/05(日) 14:14:31.59 ID:nBEZPMY5.net] なんか話せ
836 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 21:19:29.80 ID:5qIw+x2+.net] factor 1.0 マダー
837 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 18:00:20.86 ID:3XbKihVE.net] うんやってみようとおもう。 ところで仕様書(規格書)はどこにあるんですかね?
838 名前:デフォルトの名無しさん [2017/03/03(金) 18:29:59.44 ID:IUFykjWp.net] >1- よめ
839 名前:デフォルトの名無しさん mailto:sage [2017/03/04(土) 00:48:33.45 ID:4xESmR76.net] >>838 わかんない https://www.openfirmware.info/data/docs/dpans94.pdf これかな?
840 名前:デフォルトの名無しさん mailto:sage [2017/03/04(土) 01:07:38.10 ID:4xESmR76.net] www.forth.org/literature.html こっち
841 名前:デフォルトの名無しさん [2017/03/04(土) 12:32:44.96 ID:GRvQ2lmz.net] >>782 まだ残ってたのか
842 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 11:16:21.17 ID:UVNX4qSu.net] みなさーん生きてますかー?
843 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 19:02:54.60 ID:Z+6yuhBz.net] いきとるぞー 純粋なforthは全然さわらずfactorばっかりだけどな あと組み込み機でTITもどきかなー
844 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 19:11:44.32 ID:UVNX4qSu.net] 次スレでは皆が胸を張れるように「スタック指向言語」「連鎖型言語」みたいなくくりにしよう!
845 名前:デフォルトの名無しさん mailto:sage [2017/04/04(火) 02:27:49.55 ID:WA/rnyB6.net] >>844 forthだとスタックに積まれたオブジェクトに関数ってメッセージを送るって言うことだとおもうのだけど。 そういう単純な理解じゃ駄目なの? 言語レベルで隠蔽されていることを生で扱うって事で良いんじゃ無いの? Lispだと関数の呼び出しが括弧で括られいるから呼び出しの引数の扱いが閉じられているけど、forthの場合は関数が必要な分を消費するというか
846 名前:デフォルトの名無しさん mailto:sage [2017/04/04(火) 09:11:34.40 ID:89iVo3+8.net] メッセージ?違う言語と勘違いしてそう
847 名前:デフォルトの名無しさん mailto:sage [2017/04/04(火) 11:14:00.29 ID:wm/ZDuC6.net] コールスタックとforthのスタックは別物だよね。
848 名前:デフォルトの名無しさん mailto:sage [2017/04/05(水) 02:36:38.33 ID:9ywW0Xq5.net] >>847 2つあるんだよ、関数呼び出しの戻りアドレス用のスタックと別にもう一つあるんよ
849 名前:デフォルトの名無しさん [2017/04/05(水) 14:29:17.29 ID:+eJqUohN.net] アキュムレータ
850 名前:デフォルトの名無しさん mailto:sage [2017/04/11(火) 00:06:23.90 ID:N954SJpH.net] forthがスタック指向であるようにアキュムレータ指向のプログラム言語というものは作れるのかな
851 名前:デフォルトの名無しさん mailto:sage [2017/04/11(火) 01:23:43.97 ID:Y8UBVT27.net] >>850 マジレスするとmacroありのassemblerじゃねぇの? macro80やslrasmでもできたぞ
852 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 23:36:33.20 ID:bK+0/AQY.net] >>851 マクロだけでは構文は抽象化出来てもシステムとして抽象化しきれないと思うけど
853 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 02:22:54.36 ID:GjRoh4Fn.net] 単に計算は常にAXを使うってだけなら特に面白みもなさそう スタック無しでレジスタ無限ということなら……単に再帰呼び出し禁止なだけの普通の言語だよなあ
854 名前:デフォルトの名無しさん mailto:sage [2017/04/17(月) 06:41:15.22 ID:Oz2f+5Ln.net] >>852 ニクラウス・ヴィルトの言うところの条件分岐とか繰り返し構文はチョロく書けるよ>>macro80とslrasmとかのマクロアセンブラ つかmacro80とか8bit時代のあのメモリでよくやるわと思う。 forthスレっぽいネタだと昔(1981年の8月号だと思う)のCQ出版の記事でTITって言語があってこれがマクロアセンブラでforthを実装するって記事だったような?
855 名前:デフォルトの名無しさん [2017/07/19(水) 19:04:38.23 ID:IRmsE5AJ.net] 1 . 2 . 3 . 4 .
856 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 12:07:02.89 ID:BkdmOdbH.net] 実に簡素で危険で強力だ。 貧者の言語だな。 俺にふさわしい。
857 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 23:56:49.18 ID:sfrNKeHf.net] もうオレしかいないのか。。。。。
858 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 18:01:02.81 ID:XVvO50gB.net] 無いのはネタだよ
859 名前:デフォルトの名無しさん [2017/09/05(火) 22:07:51.16 ID:jOSE+tCs.net] 俺も見てるよ
860 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 12:34:34.16 ID:nQAnFQdT.net] 時々見に来てる
861 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 15:10:52.90 ID:p7vL1/ES.net] 点呼スレ
862 名前:デフォルトの名無しさん [2017/09/17(日) 21:34:39.86 ID:ozIOAGyP.net] age
863 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 20:29:59.37 ID:lhUDwV9a.net] これまで全く気にしたことないけど、forthって動的にリンクするライブラリの類は存在するの?
864 名前:デフォルトの名無しさん [2017/09/19(火) 17:19:50.82 ID:xxOzXrDl.net] OPT
865 名前:デフォルトの名無しさん mailto:sage [2017/10/10(火) 10:11:32.51 ID:jFJIQFdq.net] いま処理系書いているわけどすよ 古典的なディクショナリに含まれる変数領域(エントリのitcならpfバイトコードならcf)って実行時書き込みが必要だからrom化できないよね? ディクショナリをromに組み込む時どのようにしたらいいの?
866 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 08:39:42.67 ID:vQb8BZek.net] ?単にリンク時に再配置すればよいのではないだろうか
867 名前:デフォルトの名無しさん [2017/11/18(土) 00:00:24.25 ID:u5vhQC2r.net] age
868 名前:デフォルトの名無しさん mailto:sage [2018/02/02(金) 03:15:38.93 ID:ZCx6BMYx.net] 保★守
869 名前:デフォルトの名無しさん [2018/02/03(土) 09:42:57.30 ID:qWVkS+Es.net] やってみ
870 名前:デフォルトの名無しさん [2018/05/23(水) 20:31:13.02 ID:Au5e7VGg.net] 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 96NO5
871 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 02:21:55.88 ID:qEnuCrwb.net] 本当に話題がないんですね
872 名前:デフォルトの名無しさん [2018/07/04(水) 22:35:26.93 ID:gFgZc5FG.net] SQU
873 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 12:19:01.04 ID:uTPDH9XV.net] 96NO5
874 名前:デフォルトの名無しさん [2018/12/08(土) 12:02:33.98 ID:FYXcP+Xf.net] 初心者ですがthinking forth読んでます。 さっそく詰まりました。 : + BL WORD NUMBER DROP ; で+を再定義すると中置記法で3 + 4できるとあり、確かに7が得られるのですが、 どうしてそうなるのか分かりません。 (別に中置記法で書きたいわけではありません) BLが(ボーイズラブではなく)空白の文字コード、 WORDがアドレスを得る、 DROPは . と同じですよね? NUMBERがポイントなのでしょうが… どなたか解説してくれませんか?
875 名前:デフォルトの名無しさん [2018/12/08(土) 14:44:25.82 ID:mtUDrJjH.net] https://books.google.co.jp/books?id=1AlWbXItiCYC&pg=PA111&lpg=PA111&ots=aekOu1m-uM&sig=V0gs7ufaMhDJsPDn6rT08XhStFY&ved=2ahUKEwjKgrCmt4_fAhUMfrwKHQQnBXEQ6AEwBXoECAkQAQ www.nicholson.com/rhn/files/Tiny_BASIC_in_Forth.txt https://www.forth.com/starting-forth/10-input-output-operators/ https://www.forth.com/starting-forth/11-forth-compiler-defining-words/ galileo.phys.virginia.edu/classes/551.jvn.fall01/primer.htm
876 名前:デフォルトの名無しさん mailto:sage [2018/12/19(水) 17:23:11.16 ID:+/rbvZbE.net] >>874 昔々にFORTHをほんのちょっとかじっただけの通りすがりだけど、最後に + が 抜けとるよね。 : + BL WORD NUMBER DROP + ; その抜けとる(再定義前の後置記法で加算する)+ に 3 4を渡して 3 4 + をさせるために4をスタックに積むことをさせとるんだと思う。 空白で区切られた”4”を取ってきて、数字に換えてスタックに乗せといて(元々 の) + に渡たしてる、かな。 . は 印刷で、DROPはスタックから一つ捨てるのような。 ていうか、そこ読んでる時点ではわからんでもいいのでは。
877 名前:デフォルトの名無しさん [2018/12/26(水) 20:16:53.64 ID:v8erlN15.net] >>267 この事情おしえて! できるんなら全部後置がいいと思ってた。 どんななるほどな理由があるんだろう?
878 名前:デフォルトの名無しさん mailto:sage [2018/12/26(水) 21:18:44.18 ID:Sasn9R68.net] ; とか UNTIL のように可変長引数を扱うには先頭に目印が必要になるね。 >>265 がちぐはぐと言っているのがどれのことなのかはわからんが。
879 名前:デフォルトの名無しさん [2018/12/26(水) 21:40:46.64 ID:v8erlN15.net] じゃあ1足して2掛けるワードhogeの定義は : hoge 1 + 2 * ;(hogeとは:1を足して2で掛けることである) だけど別に : 1 + 2 * hoge ;(1を足して2で掛けることをhogeとする) とか : 1 + 2 * ; ." hoge" def(1を足して2で掛けることを"hoge"という名前で定義する) みたいな文法もあり得たのかな? 本体、定義するワードの識別子名 という並びではなく、 定義するワードの識別子名、本体 の並びなのは、何かの事情があっての必然なのか、たまたまなのか、それが知りたいです。
880 名前:デフォルトの名無しさん mailto:sage [2018/12/26(水) 22:58:21.72 ID:Sasn9R68.net] 機能的にはどっちでも可能だろうけど、人が書くコードとしては識別子を前に置く方が わかりやすいからじゃないかと思う。 あと、ディクショナリに登録する際に : からスタックトップ方向にスキャンするなら 識別子が後ろに置かれると一つ先読みが必要になってちょっと面倒くさい。
881 名前:デフォルトの名無しさん mailto:sage [2018/12/27(木) 01:01:36.58 ID:KLGborwt.net] forthって人の都合よりコンピュータの都合優先みたいなイメージだったので人の読みやすさのためだったとしたら意外でした。 後半は納得しました。そうかそれでか… ありがとうございました。
882 名前:デフォルトの名無しさん [2018/12/27(木) 09:49:16.14 ID:0qVX2+Xi.net] >>879 昔の貧弱なメモリとCPUでコンパイラ作るんだから 文法優先じゃなくてコンパイラの事情優先でそうなんだろ
883 名前:デフォルトの名無しさん [2019/06/19(水) 04:58:42.00 ID:tVNS+22r.net] 【出資】松本卓朗 人工知能詐欺【注意】 https://rio2016.5ch.net/test/read.cgi/rikei/1560859403/
884 名前:デフォルトの名無しさん [2019/07/05(金) 18:14:54.04 ID:E00Aj00V.net] 8年と半年掛かって>>624 の言ってる事がようやくわかった。 ここの人って、何周か回っちゃってFORTHに行き着いてるんだね。 いや、SECDマシンってFORTHそっくりじゃん?!と書きに来ました。 では、また・・・。
885 名前:デフォルトの名無しさん [2019/08/28(水) 00:27:04.68 ID:1gWoA2G/.net] https://ja.m.wikipedia.org/wiki/%E3%82%B9%E3%83%AC%E3%83%83%E3%83%87%E3%83%83%E3%83%89%E3%82%B3%E3%83%BC%E3%83%89#%E9%96%8B%E7%99%BA でも触れられている、ムーアが間接スレッデッドコードの発明について述べたというバイト誌のForth特集、なんと今ではWebで読めちゃうw 当時の誌面のスキャン。なんと当時の誌面広告もノーカットw https://archive.org/details/byte-magazine-1980-08/page/n77 さらに親切なことにフルテキストまで公開されてる。 https://archive.org/stream/byte-magazine-1980-08/1980_08_BYTE_05-08_The_Forth_Language_djvu.txt 興味のある方、ぜひ一読を。
886 名前:デフォルトの名無しさん [2019/08/28(水) 01:40:32.21 ID:azl3m+0S.net] 紙屑ωωω
887 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 07:19:51.77 ID:iwi2TSA5.net] >>885 ムーア御大の直々の解説か
888 名前:デフォルトの名無しさん mailto:sage [2020/04/15(水) 15:05:18 ID:SXQ2sjzm.net] Oforth使ってる人いますか? なんとなくSmalltalkぽいですね
889 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 11:39:10.89 ID:Gr5a9V0P.net] apt のgforth.73使ってたんだけどアップデしたらメチャクチャ快適になった… 色付くわhelpコマンド付くわでしゅごい
890 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 08:16:26.52 ID:sDMgzk6G.net] >>889 この言語で何作ってる?
891 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 20:10:16.85 ID:JzQZ+ZwM.net] インスピレーションを得てるよ()
892 名前:デフォルトの名無しさん mailto:sage [2021/01/04(月) 10:36:47.94 ID:62MOX0QC.net] >>821 このurl、forthで検索するとあちこちに見掛けるんだけど閉鎖しちゃったのかな waybackにもgoogle cacheにも残ってない…
893 名前:デフォルトの名無しさん [2021/01/04(月) 15:05:51.77 ID:VbZ6KZlq.net] >>892 >waybackにもgoogle cacheにも残ってない… web.archive.org/web/20160425023618/http://www.h7.dion.ne.jp/~samwyn/forth/gforth/Floating-Point-Tutorial.html
894 名前:デフォルトの名無しさん mailto:sage [2021/01/04(月) 18:39:50.21 ID:VbR1j+mv.net] >>893 使い方が悪かったのかも!ありがとう!
895 名前:デフォルトの名無しさん mailto:sage [2021/03/11(木) 07:45:30.66 ID:ifNxw6Pa.net] 技術的というより哲学っぽいので敬遠してたthinking forth今更読んだけど代名詞の言語というのがしっくり来た どんな言語でもちゃんと書かれれば最上層のコード派読みやすいけどForthがとりわけ読みやすいのはこれだよな 最下層はほとんどアセンブラなのにこの極端性よ
896 名前:デフォルトの名無しさん mailto:sage [2021/03/11(木) 07:58:59.35 ID:ifNxw6Pa.net] でもスタックイジイジするのパズルみたいでめちゃくちゃ楽しいんだよなあ、くやしい…
897 名前:デフォルトの名無しさん mailto:sage [2021/08/23(月) 12:03:08.07 ID:YpDpq+5R.net] もはや(8ビット)PCのためではなく(マニアックな)人間のための言語。
898 名前:デフォルトの名無しさん mailto:sage [2022/01/01(土) 09:37:17.88 ID:6v4FYv8q.net] あけおめ!
899 名前:デフォルトの名無しさん mailto:sage [2022/01/10(月) 20:06:51.30 ID:Ge4oCWB3.net] 久々に書き込みあったと思えば あけおめ! 今どきforthは趣味だろうけど良い趣味だよ あとAndroid版のgforthは関数電卓代わりに毎日使ってる
900 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 14:09:01.58 ID:/9w+5JsX.net] 保守 する価値がまだあるだろうか
901 名前:デフォルトの名無しさん mailto:sage [2022/05/17(火) 10:45:03 ID:u8alpQJv.net] 今勉強中だけどおもしろい しかしパーシングワードはどうにかならんかったのか 定義の底に埋もれたnameが解釈時に吸い込んだりするのが文脈飛んで分かりにくい… psみたいに/name {code} exch def方式のほうが一貫性あったのではないか
902 名前:デフォルトの名無しさん mailto:sage [2022/05/17(火) 10:55:12 ID:u8alpQJv.net] FORTHへの招待って古い本買ったんだけど、PICK/ROLLのindexが1始まりだったり、今の処理系と結構違うよね 長々とハードの話から始まり機能紹介までで終わってて、具体的なコーディングテクニックまでたどり着いてない… モダンでオススメな本ってあるかな
903 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 08:44:16.13 ID:13z7p19v.net] モダンなFORTHなど存在しない!
904 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 15:21:07.51 ID:B9Pct0M/.net] 初学者だけど まあレトロなところに惹かれたのは否定できないな 有名な"FORTH思考"とか、一般プログラミング作法の啓蒙書としては素晴らしい ブロックの章立ての章とかよく考えさせられる、まあ実ファィルに置き換えて写経してるけど
905 名前:デフォルトの名無しさん mailto:sage [2024/01/01(月) 09:03:44.52 ID:MIyexYoQ.net] あけおめ!
906 名前:デフォルトの名無しさん mailto:sage [2024/01/21(日) 09:24:04.48 ID:rroAgTgL.net] 古の8bit機みたいな小さいマシンでnextルーチン書くところから始めてみたい
907 名前:デフォルトの名無しさん [2024/05/04(土) 06:00:27.59 ID:+DAXDwQe.net] 標準FORTHが国会図書館のサイトで読めるようになってる(要登録 https://dl.ndl.go.jp/pid/12631453 他にも古い本が色々見られるようになったっぽい。
908 名前:デフォルトの名無しさん mailto:sage [2024/05/05(日) 14:45:30.58 ID:Fv0JPqsX.net] 読もう。持ってたのは昔無くした
909 名前:デフォルトの名無しさん mailto:sage [2025/01/01(水) 10:04:42.73 ID:exme2yo6.net] あけおめ
910 名前:デフォルトの名無しさん [2025/06/14(土) 06:37:53.81 ID:3Q/jS2n6.net] forthソースファイルをunices上で実行可能ファイルにする一般的な方法ってある? PC上を想定していて超リッチなgforthなら #! 機構を想定して#!を\のシノニムとして定義してくれてて助かるんだけれども、これのない場合にも対応したい 思い付いたのは : && true ; \ exec forth "$0" -- "$@" forth側: ワード&&(普通未定義)をtrue=-1としてコロン定義、後はコメント sh側: :コマンドが成功したらtrueコマンドを実行、次にインタプリタを起動 なんだけれどsh側では " exec" "forth" ... とトークン化されてcommand not found \execとスペース開けずに書けたら良いんだけどするとforthはコメントとして認識しない 何かいい知恵あったら教えてください
911 名前:デフォルトの名無しさん [2025/06/14(土) 06:52:21.04 ID:3Q/jS2n6.net] >>902 forthのrollは n roll でn個先までを1回まわすけど postscriptのrollは n m roll でn個先までm回まわせてより強力なのよね mは負でも可で逆回転もできる あんまりコードに数値を入れるのはbad practiceとはいえforth書いてると時々欲しくなるやつ…
912 名前:デフォルトの名無しさん [2025/06/21(土) 00:54:36.13 ID:flEjrxpy.net] >>910 だけど自己解決 : && true ; ( exec forth "$0" -- "$@" ) で行けた 潔癖症ではないから定義されたワード&&は気にしない、たぶん処理系定義の&&は見たこと無いこら潰す事もないはず 一応win32forthとか複数の処理系で forget && て消せたと思うんだけれど、今試してみたらgforthに無いからforgetは非標準ワードなのな
913 名前:デフォルトの名無しさん [2025/06/21(土) 11:16:23.88 ID:fGhLJfIJ.net] こら
914 名前:デフォルトの名無しさん [2025/06/26(木) 14:21:09.64 ID:nmyewptE.net] 神経質すぎじゃねる まあforgetはmarkerで実装できそうな気がする
915 名前:デフォルトの名無しさん [2025/10/12(日) 02:30:37.41 ID:DKsy7+ZR.net] PCで触ってないからunix(shebang)+forth処理系のハックは詳しくないんだけれども、まあ面白そうだね ワードを消すforgetは任意のワード対象、で良かったかな(たしかそう) しかしmarkerは事前に設定したマーカーまでオフセットずらして巻き戻し、よってそれまでのワードがリセットされる仕組みだったはずだから、任意ワードを、特に名指しで消すには不向きでは いやまあ消せるんだからマーカーの記録されてるメモリを退避したりリカバリしたり丁寧に管理してやればできるはずだが…
916 名前:デフォルトの名無しさん [2025/10/17(金) 05:21:31.52 ID:D1Ebmx1L.net] 別に余計なワードがあろうと問題なくね たまたま同じ名前のワードを定義したらそれが有効な訳だし ブートストラップ用途なら別に潰されても困らん、ブートストラップにしか使わんのだからな