2 part forth
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
2005/04/29(金) 18:05:54はぁ?ナニ言ってんのおまえ
0233デフォルトの名無しさん
2005/04/29(金) 20:55:410234デフォルトの名無しさん
2005/05/01(日) 01:45:08C言語レベルでオゲーなら、↓こんな所からコードを読んでみるのは、いかがでせぅか?
T4th
http://eshop.advanet.co.jp/formmail/t4th.html
GForth
http://www.jwdt.com/~paysan/gforth.html
GikoForth
http://gikoforth.s13.xrea.com/gikoforth.html
T4thは正確にはモドキらしいけど、日曜プログラミング程度で突付ける程度の気楽さですよ。
> 適当なOS向けの拡張ってどうやってやるんだろう。
ぱっと思いつくのは、Win32 APIのLoadLibraryとGetProcAddressを呼び出す
ワード(命令)を用意すれば いいんじゃないかな?と。
>というか、キューとかにしちゃってもいいのか??
STLのstackも確かqueueの特殊系だったので、それで良いと思いますよ。
(上のはCで実装しているけど、まぁ似たような感じだし)
0235227
2005/05/01(日) 04:00:31僕が保守できる限界がこれ位なだよなー。結構ヘタレ。
>>234
thx!
あまり長いソースはよんだことないからなー。
1000行はちょっと長いね。まーいいか。
地道によんでみます。
>ぱっと思いつくのは、Win32 APIのLoadLibraryとGetProcAddressを呼び出す
>ワード(命令)を用意すれば いいんじゃないかな?と。
うまいまわし方はわからんけど、簡単そうですね。
>というか、キューとかにしちゃってもいいのか??
どうしてこんなこといっちゃったんだろう。
意図忘れちゃった。(汗
0236227
2005/05/02(月) 21:43:03スタック電卓作ってみました。
形にはなってない感じですが・・・。
とりあえず、ソースはまだカオス化してないはずなので興味があるなら読んでみてください。
変数等は使えません。辞書も無理。
拡張は、クラスStackCalcのenumのTokennumを必要数増やして、
メソッド、Doの中にあるstd::stringのtoken[]に命令文を追加して、
switch文に新しい数字を増やして、
新しいメソッドを書くだけ。
こんなに簡単。(笑
扱いはMain.cppを見てください。
エラー処理はほぼしてないです。
あー、これをどれだけ拡張すると、forthになるのやら。
制御構文がネックだなー。Boost::tokenizerはバックして解析できないみたいだし・・・。
あと、ファイルは二日ほどで消える予定です。
0237236
2005/05/02(月) 21:46:480238デフォルトの名無しさん
2005/05/08(日) 03:21:280239デフォルトの名無しさん
2005/05/08(日) 03:28:550240デフォルトの名無しさん
2005/05/10(火) 22:55:120241デフォルトの名無しさん
2005/05/11(水) 23:05:010242デフォルトの名無しさん
2005/05/18(水) 19:40:570243デフォルトの名無しさん
2005/05/24(火) 04:28:13でも構文見るとまるでCだ。
0244デフォルトの名無しさん
2005/05/28(土) 05:14:52http://mizotec.s27.xrea.com/slang.html
http://genjo9.lit.let.hokudai.ac.jp/keita/read.cgi?S-Lang&l=jp
0245デフォルトの名無しさん
2005/06/05(日) 03:08:400246デフォルトの名無しさん
2005/06/05(日) 03:24:280247デフォルトの名無しさん
2005/06/05(日) 23:58:45age
0248デフォルトの名無しさん
2005/06/05(日) 23:59:43age
0249デフォルトの名無しさん
2005/06/06(月) 04:47:430250デフォルトの名無しさん
2005/06/15(水) 07:23:130251デフォルトの名無しさん
2005/06/21(火) 21:25:18と書かれると嫌だろ?
ちゃんと何のリンクかぐらい書けや
0252デフォルトの名無しさん
2005/06/22(水) 14:44:530253デフォルトの名無しさん
2005/06/22(水) 21:45:27ちゃんと何のリンクかぐらい書けや
0254デフォルトの名無しさん
2005/07/09(土) 15:05:46I Hate Forth
ttp://embedded.com/story/OEG20010731S0028
I Love Forth
ttp://embedded.com/showArticle.jhtml?articleID=9900308
0255デフォルトの名無しさん
2005/09/02(金) 18:54:360256名無しさん@そうだ選挙に行こう
2005/09/11(日) 20:49:19Dr. Moogなら亡くなったが。
0257デフォルトの名無しさん
2005/11/09(水) 00:49:060258デフォルトの名無しさん
2005/11/12(土) 02:24:58Forthの悪いところでも晒していこうぜ。
ちなみにおれはアセンブラより難解だと思ってる一人だぜ。
0259デフォルトの名無しさん
2005/11/12(土) 06:28:320260デフォルトの名無しさん
2005/12/07(水) 02:41:390261デフォルトの名無しさん
2005/12/07(水) 10:20:28つまり age のことだよね?
最近やっと気付いたよ w
0262デフォルトの名無しさん
2005/12/07(水) 22:57:420263デフォルトの名無しさん
2005/12/07(水) 23:57:33: sage SWAP ;
0264デフォルトの名無しさん
2005/12/08(木) 02:35:14: foo bar ;
より
/foo { bar } def
の方がわかりやすいなあ
: を imdsw_on ; を imdsw_offとかにすれば
ちょっとはわかるような
わからんか
0265デフォルトの名無しさん
2005/12/10(土) 01:54:030266デフォルトの名無しさん
2005/12/16(金) 14:42:090267デフォルトの名無しさん
2005/12/16(金) 19:51:11FORTHの中の人の事情がいろいろ表に出てきてるから。
事情がわかると「なるほど」と思う。
0268デフォルトの名無しさん
2005/12/16(金) 20:26:43硬いこというなよ。普通の言語だって演算子の優先順位とかあるじゃんか。
ソースも1文字ずつ後ろから読んでたら面白かったのに>forth
0269デフォルトの名無しさん
2005/12/16(金) 22:34:350270デフォルトの名無しさん
2005/12/17(土) 08:06:49pushしてpop
「おめでとうございます。元気な男の子ですよ」
0271デフォルトの名無しさん
2005/12/17(土) 10:33:360272デフォルトの名無しさん
2005/12/17(土) 12:43:430273デフォルトの名無しさん
2005/12/17(土) 13:46:530274デフォルトの名無しさん
2006/01/07(土) 18:05:411 から N までの数字を N 個並べる組み合わせをすべて
列挙するプログラムは Forth で書くとどうなりますか?
例えば N = 3 のとき
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
となるようにです。
よろしくおながいします。
0275デフォルトの名無しさん
2006/02/12(日) 23:31:470276デフォルトの名無しさん
2006/03/05(日) 10:04:15「WORDというワードは呪われた代物で、無いほうがよい」っていうのはどういう意味かね。
ほとんど表記法を変更する目的でしか使われないからかな。
0277デフォルトの名無しさん
2006/03/05(日) 16:17:17プログラムの可読性を損ねるからだと思われ。
0278http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 22:15:13もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
そういや64bitにネイティブ対応している2chブラウザてありましたっけ?
0279デフォルトの名無しさん
2006/03/30(木) 18:03:27http://www.offete.com/ep32book.html
0280デフォルトの名無しさん
2006/03/30(木) 18:17:190281デフォルトの名無しさん
2006/05/02(火) 18:58:48こんな感じか? たぶんもっと美しいやり方があるのだろうが、ヘタレの
俺にはこの程度しかわからん。
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とかやってみて。
0282デフォルトの名無しさん
2006/05/18(木) 11:40:06本日作業分担を大まかに決める予定。
日本FORTH研究会の会報をPDF・オープン化することも本日の議題。
LL Ring! Language Update に出るか否かも本日決定?
第3世代 FIG JAPAN 立ち上げたいなぁ。
0284デフォルトの名無しさん
2006/05/18(木) 16:13:050285デフォルトの名無しさん
2006/05/18(木) 16:13:500286デフォルトの名無しさん
2006/05/18(木) 16:19:510287デフォルトの名無しさん
2006/06/01(木) 02:25:15生きてません。本家FIGでもリンクがなくなっています。
とはいえ、三世代FIG-JAPAN設立構想も検討中。
0288デフォルトの名無しさん
2006/08/09(水) 18:37:340290デフォルトの名無しさん
2006/08/30(水) 06:22:310291デフォルトの名無しさん
2006/08/30(水) 08:50:360292デフォルトの名無しさん
2006/09/03(日) 23:05:330293デフォルトの名無しさん
2006/10/21(土) 16:45:010294デフォルトの名無しさん
2006/10/21(土) 22:50:100295デフォルトの名無しさん
2006/10/21(土) 22:51:330296デフォルトの名無しさん
2006/10/23(月) 13:32:140297デフォルトの名無しさん
2006/10/25(水) 07:31:20解決できない俺はどうすれば・・・
0298デフォルトの名無しさん
2006/10/26(木) 00:39:00しかしこのスレ
2年以上経つのにまだ300行ってないのか
0299デフォルトの名無しさん
2006/11/10(金) 22:20:470300デフォルトの名無しさん
2006/11/10(金) 22:26:12>2年以上経つのにまだ300行ってないのか
FORTHプログラム張りなんだぜ?
0301デフォルトの名無しさん
2006/11/28(火) 05:56:22>>261-265
>>266,267
0302デフォルトの名無しさん
2006/11/29(水) 12:28:15{ foo bar } hoge def #コードブロック
* foo bar hoge def #なし
0303デフォルトの名無しさん
2006/12/09(土) 03:15:37http://factorcode.org/
0304デフォルトの名無しさん
2006/12/10(日) 21:07:560305デフォルトの名無しさん
2006/12/26(火) 05:05:37おばかな流れにワロス
0306デフォルトの名無しさん
2007/01/28(日) 04:43:440307デフォルトの名無しさん
2007/02/27(火) 19:51:330308デフォルトの名無しさん
2007/02/27(火) 20:28:160309デフォルトの名無しさん
2007/02/27(火) 20:57:500310デフォルトの名無しさん
2007/03/02(金) 12:31:000311デフォルトの名無しさん
2007/03/02(金) 12:34:49ムーアたん自ら開発済み。
http://www.colorforth.com/index.html
0312デフォルトの名無しさん
2007/03/30(金) 06:30:41そうだとするとFORTH実装するのつらいよね。
0313デフォルトの名無しさん
2007/03/30(金) 07:48:320314デフォルトの名無しさん
2007/03/30(金) 23:27:060315デフォルトの名無しさん
2007/03/31(土) 16:33:43最近のCPUってもコードキャッシュに先読みしたりしているから、
下手にメモリを書き換えると、先読みしたコードと、実際のメモリのコードが一致しなくなる。
ので、正常に動作しなくなったり、パイプラインにペナルティが発生して、動作がおそくなったりするらしい。
FORTHって、新しくワードを追加すると、自分自身が大きくなっていくような言語だから、
そこらへんどうすればいいのかわからない。
だれか教えてくれんかな。
0316デフォルトの名無しさん
2007/04/01(日) 05:04:000317デフォルトの名無しさん
2007/04/01(日) 12:54:31FORTHの事、知らないだろ。
0318デフォルトの名無しさん
2007/04/01(日) 13:11:17VBばっかり使ってないで、ハーバードアーキテクチャとノイマンアーキテクチャの違いに付いて勉強しろよ(w
0319デフォルトの名無しさん
2007/04/01(日) 16:33:44JIT関係にノウハウありそうだけど、良く判らん
0320デフォルトの名無しさん
2007/04/02(月) 05:03:35パラメータスタックなんて自由度の低いポインタみたいなもんじゃん。
0321デフォルトの名無しさん
2007/04/11(水) 23:18:58ワード書き換え→キャッシュをフラッシュ
でいいと思う。
0322デフォルトの名無しさん
2007/04/23(月) 23:27:41ワードをコンパイルした後、そのワードを実行するまでには
少なくとも実行ワード名を読み込むI/Oプロセスが介在するので、
人間にとっては一瞬でも、機械には一服する余裕があります。
あと、Forthのワードのオーバーライドは、
関数型言語によくあるようにプログラムの全体についてそのワードの定義を更新するのではなく、
再定義後に読み込まれる部分についてしか効果がありません。
後から遡って定義を変更できるようにするには、
初めから特別な方法で定義しておくようになっています。
こんな感じでどうでしょう。
0323デフォルトの名無しさん
2007/04/24(火) 06:20:310324デフォルトの名無しさん
2007/04/24(火) 23:36:56……forthに何があったらもっと流行るかな?
0325sage
2007/04/24(火) 23:53:340326デフォルトの名無しさん
2007/04/28(土) 23:24:510327デフォルトの名無しさん
2007/04/30(月) 07:13:54毎日、Forthでプログラム作ってるぜ!って奴はいますか?
0328デフォルトの名無しさん
2007/04/30(月) 08:55:54むしろForthでForthを作れば良いのではないかと思います。
0329デフォルトの名無しさん
2007/04/30(月) 12:17:29Schemeみたいに最低限のプリミティブを用意して、それからForthを組むようにしたら面白いかもね。
Lispだとこんな感じか。
ttp://ja.wikipedia.org/wiki/LISP#.E6.9C.80.E5.B0.8F.E3.81.AELISP
Forthの場合、スタック関連の操作、代入、分岐、Immediate、postponeぐらいで
実装できそうな気がする
0330328
2007/04/30(月) 21:27:11古典的なForthみたいにですね。
昔はアセンブリで書いた核の部分は、今はCでいいですからね。
ただ、何を核にすれば必要十分なのかについて、あまり資料がないですね。
四則演算と論理演算(ビット操作)もあった方がいい気もしますが、どうなんでしょう
(Lispは四則演算はいらない?)。
gforthはそういうやり方らしいですけど、
実行速度のためCで書き込むプリミティブを多めに取ったと書いています。
はじめ漠然と考えていたのは、間接スレッディングのforth環境の上でネイティブ方式のforthを頭から書いてしまう
というようなことでした。Executableフォーマットのファイルを作るのが結構面倒ですけど。
そこまでしなくても、Cのダイナミックライブラリとのインターフェイスがforth上で書ければ、
ほとんど何でもforthでできるんですけどね。
逆に言えば、マシンやOSの低レベルの仕様を調べないと派手なことをするのは難しいので、
そこが難点かも知れません。
もともとforthは言語仕様自体は貧弱なので、
アプリケーション毎に自前の言語を組上げていくみたいな面白さもあります。
インプットストリームも弄れるので、シンタックスまで変更できますし。
それがあまり面白がられていないということですかね。
0331デフォルトの名無しさん
2007/05/03(木) 09:02:05ところで、Beginning Forthを注文した。米国からなので2週間くらいかかりそう。
■ このスレッドは過去ログ倉庫に格納されています