5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

: Mops ( オブジェクト指向FORTH -- ) ;

1 : 1:01/09/10 19:41
ニッチ(Mac)の中のニッチ(FORTH)。
オブジェクト指向FORTH言語、Mopsについて語るスレ。
いや、語れるのか‥‥?

26 :第4番目の名無しさん:01/10/23 18:06
OpenFirmwareから書き込んでいますうそ
FORTHの考え方は好きだなぁ。
フェチ逝って良しですか?

27 :デフォルトの名無しさん:01/10/23 18:18
スタックトップのオブジェクトをレシーバーとする方がきれいだと
思うがなあ。anObject message とか。

数値も文字列もオブジェクト。+や.もメッセージと考えればすべて
うまくいくような。あ、引数なしのメッセージが困るか?

28 :25:01/10/23 18:28
>27
そういうのも蟻だと思う。
ANS仕様のForthならインタプリタやコンパイラいじり放題だから俺流アプローチのOOPが可能だよね。
俺は挫折したけど。

29 :22:01/10/23 18:54
>>27
たしかに、

anObject message

の形だと日本語の文脈にも合うので美しいなぁ。
‥‥‥‥コンパイラの中枢部分まで降りていって書き換えるか。

>>28
Forthはいじり放題、てのには激しく同意。
制御構造だろうがなんだろうが俺流につくれてしまう
Forthマンセー。
なんだけどおかげで方言だらけ(涙)。
Mopsも完全にはANSI互換じゃないしなぁ‥‥。

30 :デフォルトの名無しさん:01/10/23 18:57
>>26
名前がとても良いです。
このスレのデフォルトにしたいぐらいに。

31 :デフォルトの名無しさん:01/10/23 19:23
メタコンパイルage

32 :第4番目の名無しさん:01/10/23 20:45
>>30
サンクス。

33 :22:01/10/23 21:12
Mopsではmessageには

print:

のように最後に:を付けて区別しているので、
日本語化する時には、

印刷する。

みたいに最後に。が付いたモノは オブジェクトに
対するメッセージと言う事にすればヨイかな、
と思ったのですが、引数はどこに置くのがいいんでしょうね。

1)
anObject p1 p2 p3 message

2)
p1 p2 p3 anObject message

1)は引数とanObjectを区別するために少し細工が必要か。
(ブロック構文みたいになるかな?)
2)はmessageを直前にスタックに積まれたオブジェクト
に投げればイイだけなので実装は楽かと。
でも日本語化した時に楽しいのは1)のほうかな?

家政婦 は、

 (‥‥この間100行。)

見た。

あ、助詞をうまく使えば両方の構文を実装できるやうな
気もしてきた‥‥‥。

34 :デフォルトの名無しさん:01/10/23 23:42
たった一つだけ スタック制御だけ

なんでもないですage

35 :デフォルトの名無しさん:01/10/26 00:42
>助詞をうまく使えば

それはForthよりもSmalltalkに近い、という説が。
tp://isweb21.infoseek.co.jp/computer/h_yanai/html/B8E5C3D6A5ADA1BCA5EFA1BCA5C9A5E1A5C3A5BBA1BCA5B8.html

36 :22:01/10/26 02:14
リンク先を読みました。
似たような(たのしそうな)議論をしてますね。(^^
1)の構文のように複文かましてオブジェクトに流し込むという感覚は、
Smalltalkぽいわけですね。むー。
「スタックから何個オブジェクトもらうかはウチで決めさせてもらいますわ。」
の2)の構文のほうが確かにForthらしいか。
助詞によるパラメタのコントロールは魅力的だけど、スタック操作の実装を考えると、
オレみたいなへたれには荷が重いかも‥‥。
のんびり考えてみます‥‥。

37 :デフォルトの名無しさん:01/10/26 18:30
salvage

38 :デフォルトの名無しさん:01/10/26 21:30
    ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 〜' ― (,,゚Д゚) < Forthのプロジェクト成功率は30%!!
  し― し-J  \___________

ttp://www.gyve.org/~jet/lang2.txt

‥‥微妙に中途半端だな。

39 :デフォルトの名無しさん:01/11/20 11:38
312 PICK

40 :デフォルトの名無しさん:01/11/20 11:42
DROP

41 :22:01/11/20 12:47
モプースの日本語化がわずかばかり進みましたのでご報告。
anObject someMessage 型のメソッド呼び出しが出来るようになりました。
↓現在こんな感じ

42 :22:01/11/20 12:47
need モラセト

☆ メソッド呼び出しのテスト

クラス「 2chキャラ 」は「 オブジェクト 」を継承し
『 ハァハァ: とは " ハァハァ" を 文字列表示 』
を実装する

クラス「 モナークラス 」は「 2chキャラ 」を継承し
『 話せ: とは " オマエモナ〜" を 文字列表示し 自分 が ハァハァ。 』
を実装する

クラス「 ギコクラス 」は「 2chキャラ 」を継承し
『 ハァハァ: とは " ハゥッ" を 文字列表示 』
『 話せ: とは " 逝ってよし!" を 文字列表示し 自分 が ハァハァ。 』
を実装する

モナークラス モナー
ギコクラス ギコ

単語 駄スレ { 値 -- } を
ここから
値 から 1 を 引く → 値
値 が 0 以上
ならばその間
改行し
値 を 2 で 割った余り が 1 と 等しい
ならば
ギコ が
さもなければ
モナー が
つぎに
話せ。
を 繰り返し実行する
と定義

endload

43 :22:01/11/20 12:49
で、実行結果は↓

10 駄スレ

逝ってよし!ハゥッ
オマエモナ〜ハァハァ
逝ってよし!ハゥッ
オマエモナ〜ハァハァ
逝ってよし!ハゥッ
オマエモナ〜ハァハァ
逝ってよし!ハゥッ
オマエモナ〜ハァハァ
逝ってよし!ハゥッ
オマエモナ〜ハァハァ

44 :22:01/11/20 12:54
モナー が 話せ。
なら動的束縛。

話せ: モナー
なら静的束縛です。

助詞は実は読み飛ばしてます。
へたれでスマソ。

45 :デフォルトの名無しさん:01/11/20 18:22
52 PICK

46 :デフォルトの名無しさん:01/11/20 18:42
>>22

見てる分にはなかなか面白いかも。
Mopsってのは知らないけど、ForthとSmallTalkの
知識のみでだいたい理解出来るし。

47 :22:01/11/20 20:44
>> 46
自分でいうのもなんですが日本語化したリストを打ち込むのは正直メンドイ。
でも見た目重視なので名前付きパラメタへの代入記号が→だったりします。(w
SmalltalkはSqueakを以前ダウンロードしてみたことがありますけど、継続して
使ってみてないのであんまり知りません。
Smalltalkのメソッド呼び出しの語順を逆にしたものがMops‥‥?

48 :デフォルトの名無しさん:01/11/20 21:14
見るだけで満足できるスレだな。
良スレage

49 :デフォルトの名無しさん:01/11/20 21:29
さげ!
今後は新言語を発明しなかった奴にベストプログラマー賞をやれや。

50 :デフォルトの名無しさん:01/11/20 22:13
>>49
アイヤー、Mopsはちっとも新言語じゃねぇっす。
Neonという名前の商用製品だった頃を含めればMac用開発言語の中でもカナーリ古株ですね。
マイナーだけど。



でもsage。

51 :46:01/11/20 23:47
Transcript show: 'Hello World'

で、Transcriptオブジェクトにshow:メッセージを、
引数'HelloWorld'で送る。
Mopsの逆になってる?Mops知らんので良くわからん。

モナーが話せ。

という事は一緒に見えるが。引数がある時は

モナーが 'Hello World' と文字列話せ。

となる、という事か?

ギコとモナーの所のスタックにあるオブジェクトの種類で多態、
ってのは面白い気もする。
でもやっぱりはやらんだろうなぁ、こういう言語は。

52 :22:01/11/21 00:19
Mops的に表現すると、

" Hello World" show: Transcript

になります。パラメタ メッセージ オブジェクトの順。
コンパイラ部分にパッチをかましたオイラの日本語化Mopsだと


クラス「 モナークラス 」は「 オブジェクト 」を継承し
『 セリフを話せ: とは 文字列表示 』
を実装する

モナークラス モナー

" Hello, world" と モナー は セリフを話せ。

=> Hello, world

みたいな感じです。
つまり、パラメタ オブジェクト メッセージ の順。
もともとのMopsの構文も生きているので、

" Hello, world" と セリフを話せ: モナー

も実行できますけど。

53 :22:01/11/21 00:31
>>52
補足すると、Mopsが、インプットストリームから切り出したワードの
最後が『:』である事から、オブジェクトに対するメッセージか否かを
判別している箇所を拡張して、最後が『。』ならスタックトップの
オブジェクトへメッセージをsendするようにコンパイルしてます。
だから、パラメタはオブジェクトより前にないとダメです。
将来的に>>33の1)みたいな構文ができると楽しいとは思います。
あと趣味でやってみてるだけなので実用性は期待してませンです。(w

54 :22:01/11/21 00:43
>>50
でもNeonの頃は単一継承で動的束縛のみだったと思う。
ドキュメントのどこかで読んだだけで直接当時を知ってるわけ
ではないけれど。
オーストラリアのおじさんが残りの仕様を付け足した。
同じNeonから別れたYerkってのもあったハズ。

55 :デフォルトの名無しさん:01/12/08 13:10
自分 で 上げ。

56 :デフォルトの名無しさん:01/12/08 15:26
普通のFORTHスレってないの?
勉強してみたいんだけど。

57 :名無しさん@Emacs:01/12/08 19:14
ふつーにGNU Forthのドキュメントでも読めば
十分勉強できると思うよ。

58 :デフォルトの名無しさん:01/12/08 20:15
>>56
ハゲドー

59 :デフォルトの名無しさん:01/12/08 20:20
あげよう子供ライオン

>将来的に>>33の1)みたいな構文ができると楽しいとは思います

ところで、実際やろうとすると、どうやればいいんでしょうね。

文法については、レシーバーをメッセージの直前や直後に置くという文法にしないかぎり
やっぱり何らかの印がないとレシーバーだと判別できないんで。

あるいはレシーバーだけ「印がない」という案もあるが。
つまり助詞案みたいに、述語は「。」が、引数は「、」が、つくので
それ以外がレシーバーだ、という案。
ちょっと読みにくそうだけど。

コンパイルしたものの動かしかたについては、どうすればいいんだろうな。
postscriptでいう「mark」のようなものをstackに積み、
ここから1つのmessage sendingが起こる、ということを
おしえればいいだろうか。つまりstackに
mark receiver param1 param2 ...
と積まれた状態でmessageを実行すると
stacktopから(最初にみつかる)markまで掘り下げて
receiver とparamを拾ってくる、という。
これできちんと動くかどうかは検証してないけど。

60 :デフォルトの名無しさん:01/12/08 20:25
>>57
本を何冊か読んだけど途中からわからなくなります。
8ビットで遊んでみたいからforthみたいな小さい言語はぴったりだと思うのですが
逆ポーランドにいまだ馴染めません。

61 :デフォルトの名無しさん:01/12/08 20:27
>>56
とりあえず
http://www.google.co.jp/search?hl=ja&q=forth+%93%FC%96%E5&btnG=Google+%8C%9F%8D%F5&lr=lang_ja

普通のFORTHスレってム板に無さそう。
Mindスレが以前にあったけど、倉庫に入って久しいし。

FORTHスレの需要があるなら立ててみる?
PostscriptとかOpen Farmwareとかスタック系言語一般を扱うことにすれば、多少は人が集まるか?

62 :22:01/12/08 21:46
>>59
え〜2つほど案があります。
文法的にはどちらも、

anObject mark1 param1 param2 paramN mark2 someMessage

になります。

1) オブジェクトスタック案
実行時にmark1がスタックトップをオブジェクト専用スタックにpushし、
mark2 がオブジェクト専用スタックからpopしてスタックトップに戻す。

2) 無名ワード案
コンパイル時にmark1とmark2にはさまれた部分を「無名ワード」(w として定義。
実行時にその無名ワードを呼び出すようにコンパイルする。

どちらにしてもmark2がないと>>42で実装した文法と混在しつつ複文に対応することが出来なかったりします。

で、mark1とmark2に助詞をあてればよいのかな?と思っていますが、
実装するヒマがありません。

63 :デフォルトの名無しさん:01/12/09 00:31
>>62

そのmark1,mark2って、
その位置を「anObjectの後」「someMessageの前」じゃなく
「anObjectの前」「someMessageの後」に換えると、
あら不思議、Lispみたいな言語になってしまう(笑)。
語順は逆だけどね。

64 :デフォルトの名無しさん:01/12/09 00:55
リアル厨房だけど。いれさせて。
OpenFirmwareについてはちょっと関心あるなぁ。
あれってForthインタプリタなんでしょ?
それでいてブートローダ?BIOS?
…知識はないけど関心なら。(汁

65 :デフォルトの名無しさん:01/12/09 01:04
BIOSにforthみたいな「(作るのが)簡単な」言語をいれるのは
わりとメジャーらしいですよ。

同様の理由で、ブートローダーにbasicを採用してるマシンってのも見たことがある。
Bload 0?????H : call 0?????H でlinuxがブートしたのを見たときは、さすがに笑いころげた。

同じくらい作るのが楽な言語といえばlisp系もなんだけど、
あれもブートローダーにしてる人(会社)は居るんだろうなあ。

66 :デフォルトの名無しさん:01/12/09 01:27
>>64
> あれってForthインタプリタなんでしょ?
> それでいてブートローダ?BIOS?
BIOSというよりはブートローダですね。
FORTHを知らなくてIF文の書き方に戸惑っているデベロッパが世界中にいそうだ。

67 :デフォルトの名無しさん:01/12/09 01:42
>>65-66
あぁ〜。ますますゾクゾクしてきますな。
OpenFirmwareのプロントがForthインタプリタと知り、
実際に使ってみた時、ちょっと感じるものがありましたが…
ブートローダってことはちっちゃいOSといってもいいのかなぁ。
勉強してみます。

68 :22:01/12/09 01:51
>>63
もちろん「無名ワード」はLispからのパクリです。
無名ワード案でいくと、ForthとLispとSmalltalkを多重継承して見た目が
日本語のキモい言語になる?
でも実装が面倒クサそう。

69 :デフォルトの名無しさん:01/12/09 02:04
FreeBSDのブートローダがForthで書かれている。

Forth総合スレ欲しいよ。

70 :デフォルトの名無しさん:01/12/09 02:06
>>69
ここでええんでないの?

71 :デフォルトの名無しさん:01/12/09 02:58
GNU GRUBも正直Forthなら良かった。
いまの設定ファイルは記述力が低すぎる。

72 :デフォルトの名無しさん:01/12/09 13:30
>>70
名称の問題ですね。mops知らん人は通りぬけちゃうかも。

ここが一杯になった暁(くるのか?)には「総合スレ」の名で大々的に起こす、では
やっぱりおそすぎますかね(^^;

スレに「別名つける」機能とか「リネームする」機能とかが
あればよかったのにな。ただ、あったらあったで変に濫用するやつが
後たたなくて困るだろうけど。

73 :67:01/12/09 13:41
>>72
>名称の問題
う〜む。「オブジェクト指向『FORTH』」とは書いてますけどねぇ。
やっぱり弱いか。
>別名とかリネームとか
イイ!(・∀・)かも〜
>変に濫用するやつが
ダメ!(´∀`;)かも〜

\ OpenFirmware + FORTHで検索かけてみました。
\ とりあえず
http://www.forth.org/
http://www.openfirmware.org/
http://join.t.u-tokyo.ac.jp/fig-japan/
http://www2.osk.3web.ne.jp/~lunlumo/Prog/Forth/
http://www.kt.rim.or.jp/~tyamamot/forthj/forthj.html
\ 情報少ないっすね…

74 :デフォルトの名無しさん:01/12/09 14:08
深度浅め。sageよし。

>>73
適当に検索してみた。よかったら参考にしてチョ

http://www2.airnet.ne.jp/sardine/complang/Forth.html
http://bishop.fuis.fukui-u.ac.jp/~nishino/hobby/prog/forth/
http://www.asahi-net.or.jp/~uw4s-wtnb/

開発環境
http://www.hoku-iryo-u.ac.jp/%7Esadakata/4th/index.html
http://home.interlink.or.jp/~s-nakani/doc/frtm-win.html
http://www.netlaputa.ne.jp/~kuno/forthmain.html

逆ポーランド
http://www.246.ne.jp/%7Etamra/stack.html

75 :デフォルトの名無しさん:01/12/09 16:32
forthのコードって出てますか?
富士通とか日立の8ビットパソコンに移植してみたいんですけど。
あとWIN−CE用のforthがあると助かります。

76 :中岡の玄ちゃん@似非ファーザー弁:01/12/09 17:32
深度25 sageるけぇのぉ

>>75 「forthのコード」
ソースのことか?だったら>>73-74のリンクにあるんじゃないんかのぉ。
不思議じゃわい。もののみごとに。

77 :デフォルトの名無しさん:01/12/09 22:24
物凄い勢いでオブジェクト指向FORTH製OSが立ち上がる画像キボンヌ
age

78 :デフォルトの名無しさん:01/12/10 01:15
盛り上がんねぇなぁ。いっちょあげ。

79 :デフォルトの名無しさん:01/12/10 02:53
さすがマイナー言語(w

80 :デフォルトの名無しさん:01/12/10 03:15
ちょい勉強してはじめてわかったけど、このスレの
タイトル、Forthのcolon definitionにちなんでるのね。

ダセェ顔文字かと思ってたよ…

81 :デフォルトの名無しさん:01/12/11 00:05
なるほど。気づかなかったよ。悪くないね。

82 :デフォルトの名無しさん:01/12/11 00:36
下のURLの所にANS ForthにMops風にオブジェクト指向拡張するソースが
あるんだけど、ANS Forth互換の環境で実際に試してみた人っている?

ftp://ftp.taygeta.com/pub/Forth/Applications/ANS/classM10.zip

オレのところではエラー出て止まっちゃうんだよね。

ftp://ftp.taygeta.com/pub/Forth/Applications/ANS/CLASS10.ZIP

↑こっちは動くんだけど、単一継承しかできないんだよねぇ。

83 :第4番目の名無しさん:01/12/11 02:20
>>82
ネタがあるならageようよ。(藁
漏れの所では試せません。スマソ。

>>26
パクリました。許可して。

84 :82:01/12/11 03:22
>>83
スマソ。ついクセで。
しかし最近の我が艦の深度は浅めぢゃのう。(違

>>漏れの所では試せません。スマソ。

ttp://www.forth.org/compilers.html

↑とりあえず。

GForthかpForthならたいていのプラットフォームで動くよ。
おヒマな人は試してみてね。

85 :デフォルトの名無しさん:01/12/11 19:32
42 pick

86 :デフォルトの名無しさん:01/12/11 19:33
>R

87 :デフォルトの名無しさん:01/12/11 19:34
>>86
アイゴー!

88 :デフォルトの名無しさん:01/12/12 23:57
今すぐL1-AしてOpenBootだ!

89 :サルベジ:01/12/13 00:52
今すぐ再起動 -> Command+Option+O+F してOpenFirmwareだ!

90 :デフォルトの名無しさん:01/12/13 11:01
そんで最後にFDISK/MBRしてCtrl-Alt-Delだ!

91 :22:01/12/15 01:23
>>42みたいなコードをANS Forth上で実行できるようにする代物を
>>82のリンク先のソースをベースにして今書いてます。
とりあえずCLASS10.zipのほうをもとにしているので多重継承はまだダメですが
その他の部分はそれらしく動作しているみたいです。
日本語の処理とか、いい加減にしかやってないのでハッタリもいいところですが。
たぶん明日ぐらいには公開できると思います。
GikoForthという名前にしようと思っているオイラは逝ってヨシ。

92 :デフォルトの名無しさん:01/12/15 09:28
期待アゲ

93 :デフォルトの名無しさん:01/12/15 11:42
期待age

94 :22:01/12/15 13:52
さげとこう‥‥‥。
http://www.geocities.co.jp/SiliconValley-SanJose/4733/

ターミナルから

include giko.fth

テストプログラムは、

include dasure.fth

testと打ち込んで改行。

95 :22:01/12/15 14:03
パーサーを全くいじってないので、半角スペースで
分かち書きしなきゃいけないです。メンドイです。
pForthの場合、辞書にはUPPER処理されて登録されてしまいますが、
なんとなく動きます‥‥‥。
へたれですまぬ‥‥。

96 :デフォルトの名無しさん:01/12/15 19:38
>>94
文字化けするYO!

97 :22:01/12/16 17:53
>>96
出力先をファイルにしてみてヨ。

でも結局、日本語を正しく扱えるANS互換FORTH処理系がないと
意味なしカモ‥‥。

pForthのソースを見ると、パーサーと辞書登録に関する部分はCで
書かれてるんだよね。
pForthはパブリックドメインなので付属のソースコードを書き換
えて日本語対応にすればいいんだけども。
MPWどこにしまっちゃったかなぁ。

98 :デフォルトの名無しさん:01/12/17 02:20
>>97
MacOSXに移ろうYO!
NSDictionaryで一発さ!HAHAHA!

99 :22:01/12/17 23:34
>>98
ソウナノカー。
でもオイラまだMacOSX持ってないのヨ。ホスィーヨォ
ってか、土曜日にうぷろーどしたソースにバグがアターヨ。(恥宇津氏
コソーリなをしたよ。
へたれでスマソ‥‥。

100 :デフォルトの名無しさん:01/12/18 00:16
>>99
簡単な処理系キボンヌ

101 :22:01/12/19 01:09
>>100
すぐに実行できるバイナリは用意したいとは思うけれども、
今、忙しいのでかなり気長にお待ち下さい。
あとオイラにはマク用しか用意できません。
(だれかオイラにG4を‥‥iBookでもいい‥‥クレ。)
あなたがマカーならフォントパチーンをインストールして、
フォント置き換えアプリにpFORTHを指定してから、
pFORTHと同じフォルダにGiko.fthを置き、pFORTHの
コンソールから
include Giko.fth
と打ち込んでreturnキーを押せば、取りあえず試してみる
ぐらいのことは出来ますよん。

102 :98:01/12/20 01:45
たまにはageんとな。

>>22
MacOSXに移ろうYO!カマーン!

103 :22:01/12/20 01:56
>>102
よっっしゃぁ!Let's OS Xっ!!
‥‥とまあいけばヨシ。
>>101であんなこと書いてますが結局、MPWでビルドし直すことに今日
手を付けてしまいました‥‥。
今宵のうちに例の場所にうぷしときます。

104 :98:01/12/20 02:00
OSXなのでなんとも言えないです。
Classic捨てたし。
昔もよかったなぁ…MPWか……

105 :22:01/12/20 02:14
>>104
あぁ!そうだったノカ〜。
Classic捨ててる人もいるのねん。
いま試そうとおもったんだけど、SIOWアプリはCarbonでビルドできないみたいねぇ。(鬱
すまないが、オイラがG4を手にする日までしばらくお待ちを。

‥‥>>98が自分でOS X上にビルドすると言う手もあるゾ。(ボソッ)

106 :22:01/12/20 02:51
うぷしました。
でもpForthをMPWのSIOWアプリにビルドし直して、
Giko.fthを自動で読み込むようにしただけ‥‥。
‥‥しかも今どきクラッシックアプリ。

‥‥‥‥‥へたれでスマソ。

107 :98:01/12/24 11:30
どうよヽ(´ー`)ノ

108 :名無しさん@Emacs:01/12/24 13:42
tile-forth という処理系には、forthで書かれたオブジェクト指向拡張
がサンプルとして入っている。

ftp://ftp.forth.org/pub/Forth/Compilers/native/unix/tile-forth-2.1.tar.z

message position ( x y self -- )
message write ( self -- )
message read ( self -- )

Object subclass Point ( x y -- )
  long +x ( self -- addr)
  long +y ( self -- addr)
method initiate ( x y self -- )
  dup >r super initiate r> position
;
method position ( x y self -- )
  tuck +y ! +x !
;
method where ( self -- x y)
  dup +x @ swap +y @
;
method write ( self -- )
  dup super write where ." x: " swap . ." :y " .
;
subclass.end

10 10 Point instance aPoint
aPoint write cr
-10 -10 aPoint position
aPoint write cr
aPoint read
cr

こんな感じ。

109 :デフォルトの名無しさん:01/12/24 16:20
>>108
おぉ。なんか見やすいっすな。やっと第4世代って感じですな。
ちょっと触ってみます。サンクス。age

110 :22:01/12/24 17:11
>>108
をを!
tile-forthぢゃないですか。
一応オイラもチェック入れてます。
tile-forthのoop拡張はselfを常にスタックトップに残すんでしたっけ?

111 :22:01/12/24 17:14
>>110
自分でかいといてスンマヘン。
サンプル良く見ればわかりました。

112 :22:01/12/24 17:32
>>107
GikoForthのクラッシク版はとりあえず、辞書に日本語のワードが
UPPER処理されないような修正だけしてソース付きで、>>94
のリンクの場所に置いてますです。

‥‥G4買うべく働いてます。(;´Д`)

113 :デフォルトの名無しさん:01/12/24 20:35
なるほろ。
tile-forthってプロトタイプベースなわけですか。
で、クラスに基づく継承もできる、と。
勉強になりました。

114 :デフォルトの名無しさん:01/12/24 22:39
tile-forthってまだ生きてたの。
俺が知る限りUNIXプラットフォーム初のForth処理系だった。
でも、ANS標準以前の言語仕様だったような気がするなぁ。

115 :デフォルトの名無しさん:01/12/24 23:01
>>114
ソースの拡張子から想像するにFORTH-83系のようです。
まあ、FORTHは生みの親が「標準化なんてツマラン」みたいなこと
言ってるし、そのせいか、ANSはいつまでたってもドラフトのままだし。

116 :デフォルトの名無しさん:01/12/24 23:30
>115 C.Mooreのオッちゃんな。
尊敬してるけど、ラディカル過ぎて正直ついていけない。
COLOR FORTHとかまで逝っちゃうと、FORTHの本質って結局何?
ってなもんです。

117 :デフォルトの名無しさん:01/12/24 23:48
>>116
Color FORTHはついてけないです。
文字コードなんか5ビットもあれば十分とか言ってるし。(;´Д`)
世の中の流れと全然逆だよう。>ムーアのオッチャン。

118 :114,116:01/12/24 23:54
>117 なんかストレージはフロッピー一枚で十分とか言ってるしなぁ。
あ、でもForthチップの仕事とかは面白そうだったのだが、今どうなのだろう?

119 :115,117:01/12/25 00:07
>>118
Forthチップって良く知らなかったんですが、

ttp://www.ultratechnology.com/chips.htm

↑コレですか?
使われてるのかなぁ……??

120 :デフォルトの名無しさん:01/12/25 00:27
>119 興味深いURLをサンキュウ

HarrisのRTX-32とかは航空宇宙分野で結構使われたようです。

大昔にNovix NC4000のアーキテクチャに感動したことがあるんです。
パラメタスタックとリターンスタック専用データバスがあったり
一機械語中にFORTHのワードが複数埋め込まれててなかなか速そう。

121 :デフォルトの名無しさん:01/12/25 00:45
>>120
> HarrisのRTX-32とかは航空宇宙分野で結構使われたようです。
かっちょエエ〜!
さすが組み込みに強いFORTH(藁

122 :デフォルトの名無しさん:01/12/25 17:55
>>108
う〜ん。インスタンス変数の内容をとってくるために毎回selfから計算し直す
のはメンドクサイ気がしますが‥‥‥。

123 :デフォルトの名無しさん:01/12/28 00:11
forthのオペレーターわけわかんないんだけど、
>>108のコードを説明してくれないかなあ・・

124 :デフォルトの名無しさん:01/12/28 19:42
>120
遠い昔、「標準FORTH」(だったと思う)を読んで、自分でも
8bitパソコン上にFORTHを実装しかけたことがあるんですが、
インナーインタプリタのコードを書きながら、
「最初からCPUがindirect threaded codeを解釈すりゃいいのに。」
と思ったものです。
FORTHマシンは実在していたんですね。ええモンを拝ませてもらいました。>119

125 :デフォルトの名無しさん:01/12/28 20:15
>>108じゃないんだけど、少し基本的なオペレータを解説してみる。
「(」と「)」に挟まれた部分はForthではコメント扱いだけど、
あるワードの操作によってスタックの状態がどう変化するか、
ということをあらわすのに伝統的に使われる。

( a b -- c )

とあったら、スタックトップ(TOS)のbとそのひとつ下のaが操作に
使われ、cという値がTOSに返る、という意味。

@ ( addr -- n )
addr番地のメモリの内容をTOSに返す。

! ( n addr -- )
addr番地のメモリへnを書き込む。

dup ( n -- n n )
TOSを複製してスタックに積む。

swap ( a b -- b a )
TOSとその次を入れ替える。

tuck ( a b -- b a b )
TOSを2つ下に複製する。

>r ( n -- )
TOSを取り出しリターンスタックに積む。

r> ( -- n )
リターンスタックのトップの内容を取り出してパラメタスタックへ積む。

126 :125:01/12/28 20:36
>>108のpositionというメソッドの呼び出しの時点ではスタックは、
x y self
となっているけど、tuckが実行されると、
x self y self
という状態になる。次に+yが実行されると、
x self y addr
になって次の!でaddr(+yに相当するインスタンス変数のアドレス)に
yが書き込まれてスタックは
x self
ここで+xが実行されると
x addr
になって、次の!でaddr(+xに相当するインスタンス変数のアドレス)に
xが書き込まれて無事終了。(ふー。)

whereメソッドその他は省略します。(w

つまり、>>122のいうようにtile-forthのoop実装では、+xや+yは
毎回TOSのselfにオフセット値を足して実際のインスタンス変数の
アドレスを生成していると考えられるわけです。
ちと面倒か? Forthらしいといえばそうかもしれませんが。

97 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)