[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2ch.scのread.cgiへ]
Update time : 10/21 01:06 / Filesize : 204 KB / Number-of Response : 917
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

2 part forth



1 名前:デフォルトの名無しさん [04/01/10 03:45.net]
第四世代

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]
&amp;nbsp;test

662 名前:デフォルトの名無しさん mailto:sage [2012/11/12(月) 07:13:40.73 .net]
 &amp;#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]
&nbsp;&nbsp;&nbsp;a
   a
&#xA0;&#xA0;&#xA0;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]
別に余計なワードがあろうと問題なくね
たまたま同じ名前のワードを定義したらそれが有効な訳だし
ブートストラップ用途なら別に潰されても困らん、ブートストラップにしか使わんのだからな






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<204KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef