2 part forth

1デフォルトの名無しさん
垢版 |
NGNG
第四世代
NGNG
>>50
基本的には同意なんだが。マクロと同等以上というほどメタプログラミング
的には勝ってないような…。昔 LISPer と競った経験から言うと、効率では
勝てると思うけど、記号処理(構文解析とか)入ってくると分が悪いと思われ。
FORTH ライク構文なら無敵だと思うけど。
NGNG
>>51
そうかな?「マクロ以上」は言い過ぎかもしれないけど、
>>49の多重ループの展開なんかは、マクロ並みの
抽象化だと思うけどな。
NGNG
いっちょ処理系でも作るか
NGNG
話題少ないし、おまいら、クイズで楽しみませんか?

第1問

dup ( a -- a a )
swap ( a b -- b a )
drop ( a -- )
>r ( a -- return stack: a )
r> ( return stack: a -- a )

以上5つのワードだけで、

2dup ( a b -- a b a b )

を定義すれ。
NGNG
第2問
同じく

3dup ( a b c -- a b c a b c )

を定義しる。
NGNG
第3問

: foo twice ." Hello" ;

でfooを実行すると

HelloHello

を出力するようなtwiceを定義してみれ。


NGNG
: 2dup >r dup r> dup >r swap r> ;
: 3dup >r 2dup r> dup >r swap >r swap r> r> ;

>>56
immediateを使う? よく思い出せん。
5854-56
垢版 |
NGNG
>>57
2dup、3dup、お見事っす。

>>56はimmediateを使うという解答もアリですが、
immediateを使わないちょっとトリッキーだけど
もっとシンプルな方法があります。
59デフォルトの名無しさん
垢版 |
NGNG
人少ないなぁ。

第4問

: AA reverse ." AA" ;

: BB AA ." BB" ;

: CC BB ." CC" ;

でCCを実行すると

CCBBAA

を出力するようなreverseを定義すれ。

‥‥‥実はコレ第3問のヒントだったりする。

60デフォルトの名無しさん
垢版 |
NGNG
Forth のお勧め本ってどんなのありますか?


最近RPNに萌えてます。
HPの電卓欲しくなっちゃった。
NGNG
自分は「標準Forth」
http://www.amazon.co.jp/exec/obidos/ASIN/4320022475/ref=sr_aps_b_/249-4245738-4019557#product-details
でForthを学んだんだけど絶版だろうね。
古本屋か図書館で探すしかないと思われ。

英語でも良ければ、
http://home.iae.nl/users/mhx/sf.html
ここのChapter 1から順に読んでいくのがオススメ。
62デフォルトの名無しさん
垢版 |
NGNG
懲りずに第5問。

: foo
  ." 1 "
  resume
  ." 2 "
  resume
;

: bar
  ['] foo call/cc
  ." 3 "
  resume
  ." 4 "
  drop
;

で、barを実行すると、

1 3 2 4

と表示するような、resumeとcall/ccをがんがって定義してみれ。
ちなみに、この2つのワードは以下のスタックコメントに示すような
引数と返り値を持つものとする。

resume ( continuation -- continuation' )
call/cc ( xt -- continuation )

# ワード名とスタックコメントの名前がアレですが、
# 字面に惑わされなければ、仕様を満たすのは簡単なはず。
# 第3問〜第5問は基本的に同じカラクリ、というのがヒント。
NGNG
Mindって分家?単に日本語で書けるForth?
64デフォルトの名無しさん
垢版 |
NGNG
MindはいろいろForthにない仕様があったので、
MindはForthから派生した別言語と考えても良いと思う。
NGNG
ホント、人が居ないyo....._| ̄|○

誰も見てないかもしれないけど解答編。

>>56
: twice r> dup >r >r ;

>>59
: reverse r> r> swap r> swap >r swap >r >r ;

>>62
: resume r> swap >r ;
: call/cc r> swap execute ;

‥‥リターンスタックをいじるとヘンなことができて面白いよね。
‥‥‥‥‥。
_| ̄|○


NGNG
>>65
スマン、しばらく見てなかった。
>>56はwordの最後までを二回ってことだったか。
次のwordだけを、かと勘違いしてた。
って>>62はそう書いてるな。
NGNG
>>66
>wordの最後までを二回ってことだったか。
わざと曖昧に書きますた。引っかけ問題のようなもので‥‥。
NGNG

 浪なみ
69デフォルトの名無しさん
垢版 |
NGNG
age
70デフォルトの名無しさん
垢版 |
NGNG
mops for win 希望
NGNG
やっぱ判りにくいよこれ。
LISPはわかったんだが。。。
NGNG
慣れです。
NGNG
よくわからないけど、
スタック2本あるんだよね?
あとWordとExcelが入っているとか、いないとか。
正直よくわからない。
NGNG
それと、気になった事だけど、
>>65
人居ない、なんて連呼してると
ほんとに人いなくなるよ
もっと前向きに行こうよ
NGNG
了解。
76デフォルトの名無しさん
垢版 |
NGNG
Chuck Mooreってチューリング賞もらってないよね?
threaded code発明したのってChuckでしょ?
NGNG
チューリング賞のことは知らないが、
threaded code発明したはChuck Mooreです。

NGNG
threaded codeってそんなに画期的なことなの?
Z80で言えば CD xx yy のCDを無くして、メモリ消費が約2/3になるってだけでしょ?
NGNG
http://www.kt.rim.or.jp/~tyamamot/forthj/threaded-codej.html
NGNG
コードが小さくて速いので多くのVMがthreaded codeを採用している。
昔のプロセッサでは、アセンブリで書いたコードよりもForthのコードの
方が速かったことさえあるという。(伝説)
NGNG
速いのはいいんだけど、
コード読み書きがしんどいと思わない?
変数とかあまり使わないみたいだから、
フローを初めから追っていく必要あるし。
結局この言語もライブラリ次第かなと思った。
NGNG
逆ポーランドをむしろ好む人々も結構な数おりますが、
Stack Juggling がコードを読みにくくするという人も
います。
Forthコードの見通しを良くするには、他の言語よりも
かなり小さな単位でワードを定義するのがよろしいかと。
極端な話、1ワードはせいぜい5行までで記述し、
10行を超えるワードは分割すべきであるとか。
スタックコメントを活用し、小さなTestを繰り返し
ながらボトムアップにくみ上げていくと意外に、
スタックだけで問題解決できていたりします。

83デフォルトの名無しさん
垢版 |
NGNG
無限ループから抜け出す方法はありますか?
begin...againだと抜け出せないみたいなのですけど。
NGNG
>>83
ループ部分をワードに切り出してexitでワードごと抜けてください。
NGNG
電脳書房の新着案内で「標準 FORTH」入ったっていうから見に行ったら
もうsold outですた。はやッ!
ちなみに漏れが持ってるFORTH本は「パソコンユーザのためのFORTH入門」
(A.ウィンフィールド著 寺島元章訳 1986年初版)
薄いけど、なかなか渋い良い本です。

ちょっと前まであまりなかったlisp本やsmalltalk本も最近は沢山でてるのにな。
forth本も出版してほしい。
86デフォルトの名無しさん
垢版 |
NGNG
dayone
NGNG
昔からPostscriptが有名なんだからいいんじゃ
NGNG
ぜんぜん関係ないけどAdobeて最初聞いた時
病気の名前かと思った
89デフォルトの名無しさん
垢版 |
NGNG
FORTHは、なんか団体が弱いイメージがある。
Adobeが中心になって盛り上げるかしれ。
AdobeってFORTH系言語で一番儲けてる会社だろ?
NGNG
AdobeのPostScriptって、FORTHとは似て非なる言語と聞きましたが。
(詳細はわからないです。ゴメソ)

団体が弱いっつーか、なんつーか、
「コアなマニアは熱狂的にFORTHを支持している」って噂は良く聞くけど、
その「コアなマニア」って一体ドコにいるのよ? って感じですね。
ググっても、今でも熱心にFORTHやってるサイト見つからないんですよね。
(数年全然更新されていないサイトとかは結構見つかる)
NGNG
マニアたちはcomp.lang.forthに巣食ってますが、
web siteは寒い状況。
92デフォルトの名無しさん
垢版 |
NGNG
>>41
ムーアさんの思想詳細希望
93デフォルトの名無しさん
垢版 |
NGNG
>>90
gforthとか、ベンチマークサイトで活躍してるとこぐらいしか見たことないね。
やっぱ、Schemeに対するSICPや、Perlのラクダ本みたいな有名所の良書が必要なのか。
それとも英雄が必要なのか。
94デフォルトの名無しさん
垢版 |
NGNG
>>93
いい本があると、かなり違うかもね。
NGNG
>>92
ttp://www.kt.rim.or.jp/~tyamamot/forth/c4th.html

しかしムーアタソは変なものを作るねぇ。
ttp://www.kt.rim.or.jp/~tyamamot/forth/c4th.html
9695
垢版 |
NGNG
下のリンクは間違い。
正しくは、ttp://www.eforth.com.tw/academy/chips/mup.htm
NGNG
俺の思うForthの偉い人

Chuck Moore
http://www.colorforth.com/

M. Anton Ertl
http://www.complang.tuwien.ac.at/projects/forth.html

Bernd Paysan
http://www.jwdt.com/~paysan/index.html

Mike Hore
http://www.powermops.org/
NGNG
遥か昔のByte誌でForth特集をやってるんですね
http://www.colorforth.com/byte.htm
99デフォルトの名無しさん
垢版 |
NGNG
Forthで書かれたCやJavaなんてナンセンス
------------同じ理由で---------------
CやJavaで書かれたForthなんてナンセンス!

Forthは問題の解決に役立つツールを素早く作れる
だからプロトタイピングにとても向いている

GNU Forth? それはそれで結構だけれどね
小気味良く動く本来の持ち味は失われるだろう
100デフォルトの名無しさん
垢版 |
NGNG
ANS/ISO標準化は結局のところ草の根Forth処理系を淘汰することにしか役に立たなかった
標準化で潤うのはForth社であり、開発効率が上がると考えた大企業、陸海空軍
やがて草の根の支持を失ったForthは全く廃れた・・・と少なからず思われているようだ

http://www.forth.com/Content/Clients.htm
NGNG
forth で国内ページをぐぐると、トップが厚生労働省ってのが悲しい。
2番目もプログラム言語とは全然関係ないし。
102ジャパン
垢版 |
NGNG
婦女暴行事件 でぐぐると、トップに首相の名が現れる国です
NGNG
forthのソースが読みたいんですけど一番小さいのて何ですかね?
NGNG
>>103
: 2* DUP + ;
NGNG
移植の参考にしたいという意味ならコア・ワード数を最小限に絞ったeFORTH
いろいろな実行環境のソースが公開されているよ
元々は6502用に書かれたFigForthも小さいけどね
辞書構成にさまざまな形式があって、どちらも速度アップの余地ありってところ
NGNG
>105 ありがと
しかしアセンブラかきついなぁ
NGNG
>>106
習うより慣れろってやつじゃないの?
どれか動くForth系を触りながら中身を調べるって手もあるし
しかし、これだけH8が普及しているのに国内で移植したっていう例は無いのかな
H8 eFORTHのソースがあるんだから、ほとんどそのままで行けるハズ

関係ないけど、あのHPなんとかならんのかね・・・さくっと削除するとかさ
Forth Interest Group, Japan
NGNG
>107
確かにリンクしか存在せず更新もされない研究会てのもあるだけ無駄つうか
NGNG
だいたい本家サイトに無視されちゃってる

↓それに比べてエライ違いですね
http://www.figuk.plus.com/
NGNG
>>103
これなんてどう? コンパクトな方だと思うけど。AVRなら命令セットが素直だし参考ってことで。
http://www.cqpub.co.jp/toragi/download/2002/TR0209F/TR0209F.HTM

ただ、これもそうなんだけど、世に言う「FORTHコンパイラ」は本来の自立した柔軟性に欠けるから手直しがいるだろうね。
本気でやるならATmegaなんかに載せると良さそう。セルフでフラッシュが書き込みできるから。確かH8はそこがサポートされてない。
NGNG
ATMELだと32ビットのARMが出てるね。
NGNG
アセンブラ関わる時点で移植性は捨てねばならん
NGNG
処理系の移植? 他言語でも移植時のアセンブラ記述はありだと思うけど。
リアルタイムアプリの移植にしてもそうだよね、部分的に使うだけかも知れないけどさ。
Forthでクロスコンパイルって移植技もあるみたいだけど詳しいことは判らないな。
114103
垢版 |
NGNG
Gforthのソース見たけど結構Cで書かれてるね。
ヘタレなオレはCで書かれたForthもどきでも読んでみるよ
その前に図書館で見つけたFORTHへの招待でも読んで再勉強。
NGNG
キモは二本のスタックの実装とリンクリストやワードの構成でしょうね。
第三のスタックを使ったりとか、突っ込めばいろいろ奥深いものがありそうだけど。
何種類かあるカーネルの構造について詳しく解説されているページがあって
英文だけどかなり参考になると思う。最小限のアセンブラソース付きです。

http://www.zetetics.com/bj/papers/
NGNG
あ〜ぁ、放置されちゃってスタックが埃まみれじゃん
NGNG
昔、漏れが晒したやつはデータスタックとリターンスタックのほかに
コンパイル時にジャンプ先アドレスを保存するために使うコントロールフロースタックの
3本構成でつくりますた。
NGNG
>>117
なるほど。コントロールフロースタックって何に使うのかと思ったら、そういう使い方をするんですね。さっそく採り入れてみようかな。
現在JSR型のものをワンチップCPUに移植中。データスタックとリターンスタックのどちらもトップを固定メモリーアドレス上に置いてます。かなり書き進んだところでハタと考えました。エディタは・・・どうしよう?
119デフォルトの名無しさん
垢版 |
NGNG
さりげなく関連ページちゃんと書いてあるのな
NGNG
Amazon.com
forth の検索結果:4件
並べ替え:

1. 実用FORTHテクニック入門
西川 利男 (著)
出品者から通常2営業日以内に発送
【マーケットプレイス】 新品/ユースド価格 : ¥1,300
NGNG
日本語プログラミングコンテスト実行委員会
実行委員長 審査委員会 審査委員長
西川利男(科学ライタ、元工業技術院主任研究官)
実行委員 片桐 明(スクリプツ・ラボ代表)
122デフォルトの名無しさん
垢版 |
NGNG
詳しいひといるう?
ワードの仕組み(仕様)教えてよ
NGNG
>>122
あんまり詳しくないけど、どういう処理系のどんなワードの仕様か
書けば答えてくれる人もいるかも。

NGNG
>>123
処理系を作ろうと思っているんですが、辞書から探すのに効率のいい
ワードの仕様ってどんなんだろうと

思って聞いたんですけど、
http://www-lab.ee.uec.ac.jp/text/forth/
ここ参考にしてやってみることにしました。
NGNG
>>124
資料は79年標準仕様のものなので、現在の94年版も併せて参考にするのが良いと思う。
FORGETのように消えているワードがあったりする。DPANS94で検索すると出て来ます。
79年標準はFIG-FORTH 6502版を下敷きにしているから、そのソースも探してみると良い。
スタックの実現や、ワードや辞書の構造は処理系ごとに自由が認められているので
実際のところ自分がスマートだと考える仕様がベスト。
NGNG
crを完全にスペースに置き換えた場合(全てのワードを即時実行にする)、
何か弊害あります?
NGNG
>>125
FORGET は旧式の拡張ワードとして未だ生きながらえているね。
新ワードは MARKER。前もって、MARKER word としてヘッダーを作っておいて
後の実行時に word cr でヘッダー以後のワードを消し去るという使い方。
変数をプログラムメモリと別の領域に置く方式への配慮という感じがする。
NGNG
>>126
即時実行型のFORTHでは過去にGraFORTHを触ったことがあります。
コロン定義なしでDO LOOP文を入力するとリターンキーで実行する。
最初からそういう形の仕様で考えてあれば弊害はないはずですよ。
NGNG
>>128
コロン定義無しっすかあ 厳しいなあ
即時実行するかしないかの1bitスイッチとそれを操作する[,]の2つのワードを作っておいて
[ ワード名 命令 ] DEFW なんてやり方も考えてみましたけど
実装がめ、めんどそうやなあ〜

スペースのみで全て即時実行の方がミニマリズム全開でカッチョエ〜とか思いますけど
いた仕方ない cr待ちに変えるかあ〜
NGNG
>>129
> [ ワード名 命令 ] DEFW
これだったら通常のコロン定義の方がシンプルでは?
どうせなら
[ 命令 ] DEFW ワード名
とか。
でも即時実行のみでやるなら
/ワード名 [ 命令 ] DEFW
かな……。
Postscriptみたいだ‥‥‥。
NGNG
>スペースのみで全て即時実行
Forthは基本的にスペースが来たら即時実行という考え方で良いと
思うんですが。
ただ、
・immediate属性でないワードはコロン定義の間は実行せずにコード生成
・immediate属性のワードはいつも即時実行
というルールに従っていれば。

NGNG
>>131
やっとimmediateの使い方を理解できました。
シェルと構文解析を同時に考えるから混ざってしまってたのか・・・

>>130
定義されてないワードが来たらワード定義に移るとか考えましたが、
デバッグというか間違えた時しにそうなのでなかったことにします。
133デフォルトの名無しさん
垢版 |
NGNG
今さらながらプログラマーズ ハンドブックをForth社に注文した。
入手できるうちで現在の標準を一番反映したものになっているのだと思う。
オーダー番号は22だったけど、やっぱりForthって超マイナーなのかな?
NGNG
唯我独尊言語
NGNG
>>134
「どれ一つとして尊くない命はなく、だからこそ尊いというお釈迦様の言葉・・・」
NGNG
「どれ一つとして尊くないForthはなく、だからこそ尊いというおムーア様の言葉・・・」
NGNG
>>136
パチパチパチ! 君に500 CELL分け与えよう。
500 cells allot
138134
垢版 |
NGNG
>>135-137
そんな高尚なつもりではなかったんだが、
ま、いいか。

Forthを信ぜよ、栄光あれ!
139133
垢版 |
NGNG
正味5日間でプログラマーズ ハンドブックが届きました。$49.95の価値は十分にあると思う。というか、'94標準FORTHに関してはこれが現実的に唯一のガイドブック。送料は色々選べる中から$11のものをチョイス。(amazon.comでは本のみ$71.35)
肝心の中身はネットに頼って調べているよりも断然良かった。'94標準ばかりが能じゃないけど、どこかで方言がずらりと並ぶワードリストを見たことがあるから、やっぱり標準化は必要悪だったのかも知れないね。
NGNG
>>139
いいなあ。欲しいなあ。
NGNG
ISO/IEC 15145:1997 Informatinon technology -- Programming languages -- FORTH

はどうなのよ。あんまり情報がないけど、たぶん'94FORTH。
NGNG
>>141
http://www.eos.org.eg/web_en/cat/items/d26479.html

これだったらANSが出している高い準拠解説書の方が良さそう
プログラマーズの共著者の一人は天文台時代からムーアの秘書?
をやっていた現Forth Incの社長でdpansの委員長を務めている人物
・・・だから
>$49.95の価値は十分にある
かな

143デフォルトの名無しさん
垢版 |
NGNG
forthは、下手すっとアセンブラより難しいの
こんなの流行るわけないだよ
NGNG
みいちゃんはあちゃんにちゃんで寝るえ〜
NGNG
電波系が混じってるから下げるしかないね
NGNG
DPANS94ってのはISOのやつとは別物?
NGNG
マイナー言語はISOで定義されたからって
それが標準になるわけじゃないんだよな
なんのためのISOだよ
NGNG
>>146
ネットで公開されているDPANS94は下書きの最終段階のもので、正式な標準ドキュメントはANSIから得るよう公開ページに書かれているね。
実際のところ公開されているものは承認されたものだから、イコール標準ドキュメントとみなして差し支えないと思うけど。
それから、ANS Forth ANSI X3.215:1994 は ISO/IEC 15145:1997と同一だそうです。
http://forth.com/forth/fph-0.html
NGNG
May the FORTH be with you!
NGNG
>>149
by Oh! MZ (ねたに反応…、これでいいよね?)
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況