探検
2 part forth
レス数が900を超えています。1000を超えると表示できなくなるよ。
260デフォルトの名無しさん
2005/12/07(水) 02:41:39 何か話題ないのか
261デフォルトの名無しさん
2005/12/07(水) 10:20:28 FORTH にある ROT って
つまり age のことだよね?
最近やっと気付いたよ w
つまり age のことだよね?
最近やっと気付いたよ w
262デフォルトの名無しさん
2005/12/07(水) 22:57:42 : age ROT ;
263デフォルトの名無しさん
2005/12/07(水) 23:57:33 sage は SWAP でいいのかな?
: sage SWAP ;
: sage SWAP ;
264デフォルトの名無しさん
2005/12/08(木) 02:35:14 やっぱり
: foo bar ;
より
/foo { bar } def
の方がわかりやすいなあ
: を imdsw_on ; を imdsw_offとかにすれば
ちょっとはわかるような
わからんか
: foo bar ;
より
/foo { bar } def
の方がわかりやすいなあ
: を imdsw_on ; を imdsw_offとかにすれば
ちょっとはわかるような
わからんか
265デフォルトの名無しさん
2005/12/10(土) 01:54:03 FORTHは全部が後置記法に統一されてないのがちぐはぐで嫌
266デフォルトの名無しさん
2005/12/16(金) 14:42:09 age
267デフォルトの名無しさん
2005/12/16(金) 19:51:11268デフォルトの名無しさん
2005/12/16(金) 20:26:43269デフォルトの名無しさん
2005/12/16(金) 22:34:35 前から後ろから
270デフォルトの名無しさん
2005/12/17(土) 08:06:49 でも入口と出口は一緒
pushしてpop
「おめでとうございます。元気な男の子ですよ」
pushしてpop
「おめでとうございます。元気な男の子ですよ」
271デフォルトの名無しさん
2005/12/17(土) 10:33:36 interlog
272デフォルトの名無しさん
2005/12/17(土) 12:43:43 そこで、swapしちゃいます
273デフォルトの名無しさん
2005/12/17(土) 13:46:53 HTROFに改名しますた
274デフォルトの名無しさん
2006/01/07(土) 18:05:41 自然数 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
となるようにです。
よろしくおながいします。
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デフォルトの名無しさん
2006/02/12(日) 23:31:47 ゅしほ
276デフォルトの名無しさん
2006/03/05(日) 10:04:15277デフォルトの名無しさん
2006/03/05(日) 16:17:17 訳注に書いてあるとおり。
プログラムの可読性を損ねるからだと思われ。
プログラムの可読性を損ねるからだと思われ。
2006/03/18(土) 22:15:13
TextSS のWindowsXP(Professional)64bit対応化おながいします
もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
そういや64bitにネイティブ対応している2chブラウザてありましたっけ?
もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
そういや64bitにネイティブ対応している2chブラウザてありましたっけ?
279デフォルトの名無しさん
2006/03/30(木) 18:03:27280デフォルトの名無しさん
2006/03/30(木) 18:17:19 オライリーの表紙に龍はないだろ
281デフォルトの名無しさん
2006/05/02(火) 18:58:48 >>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とかやってみて。
こんな感じか? たぶんもっと美しいやり方があるのだろうが、ヘタレの
俺にはこの程度しかわからん。
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 Thinking FORTH を CCL で日本語化するプロジェクトが進行中。
本日作業分担を大まかに決める予定。
日本FORTH研究会の会報をPDF・オープン化することも本日の議題。
LL Ring! Language Update に出るか否かも本日決定?
第3世代 FIG JAPAN 立ち上げたいなぁ。
本日作業分担を大まかに決める予定。
日本FORTH研究会の会報をPDF・オープン化することも本日の議題。
LL Ring! Language Update に出るか否かも本日決定?
第3世代 FIG JAPAN 立ち上げたいなぁ。
284デフォルトの名無しさん
2006/05/18(木) 16:13:05 >>282 期待age
285デフォルトの名無しさん
2006/05/18(木) 16:13:50 sageいれちまった... orz
286デフォルトの名無しさん
2006/05/18(木) 16:19:51 というか日本支部生きてたのか(w
287デフォルトの名無しさん
2006/06/01(木) 02:25:15288デフォルトの名無しさん
2006/08/09(水) 18:37:34 LL Ringに参戦するようだが、勝算はどれくらいだろう?
290デフォルトの名無しさん
2006/08/30(水) 06:22:31 つ win32forth
291デフォルトの名無しさん
2006/08/30(水) 08:50:36 LLRing乙でした。
292デフォルトの名無しさん
2006/09/03(日) 23:05:33 FORTHマンセー
293デフォルトの名無しさん
2006/10/21(土) 16:45:01 最近話題無いの?
294デフォルトの名無しさん
2006/10/21(土) 22:50:10 back and forthです。
295デフォルトの名無しさん
2006/10/21(土) 22:51:33 joyとかの話する?
296デフォルトの名無しさん
2006/10/23(月) 13:32:14 今更forth使ってる人は自分で問題解決できる人ばっかだからなあ
297デフォルトの名無しさん
2006/10/25(水) 07:31:20 >>296
解決できない俺はどうすれば・・・
解決できない俺はどうすれば・・・
298デフォルトの名無しさん
2006/10/26(木) 00:39:00 質問すればいいんじゃねえの?!
しかしこのスレ
2年以上経つのにまだ300行ってないのか
しかしこのスレ
2年以上経つのにまだ300行ってないのか
299デフォルトの名無しさん
2006/11/10(金) 22:20:47 なんかニュースないの?
300デフォルトの名無しさん
2006/11/10(金) 22:26:12301デフォルトの名無しさん
2006/11/28(火) 05:56:22302デフォルトの名無しさん
2006/11/29(水) 12:28:15 : hoge foo bar ;
{ foo bar } hoge def #コードブロック
* foo bar hoge def #なし
{ foo bar } hoge def #コードブロック
* foo bar hoge def #なし
303デフォルトの名無しさん
2006/12/09(土) 03:15:37304デフォルトの名無しさん
2006/12/10(日) 21:07:56 虎擬の新年号付属基板に移植するプロジェクト
305デフォルトの名無しさん
2006/12/26(火) 05:05:37306デフォルトの名無しさん
2007/01/28(日) 04:43:44 a
307デフォルトの名無しさん
2007/02/27(火) 19:51:33 b
308デフォルトの名無しさん
2007/02/27(火) 20:28:16 FORTH のすごいところは 対話型の言語でありながらコンパイラだってとこじゃないのかなぁ…
309デフォルトの名無しさん
2007/02/27(火) 20:57:50 forthの凄いところは2スタックマシンと辞書による入れ子構造だと思う。
310デフォルトの名無しさん
2007/03/02(金) 12:31:00 (・∀・ )っ/凵 ⌒☆ VisualForthマダー?
311デフォルトの名無しさん
2007/03/02(金) 12:34:49312デフォルトの名無しさん
2007/03/30(金) 06:30:41 最近のCPUって、プログラムの自己書き換えができないとか聞いたけど、
そうだとするとFORTH実装するのつらいよね。
そうだとするとFORTH実装するのつらいよね。
313デフォルトの名無しさん
2007/03/30(金) 07:48:32 たしかに今も昔もCPUの回路は自分で変更できないな。
314デフォルトの名無しさん
2007/03/30(金) 23:27:06 メモリ書き換えればいいじゃん >312
315デフォルトの名無しさん
2007/03/31(土) 16:33:43 >>314
最近のCPUってもコードキャッシュに先読みしたりしているから、
下手にメモリを書き換えると、先読みしたコードと、実際のメモリのコードが一致しなくなる。
ので、正常に動作しなくなったり、パイプラインにペナルティが発生して、動作がおそくなったりするらしい。
FORTHって、新しくワードを追加すると、自分自身が大きくなっていくような言語だから、
そこらへんどうすればいいのかわからない。
だれか教えてくれんかな。
最近のCPUってもコードキャッシュに先読みしたりしているから、
下手にメモリを書き換えると、先読みしたコードと、実際のメモリのコードが一致しなくなる。
ので、正常に動作しなくなったり、パイプラインにペナルティが発生して、動作がおそくなったりするらしい。
FORTHって、新しくワードを追加すると、自分自身が大きくなっていくような言語だから、
そこらへんどうすればいいのかわからない。
だれか教えてくれんかな。
316デフォルトの名無しさん
2007/04/01(日) 05:04:00 FORTH以前にコンピュータの基礎知識が混乱してるな。
317デフォルトの名無しさん
2007/04/01(日) 12:54:31 >>316
FORTHの事、知らないだろ。
FORTHの事、知らないだろ。
318デフォルトの名無しさん
2007/04/01(日) 13:11:17319デフォルトの名無しさん
2007/04/01(日) 16:33:44 最近だとこの関係でJITコンパイラとXDビットでも問題になってましたな。
JIT関係にノウハウありそうだけど、良く判らん
JIT関係にノウハウありそうだけど、良く判らん
320デフォルトの名無しさん
2007/04/02(月) 05:03:35 べつに何の困難もないと思うけどな。
パラメータスタックなんて自由度の低いポインタみたいなもんじゃん。
パラメータスタックなんて自由度の低いポインタみたいなもんじゃん。
321デフォルトの名無しさん
2007/04/11(水) 23:18:58 なんかよくわからんけど、問題になりそうなのは、既存ワードの書き換え時だと思うので、
ワード書き換え→キャッシュをフラッシュ
でいいと思う。
ワード書き換え→キャッシュをフラッシュ
でいいと思う。
322デフォルトの名無しさん
2007/04/23(月) 23:27:41 いかにForthでも、線路を作りながら電車を走らせるようなことはありません。
ワードをコンパイルした後、そのワードを実行するまでには
少なくとも実行ワード名を読み込むI/Oプロセスが介在するので、
人間にとっては一瞬でも、機械には一服する余裕があります。
あと、Forthのワードのオーバーライドは、
関数型言語によくあるようにプログラムの全体についてそのワードの定義を更新するのではなく、
再定義後に読み込まれる部分についてしか効果がありません。
後から遡って定義を変更できるようにするには、
初めから特別な方法で定義しておくようになっています。
こんな感じでどうでしょう。
ワードをコンパイルした後、そのワードを実行するまでには
少なくとも実行ワード名を読み込むI/Oプロセスが介在するので、
人間にとっては一瞬でも、機械には一服する余裕があります。
あと、Forthのワードのオーバーライドは、
関数型言語によくあるようにプログラムの全体についてそのワードの定義を更新するのではなく、
再定義後に読み込まれる部分についてしか効果がありません。
後から遡って定義を変更できるようにするには、
初めから特別な方法で定義しておくようになっています。
こんな感じでどうでしょう。
323デフォルトの名無しさん
2007/04/24(火) 06:20:31 forthの人気のなさは異常
324デフォルトの名無しさん
2007/04/24(火) 23:36:56 異常だな。〜 if 〜 then 〜 else のせいだったりするんかね?
……forthに何があったらもっと流行るかな?
……forthに何があったらもっと流行るかな?
325sage
2007/04/24(火) 23:53:34 て、むしろ正常ってこと?
326デフォルトの名無しさん
2007/04/28(土) 23:24:51 Forthを使いたいと思う人より、Forthの処理系を造りたいと思う人の方が多そうな予感
327デフォルトの名無しさん
2007/04/30(月) 07:13:54 自分もForthを作っているクチ
毎日、Forthでプログラム作ってるぜ!って奴はいますか?
毎日、Forthでプログラム作ってるぜ!って奴はいますか?
328デフォルトの名無しさん
2007/04/30(月) 08:55:54 ど素人の趣味なので毎日はしませんが、Forth系じゃないコードはほとんど書きません。
むしろForthでForthを作れば良いのではないかと思います。
むしろForthでForthを作れば良いのではないかと思います。
329デフォルトの名無しさん
2007/04/30(月) 12:17:29 >328
Schemeみたいに最低限のプリミティブを用意して、それからForthを組むようにしたら面白いかもね。
Lispだとこんな感じか。
ttp://ja.wikipedia.org/wiki/LISP#.E6.9C.80.E5.B0.8F.E3.81.AELISP
Forthの場合、スタック関連の操作、代入、分岐、Immediate、postponeぐらいで
実装できそうな気がする
Schemeみたいに最低限のプリミティブを用意して、それからForthを組むようにしたら面白いかもね。
Lispだとこんな感じか。
ttp://ja.wikipedia.org/wiki/LISP#.E6.9C.80.E5.B0.8F.E3.81.AELISP
Forthの場合、スタック関連の操作、代入、分岐、Immediate、postponeぐらいで
実装できそうな気がする
330328
2007/04/30(月) 21:27:11 >>329
古典的なForthみたいにですね。
昔はアセンブリで書いた核の部分は、今はCでいいですからね。
ただ、何を核にすれば必要十分なのかについて、あまり資料がないですね。
四則演算と論理演算(ビット操作)もあった方がいい気もしますが、どうなんでしょう
(Lispは四則演算はいらない?)。
gforthはそういうやり方らしいですけど、
実行速度のためCで書き込むプリミティブを多めに取ったと書いています。
はじめ漠然と考えていたのは、間接スレッディングのforth環境の上でネイティブ方式のforthを頭から書いてしまう
というようなことでした。Executableフォーマットのファイルを作るのが結構面倒ですけど。
そこまでしなくても、Cのダイナミックライブラリとのインターフェイスがforth上で書ければ、
ほとんど何でもforthでできるんですけどね。
逆に言えば、マシンやOSの低レベルの仕様を調べないと派手なことをするのは難しいので、
そこが難点かも知れません。
もともとforthは言語仕様自体は貧弱なので、
アプリケーション毎に自前の言語を組上げていくみたいな面白さもあります。
インプットストリームも弄れるので、シンタックスまで変更できますし。
それがあまり面白がられていないということですかね。
古典的なForthみたいにですね。
昔はアセンブリで書いた核の部分は、今はCでいいですからね。
ただ、何を核にすれば必要十分なのかについて、あまり資料がないですね。
四則演算と論理演算(ビット操作)もあった方がいい気もしますが、どうなんでしょう
(Lispは四則演算はいらない?)。
gforthはそういうやり方らしいですけど、
実行速度のためCで書き込むプリミティブを多めに取ったと書いています。
はじめ漠然と考えていたのは、間接スレッディングのforth環境の上でネイティブ方式のforthを頭から書いてしまう
というようなことでした。Executableフォーマットのファイルを作るのが結構面倒ですけど。
そこまでしなくても、Cのダイナミックライブラリとのインターフェイスがforth上で書ければ、
ほとんど何でもforthでできるんですけどね。
逆に言えば、マシンやOSの低レベルの仕様を調べないと派手なことをするのは難しいので、
そこが難点かも知れません。
もともとforthは言語仕様自体は貧弱なので、
アプリケーション毎に自前の言語を組上げていくみたいな面白さもあります。
インプットストリームも弄れるので、シンタックスまで変更できますし。
それがあまり面白がられていないということですかね。
331デフォルトの名無しさん
2007/05/03(木) 09:02:05 昔、近所の古本屋で標準FORTHを100円で保護したのだが、捨ててしまった。漏れの馬鹿。
ところで、Beginning Forthを注文した。米国からなので2週間くらいかかりそう。
ところで、Beginning Forthを注文した。米国からなので2週間くらいかかりそう。
332デフォルトの名無しさん
2007/05/06(日) 22:37:02 Forthはともかく資料不足。よって今更ながら英語の入門書をもう一個:
ttp://www.mpeforth.com/books.htm
『Programming Forth』 - Stephen Pelc et al.
ttp://www.mpeforth.com/books.htm
『Programming Forth』 - Stephen Pelc et al.
333デフォルトの名無しさん
2007/05/16(水) 04:42:21 汎用で考えるとやっぱり今どきスタックは32ビット長ですよねえ。
そこで移植にお勧めの埋め込み用32ビットプロセッサって何がありますか?
I/Oがたっぷり用意されているので遊べるかなって思いますがどうでしょう。
そこで移植にお勧めの埋め込み用32ビットプロセッサって何がありますか?
I/Oがたっぷり用意されているので遊べるかなって思いますがどうでしょう。
334デフォルトの名無しさん
2007/05/24(木) 20:39:30 パフォーマンス優先ならSHじゃね?
最近秋葉でも手に入りやすくなったし。
FORTHコンパイラをアセンブラでガリガリに書きたい人なら
アセンブラが書きやすいH8かな。
最近秋葉でも手に入りやすくなったし。
FORTHコンパイラをアセンブラでガリガリに書きたい人なら
アセンブラが書きやすいH8かな。
335デフォルトの名無しさん
2007/06/05(火) 19:20:03 φ(。。) めもめも
336デフォルトの名無しさん
2007/06/05(火) 20:54:14 HDLだけでFORTHは作れる?
337デフォルトの名無しさん
2007/06/11(月) 13:07:14 >>336
作れるみたいですね やってみたことないけどw
ttp://www.ultratechnology.com/chips.htm
この中のMicroCoreって初めて知りました
ttp://www.microcore.org/
作れるみたいですね やってみたことないけどw
ttp://www.ultratechnology.com/chips.htm
この中のMicroCoreって初めて知りました
ttp://www.microcore.org/
338デフォルトの名無しさん
2007/07/26(木) 16:12:13 joyの話しようぜ
339デフォルトの名無しさん
2007/09/15(土) 23:22:38 後で読む: i386 / Linux 向け Forth コンパイラの作り方。
ttp://www.annexia.org/_file/jonesforth.s.txt
ttp://www.annexia.org/_file/jonesforth.s.txt
340デフォルトの名無しさん
2007/09/26(水) 15:51:44 CでForthの処理系を書いてみた。
GCにはBoehm GC、辞書にはJudy Arrayを使ったので
ほとんど手間がかかっていないわりに速かった。
まだ単純な処理しか出来ないけどrubyとかより速いかも。
GCにはBoehm GC、辞書にはJudy Arrayを使ったので
ほとんど手間がかかっていないわりに速かった。
まだ単純な処理しか出来ないけどrubyとかより速いかも。
341デフォルトの名無しさん
2007/09/29(土) 00:15:24 ささやかな期待
342デフォルトの名無しさん
2007/09/29(土) 19:36:42 rubyより遅いforhtなんてあるのか?
343デフォルトの名無しさん
2007/09/29(土) 19:51:26 >>342
rubyで書けばいいんじゃね?
rubyで書けばいいんじゃね?
344デフォルトの名無しさん
2007/09/30(日) 17:21:13 >>343
激しく楽しくない気が
激しく楽しくない気が
345デフォルトの名無しさん
2007/09/30(日) 19:36:18 >>340
GC?
GC?
346デフォルトの名無しさん
2007/10/02(火) 20:36:49 >>345
Garbage Collector でそ。
Garbage Collector でそ。
347デフォルトの名無しさん
2007/10/02(火) 22:29:09 (forthに)GC?
てことじゃないか?
てことじゃないか?
349デフォルトの名無しさん
2007/10/04(木) 15:23:24 concatenative
350デフォルトの名無しさん
2007/10/07(日) 11:41:29 " hoge" は汚なく感じるな
"hoge" か " hoge " だろと
"hoge" か " hoge " だろと
351デフォルトの名無しさん
2007/10/16(火) 01:35:58 http://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
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デフォルトの名無しさん
2007/10/24(水) 17:49:19 FreeBSD 6.2 では boot loder の動作を
コントロールするために ficl という forth が使われていて
るので、勉強中です。
FreeBSD のサーバーをリモートから管理しています。
以前のバージョンでは nextboot(8) で別ディスク上のカーネルを
次回のみテスト的に起動する設定ができたのですが、今のバージョン 6.2 では
nextboot(8) では同一ディスク内のカーネルのテスト的起動しかできません。
二台のディスクがついているマシンのそれぞれのディスクに別々にOSを
インストールして、交互にアップデートをかけたいのです。
リモートからのコントロールしかできないので、ssh のアクセスができなく
なると一万円払ってOS再インストールなので
そんなわけで、forth のcodeを見ているのですが、難しいです。 orz
FreeBSDのloader 改造したりしている人はいませんか?
コントロールするために ficl という forth が使われていて
るので、勉強中です。
FreeBSD のサーバーをリモートから管理しています。
以前のバージョンでは nextboot(8) で別ディスク上のカーネルを
次回のみテスト的に起動する設定ができたのですが、今のバージョン 6.2 では
nextboot(8) では同一ディスク内のカーネルのテスト的起動しかできません。
二台のディスクがついているマシンのそれぞれのディスクに別々にOSを
インストールして、交互にアップデートをかけたいのです。
リモートからのコントロールしかできないので、ssh のアクセスができなく
なると一万円払ってOS再インストールなので
そんなわけで、forth のcodeを見ているのですが、難しいです。 orz
FreeBSDのloader 改造したりしている人はいませんか?
353デフォルトの名無しさん
2007/11/03(土) 19:38:03 いまふ
354デフォルトの名無しさん
2007/12/22(土) 11:53:19 dsForthがアドエスで動くのはガイシュツ?
355デフォルトの名無しさん
2008/01/04(金) 04:23:01 notガイシュツ
356デフォルトの名無しさん
2008/01/27(日) 13:50:29 このスレの人たちが使う電卓はRPLだったりするの?
357デフォルトの名無しさん
2008/01/27(日) 15:03:59 HPの電卓?
359デフォルトの名無しさん
2008/01/27(日) 18:59:27 HP41CV,HP28,HP48SX,HP32S,と使ってきましたよ。
ちなみに今使っているHP35は問題大あり!
ちなみに今使っているHP35は問題大あり!
360デフォルトの名無しさん
2008/02/07(木) 10:12:19 Adobe高速JavaScript実装、バイトコードにForthを採用
http://journal.mycom.co.jp/news/2008/02/07/011/index.html
http://journal.mycom.co.jp/news/2008/02/07/011/index.html
361デフォルトの名無しさん
2008/02/07(木) 15:34:36 LLVM涙目
362デフォルトの名無しさん
2008/02/07(木) 21:52:21 単なるスタックベースのVMなだけじゃないの?
JavaVMとか既存のVMと一緒でしょ
JavaVMとか既存のVMと一緒でしょ
363デフォルトの名無しさん
2008/02/16(土) 22:40:23 急に某ゲーム機上で動くforthが作りたくなって>>339が挙げてるやつ読んでるんだが(まあこれはi386用だけど)、わかりやすいなこれ
実を言うと今までforthはあまり理解してなかったけど、モヤモヤしてたことがすっきりしてきた
しかしforthってシンプルで美しいなぁ
Lispやsmalltalkに負けないと思うのに、このマイナーさ…
実を言うと今までforthはあまり理解してなかったけど、モヤモヤしてたことがすっきりしてきた
しかしforthってシンプルで美しいなぁ
Lispやsmalltalkに負けないと思うのに、このマイナーさ…
364デフォルトの名無しさん
2008/02/17(日) 00:09:41 concatenative languageあたりをキーワードにWebをさまよってみると良いよ。
joy factorあたりが面白いかね。おいらも俺言語作成中。
joy factorあたりが面白いかね。おいらも俺言語作成中。
365デフォルトの名無しさん
2008/02/17(日) 00:24:42 factor は良いねぇ。秘かに期待している。
366デフォルトの名無しさん
2008/02/18(月) 11:50:59基本的に
1.stackの一番上と二番目の値に対して演算
2.stackの一番上だけ取り除く
3.stackのn番目と一番目を交換
の機能だけがあると思ってていい?
367デフォルトの名無しさん
2008/02/19(火) 07:10:53 concatenativeに?
それならスタックに対する関数適用だけかな
それならスタックに対する関数適用だけかな
368デフォルトの名無しさん
2008/03/20(木) 14:28:46 forthのコメントってもしやforthで書かれてる?
( コメント ) ←これ
( コメント ) ←これ
369デフォルトの名無しさん
2008/03/20(木) 15:22:35370デフォルトの名無しさん
2008/03/20(木) 15:50:12 >>369
いやなんかマクロみたいな機能を使って書かれているのかなーと
forth知らないので全然分かんないんですけど
要するに↓みたいにforth言語で書かれているのか?ってことです
: ( hoge hoge ... ;
いやなんかマクロみたいな機能を使って書かれているのかなーと
forth知らないので全然分かんないんですけど
要するに↓みたいにforth言語で書かれているのか?ってことです
: ( hoge hoge ... ;
371デフォルトの名無しさん
2008/03/20(木) 20:15:20 『標準FORTH』だと pp.166 にある。
: ( 29 WORD DROP ; IMMEDIATE
29 は ')' のコード
WORD はスタックトップと同じキャラが出てくるまで入力を読んで、
その先頭のアドレスをスタックトップに置くワード。DROP は説明の
必要ないな。IMMEDIATE は直前に定義されたワードを、
イミディエイトワードにするワード。
C マガジンのきだあきらさんの連載『千言万語』の Forth の時に
紹介してたネタだったような気もする。
: ( 29 WORD DROP ; IMMEDIATE
29 は ')' のコード
WORD はスタックトップと同じキャラが出てくるまで入力を読んで、
その先頭のアドレスをスタックトップに置くワード。DROP は説明の
必要ないな。IMMEDIATE は直前に定義されたワードを、
イミディエイトワードにするワード。
C マガジンのきだあきらさんの連載『千言万語』の Forth の時に
紹介してたネタだったような気もする。
372デフォルトの名無しさん
2008/03/20(木) 20:16:04 千言万語単行本にならねーかな
373デフォルトの名無しさん
2008/03/20(木) 21:37:32 追加。
イミディエイトワード、というのが、プログラムの実行時ではなく
読み込み時に意味を持つワードなので、マクロのような機能と
言えるかもしれません。
イミディエイトワード、というのが、プログラムの実行時ではなく
読み込み時に意味を持つワードなので、マクロのような機能と
言えるかもしれません。
374デフォルトの名無しさん
2008/03/21(金) 07:42:46 >>371-373
サンクス
http://www.geocities.jp/naosacra/mops/particle2/immediate.html
これ見てるけどimmediateの意味がいまいちわからん…
何のためのものなんだ?
: ( 29 WORD DROP ; IMMEDIATE
例えば↑にimmediateがついてなかったらどういう動作になるんだろう
サンクス
http://www.geocities.jp/naosacra/mops/particle2/immediate.html
これ見てるけどimmediateの意味がいまいちわからん…
何のためのものなんだ?
: ( 29 WORD DROP ; IMMEDIATE
例えば↑にimmediateがついてなかったらどういう動作になるんだろう
375デフォルトの名無しさん
2008/03/21(金) 08:55:03 仮に ( がイミディエイトワードで無かったとすると、
: hoge ほげほげ ( ほげほげ ) ;
とか書いた場合に、hoge の定義の一部として、実行される部分になって
しまいます。定義中でも直ちに実行されるワードがイミディエイトワードです。
: hoge ほげほげ ( ほげほげ ) ;
とか書いた場合に、hoge の定義の一部として、実行される部分になって
しまいます。定義中でも直ちに実行されるワードがイミディエイトワードです。
376デフォルトの名無しさん
2008/03/22(土) 10:18:31377デフォルトの名無しさん
2008/03/27(木) 22:38:05 最近、Concatenativeな言語というもの目にしたんでage
378デフォルトの名無しさん
2008/03/28(金) 00:23:41 なんか酷いのみつけてきたwwwww
ちょっと草植えときますね型言語 Grass
http://www.blue.sky.or.jp/grass/doc_ja.html
スタックマシン使ってるってだけみたいだが(俺には良く分からん)
ちょっと草植えときますね型言語 Grass
http://www.blue.sky.or.jp/grass/doc_ja.html
スタックマシン使ってるってだけみたいだが(俺には良く分からん)
379デフォルトの名無しさん
2008/03/31(月) 10:36:35 forth厨はなんでもかんでもスタックマシンにするな
380デフォルトの名無しさん
2008/04/03(木) 02:09:52 factorでHelloWorldのCGIやってみた
httpdからのfactor起動はバッチファイルで
USING: io ;
"Content-type: text/html; charset=Shift_JIS\n\n" print
"<HTML><head><title></title></head>\n<body>" print
"はろ〜factor表\示可能\" print
"<br>\n</body></HTML>" print
なんか楽しいw
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デフォルトの名無しさん
2008/04/10(木) 03:00:58 あれ?factorの新しいの入れたら日本語出なくなった
エンコード関係?
エンコード関係?
382デフォルトの名無しさん
2008/05/14(水) 14:10:30 factorソースから入れるのめんどくさいな・・・
gitなんて初めて知ったよ
gitなんて初めて知ったよ
383デフォルトの名無しさん
2008/06/03(火) 17:56:33 何か面白い話無い?
384デフォルトの名無しさん
2008/06/05(木) 11:05:57 スタック1本で動作する処理系作れ
385デフォルトの名無しさん
2008/06/05(木) 16:18:58 バロースのメインフレームはシングルスタックなんだぜ?
386デフォルトの名無しさん
2008/06/05(木) 18:37:49 wikipediaより
> スタックを1つしか持たないスタックマシンは、
> 計算モデルとしては非常に弱い。例えば、1-スタックマシンでは、
> 0n1n(0の並びの後に同じ個数の1が並ぶ言語)のような単純な言語も認識できない。
> 1-スタックマシンの計算能力は、有限オートマトンよりも高いが、
> 決定性プッシュダウン・オートマトンよりも低い。
> 一方、複数のスタックを持つスタックマシンはチューリング機械と等価である。
> 例えば、2-スタックマシンでは、チューリング機械をエミュレートできる
> (チューリング機械のヘッド位置から左側のテープをひとつのスタックが代替し、
> 右側のテープをもうひとつのスタックが代替する)。
へぇ〜
> スタックを1つしか持たないスタックマシンは、
> 計算モデルとしては非常に弱い。例えば、1-スタックマシンでは、
> 0n1n(0の並びの後に同じ個数の1が並ぶ言語)のような単純な言語も認識できない。
> 1-スタックマシンの計算能力は、有限オートマトンよりも高いが、
> 決定性プッシュダウン・オートマトンよりも低い。
> 一方、複数のスタックを持つスタックマシンはチューリング機械と等価である。
> 例えば、2-スタックマシンでは、チューリング機械をエミュレートできる
> (チューリング機械のヘッド位置から左側のテープをひとつのスタックが代替し、
> 右側のテープをもうひとつのスタックが代替する)。
へぇ〜
387デフォルトの名無しさん
2008/07/17(木) 00:50:58 factorのドキュメント消えてら
388デフォルトの名無しさん
2008/08/01(金) 21:55:57 V
http://en.wikipedia.org/wiki/V_(programming_language)
Onyx
http://www.canonware.com/onyx/
Forthもこれらも俺には使いこなせないんだけどね orz
http://en.wikipedia.org/wiki/V_(programming_language)
Onyx
http://www.canonware.com/onyx/
Forthもこれらも俺には使いこなせないんだけどね orz
389388
2008/08/01(金) 21:57:15390デフォルトの名無しさん
2008/08/02(土) 03:04:06 Forthの実装中sage
実装法のドキュメント付きで晒すかも
実装法のドキュメント付きで晒すかも
391デフォルトの名無しさん
2008/08/02(土) 04:01:08392デフォルトの名無しさん
2008/08/02(土) 06:07:26 久々にレスキタワァ*・゜゚・*:.。..。.:*・゜(n‘∀‘)η゚・*:.。. .。.:*・゜゚・* !!!!!
393デフォルトの名無しさん
2008/08/02(土) 08:44:15 >>390
http://www.google.co.jp/search?hl=ja&q=codepad&btnG=%E6%A4%9C%E7%B4%A2&lr=
どんな言語使って作るかしらん
こんなの補助として使ってみるのも便利かもしらん
http://www.google.co.jp/search?hl=ja&q=codepad&btnG=%E6%A4%9C%E7%B4%A2&lr=
どんな言語使って作るかしらん
こんなの補助として使ってみるのも便利かもしらん
394390
2008/08/02(土) 14:40:33 過疎っぷりに見てる人もいないと思ったら、意外といたのね。
>>391
Forthの実装は初めてなので、古典的で教科書通りのIndirect Threaded Code、
Cで書いた仮想マシンの上で動かすってかんじで。
今はMac OS XとLinux(x86)とLinux Zaurus(arm)の上でぽちぽち書いてる。
ポータビリティーは良いのでメモリがあって速度も気にしなければ
簡単にマイコンにも移植可能だと思う。H8なら余裕かな。
今月のトラ技の78K0基板持ってるんだけど、こっちはきついかも。
>>392
あばばばばばば
>>393
おお、こんな面白いのがあったのね。
とりあえずアカウント取ってみた。
このスレに落書きしつつ、blogにまとめてけばいいかな。
ANS-ForthのCORE準拠を目指して
http://www.taygeta.com/forth/dpans.html
読んでるんだけど、けっこうめんどいなあ。
ある程度実装の目処がたったらコード晒してくつもり。
少々お待ちを。
>>391
Forthの実装は初めてなので、古典的で教科書通りのIndirect Threaded Code、
Cで書いた仮想マシンの上で動かすってかんじで。
今はMac OS XとLinux(x86)とLinux Zaurus(arm)の上でぽちぽち書いてる。
ポータビリティーは良いのでメモリがあって速度も気にしなければ
簡単にマイコンにも移植可能だと思う。H8なら余裕かな。
今月のトラ技の78K0基板持ってるんだけど、こっちはきついかも。
>>392
あばばばばばば
>>393
おお、こんな面白いのがあったのね。
とりあえずアカウント取ってみた。
このスレに落書きしつつ、blogにまとめてけばいいかな。
ANS-ForthのCORE準拠を目指して
http://www.taygeta.com/forth/dpans.html
読んでるんだけど、けっこうめんどいなあ。
ある程度実装の目処がたったらコード晒してくつもり。
少々お待ちを。
395デフォルトの名無しさん
2008/08/04(月) 22:59:11 Forth は実装が簡単だって聞いてたんで、
自分も作ってみようとちょっと調べたんだけど、
仕組みがよく分からなかったし(ワードの定義とか)、
規格に沿った物にしようとすると意外に仕様が大きくて、
挫折しますた><
自分も作ってみようとちょっと調べたんだけど、
仕組みがよく分からなかったし(ワードの定義とか)、
規格に沿った物にしようとすると意外に仕様が大きくて、
挫折しますた><
396390
2008/08/05(火) 23:09:27 >>395
辞書まわりは次の10個のワードがあればOK(たぶんね)
CREATE
COMMA(,)
[
]
IMMEDIATE
TICK(')
COLON(:)
SEMICOLON(;)
FIND
WORD
このあたりのワードの挙動は、
http://www.annexia.org/forth
ここのjonesforthを参考にすればいいと思う。
これをインスパイヤしたCと日本語のドキュメントを書いてるんだが・・・仕事が忙しくてね・・・
これをざーっと読んで、yforthあたりの簡単な処理系のコード眺めて
実際に動作を確かめればANS-Forthの準拠もそう難しくないかと。
たださ、ANS-Forthって処理系の内部の規定しすぎじゃね?
もっと好きなようにやらしてくれよ。一回確保したWORDが二度と解放できないとか、
文字列はヌル終端しない代わりに文字数を記憶するとか、ちょっと気持ち悪い気がする。
辞書まわりは次の10個のワードがあればOK(たぶんね)
CREATE
COMMA(,)
[
]
IMMEDIATE
TICK(')
COLON(:)
SEMICOLON(;)
FIND
WORD
このあたりのワードの挙動は、
http://www.annexia.org/forth
ここのjonesforthを参考にすればいいと思う。
これをインスパイヤしたCと日本語のドキュメントを書いてるんだが・・・仕事が忙しくてね・・・
これをざーっと読んで、yforthあたりの簡単な処理系のコード眺めて
実際に動作を確かめればANS-Forthの準拠もそう難しくないかと。
たださ、ANS-Forthって処理系の内部の規定しすぎじゃね?
もっと好きなようにやらしてくれよ。一回確保したWORDが二度と解放できないとか、
文字列はヌル終端しない代わりに文字数を記憶するとか、ちょっと気持ち悪い気がする。
397デフォルトの名無しさん
2008/08/05(火) 23:23:59 >文字列はヌル終端しない代わりに文字数を記憶する
これは正当だと思う。ヌル終端がどれだけのバグを生み出しているか……
これは正当だと思う。ヌル終端がどれだけのバグを生み出しているか……
398デフォルトの名無しさん
2008/08/06(水) 21:05:50 実装としては文字列をヌル終端にしても可。
但し、文字数は必要、かつ、
ヌル終端を当てにしたコードを書いても一般には動く保証なし。
が規定の内容と思われます。他の規定も同様。
但し、文字数は必要、かつ、
ヌル終端を当てにしたコードを書いても一般には動く保証なし。
が規定の内容と思われます。他の規定も同様。
399デフォルトの名無しさん
2008/08/08(金) 19:23:22 ASCIIZはねーよマジで
400デフォルトの名無しさん
2008/08/09(土) 16:38:27 でも、C言語で作られたプログラムとの連携したいときは、NUL文字終端がいいよね。
C言語で作られたプログラムの数の多さ、便利さから言うと、無視できないなと。
C言語で作られたプログラムの数の多さ、便利さから言うと、無視できないなと。
401デフォルトの名無しさん
2008/08/09(土) 18:30:35 Cは捨てるのがよろしいかと。
C++をbetter Cとして使う方がまだましだと思う。
C++を使えないようなリソースのキツい環境で使うんだったらforthを直書きした方が良いんじゃね?
C++をbetter Cとして使う方がまだましだと思う。
C++を使えないようなリソースのキツい環境で使うんだったらforthを直書きした方が良いんじゃね?
402デフォルトの名無しさん
2008/08/10(日) 00:15:50 >C++をbetter Cとして使う
それ最悪
それ最悪
403デフォルトの名無しさん
2008/08/11(月) 00:15:21 402 と同感だが、better Cとして使うのは FORTH 実装にはない(価値が少ない)だろ。
自己学習として作るならまだしも、
FORTHに期待される動作環境だったらアセンブリレベルの設計が必要だろ。
C++使うならC++的設計をしろって。
自己学習として作るならまだしも、
FORTHに期待される動作環境だったらアセンブリレベルの設計が必要だろ。
C++使うならC++的設計をしろって。
404デフォルトの名無しさん
2008/08/27(水) 00:31:36 forthチック俺言語のプロセスが回った記念カキコ。
forthだと引数管理がけっこう面倒だと思うけど、wordの名前に
引数の数の情報を盛り込んだら楽にならんかね?
俺言語ではこんな感じでドットの数=引数の数にしているんだけど、どう思う?
1 2 ..sum
1 2 3 .:sum
名前の衝突も起こりにくくなって一石二鳥かと思うんだけど。
forthだと引数管理がけっこう面倒だと思うけど、wordの名前に
引数の数の情報を盛り込んだら楽にならんかね?
俺言語ではこんな感じでドットの数=引数の数にしているんだけど、どう思う?
1 2 ..sum
1 2 3 .:sum
名前の衝突も起こりにくくなって一石二鳥かと思うんだけど。
405デフォルトの名無しさん
2008/08/27(水) 09:31:38 ドット打つのがひたすらめんどくさそう
ifだと.:ifになるの?
ifだと.:ifになるの?
406デフォルトの名無しさん
2008/08/27(水) 21:05:33 こういう風にしたらどう?
・引数可変のワードは # で始まることとする
・ワード [ は現在のパラメータスタックポインタの値を
リターンスタックに積む
・ワード ] は現在のパラメータスタックポインタの値と
リターンスタックポインタのトップの値の差から
パラメータ数を計算しパラメータスタックに積む
たとえば
[ 10 20 30 ] #sum
と書くと、#sum実行直前にはパラメータスタックは
10 20 30 3
となっていて、#sumは3つの数の和を求めればいいことがわかる。
・引数可変のワードは # で始まることとする
・ワード [ は現在のパラメータスタックポインタの値を
リターンスタックに積む
・ワード ] は現在のパラメータスタックポインタの値と
リターンスタックポインタのトップの値の差から
パラメータ数を計算しパラメータスタックに積む
たとえば
[ 10 20 30 ] #sum
と書くと、#sum実行直前にはパラメータスタックは
10 20 30 3
となっていて、#sumは3つの数の和を求めればいいことがわかる。
407404
2008/08/27(水) 22:38:18 >405
そこは構文糖使った方がよろしいかと (a ? b ! cの三項演算子とか)
>406
それも考えたけど、そうするとConcatenativeのメリットが死ぬんだよね。
できるだけ前の計算結果に依存しないように考えると、セパレータのようなものを
スタックに積むのは良くないので、ワード単体で引数までを意味するようにしたい、
ということですな。
そこは構文糖使った方がよろしいかと (a ? b ! cの三項演算子とか)
>406
それも考えたけど、そうするとConcatenativeのメリットが死ぬんだよね。
できるだけ前の計算結果に依存しないように考えると、セパレータのようなものを
スタックに積むのは良くないので、ワード単体で引数までを意味するようにしたい、
ということですな。
408デフォルトの名無しさん
2008/08/28(木) 02:39:56 prologみたいにsum/3みたいにするとか。
よく判ってないが。
よく判ってないが。
409デフォルトの名無しさん
2008/09/19(金) 17:01:15 引数管理しなきゃいけないようなコードの構成だと崩壊しそう
410デフォルトの名無しさん
2008/09/25(木) 03:11:26 しばらくforthやってたら他の言語がいじれなくなってて驚いた。
のめり込むのは危険だなw
のめり込むのは危険だなw
411デフォルトの名無しさん
2008/09/25(木) 03:16:06412デフォルトの名無しさん
2008/09/25(木) 21:54:56 concatenativeの論理を詰めて行くと、
スタックの機構はコード設計のための因子から外されるのかも。
スタックの機構はコード設計のための因子から外されるのかも。
413デフォルトの名無しさん
2008/09/25(木) 22:34:55 >411
Wordの中でWordを呼ぼうとすると破綻するよ。
>412
結局はトップを基点とした対称性(みたいなもの)になるからな。
対称性があれば何でもOK
Wordの中でWordを呼ぼうとすると破綻するよ。
>412
結局はトップを基点とした対称性(みたいなもの)になるからな。
対称性があれば何でもOK
414デフォルトの名無しさん
2008/10/01(水) 00:29:26 スタック型プログラミング言語の最少命令セットを探して
Whitespaceに辿りついたのですが、
これよりも言語仕様的に小さいスタック型言語ってあります?
Whitespaceに辿りついたのですが、
これよりも言語仕様的に小さいスタック型言語ってあります?
415デフォルトの名無しさん
2008/10/01(水) 01:55:39 define
call
return
conditional jump
push
pop
これだけで足りるかな?
call
return
conditional jump
push
pop
これだけで足りるかな?
416デフォルトの名無しさん
2008/10/01(水) 07:09:50 callに条件をつければjumpも省けるんじゃないか?
417デフォルトの名無しさん
2008/10/02(木) 03:17:37 それより、ひと目で何やってるか判るforth作ってくれないかな。
>>54-65とか何やってるのかわからん。
記号覚えればいいんだろうけど。
: は定義っぽいということは文脈で判った。許す。
>rとかr>は何かと。
;は文の終り?
LISPでいう 'a は (quote a)です、みたいに特殊記号をあまり使わずに
誰が見ても大体判るように、平易な形にならないかな。
>>54-65とか何やってるのかわからん。
記号覚えればいいんだろうけど。
: は定義っぽいということは文脈で判った。許す。
>rとかr>は何かと。
;は文の終り?
LISPでいう 'a は (quote a)です、みたいに特殊記号をあまり使わずに
誰が見ても大体判るように、平易な形にならないかな。
418デフォルトの名無しさん
2008/10/02(木) 17:56:08419デフォルトの名無しさん
2008/10/03(金) 02:22:08 リターンスタックに何をプッシュ(とポップ)するの?TOSの内容ってこと?
>rとr>って判りにくいと思う。
一瞬で見分けられないというか。
不等号ちがうんかと。
記号使わずに全部記述的にできないかな。
mindとかそんなのかな。
>rとr>って判りにくいと思う。
一瞬で見分けられないというか。
不等号ちがうんかと。
記号使わずに全部記述的にできないかな。
mindとかそんなのかな。
420デフォルトの名無しさん
2008/10/03(金) 03:00:42 わかりやすい文法が欲しいのならforth系はあきらめた方がいいと思うよ
421デフォルトの名無しさん
2008/10/03(金) 06:08:32 : pushTOStoReturnStack postpone >r ; immediate
: popFromReturnStackToTOS postpone r> ; immediate
: popFromReturnStackToTOS postpone r> ; immediate
422デフォルトの名無しさん
2008/10/03(金) 12:26:50 自分も420に賛成する、forthは裸の2スタックマシンのアセンブラと思えばいいんだけど、それがつらいとちょっときついと思う
ただ、それがインタラクティブ環境を作るあたりと小さな核で構築できるのが非常に面白いのでがんばって覚えてみてよ。
逆に言うと簡単にぶっ壊れるとも言う
ただ、それがインタラクティブ環境を作るあたりと小さな核で構築できるのが非常に面白いのでがんばって覚えてみてよ。
逆に言うと簡単にぶっ壊れるとも言う
423デフォルトの名無しさん
2008/10/03(金) 16:59:48 Cとかの他の言語の常識持ち込もうとしてるヤツいないか?
「Forthではこう書く」ってのに納得いかないなら
悪いことは言わんから、使うのやめとけ
「Forthではこう書く」ってのに納得いかないなら
悪いことは言わんから、使うのやめとけ
424デフォルトの名無しさん
2008/10/03(金) 17:54:20 スタックっつうのはあくまで機械にやさしいものであってユーザーフレンドリーなものじゃないしな
425デフォルトの名無しさん
2008/10/03(金) 18:38:23 頻繁にスタックを意識しないといけないのは悪いForthコード
426デフォルトの名無しさん
2008/10/03(金) 20:05:40 正直アセンブラの方が楽だよ
427デフォルトの名無しさん
2008/10/03(金) 20:24:33 慣れると気持ちいいよJoy。forthは知らんけど
428デフォルトの名無しさん
2008/10/03(金) 20:29:08 >426
Forthは仮想スタックマシンのアセンブラだから、
(仮想)マシンの理解度によるだろな。
Forthは仮想スタックマシンのアセンブラだから、
(仮想)マシンの理解度によるだろな。
429デフォルトの名無しさん
2008/10/03(金) 22:29:45 いや、もっと視認しやすい記号セットを使ってくれって話だろ。
ハイライトできるエディタで単語登録するか、トランスレータでもかますのがいいと思う。
ハイライトできるエディタで単語登録するか、トランスレータでもかますのがいいと思う。
430デフォルトの名無しさん
2008/10/03(金) 23:01:49 ところでリターンスタックって別に必要なの?
普通のCPUは1本だよね。
スタックに対して相対アドレッシングがないからってことかな?
普通のCPUは1本だよね。
スタックに対して相対アドレッシングがないからってことかな?
431デフォルトの名無しさん
2008/10/03(金) 23:57:29 >419
>rとr>は確かに見た目がわかりにくい。
よほどのことが無い限り使わない。
localがあれば要らない。
>430
呼出しのときにデータスタックで直接パラメターを渡すためでしょう。
>rとr>は確かに見た目がわかりにくい。
よほどのことが無い限り使わない。
localがあれば要らない。
>430
呼出しのときにデータスタックで直接パラメターを渡すためでしょう。
432デフォルトの名無しさん
2008/10/04(土) 00:00:27 >>430
普通のアーキテクチャだと関数呼び出しのスタックにパラメータも突っ込んじゃうけど
forthはデータのpushと関数呼び出しの戻りアドレスが入るスタックが別なんよ。
っていうか別だから面白いことができるので、一緒だったらループとかで涙が出そうだと思う。
普通のアーキテクチャだと関数呼び出しのスタックにパラメータも突っ込んじゃうけど
forthはデータのpushと関数呼び出しの戻りアドレスが入るスタックが別なんよ。
っていうか別だから面白いことができるので、一緒だったらループとかで涙が出そうだと思う。
433デフォルトの名無しさん
2008/10/04(土) 00:10:21 SP, BPレジスタに相当するものがあれば良いのでは
434デフォルトの名無しさん
2008/10/04(土) 17:45:11 リターンスタックとデータスタックが一緒だと、
リターンアドレスを壊さないようにデータをいじるのがメンドイ。
リターンアドレスが詰まれている位置を避けるようにして
スタックをアクセスしなきゃいけないから。
それはSPとBPがあってもメンドイことに変わりはない。
リターンアドレスを壊さないようにデータをいじるのがメンドイ。
リターンアドレスが詰まれている位置を避けるようにして
スタックをアクセスしなきゃいけないから。
それはSPとBPがあってもメンドイことに変わりはない。
435デフォルトの名無しさん
2008/10/04(土) 19:46:33436デフォルトの名無しさん
2008/10/04(土) 21:37:24 factorだともうひとつスタックあるよ
437デフォルトの名無しさん
2008/10/04(土) 23:25:44 データスタックとリターンスタックがないと
チューリングマシンと等価じゃないらしいぞ
チューリングマシンと等価じゃないらしいぞ
438デフォルトの名無しさん
2008/10/05(日) 00:17:09439デフォルトの名無しさん
2008/10/05(日) 01:12:05 今理解した。
リターンスタックってそのままBP相当じゃん。
ほんとはBPポインタ一個あれば十分だよね?
素直にBPを持たずにわざわざリターンスタックなんて用意してるのは、
スタックマシンと言えなくなるからかね。
なんだかなあ。
リターンスタックってそのままBP相当じゃん。
ほんとはBPポインタ一個あれば十分だよね?
素直にBPを持たずにわざわざリターンスタックなんて用意してるのは、
スタックマシンと言えなくなるからかね。
なんだかなあ。
440デフォルトの名無しさん
2008/10/05(日) 03:10:12 BPあってもメモリがないとな
441デフォルトの名無しさん
2008/10/05(日) 03:49:49 今理解した。
BPってそのままリターンスタック相当じゃん。
ほんとはリターンスタックあれば十分だよね?
素直にリターンスタックを持たずに、わざわざBPなんて用意してるのは、
レジスタマシンと言えなくなるからかね。
なんだかなあ。
BPってそのままリターンスタック相当じゃん。
ほんとはリターンスタックあれば十分だよね?
素直にリターンスタックを持たずに、わざわざBPなんて用意してるのは、
レジスタマシンと言えなくなるからかね。
なんだかなあ。
442デフォルトの名無しさん
2008/10/05(日) 07:20:41 >>437
メモリアクセスできない純粋なスタックマシンなら、スタックが二本ないと
チューリング等価ではないかも知れないが、FORTHはメモリアクセス @ ! が
あるから、たとえスタック一本であってもチューリング等価じゃね?
考えてみればわかるが、メモリアクセスがあるとスタックの本数を自由に増やせる。
FORTHとスタックマシンとConcatenative言語は、それぞれ別の概念で、
単純に等号で結べないから、何について話しているのか意識しないと混乱すると思われ。
メモリアクセスできない純粋なスタックマシンなら、スタックが二本ないと
チューリング等価ではないかも知れないが、FORTHはメモリアクセス @ ! が
あるから、たとえスタック一本であってもチューリング等価じゃね?
考えてみればわかるが、メモリアクセスがあるとスタックの本数を自由に増やせる。
FORTHとスタックマシンとConcatenative言語は、それぞれ別の概念で、
単純に等号で結べないから、何について話しているのか意識しないと混乱すると思われ。
443デフォルトの名無しさん
2008/10/05(日) 09:51:29 ForthのVMとしては、
論理的には最低限二つの区別されたスタックがある。
標準的な実装での利点(v.s.スタックフレーム方式)は、
サブルーチン間でのデータのコピーが減らせること。
スタックフレーム一本でやるのはCとかでも標準的な実装だけど、
VMという同じ抽象度で比べれば、Cにはスタックは無い。
VMが実装できれば機械自体の仕組みはどうでも良い。
論理的には最低限二つの区別されたスタックがある。
標準的な実装での利点(v.s.スタックフレーム方式)は、
サブルーチン間でのデータのコピーが減らせること。
スタックフレーム一本でやるのはCとかでも標準的な実装だけど、
VMという同じ抽象度で比べれば、Cにはスタックは無い。
VMが実装できれば機械自体の仕組みはどうでも良い。
444デフォルトの名無しさん
2008/10/05(日) 13:26:57 込み入った話は分からんけど、
とりあえずBF書けたらチューリング完全じゃなかったっけ?
とりあえずBF書けたらチューリング完全じゃなかったっけ?
445デフォルトの名無しさん
2008/10/05(日) 14:12:31 なんか話が噛み合ってない気がする。
446デフォルトの名無しさん
2008/10/05(日) 15:11:57 なんでそこまでチューリングマシンにこだわるのかわからん。
Forthがチューリングマシンであろうとなかろうと
Forthで実用的なプログラムは書ける。
あともう一人、やたらリターンスタックを排除したがる奴も
何をしたいのかさっぱりわからん。
Forthがチューリングマシンであろうとなかろうと
Forthで実用的なプログラムは書ける。
あともう一人、やたらリターンスタックを排除したがる奴も
何をしたいのかさっぱりわからん。
447デフォルトの名無しさん
2008/10/05(日) 17:47:31 まず当たり前の大前提の確認からだけど、Forthはチューリング完全だから。
仮にForthの仕様からリターンスタックだけを排除したとしても(それはForthとは呼べないだろうが)
チューリング完全だ。理由は>>442
リターンスタックがBPで代用できるとか正直意味わからん。
スタック演算自体理解してない希ガス。
仮にForthの仕様からリターンスタックだけを排除したとしても(それはForthとは呼べないだろうが)
チューリング完全だ。理由は>>442
リターンスタックがBPで代用できるとか正直意味わからん。
スタック演算自体理解してない希ガス。
448デフォルトの名無しさん
2008/10/05(日) 18:27:08 リターンスタックという名前がいかんのだろ。
449デフォルトの名無しさん
2008/10/05(日) 18:35:04 >>437
スタックオートマトンとスタックマシンをごっちゃにしてる気がする。
スタックオートマトンとスタックマシンをごっちゃにしてる気がする。
450デフォルトの名無しさん
2008/10/05(日) 18:39:13 >>448
むしろリターンスタック以外の名前があるなら知りたいものだが。
むしろリターンスタック以外の名前があるなら知りたいものだが。
451デフォルトの名無しさん
2008/10/05(日) 19:02:41 >442
大雑把にはこんな感じかね。
・データスタック: 引数&戻り値
・リターンスタック: 実行する命令列(辞書で展開された単語含む)
リターンスタックというよりもオーダースタックといった方がちょうど良い気がするけどね
大雑把にはこんな感じかね。
・データスタック: 引数&戻り値
・リターンスタック: 実行する命令列(辞書で展開された単語含む)
リターンスタックというよりもオーダースタックといった方がちょうど良い気がするけどね
452デフォルトの名無しさん
2008/10/05(日) 19:25:44 リターンアドレスを積んでいるからリターンスタック
それでいいと思うが、難しく考えすぎじゃね?>>451
それでいいと思うが、難しく考えすぎじゃね?>>451
453デフォルトの名無しさん
2008/10/05(日) 19:28:44 Aスタック←→Bスタック
だったら勘違いが起きなかったと思う。
だったら勘違いが起きなかったと思う。
454デフォルトの名無しさん
2008/10/05(日) 19:34:19 >>453
むしろ勘違いを引き起こしそうなんだが。
リターンスタックが難しいんじゃなくて、
リターンアドレスをスタックに積むという
当たり前の関数呼び出し規約を説明しなければ、
理解されない時代になったということか…
むしろ勘違いを引き起こしそうなんだが。
リターンスタックが難しいんじゃなくて、
リターンアドレスをスタックに積むという
当たり前の関数呼び出し規約を説明しなければ、
理解されない時代になったということか…
455デフォルトの名無しさん
2008/10/05(日) 21:59:43 なんでリターンスタックの名前で混乱とか勘違いがあるの?
ひょっとして、リターンと聞いて戻り値を連想しちゃう人がいる、とか?
だとしたらかなりキビシい状況だな。
ひょっとして、リターンと聞いて戻り値を連想しちゃう人がいる、とか?
だとしたらかなりキビシい状況だな。
456デフォルトの名無しさん
2008/10/06(月) 01:09:11 カールスタックの方が一般的じゃね?
457デフォルトの名無しさん
2008/10/06(月) 01:09:52 あ、カールじゃなくてコールスタック
458デフォルトの名無しさん
2008/10/06(月) 01:24:45 カールはスナックだな
459デフォルトの名無しさん
2008/10/06(月) 07:35:22 カールと言えば薄べったいのが出てることを最近知った。
従来品に比べて口の裏に張り付きにくいのはメリットだが、
少し物足りない気がした。
従来品に比べて口の裏に張り付きにくいのはメリットだが、
少し物足りない気がした。
460デフォルトの名無しさん
2008/10/06(月) 11:21:56 Forth では昔からリターンスタックと呼んできたので、その伝統に則ればいいと
思うんだけどな。Wikipedia だと項目はコールスタックで立てられているが。
思うんだけどな。Wikipedia だと項目はコールスタックで立てられているが。
461デフォルトの名無しさん
2008/10/06(月) 12:10:36 コールスタック->カールスナック->コーンスターチ->張り付かないならカールじゃない
勉強し過ぎでしょう。
勉強し過ぎでしょう。
462461
2008/10/06(月) 12:30:27 補:そもそもForthが一般的じゃない
463デフォルトの名無しさん
2008/10/06(月) 21:49:04 ・リターンスタックが普通のCPUで言うとことの「スタック」。
ワード(Cで言うところの関数、実際にはサブルーチン)
を呼ぶと呼び出し戻るためのアドレスを積む。
# 普通のCPUでCALL命令(68系だとBSR、JSR)を実行すると
# リターンアドレスがスタックに積まれるのは理解しているよね?
・データスタックってのは、言ってみれば「無限に増えるアキュムレータ」って感じ。
・「辞書」が命令コードストレージ、C言語でいえばTEXTセグメント
Forthの本質は上記3点をおさえて置けば理解できるんだが。
BPがリターンスタックと等価なんて言ってる人とか、
>・リターンスタック: 実行する命令列(辞書で展開された単語含む)
>リターンスタックというよりもオーダースタックといった方がちょうど良い気がするけどね
なんて言っている人、本当に理解できてるの?
ワード(Cで言うところの関数、実際にはサブルーチン)
を呼ぶと呼び出し戻るためのアドレスを積む。
# 普通のCPUでCALL命令(68系だとBSR、JSR)を実行すると
# リターンアドレスがスタックに積まれるのは理解しているよね?
・データスタックってのは、言ってみれば「無限に増えるアキュムレータ」って感じ。
・「辞書」が命令コードストレージ、C言語でいえばTEXTセグメント
Forthの本質は上記3点をおさえて置けば理解できるんだが。
BPがリターンスタックと等価なんて言ってる人とか、
>・リターンスタック: 実行する命令列(辞書で展開された単語含む)
>リターンスタックというよりもオーダースタックといった方がちょうど良い気がするけどね
なんて言っている人、本当に理解できてるの?
464デフォルトの名無しさん
2008/10/07(火) 00:25:52 >463
いや、別にWORDがサブルーチンである必要はないんじゃない?WORD毎の環境要らないんだし。
Cとの相性を考えるとサブルーチンにした方が良いと思うけど。
あと、CPUのアーキテクチャには疎いんだけど、最近のCPUでスタック持ってるのってあったっけ?
いや、別にWORDがサブルーチンである必要はないんじゃない?WORD毎の環境要らないんだし。
Cとの相性を考えるとサブルーチンにした方が良いと思うけど。
あと、CPUのアーキテクチャには疎いんだけど、最近のCPUでスタック持ってるのってあったっけ?
465デフォルトの名無しさん
2008/10/07(火) 06:15:51466デフォルトの名無しさん
2008/10/07(火) 06:37:45 >>464
前半は実装と仕様が混乱してそう。
後半は、たぶん、CPUの「レジスタアーキテクチャ」「スタックアーキテクチャ」と
データ構造としてのスタックを混同している。
Wikipediaやblog読んで理解した気にならないで実際に自分で手を動かしてみなよ。
ちょっと恥ずかし過ぎるぞ、あんた。
前半は実装と仕様が混乱してそう。
後半は、たぶん、CPUの「レジスタアーキテクチャ」「スタックアーキテクチャ」と
データ構造としてのスタックを混同している。
Wikipediaやblog読んで理解した気にならないで実際に自分で手を動かしてみなよ。
ちょっと恥ずかし過ぎるぞ、あんた。
467デフォルトの名無しさん
2008/10/07(火) 12:34:16468デフォルトの名無しさん
2008/10/07(火) 13:28:27 post,preのincやdec付きレジスタ間接参照命令があればデータスタックと等価だよね?
リターンスタックってのはサブルーチンコール時に戻りアドレスをpushする為のレジスタの事でしょう?
なら今時のCPUで無い物の方が珍しいと思うんだけど
リターンスタックってのはサブルーチンコール時に戻りアドレスをpushする為のレジスタの事でしょう?
なら今時のCPUで無い物の方が珍しいと思うんだけど
469デフォルトの名無しさん
2008/10/07(火) 20:49:02 x86って俺の生まれる前からあるな。
定年過ぎた方には最近なんでしょうけど。
定年過ぎた方には最近なんでしょうけど。
470デフォルトの名無しさん
2008/10/07(火) 21:09:44 定年過ぎて無く立ってプロセッサ自体30年の歴史しかないじゃないか
471デフォルトの名無しさん
2008/10/07(火) 21:36:31 最近のCPUは古いアーキテクチャのものがほとんどだよね。
細かいところは違うんだろが。
>>468
>戻りアドレスをpushする為のレジスタ
レジストリって意味?
RISCだと、戻りアドレスを保存するレジスタがあること多いよね。
まあ、リターンスタックは、
リターンアドレスを積むため専用(原則)のスタック
ってことがわかれば、いいじゃない。
データスタックと別にある利点もわかってるわけでしょ。
本当は「リターンスタックがあること」じゃなくて、
データスタックが複数のワードを横断して固定されていること、
の方が特徴だよね。
普通の言語の実装だと、
データスタックがサブルーチンごとに別々にリターンスタックの中にあって、
受け渡すデータはコピーする、
という感じなわけだ。比喩的に言えば。
アセンブリレベルでもリターンアドレスのpush/popが自動になってるなら、
気付かない人がいてもしょうがない。
細かいところは違うんだろが。
>>468
>戻りアドレスをpushする為のレジスタ
レジストリって意味?
RISCだと、戻りアドレスを保存するレジスタがあること多いよね。
まあ、リターンスタックは、
リターンアドレスを積むため専用(原則)のスタック
ってことがわかれば、いいじゃない。
データスタックと別にある利点もわかってるわけでしょ。
本当は「リターンスタックがあること」じゃなくて、
データスタックが複数のワードを横断して固定されていること、
の方が特徴だよね。
普通の言語の実装だと、
データスタックがサブルーチンごとに別々にリターンスタックの中にあって、
受け渡すデータはコピーする、
という感じなわけだ。比喩的に言えば。
アセンブリレベルでもリターンアドレスのpush/popが自動になってるなら、
気付かない人がいてもしょうがない。
472464
2008/10/07(火) 23:32:13 >465
いや、スタックポインタ(レジスタ)じゃなくてスタック。>467 の通りですな。>463で『アドレスを積む』とか
書いているからHWスタックのことかと思った。
スタックを内部に持つCPUの話があった記憶があったので勘違いしたわ。すまんね。
forthあんまり詳しくないんで済まんのだけど、『リターンスタックには、ワードを呼ぶと呼び出し戻るため
のアドレスを積む』んだっけ?
正規化の観点からは『まだ実行していないWORD』もリターンスタックに積めた方が便利だと思うけど。
WORDコンパイルの実装で手が抜けなくなるし……
いや、スタックポインタ(レジスタ)じゃなくてスタック。>467 の通りですな。>463で『アドレスを積む』とか
書いているからHWスタックのことかと思った。
スタックを内部に持つCPUの話があった記憶があったので勘違いしたわ。すまんね。
forthあんまり詳しくないんで済まんのだけど、『リターンスタックには、ワードを呼ぶと呼び出し戻るため
のアドレスを積む』んだっけ?
正規化の観点からは『まだ実行していないWORD』もリターンスタックに積めた方が便利だと思うけど。
WORDコンパイルの実装で手が抜けなくなるし……
473デフォルトの名無しさん
2008/10/07(火) 23:56:37474デフォルトの名無しさん
2008/10/08(水) 04:22:01 >>469
いまでも現役バリバリで使われていて
マイクロソフトの最新OS「VISTA」がポーティングされる
x86アーキテクチャが「最近のCPU」では無いとでも?
あるいはCore2DUOとかがX86アーキテクチャじゃないとでも思ってる?
いまでも現役バリバリで使われていて
マイクロソフトの最新OS「VISTA」がポーティングされる
x86アーキテクチャが「最近のCPU」では無いとでも?
あるいはCore2DUOとかがX86アーキテクチャじゃないとでも思ってる?
475デフォルトの名無しさん
2008/10/08(水) 06:31:12 >>472
Forthと関係なく、関数の呼び出し元に戻るためにアドレスをスタックに積む、
という動作は、アセンブリレベルでは普通の関数呼び出し規約。
Forthは言語レベルでリターンスタックを操作できる言語だけど、
普通は意識しなくてもいいから、リターンアドレスが何のために存在しているのか
理解できない人がいても不思議じゃないけど、せめてもう少し自分で勉強して欲しい。
Forthと関係なく、関数の呼び出し元に戻るためにアドレスをスタックに積む、
という動作は、アセンブリレベルでは普通の関数呼び出し規約。
Forthは言語レベルでリターンスタックを操作できる言語だけど、
普通は意識しなくてもいいから、リターンアドレスが何のために存在しているのか
理解できない人がいても不思議じゃないけど、せめてもう少し自分で勉強して欲しい。
476デフォルトの名無しさん
2008/10/08(水) 06:35:19 >forthあんまり詳しくないんで済まんのだけど、
とか、逃げをうたず自分で触ってみろよ。
とか、逃げをうたず自分で触ってみろよ。
477デフォルトの名無しさん
2008/10/08(水) 14:37:36 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」ではリターンスタックは必要ない。
自分なりのまとめ。
リターンスタックは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デフォルトの名無しさん
2008/10/08(水) 18:17:31479デフォルトの名無しさん
2008/10/08(水) 18:47:05 で、その「ボクが考えたforth」では、
パラメタはどうやって渡すんだ?
パラメタはどうやって渡すんだ?
480デフォルトの名無しさん
2008/10/08(水) 19:05:03 どう考えても普通にCALL/RETした方が速そうだけど
わざわざ面倒くさくしてどうするの?
あと、ENTER/LEAVEとか使わないの
わざわざ面倒くさくしてどうするの?
あと、ENTER/LEAVEとか使わないの
481デフォルトの名無しさん
2008/10/08(水) 21:00:40 >>477
もはやどこから突っ込んで良いものやら…
二つほど疑問が。
一つ目。
>>479も言ってるけれど、その実装だとパラメタの受け渡しが面倒そうなのだが。
たとえば、その実装方法で、
: foo drop drop 3 4 5 ;
1 2 foo
としたときにスタックがどのように変化していくのか書いてみてくれ。
解決方法を考えられなくもないが、たぶん独立したリターンスタックが
あるほうがシンプルだと思われ。
二つ目。
リターンスタックを操作する命令はどうやって実装するの?
これも独立したリターンスタックがあるほうがシンプルだと思われ。
forthじゃない何かをつくろうとしているのだろうか?
もはやどこから突っ込んで良いものやら…
二つほど疑問が。
一つ目。
>>479も言ってるけれど、その実装だとパラメタの受け渡しが面倒そうなのだが。
たとえば、その実装方法で、
: foo drop drop 3 4 5 ;
1 2 foo
としたときにスタックがどのように変化していくのか書いてみてくれ。
解決方法を考えられなくもないが、たぶん独立したリターンスタックが
あるほうがシンプルだと思われ。
二つ目。
リターンスタックを操作する命令はどうやって実装するの?
これも独立したリターンスタックがあるほうがシンプルだと思われ。
forthじゃない何かをつくろうとしているのだろうか?
482デフォルトの名無しさん
2008/10/08(水) 21:16:43 二つ目用の問題も書いておくよ。
: bar 1 2 3 >r >r 1 + r> r> ;
: bar 1 2 3 >r >r 1 + r> r> ;
483デフォルトの名無しさん
2008/10/08(水) 23:38:28 混乱してるようだから、
まず、ネイティブの場合とスレッディングの場合を分けて考えた方がいい。
ネイティブForthで自然な実装では、
SP=リターンスタックポインタ(RSP)
BP=データスタックポインタ(DSP)
となってる。
UNIX/Cの普通のスタックを知ってれば、機能的な対応は明瞭なはず。
リターンスタックが伸びても、DSPは別フレームに移らないのがForthのポイント。
ちなみに、Forthでも局所変数が使えるヤツがあって、
その局所変数には、リタースタック中にフレームを作って割り当てるのが普通。
これも、標準のスタックがわかってれば意味は明瞭。
スレッディング(直接・間接)方式だと、
呼出しはCallじゃないから、
BPをRSPにしてもかまわんが、
パラメタとリターンアドレスの混合は、
Forthでは無謀。動的にチェックが必要な上に、完璧にはできそうにない。
まず、ネイティブの場合とスレッディングの場合を分けて考えた方がいい。
ネイティブForthで自然な実装では、
SP=リターンスタックポインタ(RSP)
BP=データスタックポインタ(DSP)
となってる。
UNIX/Cの普通のスタックを知ってれば、機能的な対応は明瞭なはず。
リターンスタックが伸びても、DSPは別フレームに移らないのがForthのポイント。
ちなみに、Forthでも局所変数が使えるヤツがあって、
その局所変数には、リタースタック中にフレームを作って割り当てるのが普通。
これも、標準のスタックがわかってれば意味は明瞭。
スレッディング(直接・間接)方式だと、
呼出しはCallじゃないから、
BPをRSPにしてもかまわんが、
パラメタとリターンアドレスの混合は、
Forthでは無謀。動的にチェックが必要な上に、完璧にはできそうにない。
484464
2008/10/09(木) 01:15:39 446です。
forthは興味半分で使ったレベルでしかないですね……
concatenative俺言語の設計の参考にしているぐらいです。
>473
リターンスタックを「次に実行する命令の列」という形に抽象化すると、「現在処理中のWORD」と
「ソースコードを解釈したWORD」「Dictionaryに保持されているWORD列」…つまり呼び出されて
いないWORDを対称(等価/交換可能)に扱うことができるようになるので、バーチャルマシンの
構造を簡単化することができるかと思います。
……forthで許されているのかしらんけど。
forthは興味半分で使ったレベルでしかないですね……
concatenative俺言語の設計の参考にしているぐらいです。
>473
リターンスタックを「次に実行する命令の列」という形に抽象化すると、「現在処理中のWORD」と
「ソースコードを解釈したWORD」「Dictionaryに保持されているWORD列」…つまり呼び出されて
いないWORDを対称(等価/交換可能)に扱うことができるようになるので、バーチャルマシンの
構造を簡単化することができるかと思います。
……forthで許されているのかしらんけど。
485デフォルトの名無しさん
2008/10/09(木) 06:24:10 リターンスタックに積んであるリターンアドレスは、
「これから実行される命令列」へのポインタそのものと見なせるから、
そのアイデアが新しいとは思えないけどな。
Forthぐらいバーチャルマシンの実装が簡単な言語もないし。
ただ、リターンスタックの意味がよくわからないままに、
他の言語のように抽象構文木を再帰的に処理するような
実装にしていると、リターンスタック操作の実装で悩むの
かもしれない。
「これから実行される命令列」へのポインタそのものと見なせるから、
そのアイデアが新しいとは思えないけどな。
Forthぐらいバーチャルマシンの実装が簡単な言語もないし。
ただ、リターンスタックの意味がよくわからないままに、
他の言語のように抽象構文木を再帰的に処理するような
実装にしていると、リターンスタック操作の実装で悩むの
かもしれない。
486464
2008/10/09(木) 08:54:40 >485
>463は呼び出したWORDを積むことを前提にしているし、>451 >472で言ってるのが >463 >473で
思い切り否定されてるので、forthじゃそういう考え方無いのかな、と思った。
もしforthでもそういう使い方しているんだったらおいらの不勉強だね。
>463は呼び出したWORDを積むことを前提にしているし、>451 >472で言ってるのが >463 >473で
思い切り否定されてるので、forthじゃそういう考え方無いのかな、と思った。
もしforthでもそういう使い方しているんだったらおいらの不勉強だね。
487デフォルトの名無しさん
2008/10/09(木) 10:46:32 >>486
485のいってる意味は、
スレッディング方式のforthでは、
辞書は実行されるワードのポインタのリストとみなせるわけで、
リターンアドレスというのは、辞書内への戻りアドレス、
つまり、これから実行されるワードのリストへのポインタといえる
ということと思われる。
ワードのポインタを直接リターンスタックに積み込むような、
インストラクションキャッシュみたいな仕様のリターンスタックの実装は、
ちょっと聞いたことが無い。
というかそれじゃリターンスタックじゃない。
485のいってる意味は、
スレッディング方式のforthでは、
辞書は実行されるワードのポインタのリストとみなせるわけで、
リターンアドレスというのは、辞書内への戻りアドレス、
つまり、これから実行されるワードのリストへのポインタといえる
ということと思われる。
ワードのポインタを直接リターンスタックに積み込むような、
インストラクションキャッシュみたいな仕様のリターンスタックの実装は、
ちょっと聞いたことが無い。
というかそれじゃリターンスタックじゃない。
488デフォルトの名無しさん
2008/10/09(木) 20:52:04 487の言わんとすることを俺なりに解釈してみる…
: foo dup + ;
: bar foo drop ;
bar の処理中に foo を実行するときに、
foo の次の drop のアドレスをリターンスタックに積む。
それで、foo の実行終了時にリターンアドレスから戻り先を取る。
これが、さっき積んだ drop のアドレスということ。
で、「drop のアドレス」っていうのを「ポインタ」と呼んでいる。
: foo dup + ;
: bar foo drop ;
bar の処理中に foo を実行するときに、
foo の次の drop のアドレスをリターンスタックに積む。
それで、foo の実行終了時にリターンアドレスから戻り先を取る。
これが、さっき積んだ drop のアドレスということ。
で、「drop のアドレス」っていうのを「ポインタ」と呼んでいる。
489デフォルトの名無しさん
2008/10/09(木) 21:08:57 fooが呼ばれたときのリターンアドレスは 「dropのアドレス」というより
「dropの直前のアドレス」だ。
微妙なニュアンスに聞こえるかもしれないが。
: bar foo ( ここ ) drop ;
( ここ ) と書いた部分に戻ってくる。
「dropの直前のアドレス」だ。
微妙なニュアンスに聞こえるかもしれないが。
: bar foo ( ここ ) drop ;
( ここ ) と書いた部分に戻ってくる。
490デフォルトの名無しさん
2008/10/09(木) 21:12:38 : foo dup + ;
: bar dup * ;
: baz foo ( ここ ) bar ( そこ ) ;
foo が呼ばれたときリターンスタックには( ここ )が積まれてる。
bar が呼ばれたときリターンスタックには( そこ )が積まれてる。
bar というワード自身がリターンスタックに積まれているのではない。
: bar dup * ;
: baz foo ( ここ ) bar ( そこ ) ;
foo が呼ばれたときリターンスタックには( ここ )が積まれてる。
bar が呼ばれたときリターンスタックには( そこ )が積まれてる。
bar というワード自身がリターンスタックに積まれているのではない。
491デフォルトの名無しさん
2008/10/09(木) 21:16:04 ついでに >>56 のリターンスタックを使ったパズルの説明でも書いておこう。
問題は、
: foo twice ." Hello" ;
で、
HelloHello
を出力する twice を定義しろというパズル。
問題は、
: foo twice ." Hello" ;
で、
HelloHello
を出力する twice を定義しろというパズル。
492デフォルトの名無しさん
2008/10/09(木) 21:22:30 解答は、
: twice r> dup >r >r ;
何が起きているか説明すると、twice が呼ばれたとき、リターンスタックには、
: foo twice ( ここ ) ." Hello" ;
上の( ここ )が積まれている。
twice は最初に r> を実行して、( ここ ) をリターンスタックからデータスタックに移している。
次の dup で ( ここ ) がデータスタックに二つ積まれた状態になる。
最後に、 二つの >r で ( ここ ) が二つリターンスタックに戻される。
: twice r> dup >r >r ;
何が起きているか説明すると、twice が呼ばれたとき、リターンスタックには、
: foo twice ( ここ ) ." Hello" ;
上の( ここ )が積まれている。
twice は最初に r> を実行して、( ここ ) をリターンスタックからデータスタックに移している。
次の dup で ( ここ ) がデータスタックに二つ積まれた状態になる。
最後に、 二つの >r で ( ここ ) が二つリターンスタックに戻される。
493デフォルトの名無しさん
2008/10/09(木) 21:27:12 さて、定義されたワードの終端に到達したので Forthは、
リターンスタックからリターンアドレスを一つ取り出してそこに戻ろうとする。
: foo twice ( ここ ) ." Hello" ;
↑これの ( ここ )に戻ってくるわけだね。
そして、Helloを出力する。
そしてまた定義されたワードの終端に到達するので、Forth は
リターンスタックからリターンアドレスを一つ取り出してそこに戻ろうとするわけだ。
つまり、もう一度 ( ここ ) に戻る。
もう一度、Helloが出力されたら、次にリターンスタックからpopされる
リターンアドレスは foo を呼び出したアドレスなので、ここでようやく、
foo の実行が終了することになる。
リターンスタックからリターンアドレスを一つ取り出してそこに戻ろうとする。
: foo twice ( ここ ) ." Hello" ;
↑これの ( ここ )に戻ってくるわけだね。
そして、Helloを出力する。
そしてまた定義されたワードの終端に到達するので、Forth は
リターンスタックからリターンアドレスを一つ取り出してそこに戻ろうとするわけだ。
つまり、もう一度 ( ここ ) に戻る。
もう一度、Helloが出力されたら、次にリターンスタックからpopされる
リターンアドレスは foo を呼び出したアドレスなので、ここでようやく、
foo の実行が終了することになる。
494デフォルトの名無しさん
2008/10/09(木) 21:29:45 リターンスタックに積まれているリターンアドレスは、
次に実行すべきワード単体ではなくて、
それ以降、実行すべきコード全体の先頭を指し示すアドレスだ、
と、理解できたかしらん?
次に実行すべきワード単体ではなくて、
それ以降、実行すべきコード全体の先頭を指し示すアドレスだ、
と、理解できたかしらん?
495488
2008/10/10(金) 00:34:56 (ここ) は分かってるつもりなんですが、
メモリアドレス的に的確に伝えるには難しいような気が。。。
: baz foo ( ここ ) bar ( そこ ) ;
16bitアドレス環境として、スレデッドコードで考えると、
(ここ)は foo のアドレスと同じか、それとも +1 でしょうか?
# foo のアドレス +2 すると bar のアドレスですよね
なんかアホなこと言っているようですみません。
メモリアドレス的に的確に伝えるには難しいような気が。。。
: baz foo ( ここ ) bar ( そこ ) ;
16bitアドレス環境として、スレデッドコードで考えると、
(ここ)は foo のアドレスと同じか、それとも +1 でしょうか?
# foo のアドレス +2 すると bar のアドレスですよね
なんかアホなこと言っているようですみません。
496デフォルトの名無しさん
2008/10/10(金) 00:55:01 >>495
「barのアドレス」と書くとbazの定義の中のbarの呼び出しのあるアドレスなのか、
それともbar自身の定義のアドレスなのか混乱するから、
( ここ ) と表現したわけで、その違いがわかってるなら問題ないですよん。
あとポインタってわかるよね?
「barのアドレス」と書くとbazの定義の中のbarの呼び出しのあるアドレスなのか、
それともbar自身の定義のアドレスなのか混乱するから、
( ここ ) と表現したわけで、その違いがわかってるなら問題ないですよん。
あとポインタってわかるよね?
497デフォルトの名無しさん
2008/10/10(金) 01:03:18498496
2008/10/10(金) 01:20:54499464
2008/10/10(金) 01:36:27 >498
新しいかどうかなんて知らんよ。単にWORDの扱いを正規化できてVMが簡素になるっつうだけの話。
>497で言及している(ここ)(そこ)みたいな間接ポインタをVMで扱う必要も無くなるし。
まあ、その皺寄せをWORDに押し込んでるだけなんだけどね。
新しいかどうかなんて知らんよ。単にWORDの扱いを正規化できてVMが簡素になるっつうだけの話。
>497で言及している(ここ)(そこ)みたいな間接ポインタをVMで扱う必要も無くなるし。
まあ、その皺寄せをWORDに押し込んでるだけなんだけどね。
500496
2008/10/10(金) 01:42:51 >>499
なんていうか…
「(ここ)(そこ)みたいな間接ポインタ」というそれそのものが、
アセンブリ言語の時代からある「リターンアドレス」という概念なんですよ…。
Forthはそれをリターンスタックに分離して保存・復帰しているだけのこと。
なんていうか…
「(ここ)(そこ)みたいな間接ポインタ」というそれそのものが、
アセンブリ言語の時代からある「リターンアドレス」という概念なんですよ…。
Forthはそれをリターンスタックに分離して保存・復帰しているだけのこと。
501デフォルトの名無しさん
2008/10/10(金) 06:35:09502デフォルトの名無しさん
2008/10/10(金) 08:32:35 >500
今は実際のリターンアドレスの話をしとらんよ。
リターンスタックを「次に実行する命令の列」という形に抽象化するっつうとるだろうに。
今は実際のリターンアドレスの話をしとらんよ。
リターンスタックを「次に実行する命令の列」という形に抽象化するっつうとるだろうに。
503デフォルトの名無しさん
2008/10/10(金) 08:46:05 >>501
." とか、 前付きの " は、Forthではただの引用符じゃなくて、一つのワード。
だから、Helloとの間に空白が要る。
但し、終わりの " はセパレーターだから、空白なしで良い。
前にも出てたけど、
Forthでは文字列リテラルはポインタと長さの二つの数値で表す。
「.」は、トップアイテムを一つpopして値をプリントするワードだから、
" Hello" .
だと5がプリントされるだけ。文字列ポインタがスタックに残る。
「."」 が 「次の " までの文字列をプリントする」というワード。
文字列をスタックに積んだときは
" Hello" type
とやる。
." とか、 前付きの " は、Forthではただの引用符じゃなくて、一つのワード。
だから、Helloとの間に空白が要る。
但し、終わりの " はセパレーターだから、空白なしで良い。
前にも出てたけど、
Forthでは文字列リテラルはポインタと長さの二つの数値で表す。
「.」は、トップアイテムを一つpopして値をプリントするワードだから、
" Hello" .
だと5がプリントされるだけ。文字列ポインタがスタックに残る。
「."」 が 「次の " までの文字列をプリントする」というワード。
文字列をスタックに積んだときは
" Hello" type
とやる。
504デフォルトの名無しさん
2008/10/10(金) 08:52:55 >>502
だから、「次に実行する命令列」は辞書の中に既にあるんであって、
それはスタックである必要はなくて、いってみればアレイ。
辞書の中で実行は動的に行ったり戻ったりするから、
やっぱりリターンアドレスの保存は必要。
だから、「次に実行する命令列」は辞書の中に既にあるんであって、
それはスタックである必要はなくて、いってみればアレイ。
辞書の中で実行は動的に行ったり戻ったりするから、
やっぱりリターンアドレスの保存は必要。
505デフォルトの名無しさん
2008/10/10(金) 09:06:11506デフォルトの名無しさん
2008/10/10(金) 17:24:55 factorだと文字列リテラルはあるよ
507488
2008/10/10(金) 22:08:31 >>496,497 サンクス
スレデッドコードと書いておいて誤解がなかったようだ。
497 のレスだと、俺の中では「次のワード」という認識になる。
(あっち)という表現を使えば確かに誤解はなくなる。
なんだか、リターンスタックのデータ内容と、
(サブルーチン)リターンアドレスを混同した希ガス
スレデッドコードと書いておいて誤解がなかったようだ。
497 のレスだと、俺の中では「次のワード」という認識になる。
(あっち)という表現を使えば確かに誤解はなくなる。
なんだか、リターンスタックのデータ内容と、
(サブルーチン)リターンアドレスを混同した希ガス
508464
2008/10/11(土) 00:37:41 >504
「必要がないから積まない」じゃなくて、「VMの原理を簡単にするために積む」んだって。
VMが辞書の中を行ったり来たりしないようにするのが目的。
もちろん、VMの仕事をWORDに移管しただけの話だし、スタックが大きくなるデメリットもあるけどな。
「必要がないから積まない」じゃなくて、「VMの原理を簡単にするために積む」んだって。
VMが辞書の中を行ったり来たりしないようにするのが目的。
もちろん、VMの仕事をWORDに移管しただけの話だし、スタックが大きくなるデメリットもあるけどな。
509504
2008/10/11(土) 01:03:24 >>508
つまり、ワードを全部インラインにするということ?
それなら確かに理論的には可能だし、リターンスタック自体要らない。
普通は、大きくなるのはスタックじゃなくて辞書だな。
まあ、辞書からインラインで展開したものを
リターンスタックにコピーしてもいいけど、
ランタイムにやるなら相当動作が遅くなると思う。
それに、
なぜそのためにスタックというデータ構造を使うのかがわからない。
後ろから先に積んでいくことになるわけだが。
その発想はインストラクションキャッシュだと思う。
だから、むしろキューがいいと思う。
ソフトウェア的にやると相当遅いとは思うけど、
論理的には可能だと思うよ。
つまり、ワードを全部インラインにするということ?
それなら確かに理論的には可能だし、リターンスタック自体要らない。
普通は、大きくなるのはスタックじゃなくて辞書だな。
まあ、辞書からインラインで展開したものを
リターンスタックにコピーしてもいいけど、
ランタイムにやるなら相当動作が遅くなると思う。
それに、
なぜそのためにスタックというデータ構造を使うのかがわからない。
後ろから先に積んでいくことになるわけだが。
その発想はインストラクションキャッシュだと思う。
だから、むしろキューがいいと思う。
ソフトウェア的にやると相当遅いとは思うけど、
論理的には可能だと思うよ。
510デフォルトの名無しさん
2008/10/11(土) 02:00:15 サンクス >693
5 ソースコード
6 boost::spirit
というので激しく不安になるな。
というか、スクリプトの入門というのなら、BASICタイプ言語の作成とかCタイプ言語の作成
とか分散しないで、どっちか一つに集中すべきじゃない?
入門だったら、むしろ構文はシンプルなforthライクにして、エンジンの中身に拘るべきだと思うけど……
5 ソースコード
6 boost::spirit
というので激しく不安になるな。
というか、スクリプトの入門というのなら、BASICタイプ言語の作成とかCタイプ言語の作成
とか分散しないで、どっちか一つに集中すべきじゃない?
入門だったら、むしろ構文はシンプルなforthライクにして、エンジンの中身に拘るべきだと思うけど……
511デフォルトの名無しさん
2008/10/11(土) 02:02:28 誤爆スマソ
512464
2008/10/11(土) 02:18:22 >509
いや、基本はWORD呼び出し時に展開(そのWORDに定義されたWORD列をスタックに押し込む)。
WORDコンパイル時に全部インラインに展開するわけじゃないです。
#高速化を目的として、WORDコンパイル時にある程度はインライン化することになると思うけど。
WORDに定義されたWORD列を、実行時にその場で積んでその場で処理する必要があるから、
FIFOの仕組みが必要になります。
まあ、小まめにWORDの積み降ろしをやらなきゃいけないから、確かに重そうだけどね。
いや、基本はWORD呼び出し時に展開(そのWORDに定義されたWORD列をスタックに押し込む)。
WORDコンパイル時に全部インラインに展開するわけじゃないです。
#高速化を目的として、WORDコンパイル時にある程度はインライン化することになると思うけど。
WORDに定義されたWORD列を、実行時にその場で積んでその場で処理する必要があるから、
FIFOの仕組みが必要になります。
まあ、小まめにWORDの積み降ろしをやらなきゃいけないから、確かに重そうだけどね。
513デフォルトの名無しさん
2008/10/11(土) 05:37:05 464のやり方は、ありえなくはないけどForth的じゃないね。
どっちかっていうとJava VMのJITコンパイラみたいな。
Forthはシンプルな実装で軽い、ってイメージ。
どっちかっていうとJava VMのJITコンパイラみたいな。
Forthはシンプルな実装で軽い、ってイメージ。
514デフォルトの名無しさん
2008/10/11(土) 06:54:12515464
2008/10/11(土) 13:07:00 >513
いや、実装はこっちの方がシンプルだよ。辞書の解釈を全部WORDに押し付けることができるから。
ただ、スタック操作が増えるから重くなる方向だけどね。
>514
リターンアドレス前提だと難しいよね。作業用スタックがもう一本ありゃいいんだけど。
俺言語のVMだと自前スタックで実装しているので大した話じゃないです。
いや、実装はこっちの方がシンプルだよ。辞書の解釈を全部WORDに押し付けることができるから。
ただ、スタック操作が増えるから重くなる方向だけどね。
>514
リターンアドレス前提だと難しいよね。作業用スタックがもう一本ありゃいいんだけど。
俺言語のVMだと自前スタックで実装しているので大した話じゃないです。
516464
2008/10/11(土) 13:22:12 >514
ちょっと補足。
複数のWORDを押し込もうとすると確かに面倒だね。
俺言語でも
1. 無名WORDを作る
2. 1.のWORDに実行するWORDを押し込む
3. 1.のWORDをリターンスタックに押し込む
といったパック化が必要になります。
ちょっと補足。
複数のWORDを押し込もうとすると確かに面倒だね。
俺言語でも
1. 無名WORDを作る
2. 1.のWORDに実行するWORDを押し込む
3. 1.のWORDをリターンスタックに押し込む
といったパック化が必要になります。
517デフォルトの名無しさん
2008/10/11(土) 13:26:05 464のVMだが、
ハードウェアレベルではもう一般化してる
インストラクションのプリフェッチとおなじだよね。
マシン語のデコーダレベルでのVMという感じか。
実装する場合の最難題は条件付きジャンプだと思う。
IFとか不定ループをどう載せるかが鍵だな。
これを考えると、VMが仕組みとして単純になるかどうかは微妙だと思う。
まあ、ベタでやればできそうな気はするが、
ハードウエアの仕組みをソフトウェアで二重にしてるだけのような気がしないでもない。
ハードウェアレベルではもう一般化してる
インストラクションのプリフェッチとおなじだよね。
マシン語のデコーダレベルでのVMという感じか。
実装する場合の最難題は条件付きジャンプだと思う。
IFとか不定ループをどう載せるかが鍵だな。
これを考えると、VMが仕組みとして単純になるかどうかは微妙だと思う。
まあ、ベタでやればできそうな気はするが、
ハードウエアの仕組みをソフトウェアで二重にしてるだけのような気がしないでもない。
518464
2008/10/11(土) 13:38:04 >514
思い出した……>59を実現するにはreverse自体のパック化も必須なんだっけ。
そういや>59みたいな操作をどうしようか悩んだな。
ただ、こういったWORDを跨ぐ暗黙的なリターンスタック制御てけっこう危険じゃない?
個人的にはWORDはデータスタックの状態にのみ依存すべきだと思うけど、WORDを越えた
範囲までリターンスタックを操作できるようにすると、WORD同士の依存関係が出てしまって
連鎖性(concatenative)が崩れるような気がする。
forthの条件分岐でも、セパレーターを使った明示的な制御をしているわけだし。
思い出した……>59を実現するにはreverse自体のパック化も必須なんだっけ。
そういや>59みたいな操作をどうしようか悩んだな。
ただ、こういったWORDを跨ぐ暗黙的なリターンスタック制御てけっこう危険じゃない?
個人的にはWORDはデータスタックの状態にのみ依存すべきだと思うけど、WORDを越えた
範囲までリターンスタックを操作できるようにすると、WORD同士の依存関係が出てしまって
連鎖性(concatenative)が崩れるような気がする。
forthの条件分岐でも、セパレーターを使った明示的な制御をしているわけだし。
519464
2008/10/11(土) 13:49:31 連投スマソ
>517
そうか、CPUだともう一般的なのか……。さすがに天才的な変態が集まる業界だな。
やっぱりCPUのアーキテクチャ勉強しないといけないなあ。
IFは構文解析で逃げました。
block := block ? WORD1 ! WORD2
という三項演算子を用意して、条件分岐用WORDに解釈するようにしました。
不定ループの構文を用意するかどうかは検討中です。
>517
そうか、CPUだともう一般的なのか……。さすがに天才的な変態が集まる業界だな。
やっぱりCPUのアーキテクチャ勉強しないといけないなあ。
IFは構文解析で逃げました。
block := block ? WORD1 ! WORD2
という三項演算子を用意して、条件分岐用WORDに解釈するようにしました。
不定ループの構文を用意するかどうかは検討中です。
520517
2008/10/11(土) 13:59:32 もうすこし考えてみたんだが、
ワードがどこかで他のワードを呼び出し、そのワードがどこかで他のワードを呼出し...
という場合には、
ワードシーケンスに展開する段階で、
展開すべき個所をたどるためのリターンスタックが必要な気がする。
だから、464のVMは、
普通のForthでの実行と同じ動作でワード系列をコピーして、
それから順番にInterpretして実行するという感じになって、
単なる二度手間ではないかな。
ワードがどこかで他のワードを呼び出し、そのワードがどこかで他のワードを呼出し...
という場合には、
ワードシーケンスに展開する段階で、
展開すべき個所をたどるためのリターンスタックが必要な気がする。
だから、464のVMは、
普通のForthでの実行と同じ動作でワード系列をコピーして、
それから順番にInterpretして実行するという感じになって、
単なる二度手間ではないかな。
521464
2008/10/11(土) 15:30:32 >520
どのみちリターンスタック(実行する命令列を保存する専用スタック)が必要なのはその通り。
WORDの動作:普通のForthでの実行と同じ動作でワード系列をコピー
VMの動作: 順番にInterpretして実行する
というところがポイントですな。VMは辞書のこととか考える必要がないのでシンプルになります。
その代わり「辞書からWORD列を拾ってリターンスタックに展開する」というWORDが必要になるけど。
確かにコピーする手間はムダな気もするんだけどね……
辞書のWORD列を直接トレースするのと比べてどんぐらい余計な手間がかかってるんだろう?
ポインタ操作数回&アクセス数回レベルだと思うけど。
どのみちリターンスタック(実行する命令列を保存する専用スタック)が必要なのはその通り。
WORDの動作:普通のForthでの実行と同じ動作でワード系列をコピー
VMの動作: 順番にInterpretして実行する
というところがポイントですな。VMは辞書のこととか考える必要がないのでシンプルになります。
その代わり「辞書からWORD列を拾ってリターンスタックに展開する」というWORDが必要になるけど。
確かにコピーする手間はムダな気もするんだけどね……
辞書のWORD列を直接トレースするのと比べてどんぐらい余計な手間がかかってるんだろう?
ポインタ操作数回&アクセス数回レベルだと思うけど。
522514
2008/10/11(土) 18:35:01 >>518
普通はリターンスタックとか継続とか触れない言語の方が多いから、
Forthではなく俺言語を作るつもりなら、言語デザイナであるお前様自身の
判断で実現可能にしてもいいし、そうでなくしてもいいと思うよ。
ただForthは言語レベルでリターンスタックを操れる結果、協調的マルチタスクやら
コルーチンやら言語実装のレベルで普通対処するものも、ライブラリレベルで実現できる柔軟さがある。
リターンスタックは他の言語にはないForthの特徴の一つだからね。
俺言語でなんとか実現する方法を悩んでみるのも楽しいんじゃない?
普通はリターンスタックとか継続とか触れない言語の方が多いから、
Forthではなく俺言語を作るつもりなら、言語デザイナであるお前様自身の
判断で実現可能にしてもいいし、そうでなくしてもいいと思うよ。
ただForthは言語レベルでリターンスタックを操れる結果、協調的マルチタスクやら
コルーチンやら言語実装のレベルで普通対処するものも、ライブラリレベルで実現できる柔軟さがある。
リターンスタックは他の言語にはないForthの特徴の一つだからね。
俺言語でなんとか実現する方法を悩んでみるのも楽しいんじゃない?
523514
2008/10/11(土) 18:47:48 あとForthのVMって相当シンプルだよ。
アセンブリ言語で書かれた昔のForthとかコアの部分はアセンブリ言語で数行レベルだった気がする。
どのへんが複雑だと思ったのかは興味がある…
アセンブリ言語で書かれた昔のForthとかコアの部分はアセンブリ言語で数行レベルだった気がする。
どのへんが複雑だと思ったのかは興味がある…
524517
2008/10/11(土) 21:01:10 >>521
いや、そうではなくて、
「WORDの動作」の中の、「普通のForthと同じ動作で」ってところに、
リターンアドレスを保存するスタックという意味でのリターンスタックが、もう必要なのではないかということ。
あと、言葉の問題として、
大きい意味でのワードを展開する動作のところからもうInterpreter(=VM)の動作というのが普通だと思う。
つまり、VMの動作の前半をWORDの動作と呼んで違う名前にしたから、
残ったVMの動作が簡単に見えるというだけなんじゃないかな。
辞書中のワードから始めると、ForthのVMよりも(多分プリミティブ)WORDの系列を作る部分が余分で、
より複雑になってると思う。
でも、自分の言語を作るのをやめろといってるんじゃないよ。
むしろ応援してる。
ちょっと話題はそれるけど、Forthというか、スタック指向言語は、
コンパイラライターフレンドリーなんだよね。
だから、Forthコード書くよりForth(風オレ言語)VMを書く人が多かったりするわけだが、
ホントはForthでアプリケーションを書くときも「オレ言語」を作るつもりで書くと良いと思ってる。
いや、そうではなくて、
「WORDの動作」の中の、「普通のForthと同じ動作で」ってところに、
リターンアドレスを保存するスタックという意味でのリターンスタックが、もう必要なのではないかということ。
あと、言葉の問題として、
大きい意味でのワードを展開する動作のところからもうInterpreter(=VM)の動作というのが普通だと思う。
つまり、VMの動作の前半をWORDの動作と呼んで違う名前にしたから、
残ったVMの動作が簡単に見えるというだけなんじゃないかな。
辞書中のワードから始めると、ForthのVMよりも(多分プリミティブ)WORDの系列を作る部分が余分で、
より複雑になってると思う。
でも、自分の言語を作るのをやめろといってるんじゃないよ。
むしろ応援してる。
ちょっと話題はそれるけど、Forthというか、スタック指向言語は、
コンパイラライターフレンドリーなんだよね。
だから、Forthコード書くよりForth(風オレ言語)VMを書く人が多かったりするわけだが、
ホントはForthでアプリケーションを書くときも「オレ言語」を作るつもりで書くと良いと思ってる。
525デフォルトの名無しさん
2008/10/11(土) 21:33:08 Forthの用語って独特な言い回しがあるからな。
知らない人は結構混乱する。
スレデッドコードのForthの場合、ソースコードを解釈してスレデッドコードを
生成することをコンパイルといい、スレデッドコードを生成する部分を外部インタープリタ、
スレデッドコードを解釈実行する部分を内部インタープリタと呼ぶ。
(これで良かったよな?同志?)
このスレでVMと言った時に内部インタープリタだけなのか、外部インタープリタも含むのか?
どっちだろうか?
知らない人は結構混乱する。
スレデッドコードのForthの場合、ソースコードを解釈してスレデッドコードを
生成することをコンパイルといい、スレデッドコードを生成する部分を外部インタープリタ、
スレデッドコードを解釈実行する部分を内部インタープリタと呼ぶ。
(これで良かったよな?同志?)
このスレでVMと言った時に内部インタープリタだけなのか、外部インタープリタも含むのか?
どっちだろうか?
526デフォルトの名無しさん
2008/10/12(日) 00:45:26 >>525
テキストを読み込んで、
1) ワードを辞書内で特定
2) だめならリテラルに変換
3) ダメならエラーで終了。
という部分が外部インタープリタ
1)または2)で成功したときに
モードに応じてコンパイル(Forth的意味)するか実行する
のが内部インタープリタ
だと思ってました。
Forthはテキストインプットも弄れるという面白さもあるよね。
Forth VMというと、外部も含むのかな。
上のリターンスタック云々の話は、
内部インタープリタのことだと思うけど。
テキストを読み込んで、
1) ワードを辞書内で特定
2) だめならリテラルに変換
3) ダメならエラーで終了。
という部分が外部インタープリタ
1)または2)で成功したときに
モードに応じてコンパイル(Forth的意味)するか実行する
のが内部インタープリタ
だと思ってました。
Forthはテキストインプットも弄れるという面白さもあるよね。
Forth VMというと、外部も含むのかな。
上のリターンスタック云々の話は、
内部インタープリタのことだと思うけど。
527デフォルトの名無しさん
2008/10/12(日) 07:57:23 内部インタプリタて(スレッドコードで実装してる場合は)nextルーチンのことじゃなかったっけ。
528デフォルトの名無しさん
2008/10/12(日) 08:49:02 そうNEXTルーチン。アセンブリ言語で数行、という奴。
529464
2008/10/12(日) 15:10:26 >522
その辺は「自由と責任」というやつですな。「銃で足をブッとばす自由」でもあるけど。
>どのへんが複雑だと思ったのかは興味がある…
自分でも何でだったっけな、と過去の記憶を探り出してみたけど、
・実行中のWORDの次のWORDを辞書の中から探せるようにする仕組みが必要
×実行中のWORDの中身を変更するのが大変(VMのスタックに積んでいるWORD含む)
×番兵などの終了処理が必須
--> VM側のスタックに積むことにすればpop&top参照で正規化できるし、元の値を
コピーするからWORD変更にも影響されない。
・VM側に「WORDを実行する」という手順が必要になる
--> VM側のスタックに積むことにすればpushで正規化できる
ぐらいかもしれない。
コンパイル時にWORDの中身が確定するforthだとあんまり問題にならなそうだね。
その辺は「自由と責任」というやつですな。「銃で足をブッとばす自由」でもあるけど。
>どのへんが複雑だと思ったのかは興味がある…
自分でも何でだったっけな、と過去の記憶を探り出してみたけど、
・実行中のWORDの次のWORDを辞書の中から探せるようにする仕組みが必要
×実行中のWORDの中身を変更するのが大変(VMのスタックに積んでいるWORD含む)
×番兵などの終了処理が必須
--> VM側のスタックに積むことにすればpop&top参照で正規化できるし、元の値を
コピーするからWORD変更にも影響されない。
・VM側に「WORDを実行する」という手順が必要になる
--> VM側のスタックに積むことにすればpushで正規化できる
ぐらいかもしれない。
コンパイル時にWORDの中身が確定するforthだとあんまり問題にならなそうだね。
530464
2008/10/12(日) 15:20:28 >524
「スタックに複数のデータを押し込む操作は機械語レベルだとアトミックにならない」ということ??
C++で実装しているから意識していなかったけど、そうかもしれないですね。
少なくともプリミティブで実装する必要あるね。
>ForthのVMよりも(多分プリミティブ)WORDの系列を作る部分が余分で、
これは狙ってやっていることだから仕様がないですね。
まあ、俺言語ではVM自体もWORD扱いにしているのですが……
「スタックに複数のデータを押し込む操作は機械語レベルだとアトミックにならない」ということ??
C++で実装しているから意識していなかったけど、そうかもしれないですね。
少なくともプリミティブで実装する必要あるね。
>ForthのVMよりも(多分プリミティブ)WORDの系列を作る部分が余分で、
これは狙ってやっていることだから仕様がないですね。
まあ、俺言語ではVM自体もWORD扱いにしているのですが……
531デフォルトの名無しさん
2008/10/12(日) 15:50:56 >>529
んー、やっぱり、思い込みでForthを理解したつもりになるんじゃなくて、
本格的に触ってみたほうが良いと思うんだけどな。
>実行中のWORDの次のWORDを辞書の中から探せるようにする仕組みが必要
通常、Forthは実行時には、スレデッドコードにコンパイルされた命令列を、
上にも出ているnextルーチンで辿るだけなので、仕組みというほどの仕組みはないよ。
>実行中のWORDの中身を変更するのが大変(VMのスタックに積んでいるWORD含む)
間接スレッディングのForthだと定義済みのワードの変更は、一カ所ポインタを書き換える
だけで済むはず。
>番兵などの終了処理が必須
番兵というかワードの最後にnextルーチンへのジャンプかnextルーチン自身を書き込むだけ。
>VM側に「WORDを実行する」という手順が必要になる
スレデッドコードのForthの命令列は、ワードへのポインタが並んでいるだけで、
「WORDを実行する」という意味のインストラクションは必要ないよ。
んー、やっぱり、思い込みでForthを理解したつもりになるんじゃなくて、
本格的に触ってみたほうが良いと思うんだけどな。
>実行中のWORDの次のWORDを辞書の中から探せるようにする仕組みが必要
通常、Forthは実行時には、スレデッドコードにコンパイルされた命令列を、
上にも出ているnextルーチンで辿るだけなので、仕組みというほどの仕組みはないよ。
>実行中のWORDの中身を変更するのが大変(VMのスタックに積んでいるWORD含む)
間接スレッディングのForthだと定義済みのワードの変更は、一カ所ポインタを書き換える
だけで済むはず。
>番兵などの終了処理が必須
番兵というかワードの最後にnextルーチンへのジャンプかnextルーチン自身を書き込むだけ。
>VM側に「WORDを実行する」という手順が必要になる
スレデッドコードのForthの命令列は、ワードへのポインタが並んでいるだけで、
「WORDを実行する」という意味のインストラクションは必要ないよ。
532464
2008/10/12(日) 23:25:00 本格的に触るのは……あの構文は色々と嫌だ。
[条件] IF [肯定時] ELSE [否定時] THEN とか。
せめて条件算子的だったらなぁ。[条件] ? [肯定時] : [否定時] ;
>531
細かいことを言うと、nextルーチンが辞書内のスレッデッドコード構造の詳細を知らなきゃ
ならないので、VMと辞書の関連が密になりそうな気がします。スレッデッドコードをスタックに
pushしてVM内に取り込んじゃえば辞書内の構造を気にする必要無いし。
まあ、最適化のために作り込んでも良い気がするけどね。そこは将来の課題ということで。
>一カ所ポインタを書き換えるだけで済むはず。
WORD自体を置換する場合はそうですね。WORDの挿入や削除はたぶん難しいかと。
そんな特殊なことは禁止にして、新規にWORD定義させた方が良いかも知れないけど。
あるいは無名WORDとかスキップWORDを用意するとか。
>「WORDを実行する」という意味のインストラクションは必要ないよ。
あれ?VMに保存されている「現在実行中のWORD」って、間接ポインタじゃないの?
(nextの動作を考えると、間接ポインタじゃないと色々と面倒臭そうな)
実行前に間接参照からWORDを探す操作が一段余計に必要になるかと思ってた。
[条件] IF [肯定時] ELSE [否定時] THEN とか。
せめて条件算子的だったらなぁ。[条件] ? [肯定時] : [否定時] ;
>531
細かいことを言うと、nextルーチンが辞書内のスレッデッドコード構造の詳細を知らなきゃ
ならないので、VMと辞書の関連が密になりそうな気がします。スレッデッドコードをスタックに
pushしてVM内に取り込んじゃえば辞書内の構造を気にする必要無いし。
まあ、最適化のために作り込んでも良い気がするけどね。そこは将来の課題ということで。
>一カ所ポインタを書き換えるだけで済むはず。
WORD自体を置換する場合はそうですね。WORDの挿入や削除はたぶん難しいかと。
そんな特殊なことは禁止にして、新規にWORD定義させた方が良いかも知れないけど。
あるいは無名WORDとかスキップWORDを用意するとか。
>「WORDを実行する」という意味のインストラクションは必要ないよ。
あれ?VMに保存されている「現在実行中のWORD」って、間接ポインタじゃないの?
(nextの動作を考えると、間接ポインタじゃないと色々と面倒臭そうな)
実行前に間接参照からWORDを探す操作が一段余計に必要になるかと思ってた。
533デフォルトの名無しさん
2008/10/12(日) 23:34:45 >VMと辞書の関連が密
というか、それがFORTHの肝のような気がする。
というか、それがFORTHの肝のような気がする。
534デフォルトの名無しさん
2008/10/13(月) 00:16:22 スレデッドコード自体、ワードへのポインタを並べたものでしかないから、
ジャンプとかコールとかそういう類のインストラクションをデコードする必要がない、
という意味ね。
あとForthの実装にはダイレクトスレデッドなものもあるよ。
nextルーチンからみると命令列を順に辿ってるだけであって、
「辞書からワードを毎回探している」ってわけじゃないしね。
それより、スタックに命令列を毎回pushするオーバーヘッドのほうがよほど大きいと思うし、
nextルーチンに比べてシンプルとも思えないんだな。
ま、いろいろ悩んで勉強して、これだ!と思える言語デザインに邁進してください、と。
このスレが本当に久しぶりに活性化したのは間違いないしね。
ジャンプとかコールとかそういう類のインストラクションをデコードする必要がない、
という意味ね。
あとForthの実装にはダイレクトスレデッドなものもあるよ。
nextルーチンからみると命令列を順に辿ってるだけであって、
「辞書からワードを毎回探している」ってわけじゃないしね。
それより、スタックに命令列を毎回pushするオーバーヘッドのほうがよほど大きいと思うし、
nextルーチンに比べてシンプルとも思えないんだな。
ま、いろいろ悩んで勉強して、これだ!と思える言語デザインに邁進してください、と。
このスレが本当に久しぶりに活性化したのは間違いないしね。
535デフォルトの名無しさん
2008/10/13(月) 00:21:58 >>533
間接スレデッドの場合、Forthコンソールの側から見ると、
逆コンパイルしやすかったり、便利な面はたしかにあるけれど、
VMつうかnextルーチンから見ると、単にポインタを辿っているだけなので、
構造として、VM実装と辞書構造が密、というわけでもないと思う。
実際VM実装テクニックとしてのスレデッドコードは、今や、Forth以外でも
当たり前の技術になってるし。
間接スレデッドの場合、Forthコンソールの側から見ると、
逆コンパイルしやすかったり、便利な面はたしかにあるけれど、
VMつうかnextルーチンから見ると、単にポインタを辿っているだけなので、
構造として、VM実装と辞書構造が密、というわけでもないと思う。
実際VM実装テクニックとしてのスレデッドコードは、今や、Forth以外でも
当たり前の技術になってるし。
536デフォルトの名無しさん
2008/10/27(月) 00:52:54 jonesforth読んだ。
ソース付きなので理解しやすい。
OS Xで動かそうとしたが挫折した。
OSXのGASではマクロが対応してないみたいだ。
ソース付きなので理解しやすい。
OS Xで動かそうとしたが挫折した。
OSXのGASではマクロが対応してないみたいだ。
537デフォルトの名無しさん
2008/11/23(日) 01:13:24 急にスレが進んだと思ったら、止まるのも急だよなこのスレ
やっぱ誰も使ってないってこったな
やっぱ誰も使ってないってこったな
538デフォルトの名無しさん
2008/11/26(水) 17:30:54 ttp://www.intellasys.net/index.php?option=com_frontpage&Itemid=64
なんか並列forthマシンっぽいw
なんか並列forthマシンっぽいw
539デフォルトの名無しさん
2008/12/27(土) 14:00:32 factor使ってる奴いる?
540デフォルトの名無しさん
2008/12/27(土) 21:13:14 とりあえず入れてみたけど特に使ってないなw
541539
2008/12/28(日) 01:26:48 factorおもしろいぜ。デプロイするとスタンドアロンで動く物もできるし。
542デフォルトの名無しさん
2008/12/29(月) 13:31:00 やっぱだめだこの言語。
人間工学から著しく反してる。
人間工学から著しく反してる。
543デフォルトの名無しさん
2008/12/29(月) 19:52:22 サルが人間工学語ってやがる。
544デフォルトの名無しさん
2008/12/29(月) 21:45:56 自分の思考をスタック処理に最適化させればいいんだよw
545デフォルトの名無しさん
2008/12/29(月) 22:06:52 forthに慣れるのはそんなに大変なことじゃないと思うけどなあ。
まあ、問題をごく単純な部分に細分して考えることができないと、
スタック処理が爆発しがちになるとはいえますね。
でも、問題の細分ができない人は、どの言語でプログラミングしても
たかが知れてる。
まあ、問題をごく単純な部分に細分して考えることができないと、
スタック処理が爆発しがちになるとはいえますね。
でも、問題の細分ができない人は、どの言語でプログラミングしても
たかが知れてる。
546デフォルトの名無しさん
2009/01/01(木) 11:45:56 Lispのマクロ的なことができるってほんと?
547デフォルトの名無しさん
2009/01/01(木) 11:56:23 イミディエイトなワードのことかな。
結果としては似たようなことができると言えなくもないけど、
Lispのマクロみたいな2度evalするみたいな高水準のものじゃありません。
結果としては似たようなことができると言えなくもないけど、
Lispのマクロみたいな2度evalするみたいな高水準のものじゃありません。
548デフォルトの名無しさん
2009/01/07(水) 22:44:24 つまり・・・どういうことだってばよ?
549デフォルトの名無しさん
2009/01/07(水) 23:39:44 factorならlispのマクロと同じようなことができるよ
550デフォルトの名無しさん
2009/01/08(木) 00:11:19 同じ機能を達成できるとしても言語が違えばそこに至るロジックは異なる。
具体的に何がしたいのか特定しないと。
factorはおもしろい言語だが、関数型言語のフリし過ぎなのがイヤラシくもある。
具体的に何がしたいのか特定しないと。
factorはおもしろい言語だが、関数型言語のフリし過ぎなのがイヤラシくもある。
551デフォルトの名無しさん
2009/01/09(金) 12:30:14 何かサンプルが欲しいな。
552デフォルトの名無しさん
2009/01/09(金) 22:47:55553デフォルトの名無しさん
2009/02/26(木) 00:17:58 組み込み用FORTH検討中・・・
554デフォルトの名無しさん
2009/03/07(土) 05:11:31 part 1 の URL ってないの?
555デフォルトの名無しさん
2009/03/07(土) 10:00:54556デフォルトの名無しさん
2009/03/07(土) 10:13:20 : Mops ( オブジェクト指向FORTH -- ) ;
http://pc.2ch.net/tech/kako/1000/10001/1000118518.html
http://pc.2ch.net/tech/kako/1000/10001/1000118518.html
557デフォルトの名無しさん
2009/03/07(土) 13:25:33 thanks
558デフォルトの名無しさん
2009/03/07(土) 18:54:17 このスレも長いね
559デフォルトの名無しさん
2009/03/07(土) 21:43:31 factorとかJoyとか触ってる奴いないのかよ
560デフォルトの名無しさん
2009/03/07(土) 23:32:50 普通の関数型言語に比べてどういうメリットがあるのか分からない。
561デフォルトの名無しさん
2009/03/08(日) 10:51:09 forthは関数型ちゃうし
562デフォルトの名無しさん
2009/03/08(日) 12:22:51 >>560はなんでこのスレにいるんだ?
563デフォルトの名無しさん
2009/03/08(日) 19:52:03 いや、factorがって事なんだが。
564デフォルトの名無しさん
2009/03/08(日) 20:01:58 なんで関数型言語と比較するんだ?
Factor = forth + 無名関数とオブジェクト指向だよ
Factor = forth + 無名関数とオブジェクト指向だよ
565デフォルトの名無しさん
2009/03/19(木) 13:57:45 全然Forthと関係ない話だが、AMDのシニアアーキテクトが
チャック・ムーアって名前なのは結構心臓に悪いな。
チャック・ムーアって名前なのは結構心臓に悪いな。
566デフォルトの名無しさん
2009/06/24(水) 08:13:56 何か話題無いかな
567デフォルトの名無しさん
2009/06/25(木) 14:24:21 LLイベントでの発表者募集中とか
568デフォルトの名無しさん
2009/07/03(金) 05:23:56┌─┐
│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘ おっぱい!おっぱい!
569デフォルトの名無しさん
2009/07/03(金) 22:57:04 Pythonスレに帰れw
570デフォルトの名無しさん
2009/07/09(木) 07:11:33 今更ながら FORTH 勉強しようと思ってるんだけど、
何かいい本ある?
できれば日本語がいいけど英語も可。
何かいい本ある?
できれば日本語がいいけど英語も可。
571デフォルトの名無しさん
2009/07/09(木) 10:23:23 絶版多し
572デフォルトの名無しさん
2009/07/09(木) 21:39:14 触りしか読んでないけど
ttp://www.forth.com/starting-forth/
ttp://www.forth.com/starting-forth/
573デフォルトの名無しさん
2009/07/10(金) 07:32:04 >>570
Let over Lambda日本語版
Let over Lambda日本語版
574デフォルトの名無しさん
2009/07/10(金) 20:52:17 >>573
たしかそれってlispの本じゃないか?
たしかそれってlispの本じゃないか?
575デフォルトの名無しさん
2009/07/10(金) 20:57:56 lispでforthを作る本
576デフォルトの名無しさん
2009/07/10(金) 22:31:17577デフォルトの名無しさん
2009/07/11(土) 05:33:45 gforth でググるとNVIDIAのグラボしかヒットしない。
Bingだと forth だけがヒットする。愛してるよMS
Bingだと forth だけがヒットする。愛してるよMS
578デフォルトの名無しさん
2009/07/18(土) 23:02:30 あほな質問かとは思うがよかったら教えてくれ
スタック型言語にはスタックオーバーフローってある?
それともヒープにあたるものをスタックとしてつかている?
スタック型言語にはスタックオーバーフローってある?
それともヒープにあたるものをスタックとしてつかている?
579デフォルトの名無しさん
2009/07/18(土) 23:10:10 両方ともYESだよ。
580デフォルトの名無しさん
2009/07/18(土) 23:17:25 オーバーフローだけじゃなくスタックアンダーフローも楽しめるぞ
581デフォルトの名無しさん
2009/07/18(土) 23:31:56 さんきゅー、Jedi!
582デフォルトの名無しさん
2009/07/19(日) 03:45:38 そのネタもう飽きた
次そゆこと言った奴はダークサイドな
次そゆこと言った奴はダークサイドな
自動焼人 ★ = 自動保守 ◆KAWORUKOFI = 自動保守#K9K?_D[L
名言集 その2
『お前が規制系キャップ取れるか審査してやるよ』
http://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
> まぁ、どうせ正解が出るわけもないし、次の問題。
> 君が思う面白いスレはどんなの?
----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
http://qb5.2ch.net/test/read.cgi/sec2chd/1250169591/
にて自動焼人 ★までご連絡ください
名言集 その2
『お前が規制系キャップ取れるか審査してやるよ』
http://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
> まぁ、どうせ正解が出るわけもないし、次の問題。
> 君が思う面白いスレはどんなの?
----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
http://qb5.2ch.net/test/read.cgi/sec2chd/1250169591/
にて自動焼人 ★までご連絡ください
584デフォルトの名無しさん
2009/10/06(火) 10:44:14 . 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件
. 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デフォルトの名無しさん
2009/10/06(火) 11:33:58586デフォルトの名無しさん
2009/10/06(火) 11:36:17 すみません、嘘でした。。。
587デフォルトの名無しさん
2009/10/06(火) 13:38:04 C の検索結果 約 3,910,000,000 件中 1 - 10 件目 (0.32 秒)
588デフォルトの名無しさん
2009/10/06(火) 13:39:59589デフォルトの名無しさん
2009/10/06(火) 13:42:51 D の検索結果 約 4,780,000,000 件中 1 - 10 件目 (0.24 秒)
時代はもはやDですよ。
時代はもはやDですよ。
590デフォルトの名無しさん
2009/10/06(火) 13:44:54 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 秒)
Brain Fuck の検索結果 約 5,190,000 件中 1 - 10 件目 (0.30 秒)
Brain Fsck の検索結果 約 28,500 件中 1 - 10 件目 (0.33 秒)
591デフォルトの名無しさん
2009/10/08(木) 21:50:04 Fuck の検索結果 約 156,000,000 件中 1 - 10 件目 (0.19 秒)
592デフォルトの名無しさん
2009/10/09(金) 00:25:23 A の検索結果 約 15,560,000,000 件中 1 - 10 件目 (0.06 秒)
時代は A だった。
時代は A だった。
593デフォルトの名無しさん
2009/11/23(月) 09:27:28 forth検索しにくすぎる
594デフォルトの名無しさん
2009/11/23(月) 18:04:33595デフォルトの名無しさん
2009/11/25(水) 14:14:43 http://lab.ee.uec.ac.jp/text/forth/doc/WordName.html
このページの仕様だとNFの後にLFが来てるけど、jonesforthだとLFが最初だよね。
NFが先だとFINDの時にLFを出すのに手間がかかると思うんだけど、
NFがLFより前にあるメリットって何かあるのかな?
このページの仕様だとNFの後にLFが来てるけど、jonesforthだとLFが最初だよね。
NFが先だとFINDの時にLFを出すのに手間がかかると思うんだけど、
NFがLFより前にあるメリットって何かあるのかな?
596デフォルトの名無しさん
2009/11/26(木) 00:14:06 padding の有無の違いかと
597デフォルトの名無しさん
2009/11/30(月) 00:21:59 http://www.h7.dion.ne.jp/~samwyn/forth/gforth/index.html
Gforth マニュアルの和訳 (現在、チュートリアルまで)
Gforth マニュアルの和訳 (現在、チュートリアルまで)
598デフォルトの名無しさん
2010/01/05(火) 18:09:33 http://ronware.org/reva/wiki/Index.php
Reva
非標準系 Forth (ミニマリスト系)
パブリックドメイン、コアは FASM で記述
プリミティブワードは商用 Forth や GCC 並みに高速
Windows の DLL や Linux の共有ライブラリを呼び出し可
豊富なライブラリが付属
Reva
非標準系 Forth (ミニマリスト系)
パブリックドメイン、コアは FASM で記述
プリミティブワードは商用 Forth や GCC 並みに高速
Windows の DLL や Linux の共有ライブラリを呼び出し可
豊富なライブラリが付属
599デフォルトの名無しさん
2010/01/16(土) 15:33:34 http://www.h7.dion.ne.jp/~samwyn/forth/RetroLanguage.html
Retro (Forth) の和訳
http://www.h7.dion.ne.jp/~samwyn/forth/winconsole.zip
オリジナルのコンソール版仮想マシンを Windows 専用に移植したもの
TinyC のみでビルド可、TinyC の conio.h を利用
超応急措置的改変だが、文字列に日本語も使用可
ビルド済み EXE とオリジナルの retroImage も同梱
Retro (Forth) の和訳
http://www.h7.dion.ne.jp/~samwyn/forth/winconsole.zip
オリジナルのコンソール版仮想マシンを Windows 専用に移植したもの
TinyC のみでビルド可、TinyC の conio.h を利用
超応急措置的改変だが、文字列に日本語も使用可
ビルド済み EXE とオリジナルの retroImage も同梱
600デフォルトの名無しさん
2010/03/11(木) 19:17:24 スレがなくて似たようなスレということでやってきたんだけど
postscriptの話題もOKですか?
forthはif文は逆ポーランドじゃないんですね
postscriptの話題もOKですか?
forthはif文は逆ポーランドじゃないんですね
601デフォルトの名無しさん
2010/03/12(金) 19:38:03 誰もいないし
カーペット敷いときますね
%!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
カーペット敷いときますね
%!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デフォルトの名無しさん
2010/03/23(火) 00:04:39 ttp://factorcode.org/
今死んでね?
今死んでね?
603デフォルトの名無しさん
2010/03/23(火) 00:58:37 中の小人が忙しいといってるな
604デフォルトの名無しさん
2010/04/18(日) 17:43:19 FORTHって、ちょっとずつ作れてなんだか良いね。
関数とかじゃなくて、演算子を作りながら進んでる感じ。
関数とかじゃなくて、演算子を作りながら進んでる感じ。
605デフォルトの名無しさん
2010/04/18(日) 23:45:47 のんびりのんびり(^。^)y-.。o○
606デフォルトの名無しさん
2010/04/22(木) 05:05:43 何気にコンパイル = 2パスなところがミソなんだね。
最初IF文とか巧妙にスタックで実現しているのかと思った。
最初IF文とか巧妙にスタックで実現しているのかと思った。
607デフォルトの名無しさん
2010/04/28(水) 19:34:13 Factor 座談会
ttp://oss.infoscience.co.jp/factor/roundtable/
ttp://oss.infoscience.co.jp/factor/roundtable/
608デフォルトの名無しさん
2010/06/15(火) 05:20:29 蔵書を整理していたら
マイコンピュータ No3
特集すぐ動くFORTH
などと言うものが出てきた、1981年の本なのでZ80とかApple向けの実装の話だったりする
思わずScanSnapで取り込んでしまった
マイコンピュータ No3
特集すぐ動くFORTH
などと言うものが出てきた、1981年の本なのでZ80とかApple向けの実装の話だったりする
思わずScanSnapで取り込んでしまった
609デフォルトの名無しさん
2010/06/15(火) 17:04:11 リギー、かわいいよリギー
610デフォルトの名無しさん
2010/08/11(水) 11:24:30 age
611デフォルトの名無しさん
2010/12/28(火) 08:18:41 age
612デフォルトの名無しさん
2010/12/28(火) 09:18:30613デフォルトの名無しさん
2010/12/28(火) 09:43:38 いつものことじゃん
いちいち驚くなよ
いちいち驚くなよ
614デフォルトの名無しさん
2010/12/31(金) 23:45:15 Ubuntu GNU/LINUX10.04を使ってます。
先日、倉庫を整理していたら「パソコン・ユーザのためのFORTH入門」(近代科学社)が
出てきました。懐かしいので、”Ubuntu FORTH”で検索してみてgFORTHの存在を知り
さっそくインストールしてみました。FORTHとの出会いはOh!MZの連載記事「掟やぶりの
magiFORTH」ですが、当時はSーOSを入力していなかったので実際にFORTHに触れる
のは今回が初めてです。
よろしくお願いします。
先日、倉庫を整理していたら「パソコン・ユーザのためのFORTH入門」(近代科学社)が
出てきました。懐かしいので、”Ubuntu FORTH”で検索してみてgFORTHの存在を知り
さっそくインストールしてみました。FORTHとの出会いはOh!MZの連載記事「掟やぶりの
magiFORTH」ですが、当時はSーOSを入力していなかったので実際にFORTHに触れる
のは今回が初めてです。
よろしくお願いします。
616デフォルトの名無しさん
2011/01/01(土) 23:57:48 >>614
清水和人だったな、懐かしい
清水和人だったな、懐かしい
617デフォルトの名無しさん
2011/01/04(火) 08:09:35618デフォルトの名無しさん
2011/01/04(火) 20:00:48619デフォルトの名無しさん
2011/02/11(金) 21:03:43 >>13>>43
ForthとLISPの両方の特徴を生かした言語Laplasの論文
汎用簡易言語としてみたインタプリタ言語Laplas
http://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 一マイクロ・コンピュータに適した新らしい言語一
http://eprints.lib.hokudai.ac.jp/dspace/bitstream/2115/41966/1/130_145-156.pdf
ForthとLISPの両方の特徴を生かした言語Laplasの論文
汎用簡易言語としてみたインタプリタ言語Laplas
http://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 一マイクロ・コンピュータに適した新らしい言語一
http://eprints.lib.hokudai.ac.jp/dspace/bitstream/2115/41966/1/130_145-156.pdf
620デフォルトの名無しさん
2011/02/11(金) 21:15:45 日本語プログラミング言語Mind
http://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
え、それなにどうやってやるの。
http://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 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
http://ci.nii.ac.jp/author?q=%E5%8E%9F%E7%94%B0%E5%BA%B7%E5%BE%B3
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
http://ci.nii.ac.jp/author?q=%E5%8E%9F%E7%94%B0%E5%BA%B7%E5%BE%B3
622デフォルトの名無しさん
2011/02/11(金) 21:28:52 これか
ttp://ci.nii.ac.jp/naid/120001758800
「機関リポジトリ本文(無料)」ってリンクからたどってくとPDFで本文読めるな
ttp://ci.nii.ac.jp/naid/120001758800
「機関リポジトリ本文(無料)」ってリンクからたどってくとPDFで本文読めるな
623デフォルトの名無しさん
2011/02/11(金) 23:23:10624デフォルトの名無しさん
2011/02/12(土) 00:27:43 SECD Machineみたいな、LispやMLを実装するすためのスタックマシンに自然なForthって感じか。
ざっとみたけど、lambdaはあっても、Closureはないみたいだな。
ざっとみたけど、lambdaはあっても、Closureはないみたいだな。
625デフォルトの名無しさん
2011/03/07(月) 10:54:59.82 だなw
626デフォルトの名無しさん
2011/05/28(土) 09:22:21.04 保守
627デフォルトの名無しさん
2011/05/29(日) 07:57:22.03 いつのまにかWikipediaのMindの記事が大幅に書き換わってるな
628デフォルトの名無しさん
2011/06/06(月) 07:09:36.69 おムーア様の過去の著作公開
ttp://www.colorforth.com/POL.htm
ttp://www.colorforth.com/POL.htm
629天使 ◆uL5esZLBSE
2011/07/02(土) 23:26:16.04 >>620
---------------------------
(((((((( 日本語プログラミング言語Mind ))))))))(キリ!!ッッ!!!!
------------------
((((((((((( え、それなにどうやってやるの。 )))))))))))(キリキリッッ!!!キリッキリッッッッ!!!!キリッッ!!!!ッッ!!!!
------(きリッ!
お前らってどうみてもゴミだよな
---------------------------
(((((((( 日本語プログラミング言語Mind ))))))))(キリ!!ッッ!!!!
------------------
((((((((((( え、それなにどうやってやるの。 )))))))))))(キリキリッッ!!!キリッキリッッッッ!!!!キリッッ!!!!ッッ!!!!
------(きリッ!
お前らってどうみてもゴミだよな
630デフォルトの名無しさん
2011/07/30(土) 14:34:39.15 保守
631デフォルトの名無しさん
2011/09/10(土) 06:58:08.33 時代はFORTH
632デフォルトの名無しさん
2011/09/10(土) 23:29:07.15 forth出ても200超えられないorz
633デフォルトの名無しさん
2011/10/12(水) 20:56:54.15 ttp://builds.factorcode.org/package?os=windows&cpu=x86.32
factorの新しいのきてるぅ
factorの新しいのきてるぅ
634デフォルトの名無しさん
2012/01/16(月) 22:00:32.22 保守
635営利利用に関するLR審議中@詳細は自治スレへ
2012/03/30(金) 23:52:09.58 factor(等のforth系)は頭がトコロテンになるな。
でもプログラミング自体をパズルとして楽しめるような気がする。
でもプログラミング自体をパズルとして楽しめるような気がする。
636デフォルトの名無しさん
2012/06/26(火) 23:53:01.65 ttp://builds.factorcode.org/package?os=windows&cpu=x86.32
新しいのキター
新しいのキター
637デフォルトの名無しさん
2012/06/27(水) 01:49:33.00 スタックコンピュータって言う書籍買ってみた
古い本だけどFORTHとスタックマシンへの愛がすげー
古い本だけどFORTHとスタックマシンへの愛がすげー
638デフォルトの名無しさん
2012/06/27(水) 07:17:19.22 おお、あれは名著だ。
639デフォルトの名無しさん
2012/06/27(水) 10:13:02.11640デフォルトの名無しさん
2012/06/28(木) 11:00:23.05 >638
原書はまだPDFで全公開してるのかな?
原書はまだPDFで全公開してるのかな?
641デフォルトの名無しさん
2012/06/28(木) 11:06:29.92 ttp://builds.factorcode.org/package?os=windows&cpu=x86.64
64bit版キター
64bit版キター
642デフォルトの名無しさん
2012/06/28(木) 11:09:24.65 >>640
ttp://www.ece.cmu.edu/~koopman/stack_computers/
ttp://www.ece.cmu.edu/~koopman/stack_computers/
643デフォルトの名無しさん
2012/06/30(土) 00:15:59.63 >>639
forth系ってパズル的な楽しさがあるよな
forth系ってパズル的な楽しさがあるよな
644デフォルトの名無しさん
2012/06/30(土) 22:46:42.75 ttp://builds.factorcode.org/package?os=windows&cpu=x86.32
また新しいのキター
また新しいのキター
645デフォルトの名無しさん
2012/07/03(火) 20:28:16.05 また来ましたな
バージョンアップ祭りの季節?
バージョンアップ祭りの季節?
646デフォルトの名無しさん
2012/07/10(火) 22:11:13.67 FORTHを学ぶサイトを作った - 西尾泰和のはてなダイアリー
http://d.hatena.ne.jp/nishiohirokazu/20120710/1341924363
http://d.hatena.ne.jp/nishiohirokazu/20120710/1341924363
647デフォルトの名無しさん
2012/07/11(水) 23:13:14.19 またニューバージョンきたで
648デフォルトの名無しさん
2012/07/12(木) 22:57:24.59 ttp://builds.factorcode.org/package?os=windows&cpu=x86.32
今日の更新
今日の更新
649デフォルトの名無しさん
2012/07/14(土) 19:15:25.30 本当によくバージョンアップくるな
650デフォルトの名無しさん
2012/07/15(日) 18:51:42.95 あ、きてる
651デフォルトの名無しさん
2012/07/18(水) 15:12:10.06 毎度!
652デフォルトの名無しさん
2012/07/19(木) 20:54:07.43 2012-07-17
653デフォルトの名無しさん
2012/07/20(金) 14:00:53.36 2012-07-19
654デフォルトの名無しさん
2012/07/20(金) 17:48:26.40 何だ何だ?
655デフォルトの名無しさん
2012/07/20(金) 22:56:25.07 ttp://builds.factorcode.org/package?os=windows&cpu=x86.32
ニューバージョンが来たってことでしょ
ニューバージョンが来たってことでしょ
656デフォルトの名無しさん
2012/07/20(金) 23:55:48.43 うーん、それニューバージョンって言うものか?
一見するとリリースノートもないし、開発者向けにビルドし直したもので、
一般のユーザー向けに作られたものじゃないと推察するのだが。
本スレに書いてる人、何が変わったか把握してる?
一見するとリリースノートもないし、開発者向けにビルドし直したもので、
一般のユーザー向けに作られたものじゃないと推察するのだが。
本スレに書いてる人、何が変わったか把握してる?
657デフォルトの名無しさん
2012/07/21(土) 09:31:12.80 ステマのにおい
658デフォルトの名無しさん
2012/10/08(月) 20:25:47.38 .
659デフォルトの名無しさん
2012/10/11(木) 20:10:49.89 shuffle shuffle
660デフォルトの名無しさん
2012/10/18(木) 19:40:10.82 test
661デフォルトの名無しさん
2012/11/12(月) 06:30:53.31 &nbsp;test
662デフォルトの名無しさん
2012/11/12(月) 07:13:40.73 &#160;test
663デフォルトの名無しさん
2012/11/15(木) 22:25:43.78 a
a
a
a
a
a
a
664デフォルトの名無しさん
2012/11/15(木) 22:28:35.87 a
a
   a
a
   a
665デフォルトの名無しさん
2012/11/22(木) 22:57:21.32 保
666デフォルトの名無しさん
2013/03/06(水) 01:21:39.12 保守
何か面白い話題無いのかな
何か面白い話題無いのかな
667デフォルトの名無しさん
2013/03/06(水) 09:59:04.64 I think so.
668デフォルトの名無しさん
2013/03/08(金) 11:11:43.39 Laplasの人自身による解説があった
http://blog.goo.ne.jp/viscuit/e/3ffb6c90b91f75911cef4198ee394c09
http://blog.goo.ne.jp/viscuit/e/3ffb6c90b91f75911cef4198ee394c09
669デフォルトの名無しさん
2013/03/08(金) 11:46:01.28670デフォルトの名無しさん
2013/03/18(月) 01:17:00.32 >>117のコントロールフロースタックについてもうちょっと詳しく聞きたい
ジャンプ先って何へのジャンプ先?
ジャンプ先って何へのジャンプ先?
671デフォルトの名無しさん
2013/03/18(月) 01:23:17.50 あああちゃんと調べてなかった、ここの説明でわかったよ
http://www18.atwiki.jp/imops-forth/pages/34.html
http://www18.atwiki.jp/imops-forth/pages/34.html
672デフォルトの名無しさん
2013/03/18(月) 19:30:42.45 forthの最大の欠点ってfactorみたいなオブジェクト指向にしたときにスタックに積んだ引数と関数の期待する型が違ったときに困る事だとおもうんだけど
コンパイラのレベルでこれってなんとかならんの?
コンパイラのレベルでこれってなんとかならんの?
673デフォルトの名無しさん
2013/03/18(月) 22:45:55.67 普通の関数型言語と一緒じゃね?
全てのトークンに引数型と戻り値型を対応付けて、コンパイル時に
型解決すれば良いと思うけど。
全てのトークンに引数型と戻り値型を対応付けて、コンパイル時に
型解決すれば良いと思うけど。
674デフォルトの名無しさん
2013/03/28(木) 01:26:47.80 Windows上のFactorで日本語表示させる方法がわからん
675デフォルトの名無しさん
2013/03/28(木) 01:53:15.83 "日本語" H{ { font-name "メイリオ" } } format nl
で表示できた。
あとはlistenerのfont-nameを書き換えられたらいいのかな。
で表示できた。
あとはlistenerのfont-nameを書き換えられたらいいのかな。
676デフォルトの名無しさん
2014/01/05(日) 03:24:36.20 保守
677デフォルトの名無しさん
2014/01/05(日) 21:15:32.75 保守!!!
Forth は実用に耐えるのですか?特に可読性的に
Forth は実用に耐えるのですか?特に可読性的に
678デフォルトの名無しさん
2014/01/05(日) 22:21:30.32 >>677
Forth の達人 (= プロの Forth 屋) なら、数十万行でも苦にならないそうな。
ライフゲーム
http://wiki.forthfreak.net/index.cgi?GameOfLife
BASIC インタプリタ
http://home.iae.nl/users/mhx/basic.frt
FALSE インタプリタとコンパイラ
https://github.com/benhoyt/false-forth
その他
http://wiki.forthfreak.net/index.cgi?ForthCode
http://wiki.forthfreak.net/index.cgi?
みんな目的に特化したプログラミングをするので、汎用ライブラリやフレームワークは無いに等しいけれどね
(個々の実装に特化したものならそれなりにあるけど)。
Forth の達人 (= プロの Forth 屋) なら、数十万行でも苦にならないそうな。
ライフゲーム
http://wiki.forthfreak.net/index.cgi?GameOfLife
BASIC インタプリタ
http://home.iae.nl/users/mhx/basic.frt
FALSE インタプリタとコンパイラ
https://github.com/benhoyt/false-forth
その他
http://wiki.forthfreak.net/index.cgi?ForthCode
http://wiki.forthfreak.net/index.cgi?
みんな目的に特化したプログラミングをするので、汎用ライブラリやフレームワークは無いに等しいけれどね
(個々の実装に特化したものならそれなりにあるけど)。
679デフォルトの名無しさん
2014/01/05(日) 23:08:26.86 thx
まさかこんなに早く返事がくるとは思わなかった!
まさかこんなに早く返事がくるとは思わなかった!
680デフォルトの名無しさん
2014/01/06(月) 05:54:37.02 常に人はいるんだわ
単に新しい話題がなんにもないだけで
単に新しい話題がなんにもないだけで
681デフォルトの名無しさん
2014/01/06(月) 15:05:08.84682デフォルトの名無しさん
2014/01/06(月) 17:56:02.28 >>681 期待してます!
683デフォルトの名無しさん
2014/01/06(月) 20:20:59.69 文字列はどういう風に扱えばよいのですか?
684デフォルトの名無しさん
2014/01/06(月) 21:14:53.59 >>683
文字数と文字列本体からなる構造体のアドレス(ポインタ)、とか。
文字数と文字列本体からなる構造体のアドレス(ポインタ)、とか。
685デフォルトの名無しさん
2014/01/06(月) 22:41:12.49 日本語情報なら
http://www-lab.ee.uec.ac.jp/text/forth/
http://www.h7.dion.ne.jp/~samwyn/forth.htm
後者の Gforth マニュアル
http://www.h7.dion.ne.jp/~samwyn/forth/gforth/index.html
は「OS コマンドライン引数用ワード」まで訳してある (残りは未訳)。
また、ANS Forth ではない独自仕様だけども、
http://www.h7.dion.ne.jp/~samwyn/forth/RetroLanguage.html
http://www.h7.dion.ne.jp/~samwyn/forth/Ngaro.html
http://www.h7.dion.ne.jp/~samwyn/forth/retroimage.htm
も Forth 自体の実装を目論むなら参考になるかも (ちなみに現在の RetroForth はこれよりもう少し進化してる)。
http://www-lab.ee.uec.ac.jp/text/forth/
http://www.h7.dion.ne.jp/~samwyn/forth.htm
後者の Gforth マニュアル
http://www.h7.dion.ne.jp/~samwyn/forth/gforth/index.html
は「OS コマンドライン引数用ワード」まで訳してある (残りは未訳)。
また、ANS Forth ではない独自仕様だけども、
http://www.h7.dion.ne.jp/~samwyn/forth/RetroLanguage.html
http://www.h7.dion.ne.jp/~samwyn/forth/Ngaro.html
http://www.h7.dion.ne.jp/~samwyn/forth/retroimage.htm
も Forth 自体の実装を目論むなら参考になるかも (ちなみに現在の RetroForth はこれよりもう少し進化してる)。
686デフォルトの名無しさん
2014/01/06(月) 23:19:19.70687デフォルトの名無しさん
2014/01/07(火) 09:04:59.98 ややこしい物は全部辞書に突っ込むとかの手も。
688デフォルトの名無しさん
2014/01/07(火) 11:29:30.09689デフォルトの名無しさん
2014/01/07(火) 12:34:21.76 >>688の自己レスですが、辞書にと言うことは素FORTHの話だと思うので
文字列を辞書に登録後、そのアドレスがスタックへ積まれることになりますね。
文字列を辞書に登録後、そのアドレスがスタックへ積まれることになりますね。
690681
2014/01/13(月) 14:43:11.44 681です。
インタプリタでいいよね?
インタプリタでいいよね?
691デフォルトの名無しさん
2014/01/15(水) 17:15:27.03 >>690
バイトコードとかスレッデッドコードインタプリタであればFORTHの普通過ぎると思う(誰もが一度はやる)
JIT(AnyCPU向け)実装とか,Factor見たいな構造をスタックに詰めるとかの部分をがんばらないとn番煎じになっちゃうから何か独自のがんばりが必要だと思うよ。
というかFactorが凄いのでアレ超えて欲しいな(アイデアだけでも)
OSSでがんばるならこっそりコントリビュートする人はこのスレにも多そうだからがんばれ!
バイトコードとかスレッデッドコードインタプリタであればFORTHの普通過ぎると思う(誰もが一度はやる)
JIT(AnyCPU向け)実装とか,Factor見たいな構造をスタックに詰めるとかの部分をがんばらないとn番煎じになっちゃうから何か独自のがんばりが必要だと思うよ。
というかFactorが凄いのでアレ超えて欲しいな(アイデアだけでも)
OSSでがんばるならこっそりコントリビュートする人はこのスレにも多そうだからがんばれ!
692デフォルトの名無しさん
2014/01/15(水) 23:01:48.08 最初はベタな書き方でいいと思う
693デフォルトの名無しさん
2014/01/16(木) 04:52:38.68 Forth で Forth を書くんだ
694デフォルトの名無しさん
2014/01/17(金) 10:55:03.71695デフォルトの名無しさん
2014/01/26(日) 21:50:03.79 forthインタプリタありすぎてどれを使えばいいかよく分からないけど
とりあえずgforth使っておけばいいのかな
とりあえずgforth使っておけばいいのかな
696デフォルトの名無しさん
2014/01/26(日) 22:12:55.38 とりあえずなら何使ってみてもいいと思うよ
697デフォルトの名無しさん
2014/01/27(月) 11:46:12.62 自分でインタプリタ書いてみるのも良い
698デフォルトの名無しさん
2014/02/20(木) 20:29:49.07699デフォルトの名無しさん
2014/03/12(水) 13:38:35.60ID:ZbttMlJE http://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 自体で記述されてる。
Forth-83 の ZX Spectrum (欧州版 MSX1 のような Z80A 8 ビットパソコン) 版。
Forth-83_Extras.zip に Forth アセンブラ記述の実装ソースあり。FIG-Forth ベースらしく、最小限
のプリミティブワード以外は FIG-Forth と同じく Forth 自体で記述されてる。
700デフォルトの名無しさん
2014/03/12(水) 17:03:35.35ID:f26liuj5 あの頃のPCに標準装備されてるのがゲイツBASICでなくてForthだったらPC世界は今とは随分違ったものになってただろうな。
701デフォルトの名無しさん
2014/03/12(水) 17:20:04.88ID:w2TVy3P1 >>700
カシオの電卓もきっとRPNに!
BASICってコンピュータが何をしてくれるのかを学ぶのには適してるとおもうけどなあ
FORTHもそうだけどREPL環境のあるコンピュータ言語だとBASIC,FORTH,LISPの御三家があるけど、どれが一番よかったんだろう?
カシオの電卓もきっとRPNに!
BASICってコンピュータが何をしてくれるのかを学ぶのには適してるとおもうけどなあ
FORTHもそうだけどREPL環境のあるコンピュータ言語だとBASIC,FORTH,LISPの御三家があるけど、どれが一番よかったんだろう?
702デフォルトの名無しさん
2014/03/12(水) 17:26:49.46ID:EfiLuccu Lispがベストだが、いかんせん大食らい過ぎる。
Forthも悪くない。
Basicの奴はREPLのようなREPLでないような微妙なコマンドラインだしなぁ。
Forthも悪くない。
Basicの奴はREPLのようなREPLでないような微妙なコマンドラインだしなぁ。
703デフォルトの名無しさん
2014/03/12(水) 17:41:55.19ID:w2TVy3P1 >>702
実マシンのメモリモデル的にはBASICが一番合う気がするんだよね。
で関数定義を基本とするならLISPが一番。(引数と関数の関係が一目瞭然なので)
で、FORTHだとFACTORみたいにオブジェクトとメッセージみたいな含みができれば最高なのにという感じ
という個人的な感想をもっちゃう。
>Basicの奴はREPLのようなREPLでないような微妙なコマンドラインだしなぁ。
forgetで+とか以降を消して涙目とかは流石にBASICじゃできないと思うのでそこら辺のシステム空間とユーザ空間みたいな区別はあっても良いかもしれない
実マシンのメモリモデル的にはBASICが一番合う気がするんだよね。
で関数定義を基本とするならLISPが一番。(引数と関数の関係が一目瞭然なので)
で、FORTHだとFACTORみたいにオブジェクトとメッセージみたいな含みができれば最高なのにという感じ
という個人的な感想をもっちゃう。
>Basicの奴はREPLのようなREPLでないような微妙なコマンドラインだしなぁ。
forgetで+とか以降を消して涙目とかは流石にBASICじゃできないと思うのでそこら辺のシステム空間とユーザ空間みたいな区別はあっても良いかもしれない
704デフォルトの名無しさん
2014/06/02(月) 08:19:32.29ID:bzg7kW0W 組込み試作品に使える言語を探していて、Forthに行き当たった。
ZigBee、Raspberry Piなんだが、Forthはこういうの苦手なんだろうか?
ZigBee、Raspberry Piなんだが、Forthはこういうの苦手なんだろうか?
705デフォルトの名無しさん
2014/06/03(火) 01:33:51.03ID:pa2cdK6+ >>704
そんなこたないんだが、arm用に特化したforth処理系ってのが存在しないのも事実なのでなんと言えばいいんだろうか。
ちなみに特化しなくても何とかなっちゃうのがforthの良い所だったり、何も無いところから作り込んでもそんなに手間じゃなかったりするのも魅力だったりする。
でもRaspberry PiみたいなLinuxが動いちゃう環境ならforth使う理由が殆どないよ。
むしろ生の機械語を直接書かないと駄目なような環境に向いてる。
そんなこたないんだが、arm用に特化したforth処理系ってのが存在しないのも事実なのでなんと言えばいいんだろうか。
ちなみに特化しなくても何とかなっちゃうのがforthの良い所だったり、何も無いところから作り込んでもそんなに手間じゃなかったりするのも魅力だったりする。
でもRaspberry PiみたいなLinuxが動いちゃう環境ならforth使う理由が殆どないよ。
むしろ生の機械語を直接書かないと駄目なような環境に向いてる。
706デフォルトの名無しさん
2014/06/03(火) 11:48:06.91ID:XzYLHg3E raspberry pi forth でググったらなんか出てくるみたいだが。
というか、rasp pi 衰退したOSや言語の敗者復活リングみたいになっててオモロイw
というか、rasp pi 衰退したOSや言語の敗者復活リングみたいになっててオモロイw
707デフォルトの名無しさん
2014/06/04(水) 16:39:08.74ID:2ij5JthN まさにそれ
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
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
708デフォルトの名無しさん
2014/08/13(水) 10:22:44.64ID:MV0il0Eo ★2ch勢いランキングサイトリスト★
☆ +ニュース板
・ 2NN
・ 2chTimes
☆ +ニュース板新着
・ 2NN新着
・ Headline BBY
・ Unker
☆ +ニュース板他
・ Desktop2ch
・ 記者別一覧
☆ 全板
・ 全板縦断勢いランキング
・ スレッドランキング総合ランキング
☆ 実況板
・ 2勢
・ READ2CH
・ i-ikioi
※ 要サイト名検索
☆ +ニュース板
・ 2NN
・ 2chTimes
☆ +ニュース板新着
・ 2NN新着
・ Headline BBY
・ Unker
☆ +ニュース板他
・ Desktop2ch
・ 記者別一覧
☆ 全板
・ 全板縦断勢いランキング
・ スレッドランキング総合ランキング
☆ 実況板
・ 2勢
・ READ2CH
・ i-ikioi
※ 要サイト名検索
709デフォルトの名無しさん
2015/02/05(木) 18:47:19.10ID:Wisgh0P5710デフォルトの名無しさん
2015/03/28(土) 16:14:22.33ID:JCsZnGie みんな生きてる?
711デフォルトの名無しさん
2015/03/28(土) 16:52:42.19ID:iNpGjoni ." live!"
712デフォルトの名無しさん
2015/03/30(月) 19:02:34.24ID:ZHuPrBLY 書籍が高すぎる
713デフォルトの名無しさん
2015/03/31(火) 21:06:19.08ID:2fh/fl2T windowsとLinuxで動作するISO準拠処理系プリーズ
714デフォルトの名無しさん
2015/04/01(水) 21:02:18.21ID:A/TYeiEx もう漏れしかいないのか
ついに手に入れた「FORTHへの招待」
さっそく読もう
ついに手に入れた「FORTHへの招待」
さっそく読もう
715デフォルトの名無しさん
2015/04/01(水) 23:35:21.77ID:6DGYq49D 懐かしい本だな
それと「スタックコンピュータ―CISC RISCとスタックアーキテクチャ」はバイブルだ
それと「スタックコンピュータ―CISC RISCとスタックアーキテクチャ」はバイブルだ
716714
2015/04/02(木) 05:49:55.97ID:ZYrODdip なんかROMとRAMの説明から始まってて和露他
いいからFORTHの説明はじめろや
いいからFORTHの説明はじめろや
717デフォルトの名無しさん
2015/04/09(木) 21:33:48.07ID:DFOBVCzK718デフォルトの名無しさん
2015/04/09(木) 22:41:41.16ID:LdJOGzfd719デフォルトの名無しさん
2015/04/12(日) 19:17:21.15ID:4Fcd4Vhe おk読了
次は>>715だ
次は>>715だ
720デフォルトの名無しさん
2015/04/12(日) 19:25:26.49ID:3ERnJGQj >>719
715はスタックマシンとForthへの愛に満ちているので毒されると悶死できるぞ
715はスタックマシンとForthへの愛に満ちているので毒されると悶死できるぞ
721719
2015/04/15(水) 17:48:12.32ID:SFWZvMHG 知識不足のため理解しきれていない部分もあるがなんとか最後まで読んだ
↓この文が最高でした
RISCプロセッサのUnix/Cプログラマが8Mから16Mバイトより少ないメモリでは不満足で、
128Kバイトのキャッシュを要求しているときに、Forthプログラマたちはまだ、
スタックマシンに64Kバイト以上のメモリが本当に必要かどうかを熱心に議論している
↓この文が最高でした
RISCプロセッサのUnix/Cプログラマが8Mから16Mバイトより少ないメモリでは不満足で、
128Kバイトのキャッシュを要求しているときに、Forthプログラマたちはまだ、
スタックマシンに64Kバイト以上のメモリが本当に必要かどうかを熱心に議論している
722デフォルトの名無しさん
2015/04/18(土) 09:39:32.64ID:W8H7yv/P 次の段階へ移行
723デフォルトの名無しさん
2015/05/04(月) 16:20:21.65ID:McZN4pHS 日本のForthコミュニティって無いの?
724デフォルトの名無しさん
2015/05/04(月) 16:33:45.12ID:/hwLfRb3 まだ人いるか?
725デフォルトの名無しさん
2015/05/04(月) 16:56:02.08ID:szzze12E726デフォルトの名無しさん
2015/05/04(月) 17:44:37.74ID:kE0VI/DI >>724
居るぜー
ForthだけじゃなくてLispも入るけど組み込み機器でデバッガを内包したいような時って選択肢無いんだよね。
でLispよりもForthの方が実メモリ食わないんで本当にチープな組み込み機器だとコレ知らないと死ねる。
居るぜー
ForthだけじゃなくてLispも入るけど組み込み機器でデバッガを内包したいような時って選択肢無いんだよね。
でLispよりもForthの方が実メモリ食わないんで本当にチープな組み込み機器だとコレ知らないと死ねる。
727デフォルトの名無しさん
2015/05/04(月) 18:06:54.59ID:McZN4pHS 意外と居てびっくりした!
作ろうか
作ろうか
728デフォルトの名無しさん
2015/05/04(月) 18:43:39.64ID:McZN4pHS >>726
Forthに慣れてる人がどんなデバッガ作るのか(どんなとこ見るのか)気になる
Forthに慣れてる人がどんなデバッガ作るのか(どんなとこ見るのか)気になる
729デフォルトの名無しさん
2015/05/04(月) 19:28:19.74ID:/hwLfRb3730デフォルトの名無しさん
2015/05/06(水) 15:56:46.02ID:pB1d0kiO ちょっと面白いネタ見つけた
「スタックコンピュータ」の中の人、Forthの上でのグラフリダクションを研究してたらしい。
url長すぎって言われたんで↓でググってくれ
TIGRE: Combinator Graph Reduction on the RTX 2000
「スタックコンピュータ」の中の人、Forthの上でのグラフリダクションを研究してたらしい。
url長すぎって言われたんで↓でググってくれ
TIGRE: Combinator Graph Reduction on the RTX 2000
731デフォルトの名無しさん
2015/05/07(木) 11:41:15.23ID:PQFXQAsu やってる人はいまもやってるんだねえ
732デフォルトの名無しさん
2015/05/07(木) 14:26:59.51ID:PQFXQAsu 「FORTH入門」すごいつかえる
処理系内部まで書かれているから自作するための参考になる
処理系内部まで書かれているから自作するための参考になる
733デフォルトの名無しさん
2015/05/07(木) 19:26:45.21ID:43KhqhpP あのイラストも結構好きだ
734デフォルトの名無しさん
2015/05/09(土) 01:15:17.53ID:91zCXcbE ブート処理にforth 系のficl 使ってたOSがluaに切り替えてくみたいだが
やはりさわれる人の絶対数が多い言語に移ってくもんなのだろうか。
あと昔出版されて今じゃアマゾンでプレ値がついてそうなforth系の本、県立図書館で検索したら閉架に結構あったけど
たまたまなのか規模でかいとこなら普通に在庫あるのかな?
やはりさわれる人の絶対数が多い言語に移ってくもんなのだろうか。
あと昔出版されて今じゃアマゾンでプレ値がついてそうなforth系の本、県立図書館で検索したら閉架に結構あったけど
たまたまなのか規模でかいとこなら普通に在庫あるのかな?
735デフォルトの名無しさん
2015/05/09(土) 08:08:38.65ID:D66ceLoP >>734
FreeBSD?
FreeBSD?
736デフォルトの名無しさん
2015/05/10(日) 13:17:55.74ID:wSg+R97A >>735
そそ。まだ先の予定っぽいけど
そそ。まだ先の予定っぽいけど
737デフォルトの名無しさん
2015/05/11(月) 10:05:34.87ID:jfjxFlJu FORTHと直接の関係はないんだけど
実行ファイルのダンプを保存してあとから実行するのってどうするの?
LISPの単体で動く実行ファイルの作り方と同じ仕組みだと思うのだけど
どうすればいいのかわからん
実行ファイルのダンプを保存してあとから実行するのってどうするの?
LISPの単体で動く実行ファイルの作り方と同じ仕組みだと思うのだけど
どうすればいいのかわからん
738デフォルトの名無しさん
2015/05/13(水) 23:24:57.10ID:ZhcbFads いまだにわからん
739デフォルトの名無しさん
2015/05/14(木) 14:19:50.60ID:WhzKfy7h VMをアセンブリでかくかcでかくか
740デフォルトの名無しさん
2015/05/19(火) 12:28:41.76ID:CmG/oeDB741デフォルトの名無しさん
2015/06/23(火) 22:36:02.69ID:ifeDc53Z そのバイト列に展開するのが難しそうだ
742デフォルトの名無しさん
2015/06/23(火) 22:44:08.10ID:vwZF4gL5 OS依存になるよね、任意にcore dumpできるUnix系だとやりやすいかも
Fig FORTHだとOSに依存しないからできそうな気もする
#MC68000のFig FORTHをmotorolaのTutorial基板で触った事しかないんでうろ覚え
Fig FORTHだとOSに依存しないからできそうな気もする
#MC68000のFig FORTHをmotorolaのTutorial基板で触った事しかないんでうろ覚え
743デフォルトの名無しさん
2015/06/23(火) 23:14:56.31ID:3QTDhBFd レス早くてワロタ
Perlに同じような機能があったたはずだからちと調べてみゆ
Perlに同じような機能があったたはずだからちと調べてみゆ
744デフォルトの名無しさん
2015/07/06(月) 12:32:57.19ID:YQDXrDaK 間接スレッデッドコードについて質問があります
IFなどの条件分岐ではそのワードの呼び出し箇所毎にパラメータが違うと思うのですが
その場合でも箇所毎にワードが生成されるのでしょうか?
IFなどの条件分岐ではそのワードの呼び出し箇所毎にパラメータが違うと思うのですが
その場合でも箇所毎にワードが生成されるのでしょうか?
745デフォルトの名無しさん
2015/07/10(金) 00:42:46.31ID:wrUthjuc もう解決したのかな?
ちょっとどういう質問なのかわからないので、詳しい人期待age
ちょっとどういう質問なのかわからないので、詳しい人期待age
746デフォルトの名無しさん
2015/07/12(日) 06:46:58.31ID:AaGOVdy1747デフォルトの名無しさん
2015/07/17(金) 08:59:20.64ID:Hk7N5du5 全てをアセンブリで実装しようとしたら手がつけられなくなったので
とりあえずコア以外はcで実装すことに変更すた
しっかし本当おもしれえ
nextは僅か4命令だぞ
とりあえずコア以外はcで実装すことに変更すた
しっかし本当おもしれえ
nextは僅か4命令だぞ
748デフォルトの名無しさん
2015/07/18(土) 13:27:49.52ID:xBzkS6DZ コアが実装できたら、後はforthで書こうぜ!
749デフォルトの名無しさん
2015/07/18(土) 13:55:45.77ID:4KZmkVpL >>747
今時のCPUだとアセンブリの方が実装しやすくない?
今時のCPUだとアセンブリの方が実装しやすくない?
750デフォルトの名無しさん
2015/07/18(土) 14:11:29.17ID:MJkUXIxe751デフォルトの名無しさん
2015/07/18(土) 14:12:29.69ID:MJkUXIxe Forthユーザ発見
752デフォルトの名無しさん
2015/07/18(土) 15:38:28.81ID:3XAPUy2X このスレの連中は矢張りRPNやRPL電卓を使ってるのかな?
753デフォルトの名無しさん
2015/07/18(土) 16:33:35.15ID:5U/xTE1h 電卓は持ってないけど、何か試したり計算するときはFactorとか使ってるよ
754デフォルトの名無しさん
2015/07/18(土) 17:09:30.61ID:5U/xTE1h Sukunaの人とか、もうForth触ってないのかな?
いろいろ話聞いてみたかった。
いろいろ話聞いてみたかった。
755デフォルトの名無しさん
2015/08/06(木) 16:45:29.10ID:2u/3OVyT スレッデッドコード用vm実装記念
756デフォルトの名無しさん
2015/08/06(木) 17:06:23.35ID:0X10zjbP 乙、おめ
757デフォルトの名無しさん
2015/08/08(土) 23:27:26.32ID:HMF33mTD 復活
758デフォルトの名無しさん
2015/08/10(月) 18:29:16.42ID:XUokgt8i できてきた
I/OをCからアセンブリに実装し直してさらに小さくする
age
I/OをCからアセンブリに実装し直してさらに小さくする
age
759デフォルトの名無しさん
2015/08/13(木) 14:07:02.04ID:H7bzx0I1 ところでみんなコードは小文字大文字どっちでかいてる?
760デフォルトの名無しさん
2015/08/13(木) 16:00:05.24ID:TIALnNkC >>759
今はfactor大好きなので小文字かなー
昔VT100でForth使ってたときは大文字だったよー(ワードの大文字小文字は入力時に大文字変換されてたりとか:処理系が大文字のみだと辞書のワードを圧縮したりとかしてたりする貧乏メモリ用だったりとか)
今はfactor大好きなので小文字かなー
昔VT100でForth使ってたときは大文字だったよー(ワードの大文字小文字は入力時に大文字変換されてたりとか:処理系が大文字のみだと辞書のワードを圧縮したりとかしてたりする貧乏メモリ用だったりとか)
761デフォルトの名無しさん
2015/08/15(土) 15:19:53.94ID:fkPcgHEe 小文字で書ぃてるょ
762デフォルトの名無しさん
2015/08/15(土) 15:24:43.03ID:fkPcgHEe763デフォルトの名無しさん
2015/09/16(水) 00:48:03.18ID:VN2DGtV9 なんども あきては なんども やる
764デフォルトの名無しさん
2015/09/19(土) 22:00:25.70ID:GM7+1MtI ふーむ少なくとも仮想機械はアセンブリで書かなければ移植は難しいな
一方コンパイラはcで書いてもあとでそれ自身に移植可能
あと最近2chで擬古猫見ないね
一方コンパイラはcで書いてもあとでそれ自身に移植可能
あと最近2chで擬古猫見ないね
765デフォルトの名無しさん
2015/12/31(木) 06:27:31.47ID:shctMMuK あげ
766デフォルトの名無しさん
2015/12/31(木) 06:51:07.49ID:shctMMuK http://phaendal.hatenablog.com/
↑FORTHの関しての記事があるのであげとま
↑FORTHの関しての記事があるのであげとま
767デフォルトの名無しさん
2015/12/31(木) 10:17:38.69ID:KKAqg1l1 馬鹿には無理
768デフォルトの名無しさん
2015/12/31(木) 10:33:47.60ID:/wbyPP1f769デフォルトの名無しさん
2016/01/01(金) 09:58:20.44ID:kXdPExCb あけおめ!
770デフォルトの名無しさん
2016/01/10(日) 13:33:35.16ID:z1pxpAJ/ 人いるんか!
771デフォルトの名無しさん
2016/01/10(日) 23:48:42.16ID:/2nnPZOa フォースの覚醒
772デフォルトの名無しさん
2016/01/11(月) 08:24:42.35ID:lZl+kkOU 復活の時は近い
773デフォルトの名無しさん
2016/01/11(月) 16:40:56.58ID:I0GTrlSH Erlang/Elixirに浮気中
774デフォルトの名無しさん
2016/01/11(月) 19:48:51.43ID:nxq211rs775デフォルトの名無しさん
2016/01/12(火) 10:27:02.83ID:LOHPMzQN 今処理系実装してるけど実用的にしようとなると結構難しいな
776デフォルトの名無しさん
2016/01/18(月) 21:50:56.98ID:jq3Y7yyE この言語の面白いところは低水準で動的なことをすべて行えること
コールスタックまで直接制御できるから継続のようなことも簡単にできる
一方でコンピュータサイエンスとしてのセンスはかけらもなくとても原始的だ
コールスタックまで直接制御できるから継続のようなことも簡単にできる
一方でコンピュータサイエンスとしてのセンスはかけらもなくとても原始的だ
777デフォルトの名無しさん
2016/01/21(木) 10:50:22.29ID:aPv8m3ec だれかこいよ
寂しいな。。。
寂しいな。。。
778デフォルトの名無しさん
2016/01/21(木) 12:56:52.61ID:zpe1QHZ3 >3 pop
779デフォルトの名無しさん
2016/01/21(木) 14:03:53.56ID:aPv8m3ec >>778
∧_∧
∧_∧ )
( ))
;つ 乙ノ
(_ ノ |
((_ノ~∪
∧_∧
∧_∧ )
( ))
;つ 乙ノ
(_ ノ |
((_ノ~∪
780デフォルトの名無しさん
2016/01/22(金) 02:24:26.04ID:EeNvrSL9 >>778
それhoshuや、pushちゃう
自分が幼少の頃に親父の読んでたInterfaceって本のなかにtitって言語の紹介があったのがForth系言語のなれそめだったなぁ。
そのアトはHPの電卓とFigForthの68K版をMC68000のKit上で動かしてからはまった感じだわ
それhoshuや、pushちゃう
自分が幼少の頃に親父の読んでたInterfaceって本のなかにtitって言語の紹介があったのがForth系言語のなれそめだったなぁ。
そのアトはHPの電卓とFigForthの68K版をMC68000のKit上で動かしてからはまった感じだわ
781デフォルトの名無しさん
2016/01/22(金) 13:27:11.36ID:7GZnHmXQ ErlangでFORTHっていうかideoneすげー
http://ideone.com/GTo0rm
http://ideone.com/GTo0rm
782デフォルトの名無しさん
2016/01/22(金) 15:42:45.07ID:dviPRblt まだちゃんといて安心したよ。。。
783デフォルトの名無しさん
2016/01/24(日) 15:06:52.25ID:Ih+3kdbT いまつくっているんだがやはり設計が古すぎる
予定を変更してシェルを分離させる
予定を変更してシェルを分離させる
784デフォルトの名無しさん
2016/01/24(日) 18:12:17.44ID:1S5ux+s6 意味が分からん。主語くらい略さないで入れろ。
785デフォルトの名無しさん
2016/01/26(火) 04:19:18.92ID:fodjyooQ 標準のFORTHでバイナリを呼び出すための機構ってある?
786デフォルトの名無しさん
2016/01/27(水) 09:41:43.11ID:PS/Qpp4W stack overflow
787デフォルトの名無しさん
2016/01/27(水) 21:20:50.27ID:JOMz1gR9 処理系によるかもだか、
スタッフオーバーフローだけじゃなくアンダーフローも味わえる
スタッフオーバーフローだけじゃなくアンダーフローも味わえる
788デフォルトの名無しさん
2016/02/15(月) 15:23:31.07ID:z4NOVyYm 失礼
スタックマシンのチップを購入したい
どこかいい入手ルートはないか
スタックマシンのチップを購入したい
どこかいい入手ルートはないか
789デフォルトの名無しさん
2016/02/16(火) 02:45:46.59ID:WhucjpIR790デフォルトの名無しさん
2016/02/16(火) 09:14:36.21ID:CursrUUy791デフォルトの名無しさん
2016/02/16(火) 19:04:31.14ID:eSxr0LUY 具体的に欲しいチップを書いた方が
792デフォルトの名無しさん
2016/02/18(木) 20:54:10.95ID:affLGCHB 間接スレッデッドコードはネイティブと比較してどのぐらいメモリ削減効果があるのでしょうか
どなたかデータかその参照を教えてもらえませんか
どなたかデータかその参照を教えてもらえませんか
793デフォルトの名無しさん
2016/02/22(月) 15:12:30.92ID:p5oR4ktM GNUの実装についてホムペは変わってないけど開発進んでるのな
しかもAndroid版も有りやがる
しかもAndroid版も有りやがる
794デフォルトの名無しさん
2016/03/12(土) 12:26:01.29ID:x2aIRV1Q >>788
greenarrays.com
greenarrays.com
795デフォルトの名無しさん
2016/03/12(土) 23:49:41.78ID:88to1Dnq このFORTHってのは少なくとも古典的なものは強くノイマン型アーキテクチャに依存してるのな
796デフォルトの名無しさん
2016/03/16(水) 07:21:36.48ID:4qqZTEIs 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
は?だれか説明してよ!
GForth
1 2 3 4 5 ok
.s <5> 1 2 3 4 5 ok
quit
.s <5> 1 2 3 4 5 ok
は?だれか説明してよ!
797デフォルトの名無しさん
2016/03/28(月) 06:53:30.25ID:pr7JX2mY 過疎ってるなぁ
798デフォルトの名無しさん
2016/03/31(木) 17:14:17.24ID:HiG8h3J6 windows10 64bit版にてswiftforth評価版が動きません。
どなたか解決策を知りませんか?
どなたか解決策を知りませんか?
799デフォルトの名無しさん
2016/04/01(金) 13:02:30.15ID:50lRt7vL 流行る要素が無いよね
800デフォルトの名無しさん
2016/04/02(土) 23:14:22.41ID:2gBYslTZ801デフォルトの名無しさん
2016/04/04(月) 07:02:35.55ID:hhHTa9vL ねんがんの「パーソナルエキスパートシステム」をてにいれたぞ!
802デフォルトの名無しさん
2016/04/06(水) 21:09:55.72ID:s4LMXlxO >>801
一体なにができるの?バカな漏れには全くわからん
一体なにができるの?バカな漏れには全くわからん
803デフォルトの名無しさん
2016/04/07(木) 14:56:44.89ID:eXkP/TbN804デフォルトの名無しさん
2016/04/13(水) 21:48:47.74ID:eHTpuWMC805デフォルトの名無しさん
2016/04/14(木) 01:11:18.38ID:FsF2j7W4 >>804
Use the forth Luke.ってくらいだしな
Use the forth Luke.ってくらいだしな
806デフォルトの名無しさん
2016/04/27(水) 03:12:26.27ID:fW/sUK0/ FORTH社公式サイトなんかモダンな感じにリニューアルされているぞ
807デフォルトの名無しさん
2016/04/28(木) 06:46:01.82ID:6C4hGrzb ほんまや…
つか、キャッチ見る感じFPGA対応とかやってっぽい?
つか、キャッチ見る感じFPGA対応とかやってっぽい?
808デフォルトの名無しさん
2016/04/29(金) 00:42:56.46ID:T+fk1/ws それに比べMPEときたら。。。
809デフォルトの名無しさん
2016/04/30(土) 13:33:33.16ID:+u6TG0xk >>807
なにをもって対応というのか知らんがFPGAを使ったソリューションはあるね
なにをもって対応というのか知らんがFPGAを使ったソリューションはあるね
810デフォルトの名無しさん
2016/05/03(火) 01:28:59.09ID:3SS4lwd4 XTがImmediateかどうか調べるワードってある?
811デフォルトの名無しさん
2016/05/03(火) 13:54:49.01ID:nk6XRDP5 >>809
forthでfpgaの回路組めるとかだったら面白いなw
forthでfpgaの回路組めるとかだったら面白いなw
812デフォルトの名無しさん
2016/05/06(金) 02:21:23.49ID:FS8HTadE いま逆ポーランド記法で書ける正規表現エンジンを作ろうか考えているんだけどAB*C|こんな感じにね
もうすでにあったりするんだろうか?あForth上でね?教材としてあるのは知っているから
Forthのもつ動的コンパイルを利用することで高移植性のJITエンジンが実装できると思ってね
( 自らをコンパイルすることができる言語はこういったスクリプトやインタプリタを移植性を保ったまま簡単に高速化できるところが素晴らしいよね)
エグって呼んで〜
もうすでにあったりするんだろうか?あForth上でね?教材としてあるのは知っているから
Forthのもつ動的コンパイルを利用することで高移植性のJITエンジンが実装できると思ってね
( 自らをコンパイルすることができる言語はこういったスクリプトやインタプリタを移植性を保ったまま簡単に高速化できるところが素晴らしいよね)
エグって呼んで〜
813デフォルトの名無しさん
2016/05/06(金) 02:23:03.98ID:FS8HTadE814デフォルトの名無しさん
2016/05/31(火) 01:39:08.36ID:NOiY1sCF forthに足りないのはコマンド言語だ。
forthのプロシージャー呼び出しはすべてディクショナリ内に限られるため外部プログラムを効率よく利用できない。
シェルスクリプトのように外部forthプログラムをうまく呼び出す機構があればいいが。。。
スタックをパイプのようにプログラムで共有するとおもしろいかもしれない。
forthのプロシージャー呼び出しはすべてディクショナリ内に限られるため外部プログラムを効率よく利用できない。
シェルスクリプトのように外部forthプログラムをうまく呼び出す機構があればいいが。。。
スタックをパイプのようにプログラムで共有するとおもしろいかもしれない。
815デフォルトの名無しさん
2016/10/07(金) 16:43:56.85ID:oA26EQDq gforthで実数演算たとえば、
1.0 +2.0
の様なものをしたいのですが、
1.0e0 2.0e0 + .
としても
1.0e0 2.0e0 f+ .
としても結果が得られません。
実数演算はどうすればいいのでしょうか。
ご教示お願いいたします。
1.0 +2.0
の様なものをしたいのですが、
1.0e0 2.0e0 + .
としても
1.0e0 2.0e0 f+ .
としても結果が得られません。
実数演算はどうすればいいのでしょうか。
ご教示お願いいたします。
816デフォルトの名無しさん
2016/10/07(金) 17:47:53.85ID:ah4nbj/y http://www.h7.dion.ne.jp/~samwyn/forth/gforth/Floating-Point-Tutorial.html
817デフォルトの名無しさん
2016/10/07(金) 19:28:13.23ID:oA26EQDq818デフォルトの名無しさん
2016/10/07(金) 23:18:29.98ID:oA26EQDq819デフォルトの名無しさん
2016/10/09(日) 06:39:24.29ID:pfNs/KcX 週明け、ちょっと面白いforthの論文読めるかもしれない。
forthっていうより、その上に作られたkevoって風変わりなOOP言語のだけどさ。
forthっていうより、その上に作られたkevoって風変わりなOOP言語のだけどさ。
820デフォルトの名無しさん
2016/10/17(月) 19:24:52.26ID:HyFRmQUJ >>815
その場合 . じゃなくて f.
その場合 . じゃなくて f.
821デフォルトの名無しさん
2016/11/06(日) 00:15:56.03ID:RpZeQ9IA Factorのチュートリアル分かりにくい。Racketを見習え
822デフォルトの名無しさん
2016/12/30(金) 20:20:02.53ID:XiEG6f+8 もう2016年も終わりだな
824デフォルトの名無しさん
2017/01/03(火) 10:53:07.10ID:KXR/d/nR ことしもよろしく!
825デフォルトの名無しさん
2017/01/03(火) 12:26:49.35ID:qzU7aiCI >>823
2等おめ
2等おめ
826デフォルトの名無しさん
2017/02/04(土) 16:41:26.43ID:6xXEHIbo うんこ
話題ねーなー
話題ねーなー
827デフォルトの名無しさん
2017/02/04(土) 16:44:12.53ID:e9aNESBj あへ
828デフォルトの名無しさん
2017/02/05(日) 14:14:31.59ID:nBEZPMY5 なんか話せ
829デフォルトの名無しさん
2017/02/28(火) 21:19:29.80ID:5qIw+x2+ factor 1.0 マダー
830デフォルトの名無しさん
2017/03/03(金) 18:00:20.86ID:3XbKihVE うんやってみようとおもう。
ところで仕様書(規格書)はどこにあるんですかね?
ところで仕様書(規格書)はどこにあるんですかね?
831デフォルトの名無しさん
2017/03/03(金) 18:29:59.44ID:IUFykjWp >1- よめ
832デフォルトの名無しさん
2017/03/04(土) 00:48:33.45ID:4xESmR76833デフォルトの名無しさん
2017/03/04(土) 01:07:38.10ID:4xESmR76834デフォルトの名無しさん
2017/03/04(土) 12:32:44.96ID:GRvQ2lmz >>781
まだ残ってたのか
まだ残ってたのか
835デフォルトの名無しさん
2017/04/03(月) 11:16:21.17ID:UVNX4qSu みなさーん生きてますかー?
836デフォルトの名無しさん
2017/04/03(月) 19:02:54.60ID:Z+6yuhBz いきとるぞー
純粋なforthは全然さわらずfactorばっかりだけどな
あと組み込み機でTITもどきかなー
純粋なforthは全然さわらずfactorばっかりだけどな
あと組み込み機でTITもどきかなー
837デフォルトの名無しさん
2017/04/03(月) 19:11:44.32ID:UVNX4qSu 次スレでは皆が胸を張れるように「スタック指向言語」「連鎖型言語」みたいなくくりにしよう!
838デフォルトの名無しさん
2017/04/04(火) 02:27:49.55ID:WA/rnyB6 >>837
forthだとスタックに積まれたオブジェクトに関数ってメッセージを送るって言うことだとおもうのだけど。
そういう単純な理解じゃ駄目なの?
言語レベルで隠蔽されていることを生で扱うって事で良いんじゃ無いの?
Lispだと関数の呼び出しが括弧で括られいるから呼び出しの引数の扱いが閉じられているけど、forthの場合は関数が必要な分を消費するというか
forthだとスタックに積まれたオブジェクトに関数ってメッセージを送るって言うことだとおもうのだけど。
そういう単純な理解じゃ駄目なの?
言語レベルで隠蔽されていることを生で扱うって事で良いんじゃ無いの?
Lispだと関数の呼び出しが括弧で括られいるから呼び出しの引数の扱いが閉じられているけど、forthの場合は関数が必要な分を消費するというか
839デフォルトの名無しさん
2017/04/04(火) 09:11:34.40ID:89iVo3+8 メッセージ?違う言語と勘違いしてそう
840デフォルトの名無しさん
2017/04/04(火) 11:14:00.29ID:wm/ZDuC6 コールスタックとforthのスタックは別物だよね。
841デフォルトの名無しさん
2017/04/05(水) 02:36:38.33ID:9ywW0Xq5 >>840
2つあるんだよ、関数呼び出しの戻りアドレス用のスタックと別にもう一つあるんよ
2つあるんだよ、関数呼び出しの戻りアドレス用のスタックと別にもう一つあるんよ
842デフォルトの名無しさん
2017/04/05(水) 14:29:17.29ID:+eJqUohN アキュムレータ
843デフォルトの名無しさん
2017/04/11(火) 00:06:23.90ID:N954SJpH forthがスタック指向であるようにアキュムレータ指向のプログラム言語というものは作れるのかな
844デフォルトの名無しさん
2017/04/11(火) 01:23:43.97ID:Y8UBVT27845デフォルトの名無しさん
2017/04/15(土) 23:36:33.20ID:bK+0/AQY >>844
マクロだけでは構文は抽象化出来てもシステムとして抽象化しきれないと思うけど
マクロだけでは構文は抽象化出来てもシステムとして抽象化しきれないと思うけど
846デフォルトの名無しさん
2017/04/16(日) 02:22:54.36ID:GjRoh4Fn 単に計算は常にAXを使うってだけなら特に面白みもなさそう
スタック無しでレジスタ無限ということなら……単に再帰呼び出し禁止なだけの普通の言語だよなあ
スタック無しでレジスタ無限ということなら……単に再帰呼び出し禁止なだけの普通の言語だよなあ
847デフォルトの名無しさん
2017/04/17(月) 06:41:15.22ID:Oz2f+5Ln >>845
ニクラウス・ヴィルトの言うところの条件分岐とか繰り返し構文はチョロく書けるよ>>macro80とslrasmとかのマクロアセンブラ
つかmacro80とか8bit時代のあのメモリでよくやるわと思う。
forthスレっぽいネタだと昔(1981年の8月号だと思う)のCQ出版の記事でTITって言語があってこれがマクロアセンブラでforthを実装するって記事だったような?
ニクラウス・ヴィルトの言うところの条件分岐とか繰り返し構文はチョロく書けるよ>>macro80とslrasmとかのマクロアセンブラ
つかmacro80とか8bit時代のあのメモリでよくやるわと思う。
forthスレっぽいネタだと昔(1981年の8月号だと思う)のCQ出版の記事でTITって言語があってこれがマクロアセンブラでforthを実装するって記事だったような?
848デフォルトの名無しさん
2017/07/19(水) 19:04:38.23ID:IRmsE5AJ 1 . 2 . 3 . 4 .
849デフォルトの名無しさん
2017/08/13(日) 12:07:02.89ID:BkdmOdbH 実に簡素で危険で強力だ。
貧者の言語だな。
俺にふさわしい。
貧者の言語だな。
俺にふさわしい。
850デフォルトの名無しさん
2017/09/03(日) 23:56:49.18ID:sfrNKeHf もうオレしかいないのか。。。。。
851デフォルトの名無しさん
2017/09/04(月) 18:01:02.81ID:XVvO50gB 無いのはネタだよ
852デフォルトの名無しさん
2017/09/05(火) 22:07:51.16ID:jOSE+tCs 俺も見てるよ
853デフォルトの名無しさん
2017/09/06(水) 12:34:34.16ID:nQAnFQdT 時々見に来てる
854デフォルトの名無しさん
2017/09/06(水) 15:10:52.90ID:p7vL1/ES 点呼スレ
855デフォルトの名無しさん
2017/09/17(日) 21:34:39.86ID:ozIOAGyP age
856デフォルトの名無しさん
2017/09/18(月) 20:29:59.37ID:lhUDwV9a これまで全く気にしたことないけど、forthって動的にリンクするライブラリの類は存在するの?
857デフォルトの名無しさん
2017/09/19(火) 17:19:50.82ID:xxOzXrDl OPT
858デフォルトの名無しさん
2017/10/10(火) 10:11:32.51ID:jFJIQFdq いま処理系書いているわけどすよ
古典的なディクショナリに含まれる変数領域(エントリのitcならpfバイトコードならcf)って実行時書き込みが必要だからrom化できないよね?
ディクショナリをromに組み込む時どのようにしたらいいの?
古典的なディクショナリに含まれる変数領域(エントリのitcならpfバイトコードならcf)って実行時書き込みが必要だからrom化できないよね?
ディクショナリをromに組み込む時どのようにしたらいいの?
859デフォルトの名無しさん
2017/10/13(金) 08:39:42.67ID:vQb8BZek ?単にリンク時に再配置すればよいのではないだろうか
860デフォルトの名無しさん
2017/11/18(土) 00:00:24.25ID:u5vhQC2r age
861デフォルトの名無しさん
2018/02/02(金) 03:15:38.93ID:ZCx6BMYx 保★守
862デフォルトの名無しさん
2018/02/03(土) 09:42:57.30ID:qWVkS+Es やってみ
863デフォルトの名無しさん
2018/05/23(水) 20:31:13.02ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
96NO5
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
96NO5
864デフォルトの名無しさん
2018/06/04(月) 02:21:55.88ID:qEnuCrwb 本当に話題がないんですね
865デフォルトの名無しさん
2018/07/04(水) 22:35:26.93ID:gFgZc5FG SQU
866デフォルトの名無しさん
2018/07/06(金) 12:19:01.04ID:uTPDH9XV 96NO5
867デフォルトの名無しさん
2018/12/08(土) 12:02:33.98ID:FYXcP+Xf 初心者ですがthinking forth読んでます。
さっそく詰まりました。
: + BL WORD NUMBER DROP ;
で+を再定義すると中置記法で3 + 4できるとあり、確かに7が得られるのですが、
どうしてそうなるのか分かりません。
(別に中置記法で書きたいわけではありません)
BLが(ボーイズラブではなく)空白の文字コード、
WORDがアドレスを得る、
DROPは . と同じですよね?
NUMBERがポイントなのでしょうが…
どなたか解説してくれませんか?
さっそく詰まりました。
: + BL WORD NUMBER DROP ;
で+を再定義すると中置記法で3 + 4できるとあり、確かに7が得られるのですが、
どうしてそうなるのか分かりません。
(別に中置記法で書きたいわけではありません)
BLが(ボーイズラブではなく)空白の文字コード、
WORDがアドレスを得る、
DROPは . と同じですよね?
NUMBERがポイントなのでしょうが…
どなたか解説してくれませんか?
868デフォルトの名無しさん
2018/12/08(土) 14:44:25.82ID:mtUDrJjH https://books.google.co.jp/books?id=1AlWbXItiCYC&pg=PA111&lpg=PA111&ots=aekOu1m-uM&sig=V0gs7ufaMhDJsPDn6rT08XhStFY&ved=2ahUKEwjKgrCmt4_fAhUMfrwKHQQnBXEQ6AEwBXoECAkQAQ
http://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/
http://galileo.phys.virginia.edu/classes/551.jvn.fall01/primer.htm
http://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/
http://galileo.phys.virginia.edu/classes/551.jvn.fall01/primer.htm
869デフォルトの名無しさん
2018/12/19(水) 17:23:11.16ID:+/rbvZbE >>867
昔々にFORTHをほんのちょっとかじっただけの通りすがりだけど、最後に + が
抜けとるよね。
: + BL WORD NUMBER DROP + ;
その抜けとる(再定義前の後置記法で加算する)+ に 3 4を渡して
3 4 +
をさせるために4をスタックに積むことをさせとるんだと思う。
空白で区切られた”4”を取ってきて、数字に換えてスタックに乗せといて(元々
の) + に渡たしてる、かな。
. は 印刷で、DROPはスタックから一つ捨てるのような。
ていうか、そこ読んでる時点ではわからんでもいいのでは。
昔々にFORTHをほんのちょっとかじっただけの通りすがりだけど、最後に + が
抜けとるよね。
: + BL WORD NUMBER DROP + ;
その抜けとる(再定義前の後置記法で加算する)+ に 3 4を渡して
3 4 +
をさせるために4をスタックに積むことをさせとるんだと思う。
空白で区切られた”4”を取ってきて、数字に換えてスタックに乗せといて(元々
の) + に渡たしてる、かな。
. は 印刷で、DROPはスタックから一つ捨てるのような。
ていうか、そこ読んでる時点ではわからんでもいいのでは。
870デフォルトの名無しさん
2018/12/26(水) 20:16:53.64ID:v8erlN15871デフォルトの名無しさん
2018/12/26(水) 21:18:44.18ID:Sasn9R68 ; とか UNTIL のように可変長引数を扱うには先頭に目印が必要になるね。
>>265がちぐはぐと言っているのがどれのことなのかはわからんが。
>>265がちぐはぐと言っているのがどれのことなのかはわからんが。
872デフォルトの名無しさん
2018/12/26(水) 21:40:46.64ID:v8erlN15 じゃあ1足して2掛けるワードhogeの定義は
: hoge 1 + 2 * ;(hogeとは:1を足して2で掛けることである)
だけど別に
: 1 + 2 * hoge ;(1を足して2で掛けることをhogeとする)
とか
: 1 + 2 * ; ." hoge" def(1を足して2で掛けることを"hoge"という名前で定義する)
みたいな文法もあり得たのかな?
本体、定義するワードの識別子名
という並びではなく、
定義するワードの識別子名、本体
の並びなのは、何かの事情があっての必然なのか、たまたまなのか、それが知りたいです。
: hoge 1 + 2 * ;(hogeとは:1を足して2で掛けることである)
だけど別に
: 1 + 2 * hoge ;(1を足して2で掛けることをhogeとする)
とか
: 1 + 2 * ; ." hoge" def(1を足して2で掛けることを"hoge"という名前で定義する)
みたいな文法もあり得たのかな?
本体、定義するワードの識別子名
という並びではなく、
定義するワードの識別子名、本体
の並びなのは、何かの事情があっての必然なのか、たまたまなのか、それが知りたいです。
873デフォルトの名無しさん
2018/12/26(水) 22:58:21.72ID:Sasn9R68 機能的にはどっちでも可能だろうけど、人が書くコードとしては識別子を前に置く方が
わかりやすいからじゃないかと思う。
あと、ディクショナリに登録する際に : からスタックトップ方向にスキャンするなら
識別子が後ろに置かれると一つ先読みが必要になってちょっと面倒くさい。
わかりやすいからじゃないかと思う。
あと、ディクショナリに登録する際に : からスタックトップ方向にスキャンするなら
識別子が後ろに置かれると一つ先読みが必要になってちょっと面倒くさい。
874デフォルトの名無しさん
2018/12/27(木) 01:01:36.58ID:KLGborwt forthって人の都合よりコンピュータの都合優先みたいなイメージだったので人の読みやすさのためだったとしたら意外でした。
後半は納得しました。そうかそれでか…
ありがとうございました。
後半は納得しました。そうかそれでか…
ありがとうございました。
875デフォルトの名無しさん
2018/12/27(木) 09:49:16.14ID:0qVX2+Xi876デフォルトの名無しさん
2019/06/19(水) 04:58:42.00ID:tVNS+22r 【出資】松本卓朗 人工知能詐欺【注意】
https://rio2016.5ch.net/test/read.cgi/rikei/1560859403/
https://rio2016.5ch.net/test/read.cgi/rikei/1560859403/
877デフォルトの名無しさん
2019/07/05(金) 18:14:54.04ID:E00Aj00V 8年と半年掛かって>>624の言ってる事がようやくわかった。
ここの人って、何周か回っちゃってFORTHに行き着いてるんだね。
いや、SECDマシンってFORTHそっくりじゃん?!と書きに来ました。
では、また・・・。
ここの人って、何周か回っちゃってFORTHに行き着いてるんだね。
いや、SECDマシンってFORTHそっくりじゃん?!と書きに来ました。
では、また・・・。
878デフォルトの名無しさん
2019/08/28(水) 00:27:04.68ID:1gWoA2G/ 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
興味のある方、ぜひ一読を。
でも触れられている、ムーアが間接スレッデッドコードの発明について述べたというバイト誌の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
興味のある方、ぜひ一読を。
879デフォルトの名無しさん
2019/08/28(水) 01:40:32.21ID:azl3m+0S 紙屑ωωω
880デフォルトの名無しさん
2019/08/28(水) 07:19:51.77ID:iwi2TSA5 >>878
ムーア御大の直々の解説か
ムーア御大の直々の解説か
881デフォルトの名無しさん
2020/04/15(水) 15:05:18.34ID:SXQ2sjzm Oforth使ってる人いますか?
なんとなくSmalltalkぽいですね
なんとなくSmalltalkぽいですね
882デフォルトの名無しさん
2020/11/28(土) 11:39:10.89ID:Gr5a9V0P apt のgforth.73使ってたんだけどアップデしたらメチャクチャ快適になった…
色付くわhelpコマンド付くわでしゅごい
色付くわhelpコマンド付くわでしゅごい
883デフォルトの名無しさん
2020/11/29(日) 08:16:26.52ID:sDMgzk6G >>882
この言語で何作ってる?
この言語で何作ってる?
884デフォルトの名無しさん
2020/11/29(日) 20:10:16.85ID:JzQZ+ZwM インスピレーションを得てるよ()
885デフォルトの名無しさん
2021/01/04(月) 10:36:47.94ID:62MOX0QC886デフォルトの名無しさん
2021/01/04(月) 15:05:51.77ID:VbZ6KZlq >>885
>waybackにもgoogle cacheにも残ってない…
http://web.archive.org/web/20160425023618/http://www.h7.dion.ne.jp/~samwyn/forth/gforth/Floating-Point-Tutorial.html
>waybackにもgoogle cacheにも残ってない…
http://web.archive.org/web/20160425023618/http://www.h7.dion.ne.jp/~samwyn/forth/gforth/Floating-Point-Tutorial.html
887デフォルトの名無しさん
2021/01/04(月) 18:39:50.21ID:VbR1j+mv >>886
使い方が悪かったのかも!ありがとう!
使い方が悪かったのかも!ありがとう!
888デフォルトの名無しさん
2021/03/11(木) 07:45:30.66ID:ifNxw6Pa 技術的というより哲学っぽいので敬遠してたthinking forth今更読んだけど代名詞の言語というのがしっくり来た
どんな言語でもちゃんと書かれれば最上層のコード派読みやすいけどForthがとりわけ読みやすいのはこれだよな
最下層はほとんどアセンブラなのにこの極端性よ
どんな言語でもちゃんと書かれれば最上層のコード派読みやすいけどForthがとりわけ読みやすいのはこれだよな
最下層はほとんどアセンブラなのにこの極端性よ
889デフォルトの名無しさん
2021/03/11(木) 07:58:59.35ID:ifNxw6Pa でもスタックイジイジするのパズルみたいでめちゃくちゃ楽しいんだよなあ、くやしい…
890デフォルトの名無しさん
2021/08/23(月) 12:03:08.07ID:YpDpq+5R もはや(8ビット)PCのためではなく(マニアックな)人間のための言語。
891デフォルトの名無しさん
2022/01/01(土) 09:37:17.88ID:6v4FYv8q あけおめ!
892デフォルトの名無しさん
2022/01/10(月) 20:06:51.30ID:Ge4oCWB3 久々に書き込みあったと思えば
あけおめ!
今どきforthは趣味だろうけど良い趣味だよ
あとAndroid版のgforthは関数電卓代わりに毎日使ってる
あけおめ!
今どきforthは趣味だろうけど良い趣味だよ
あとAndroid版のgforthは関数電卓代わりに毎日使ってる
893デフォルトの名無しさん
2022/05/16(月) 14:09:01.58ID:/9w+5JsX 保守
する価値がまだあるだろうか
する価値がまだあるだろうか
894デフォルトの名無しさん
2022/05/17(火) 10:45:03.75ID:u8alpQJv 今勉強中だけどおもしろい
しかしパーシングワードはどうにかならんかったのか
定義の底に埋もれたnameが解釈時に吸い込んだりするのが文脈飛んで分かりにくい…
psみたいに/name {code} exch def方式のほうが一貫性あったのではないか
しかしパーシングワードはどうにかならんかったのか
定義の底に埋もれたnameが解釈時に吸い込んだりするのが文脈飛んで分かりにくい…
psみたいに/name {code} exch def方式のほうが一貫性あったのではないか
895デフォルトの名無しさん
2022/05/17(火) 10:55:12.34ID:u8alpQJv FORTHへの招待って古い本買ったんだけど、PICK/ROLLのindexが1始まりだったり、今の処理系と結構違うよね
長々とハードの話から始まり機能紹介までで終わってて、具体的なコーディングテクニックまでたどり着いてない…
モダンでオススメな本ってあるかな
長々とハードの話から始まり機能紹介までで終わってて、具体的なコーディングテクニックまでたどり着いてない…
モダンでオススメな本ってあるかな
896デフォルトの名無しさん
2022/05/19(木) 08:44:16.13ID:13z7p19v モダンなFORTHなど存在しない!
897デフォルトの名無しさん
2022/05/20(金) 15:21:07.51ID:B9Pct0M/ 初学者だけど
まあレトロなところに惹かれたのは否定できないな
有名な"FORTH思考"とか、一般プログラミング作法の啓蒙書としては素晴らしい
ブロックの章立ての章とかよく考えさせられる、まあ実ファィルに置き換えて写経してるけど
まあレトロなところに惹かれたのは否定できないな
有名な"FORTH思考"とか、一般プログラミング作法の啓蒙書としては素晴らしい
ブロックの章立ての章とかよく考えさせられる、まあ実ファィルに置き換えて写経してるけど
898デフォルトの名無しさん
2024/01/01(月) 09:03:44.52ID:MIyexYoQ あけおめ!
899デフォルトの名無しさん
2024/01/21(日) 09:24:04.48ID:rroAgTgL 古の8bit機みたいな小さいマシンでnextルーチン書くところから始めてみたい
900デフォルトの名無しさん
2024/05/04(土) 06:00:27.59ID:+DAXDwQe901デフォルトの名無しさん
2024/05/05(日) 14:45:30.58ID:Fv0JPqsX 読もう。持ってたのは昔無くした
902デフォルトの名無しさん
2025/01/01(水) 10:04:42.73ID:exme2yo6 あけおめ
903デフォルトの名無しさん
2025/06/14(土) 06:37:53.81ID:3Q/jS2n6 forthソースファイルをunices上で実行可能ファイルにする一般的な方法ってある?
PC上を想定していて超リッチなgforthなら #! 機構を想定して#!を\のシノニムとして定義してくれてて助かるんだけれども、これのない場合にも対応したい
思い付いたのは
: && true ; \ exec forth "$0" -- "$@"
forth側:
ワード&&(普通未定義)をtrue=-1としてコロン定義、後はコメント
sh側: :コマンドが成功したらtrueコマンドを実行、次にインタプリタを起動
なんだけれどsh側では
" exec" "forth" ...
とトークン化されてcommand not found
\execとスペース開けずに書けたら良いんだけどするとforthはコメントとして認識しない
何かいい知恵あったら教えてください
PC上を想定していて超リッチなgforthなら #! 機構を想定して#!を\のシノニムとして定義してくれてて助かるんだけれども、これのない場合にも対応したい
思い付いたのは
: && true ; \ exec forth "$0" -- "$@"
forth側:
ワード&&(普通未定義)をtrue=-1としてコロン定義、後はコメント
sh側: :コマンドが成功したらtrueコマンドを実行、次にインタプリタを起動
なんだけれどsh側では
" exec" "forth" ...
とトークン化されてcommand not found
\execとスペース開けずに書けたら良いんだけどするとforthはコメントとして認識しない
何かいい知恵あったら教えてください
904デフォルトの名無しさん
2025/06/14(土) 06:52:21.04ID:3Q/jS2n6 >>895
forthのrollは n roll でn個先までを1回まわすけど
postscriptのrollは n m roll でn個先までm回まわせてより強力なのよね
mは負でも可で逆回転もできる
あんまりコードに数値を入れるのはbad practiceとはいえforth書いてると時々欲しくなるやつ…
forthのrollは n roll でn個先までを1回まわすけど
postscriptのrollは n m roll でn個先までm回まわせてより強力なのよね
mは負でも可で逆回転もできる
あんまりコードに数値を入れるのはbad practiceとはいえforth書いてると時々欲しくなるやつ…
905デフォルトの名無しさん
2025/06/21(土) 00:54:36.13ID:flEjrxpy >>903だけど自己解決
: && true ; ( exec forth "$0" -- "$@" )
で行けた
潔癖症ではないから定義されたワード&&は気にしない、たぶん処理系定義の&&は見たこと無いこら潰す事もないはず
一応win32forthとか複数の処理系で
forget &&
て消せたと思うんだけれど、今試してみたらgforthに無いからforgetは非標準ワードなのな
: && true ; ( exec forth "$0" -- "$@" )
で行けた
潔癖症ではないから定義されたワード&&は気にしない、たぶん処理系定義の&&は見たこと無いこら潰す事もないはず
一応win32forthとか複数の処理系で
forget &&
て消せたと思うんだけれど、今試してみたらgforthに無いからforgetは非標準ワードなのな
906デフォルトの名無しさん
2025/06/21(土) 11:16:23.88ID:fGhLJfIJ こら
907デフォルトの名無しさん
2025/06/26(木) 14:21:09.64ID:nmyewptE 神経質すぎじゃねる
まあforgetはmarkerで実装できそうな気がする
まあforgetはmarkerで実装できそうな気がする
908デフォルトの名無しさん
2025/10/12(日) 02:30:37.41ID:DKsy7+ZR PCで触ってないからunix(shebang)+forth処理系のハックは詳しくないんだけれども、まあ面白そうだね
ワードを消すforgetは任意のワード対象、で良かったかな(たしかそう)
しかしmarkerは事前に設定したマーカーまでオフセットずらして巻き戻し、よってそれまでのワードがリセットされる仕組みだったはずだから、任意ワードを、特に名指しで消すには不向きでは
いやまあ消せるんだからマーカーの記録されてるメモリを退避したりリカバリしたり丁寧に管理してやればできるはずだが…
ワードを消すforgetは任意のワード対象、で良かったかな(たしかそう)
しかしmarkerは事前に設定したマーカーまでオフセットずらして巻き戻し、よってそれまでのワードがリセットされる仕組みだったはずだから、任意ワードを、特に名指しで消すには不向きでは
いやまあ消せるんだからマーカーの記録されてるメモリを退避したりリカバリしたり丁寧に管理してやればできるはずだが…
909デフォルトの名無しさん
2025/10/17(金) 05:21:31.52ID:D1Ebmx1L 別に余計なワードがあろうと問題なくね
たまたま同じ名前のワードを定義したらそれが有効な訳だし
ブートストラップ用途なら別に潰されても困らん、ブートストラップにしか使わんのだからな
たまたま同じ名前のワードを定義したらそれが有効な訳だし
ブートストラップ用途なら別に潰されても困らん、ブートストラップにしか使わんのだからな
レスを投稿する
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 経団連会長、日中は建設的対話を 経済3団体が高市首相と初会談も日中関係は話題に登らず… [BFU★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 東京株式市場 インバウンド関連株が下落 中国政府の渡航自粛要請で [バイト歴50年★]
- 5:55:55.555
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 戦争は無くならないし殺人は起きるし女はレイプされるし子供は餓死するし
- 日経時間外、5万円割れ 垂直落下始まる [402859164]
- 高市さんに土下座してもらったら一発解決なのに何でやらないんだろ??
- 【悲報】男性人気アイドルグループJO1、中国公演中止wwwwwwwwwwwwwwwwwwwwwwwwwww
