トップページ⇒tech
390コメント146KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001 1NGNG
ニッチ(Mac)の中のニッチ(FORTH)。
オブジェクト指向FORTH言語、Mopsについて語るスレ。
いや、語れるのか‥‥?
00021NGNG
参考URL
http://www.netaxs.com/~jayfar/mops.html
0003デフォルトの名無しさんNGNG
そういや Mops 落としたことあるけど、全く使ってないな。
つか、中身も全然みてない。

FORTH がどうやったらオブジェクト指向になるんだろう。
確かに 1 2 + . がメッセージパッシングとして見えなくは
ないけど。クラスの定義とか継承とかできるんだっけ。

よかったら解説きぼん。
00041NGNG
>3
オブジェクトにメッセージを投げるのは、

 someMessage: anObject

のよーにする。最後に『:』のつくワードはメッセージと解釈される。
パラメタが必要な時には someMessage: の前にスタックに積んでおくぞ。FORTHだからね。
最後に『:』のつくワードはコンパイル時に、直後に置かれたオブジェクトを調べて
メソッドの結合を済ませてしまう。静的束縛なわけだ。

動的束縛にしたい時は、

 someMessage: [ anObject ]

という具合にオブジェクトをカギカッコでくくっておく。するとメソッドの結合は、
実行時まで遅延される。C++と違って呼び出し側が選ぶわけね。
(メソッドディスパッチのためのテーブルを常に辞書に抱えてるのね〜。メモリ食いかも〜。)
00051NGNG
4の続き。

FORTHであるが故に、メッセージ: オブジェクト の順序になるのだが、結果として、

print: GIKO

のごとく英語の語順としては自然になるため思ったより読みやすい。
(逆に「日本語でワードを登録したらMINDみたい!」、ってわけには逝かなくて残念無念。)
00061NGNG
クラス定義は

:class someClass super{ superClass1 superClass2 }

var someVariable

:m someMethod { n1 n2 -- }
n1 n2 +
put: someVariable
;m

;class

みたいな感じっス。
スーパークラスは複数許されるので多重継承可能っす。

someClass MONA

1 2 someMethod: MONA

とするとMONAオブジェクトのsomeVariableに3が入るぞな。
0007デフォルトの名無しさんNGNG
>>5
逆だったらよかったのかもね。
GIKO print:
っていう語順、つまりStackTopにselfが置かれて、messageなOperatorはまずStackからselfをpopするっていう形ならば。

でもそれだと、メソッドの静的結合は、困難になるかな。
まあ動的オンリーでいいじゃんという気もするが。
00081NGNG
>7
ややっ。もしかしたら静的束縛も可能かも。
メッセージ側に静的束縛を示す修飾子みたいなのを用意して、
オブジェクトのコンパイル時に直後のメッセージが修飾子付きなら
メソッド結合を済ませたコードを生成すればいいのかも。
修飾子なしならオブジェクトのselfをスタックトップに積む。
いかが?
00092NGNG
解説どうもありがと。>>8

私も >>7 と同じで、レシーバを後に書くのは逆に FORTH的じゃないような
気がしたんだけど、message を先にスタックに積んでおいて後でオブジェクトを
作用させることで挙動がポリモーフィックになるとすれば、納得できるような
気もする。

ところでメッセージを実行した後のスタックの状態はどうなるの?
そのメッセージを受けたオブジェクトがスタックに残るわけかな。
スタックトップにあるオブジェクトにメッセージを送ることはできるの?
00101NGNG
>9
メッセージを実行した後には、呼び出されたメソッドが残したスタックの状態以外なにも
残らないです。分かりやすいのですが、メッセージを連続的にオブジェクトに流し込むSmalltalk的な
使い方ができない原因でもあります。
スタックトップにあるオブジェクトにメッセージを送る場合は、

anObject someMessage: []

という構文が使えます。スタックトップのオブジェクトの解釈は実行時までわからないハズなので、
動的束縛による呼び出しになりますが、そのオブジェクトの属するクラスをコンパイル時に指定
してイイ場合には、

anObject someMessage: class_as> someClass

という呼び出し方をすることで、実行時のオーバーヘッドを小さくする事が出来ます。
0011デフォルトの名無しさんNGNG
forthでOOPしたいんか?
0012デフォルトの名無しさんNGNG
>11
したいっていうか、もうやっちゃってる人がいる。(w
00132NGNG
>>10
あそうか。メソッドの結果をスタックに残す場合、デフォルトで
レシーバもスタックに残っちゃうとかえって扱いにくいだろうな。

> anObject someMessage: []

なるほど。てことは、メソッドの中で復帰値として自分自身を明示的に
スタックに積んで終了すれば、同じオブジェクトに連続的にメソッドを
作用させることもできるわけだよね。

> anObject someMessage: class_as> someClass
> という呼び出し方をすることで、実行時のオーバーヘッドを小さくする事が出来ます。

メソッド呼び出しの束縛の仕方を動的にするか静的にするかを C++ の
ように定義側ではなく、呼び出す所で選択できるのはなかなかよい
ですねぇ。結構イケてる言語なのかも。
00141NGNG
>13
> なるほど。てことは、メソッドの中で復帰値として自分自身を明示的に
> スタックに積んで終了すれば、同じオブジェクトに連続的にメソッドを
> 作用させることもできるわけだよね。

なるほど、そういうやり方もありますね。

> 定義側ではなく、呼び出す所で選択できるのはなかなかよい
> ですねぇ。結構イケてる言語なのかも。

面白い言語だと僕は思うんですけど、あまりにマイナーなもので‥‥。
呼び出し側が束縛の仕方を選べる言語って他にあるのかな?
私は詳しくないんですが。
00152NGNG
>>14
> 呼び出し側が束縛の仕方を選べる言語って他にあるのかな?

あまり聞いたことないすね。そもそも動的なのが普通だから。
C++ みたく実行効率重視の言語だけが両方持ってるんじゃないかな。

> 面白い言語だと僕は思うんですけど、あまりにマイナーなもので‥‥。

やっと思い出したんだけど、Mops 落としたのに結局使わなかったのは、私が
Mac 持ってなかったからでした(大藁

で、Mac以外でも使えないかと捜してみたら

http://www.asahi-net.or.jp/~uw4s-wtnb/chidori-mops.html
このページにある FAQ に「Win32Forth が Mops のオブジェクトモデルを
取り入れている」とあって、下から落とせるみたいね。

http://www.taygeta.com/forthcomp.html
0016デフォルトの名無しさんNGNG
MOPSって、CLOSのMOP(meta object protocol)の
ことじゃないですよね・・?
00172NGNG
Mops も CLOS も詳しくないのでアレだけど
>>16
Mops は
Michael's Object-oriented Programming System

とのことなので MOP とは関係ないみたい。
とは言え、Mops のベース言語である FORTH 自体が自己拡張性を
持った言語なので Mops でもその辺の機能がある程度使える、
…かもしれません。
00181NGNG
>>15
> C++ みたく実行効率重視の言語だけが両方持ってるんじゃないかな。

一般的なオブジェクト指向言語から見るとC++のほうが特殊というわけですね。

> このページにある FAQ に「Win32Forth が Mops のオブジェクトモデルを
> 取り入れている」とあって、下から落とせるみたいね。

そんなものがあったんですね。気がつきませんでした。
我々は孤独ではなかった!(藁
アセンブラでかかれているMopsのコア以外の部分はFORTH自身で記述されてい
るので、やろうと思えば別のFORTH処理系にも持っていけるのかも。

>>17
> Michael's Object-oriented Programming System

Michael Horeっていうオーストラリアのおぢいさん(孫がいるらしい)が一人で
開発しているらしいデス‥‥。
0019デフォルトの名無しさんNGNG
forthって中間言語以外の用途ってあるんでしょうか
0020デフォルトの名無しさんNGNG
Forthを中間言語に使っているシステムってどれ?
0021元潜水艦乗りNGNG
保守カキコ。深度285/376。sageヨシ。
>>19-20
中間言語ってのとは少し違うがSunのOpenBootとかAppleのOpenFirmware
とかはFORTHみたい。
JavaのVMはスタックマシンみたいだけどスタックマシンならFORTHか?と
言われると少し違うような気がする。
っていうかたいていのコンパイラはスタックマシン向けのコードを生成して
からレジスタ割付けなんかをやって最適化したネイティブコードを作ってる
のでないかな?でもそれをFORTHとはよばないやうな。
あんまり知らんけど。
0022元潜水艦乗りNGNG
保守カキコ。深度189/378。sageヨシ。
ぢつは、日本語化をあれから少しだけやってみた。
クラス定義だけできるようになった。
↓

「 モナークラス 」は「 オブジェクト 」を継承し、
『 セリフ: " オマエモナ〜" 』
を実装する。

メソッドを呼び出す構文で良いのが思い付かず、途中やめにしてる。

へたれです………。
0023デフォルトの名無しさんNGNG
    ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 〜' ― (,,゚Д゚) < 深度248/402。sage!!
  し― し-J  \___________
0024デフォルトの名無しさんNGNG
爆雷投下
0025デフォルトの名無しさんNGNG
たどり着いたらいつも雨降り
0026第4番目の名無しさんNGNG
OpenFirmwareから書き込んでいますうそ
FORTHの考え方は好きだなぁ。
フェチ逝って良しですか?
0027デフォルトの名無しさんNGNG
スタックトップのオブジェクトをレシーバーとする方がきれいだと
思うがなあ。anObject message とか。

数値も文字列もオブジェクト。+や.もメッセージと考えればすべて
うまくいくような。あ、引数なしのメッセージが困るか?
002825NGNG
>27
そういうのも蟻だと思う。
ANS仕様のForthならインタプリタやコンパイラいじり放題だから俺流アプローチのOOPが可能だよね。
俺は挫折したけど。
002922NGNG
>>27
たしかに、

anObject message

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

>>28
Forthはいじり放題、てのには激しく同意。
制御構造だろうがなんだろうが俺流につくれてしまう
Forthマンセー。
なんだけどおかげで方言だらけ(涙)。
Mopsも完全にはANSI互換じゃないしなぁ‥‥。
0030デフォルトの名無しさんNGNG
>>26
名前がとても良いです。
このスレのデフォルトにしたいぐらいに。
0031デフォルトの名無しさんNGNG
メタコンパイルage
0032第4番目の名無しさんNGNG
>>30
サンクス。
003322NGNG
Mopsではmessageには

print:

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

印刷する。

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

1)
anObject p1 p2 p3 message

2)
p1 p2 p3 anObject message

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

家政婦 は、

 (‥‥この間100行。)

見た。

あ、助詞をうまく使えば両方の構文を実装できるやうな
気もしてきた‥‥‥。
0034デフォルトの名無しさんNGNG
たった一つだけ スタック制御だけ

なんでもないですage
0035デフォルトの名無しさんNGNG
>助詞をうまく使えば

それはForthよりもSmalltalkに近い、という説が。
tp://isweb21.infoseek.co.jp/computer/h_yanai/html/B8E5C3D6A5ADA1BCA5EFA1BCA5C9A5E1A5C3A5BBA1BCA5B8.html
003622NGNG
リンク先を読みました。
似たような(たのしそうな)議論をしてますね。(^^
1)の構文のように複文かましてオブジェクトに流し込むという感覚は、
Smalltalkぽいわけですね。むー。
「スタックから何個オブジェクトもらうかはウチで決めさせてもらいますわ。」
の2)の構文のほうが確かにForthらしいか。
助詞によるパラメタのコントロールは魅力的だけど、スタック操作の実装を考えると、
オレみたいなへたれには荷が重いかも‥‥。
のんびり考えてみます‥‥。
0037デフォルトの名無しさんNGNG
salvage
0038デフォルトの名無しさんNGNG
    ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 〜' ― (,,゚Д゚) < Forthのプロジェクト成功率は30%!!
  し― し-J  \___________

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

‥‥微妙に中途半端だな。
0039デフォルトの名無しさんNGNG
312 PICK
0040デフォルトの名無しさんNGNG
DROP
004122NGNG
モプースの日本語化がわずかばかり進みましたのでご報告。
anObject someMessage 型のメソッド呼び出しが出来るようになりました。
↓現在こんな感じ
004222NGNG
need モラセト

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

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

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

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

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

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

endload
004322NGNG
で、実行結果は↓

10 駄スレ

逝ってよし!ハゥッ
オマエモナ〜ハァハァ
逝ってよし!ハゥッ
オマエモナ〜ハァハァ
逝ってよし!ハゥッ
オマエモナ〜ハァハァ
逝ってよし!ハゥッ
オマエモナ〜ハァハァ
逝ってよし!ハゥッ
オマエモナ〜ハァハァ
004422NGNG
モナー が 話せ。
なら動的束縛。

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

助詞は実は読み飛ばしてます。
へたれでスマソ。
0045デフォルトの名無しさんNGNG
52 PICK
0046デフォルトの名無しさんNGNG
>>22

見てる分にはなかなか面白いかも。
Mopsってのは知らないけど、ForthとSmallTalkの
知識のみでだいたい理解出来るし。
004722NGNG
>> 46
自分でいうのもなんですが日本語化したリストを打ち込むのは正直メンドイ。
でも見た目重視なので名前付きパラメタへの代入記号が→だったりします。(w
SmalltalkはSqueakを以前ダウンロードしてみたことがありますけど、継続して
使ってみてないのであんまり知りません。
Smalltalkのメソッド呼び出しの語順を逆にしたものがMops‥‥?
0048デフォルトの名無しさんNGNG
見るだけで満足できるスレだな。
良スレage
0049デフォルトの名無しさんNGNG
さげ!
今後は新言語を発明しなかった奴にベストプログラマー賞をやれや。
0050デフォルトの名無しさんNGNG
>>49
アイヤー、Mopsはちっとも新言語じゃねぇっす。
Neonという名前の商用製品だった頃を含めればMac用開発言語の中でもカナーリ古株ですね。
マイナーだけど。



でもsage。
005146NGNG
Transcript show: 'Hello World'

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

モナーが話せ。

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

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

となる、という事か?

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

" Hello World" show: Transcript

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

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

モナークラス モナー

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

=> Hello, world

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

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

も実行できますけど。
005322NGNG
>>52
補足すると、Mopsが、インプットストリームから切り出したワードの
最後が『:』である事から、オブジェクトに対するメッセージか否かを
判別している箇所を拡張して、最後が『。』ならスタックトップの
オブジェクトへメッセージをsendするようにコンパイルしてます。
だから、パラメタはオブジェクトより前にないとダメです。
将来的に>>33の1)みたいな構文ができると楽しいとは思います。
あと趣味でやってみてるだけなので実用性は期待してませンです。(w
005422NGNG
>>50
でもNeonの頃は単一継承で動的束縛のみだったと思う。
ドキュメントのどこかで読んだだけで直接当時を知ってるわけ
ではないけれど。
オーストラリアのおじさんが残りの仕様を付け足した。
同じNeonから別れたYerkってのもあったハズ。
0055デフォルトの名無しさんNGNG
自分 で 上げ。
0056デフォルトの名無しさんNGNG
普通のFORTHスレってないの?
勉強してみたいんだけど。
0057名無しさん@EmacsNGNG
ふつーにGNU Forthのドキュメントでも読めば
十分勉強できると思うよ。
0058デフォルトの名無しさんNGNG
>>56
ハゲドー
0059デフォルトの名無しさんNGNG
あげよう子供ライオン

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

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

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

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

コンパイルしたものの動かしかたについては、どうすればいいんだろうな。
postscriptでいう「mark」のようなものをstackに積み、
ここから1つのmessage sendingが起こる、ということを
おしえればいいだろうか。つまりstackに
mark receiver param1 param2 ...
と積まれた状態でmessageを実行すると
stacktopから(最初にみつかる)markまで掘り下げて
receiver とparamを拾ってくる、という。
これできちんと動くかどうかは検証してないけど。
0060デフォルトの名無しさんNGNG
>>57
本を何冊か読んだけど途中からわからなくなります。
8ビットで遊んでみたいからforthみたいな小さい言語はぴったりだと思うのですが
逆ポーランドにいまだ馴染めません。
0061デフォルトの名無しさんNGNG
>>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とかスタック系言語一般を扱うことにすれば、多少は人が集まるか?
006222NGNG
>>59
え〜2つほど案があります。
文法的にはどちらも、

anObject mark1 param1 param2 paramN mark2 someMessage

になります。

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

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

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

で、mark1とmark2に助詞をあてればよいのかな?と思っていますが、
実装するヒマがありません。
0063デフォルトの名無しさんNGNG
>>62

そのmark1,mark2って、
その位置を「anObjectの後」「someMessageの前」じゃなく
「anObjectの前」「someMessageの後」に換えると、
あら不思議、Lispみたいな言語になってしまう(笑)。
語順は逆だけどね。
0064デフォルトの名無しさんNGNG
リアル厨房だけど。いれさせて。
OpenFirmwareについてはちょっと関心あるなぁ。
あれってForthインタプリタなんでしょ?
それでいてブートローダ?BIOS?
…知識はないけど関心なら。(汁
0065デフォルトの名無しさんNGNG
BIOSにforthみたいな「(作るのが)簡単な」言語をいれるのは
わりとメジャーらしいですよ。

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

同じくらい作るのが楽な言語といえばlisp系もなんだけど、
あれもブートローダーにしてる人(会社)は居るんだろうなあ。
0066デフォルトの名無しさんNGNG
>>64
> あれってForthインタプリタなんでしょ?
> それでいてブートローダ?BIOS?
BIOSというよりはブートローダですね。
FORTHを知らなくてIF文の書き方に戸惑っているデベロッパが世界中にいそうだ。
0067デフォルトの名無しさんNGNG
>>65-66
あぁ〜。ますますゾクゾクしてきますな。
OpenFirmwareのプロントがForthインタプリタと知り、
実際に使ってみた時、ちょっと感じるものがありましたが…
ブートローダってことはちっちゃいOSといってもいいのかなぁ。
勉強してみます。
006822NGNG
>>63
もちろん「無名ワード」はLispからのパクリです。
無名ワード案でいくと、ForthとLispとSmalltalkを多重継承して見た目が
日本語のキモい言語になる?
でも実装が面倒クサそう。
0069デフォルトの名無しさんNGNG
FreeBSDのブートローダがForthで書かれている。

Forth総合スレ欲しいよ。
0070デフォルトの名無しさんNGNG
>>69
ここでええんでないの?
0071デフォルトの名無しさんNGNG
GNU GRUBも正直Forthなら良かった。
いまの設定ファイルは記述力が低すぎる。
0072デフォルトの名無しさんNGNG
>>70
名称の問題ですね。mops知らん人は通りぬけちゃうかも。

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

スレに「別名つける」機能とか「リネームする」機能とかが
あればよかったのにな。ただ、あったらあったで変に濫用するやつが
後たたなくて困るだろうけど。
007367NGNG
>>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
\ 情報少ないっすね…
0074デフォルトの名無しさんNGNG
深度浅め。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
0075デフォルトの名無しさんNGNG
forthのコードって出てますか?
富士通とか日立の8ビットパソコンに移植してみたいんですけど。
あとWIN−CE用のforthがあると助かります。
0076中岡の玄ちゃん@似非ファーザー弁NGNG
深度25 sageるけぇのぉ

>>75 「forthのコード」
ソースのことか?だったら>>73-74のリンクにあるんじゃないんかのぉ。
不思議じゃわい。もののみごとに。
0077デフォルトの名無しさんNGNG
物凄い勢いでオブジェクト指向FORTH製OSが立ち上がる画像キボンヌ
age
0078デフォルトの名無しさんNGNG
盛り上がんねぇなぁ。いっちょあげ。
0079デフォルトの名無しさんNGNG
さすがマイナー言語(w
0080デフォルトの名無しさんNGNG
ちょい勉強してはじめてわかったけど、このスレの
タイトル、Forthのcolon definitionにちなんでるのね。

ダセェ顔文字かと思ってたよ…
0081デフォルトの名無しさんNGNG
なるほど。気づかなかったよ。悪くないね。
0082デフォルトの名無しさんNGNG
下の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

↑こっちは動くんだけど、単一継承しかできないんだよねぇ。
0083第4番目の名無しさんNGNG
>>82
ネタがあるならageようよ。(藁
漏れの所では試せません。スマソ。

>>26
パクリました。許可して。
008482NGNG
>>83
スマソ。ついクセで。
しかし最近の我が艦の深度は浅めぢゃのう。(違

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

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

↑とりあえず。

GForthかpForthならたいていのプラットフォームで動くよ。
おヒマな人は試してみてね。
0085デフォルトの名無しさんNGNG
42 pick
0086デフォルトの名無しさんNGNG
>R
0087デフォルトの名無しさんNGNG
>>86
アイゴー!
0088デフォルトの名無しさんNGNG
今すぐL1-AしてOpenBootだ!
0089サルベジNGNG
今すぐ再起動 -> Command+Option+O+F してOpenFirmwareだ!
0090デフォルトの名無しさんNGNG
そんで最後にFDISK/MBRしてCtrl-Alt-Delだ!
009122NGNG
>>42みたいなコードをANS Forth上で実行できるようにする代物を
>>82のリンク先のソースをベースにして今書いてます。
とりあえずCLASS10.zipのほうをもとにしているので多重継承はまだダメですが
その他の部分はそれらしく動作しているみたいです。
日本語の処理とか、いい加減にしかやってないのでハッタリもいいところですが。
たぶん明日ぐらいには公開できると思います。
GikoForthという名前にしようと思っているオイラは逝ってヨシ。
0092デフォルトの名無しさんNGNG
期待アゲ
0093デフォルトの名無しさんNGNG
期待age
009422NGNG
さげとこう‥‥‥。
http://www.geocities.co.jp/SiliconValley-SanJose/4733/

ターミナルから

include giko.fth

テストプログラムは、

include dasure.fth

testと打ち込んで改行。
009522NGNG
パーサーを全くいじってないので、半角スペースで
分かち書きしなきゃいけないです。メンドイです。
pForthの場合、辞書にはUPPER処理されて登録されてしまいますが、
なんとなく動きます‥‥‥。
へたれですまぬ‥‥。
0096デフォルトの名無しさんNGNG
>>94
文字化けするYO!
009722NGNG
>>96
出力先をファイルにしてみてヨ。

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

pForthのソースを見ると、パーサーと辞書登録に関する部分はCで
書かれてるんだよね。
pForthはパブリックドメインなので付属のソースコードを書き換
えて日本語対応にすればいいんだけども。
MPWどこにしまっちゃったかなぁ。
0098デフォルトの名無しさんNGNG
>>97
MacOSXに移ろうYO!
NSDictionaryで一発さ!HAHAHA!
009922NGNG
>>98
ソウナノカー。
でもオイラまだMacOSX持ってないのヨ。ホスィーヨォ
ってか、土曜日にうぷろーどしたソースにバグがアターヨ。(恥宇津氏
コソーリなをしたよ。
へたれでスマソ‥‥。
0100デフォルトの名無しさんNGNG
>>99
簡単な処理系キボンヌ
010122NGNG
>>100
すぐに実行できるバイナリは用意したいとは思うけれども、
今、忙しいのでかなり気長にお待ち下さい。
あとオイラにはマク用しか用意できません。
(だれかオイラにG4を‥‥iBookでもいい‥‥クレ。)
あなたがマカーならフォントパチーンをインストールして、
フォント置き換えアプリにpFORTHを指定してから、
pFORTHと同じフォルダにGiko.fthを置き、pFORTHの
コンソールから
include Giko.fth
と打ち込んでreturnキーを押せば、取りあえず試してみる
ぐらいのことは出来ますよん。
010298NGNG
たまにはageんとな。

>>22
MacOSXに移ろうYO!カマーン!
010322NGNG
>>102
よっっしゃぁ!Let's OS Xっ!!
‥‥とまあいけばヨシ。
>>101であんなこと書いてますが結局、MPWでビルドし直すことに今日
手を付けてしまいました‥‥。
今宵のうちに例の場所にうぷしときます。
010498NGNG
OSXなのでなんとも言えないです。
Classic捨てたし。
昔もよかったなぁ…MPWか……
010522NGNG
>>104
あぁ!そうだったノカ〜。
Classic捨ててる人もいるのねん。
いま試そうとおもったんだけど、SIOWアプリはCarbonでビルドできないみたいねぇ。(鬱
すまないが、オイラがG4を手にする日までしばらくお待ちを。

‥‥>>98が自分でOS X上にビルドすると言う手もあるゾ。(ボソッ)
010622NGNG
うぷしました。
でもpForthをMPWのSIOWアプリにビルドし直して、
Giko.fthを自動で読み込むようにしただけ‥‥。
‥‥しかも今どきクラッシックアプリ。

‥‥‥‥‥へたれでスマソ。
010798NGNG
どうよヽ(´ー`)ノ
0108名無しさん@EmacsNGNG
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

こんな感じ。
0109デフォルトの名無しさんNGNG
>>108
おぉ。なんか見やすいっすな。やっと第4世代って感じですな。
ちょっと触ってみます。サンクス。age
011022NGNG
>>108
をを!
tile-forthぢゃないですか。
一応オイラもチェック入れてます。
tile-forthのoop拡張はselfを常にスタックトップに残すんでしたっけ?
011122NGNG
>>110
自分でかいといてスンマヘン。
サンプル良く見ればわかりました。
011222NGNG
>>107
GikoForthのクラッシク版はとりあえず、辞書に日本語のワードが
UPPER処理されないような修正だけしてソース付きで、>>94
のリンクの場所に置いてますです。

‥‥G4買うべく働いてます。(;´Д`)
0113デフォルトの名無しさんNGNG
なるほろ。
tile-forthってプロトタイプベースなわけですか。
で、クラスに基づく継承もできる、と。
勉強になりました。
0114デフォルトの名無しさんNGNG
tile-forthってまだ生きてたの。
俺が知る限りUNIXプラットフォーム初のForth処理系だった。
でも、ANS標準以前の言語仕様だったような気がするなぁ。
0115デフォルトの名無しさんNGNG
>>114
ソースの拡張子から想像するにFORTH-83系のようです。
まあ、FORTHは生みの親が「標準化なんてツマラン」みたいなこと
言ってるし、そのせいか、ANSはいつまでたってもドラフトのままだし。
0116デフォルトの名無しさんNGNG
>115 C.Mooreのオッちゃんな。
尊敬してるけど、ラディカル過ぎて正直ついていけない。
COLOR FORTHとかまで逝っちゃうと、FORTHの本質って結局何?
ってなもんです。
0117デフォルトの名無しさんNGNG
>>116
Color FORTHはついてけないです。
文字コードなんか5ビットもあれば十分とか言ってるし。(;´Д`)
世の中の流れと全然逆だよう。>ムーアのオッチャン。
0118114,116NGNG
>117 なんかストレージはフロッピー一枚で十分とか言ってるしなぁ。
あ、でもForthチップの仕事とかは面白そうだったのだが、今どうなのだろう?
0119115,117NGNG
>>118
Forthチップって良く知らなかったんですが、

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

↑コレですか?
使われてるのかなぁ……??
0120デフォルトの名無しさんNGNG
>119 興味深いURLをサンキュウ

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

大昔にNovix NC4000のアーキテクチャに感動したことがあるんです。
パラメタスタックとリターンスタック専用データバスがあったり
一機械語中にFORTHのワードが複数埋め込まれててなかなか速そう。
0121デフォルトの名無しさんNGNG
>>120
> HarrisのRTX-32とかは航空宇宙分野で結構使われたようです。
かっちょエエ〜!
さすが組み込みに強いFORTH(藁
0122デフォルトの名無しさんNGNG
>>108
う〜ん。インスタンス変数の内容をとってくるために毎回selfから計算し直す
のはメンドクサイ気がしますが‥‥‥。
0123デフォルトの名無しさんNGNG
forthのオペレーターわけわかんないんだけど、
>>108のコードを説明してくれないかなあ・・
0124デフォルトの名無しさんNGNG
>120
遠い昔、「標準FORTH」(だったと思う)を読んで、自分でも
8bitパソコン上にFORTHを実装しかけたことがあるんですが、
インナーインタプリタのコードを書きながら、
「最初からCPUがindirect threaded codeを解釈すりゃいいのに。」
と思ったものです。
FORTHマシンは実在していたんですね。ええモンを拝ませてもらいました。>119
0125デフォルトの名無しさんNGNG
>>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 )
リターンスタックのトップの内容を取り出してパラメタスタックへ積む。
0126125NGNG
>>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らしいといえばそうかもしれませんが。
0127デフォルトの名無しさんNGNG
>>125
アンタ…アンタ最高や!めっさ最高や!
125ワッショイ! 125ワッショイ! 125ワッショイ!
0128デフォルトの名無しさんNGNG
>>127
ま、祭りか? (w

かつて年季の逝ったForthプログラマはメモリ上の変数をなるべく使わず、
複雑な処理を様々なスタック操作を駆使して実現することに血道をageた
と伝えられます。
そーいったコードは、呪文のようにしか見えず一般のプログラマをForthから
遠ざける原因になったとも伝えられます。
0129デフォルトの名無しさんNGNG
祭だ祭だワショーイ >>125

>>128
なんでスタックだけで?
「だって変数名考えんのメンドくさいんだもーん」
とかじゃないよね?
0130デフォルトの名無しさんNGNG
forthのスタックって、相対アクセスはできるの?
というかローカル変数ってあるの?
0131デフォルトの名無しさんNGNG
>>129
> なんでスタックだけで?
伝統的なForthのスタイルには局所変数が存在しないからです。

>>130
>forthのスタックって、相対アクセスはできるの?
スタックはスタックトップにしかアクセスできないが故に
スタックなのですぅ。

> というかローカル変数ってあるの?
>>129への回答に同じ‥‥‥ということでおしまいにしようか
とも思いましたが、実は最近のForthはローカルな変数も定義で
きます。また名前付きパラメタなどというForthらしからぬ機能も
あります。
0132デフォルトの名無しさんNGNG
久しぶりのレス流れだ!
ワッショイ!ワッショイ!ワッショイショイ!!
0133131NGNG
pForthの名前付きパラメタとローカル変数の宣言の例

: test { a b | c -- } a b * -> c c . ;

3 2 test
6 ok

「{」が名前付きパラメタの宣言の開始で、「a」と「b」が
スタック上の二つの数値に割り当てられる。(この場合aが3でbが2)
「|」以降「--」まではローカル変数の宣言部。
この場合cというローカル変数が一つ宣言されていることになる。
値を取り出すのは変数名を書くだけ。
代入は「->」という前置オペレータを使う。
ちなみに「.」はスタックトップをコンソールに数値表示するワードね。
Mopsも「|」が「\」という違いはあるけど同じ機能を持っている。
たぶん最近のForth処理系は相当する構文を持っていると思う。
0134デフォルトの名無しさんNGNG
いわゆるローカル変数はないけれど、Forth の機能の範疇で
スタック上に領域を確保して名前を付ける仕掛けを作ることは
できますね。

あと CONTEXT の VOCABULARY を切り替えるとかして変数の
セットを入れ替えるとかで代用可能かも。

VOCABULARY の機構って、ディレクトリに格納されたコマンドが
実行パスから検索されて実行されるのに似ている。
Forth の重要な機能一つだと思うのだが、あまり語られない。
8bitマイコン向けに作られた Forth だと、この仕掛けが省略されて
いたりしてずいぶん萎えたよ。
0135デフォルトの名無しさんNGNG
>>134
かろうじて思い出しました。辞書のリンクがツリー状になってるような
イメージでしょうか?
昔読んだ本の中のForthはそういう機能を持っていたような。
ああヤパーリ、ムーアのおっちゃンは偉大やったんやなぁ。
0136デフォルトの名無しさんNGNG
>>135
> ああヤパーリ、ムーアのおっちゃンは偉大やったんやなぁ。
時々奇妙奇天烈な事をお言いになりますが。
0137デフォルトの名無しさんNGNG
>>134
今確かめてみたら、>>133のような名前付きパラメタってANS Forthだけで実装
できるんですね。なるほろ。
0138デフォルトの名無しさんNGNG
>135 ポピュラーだった FIG Forth だと一度に一つの VOCABULARY しか
探索できなかったと思う。
Forth 社の処理系は現在の ANS 仕様に近い強力な機能を持ってたみたい。
0139デフォルトの名無しさんNGNG
>>136
天災となんとかはカミ一重と昔からいいますし‥‥。(w
強烈な個性の持ち主であるn
0140139NGNG
途中で改行打っちゃった。
強烈な個性の持ち主であるのは確かですね。
0141デフォルトの名無しさんNGNG
>>138
Forthの処理系って微妙な方言がありましたよね。
ANS の CREATE DOES> に相当するワードなんかは、
FIGとかFORTH 83とかで全然違ったよーな。でもあまり覚えてないから
不確かですが。
0142134=138NGNG
>141 そうそう、良く知ってるねー。
FIG のやつは同じ事をするのにトリッキーでダーティな方法使ってた気がする。
やっぱり詳細は忘れてるので聞かないで頂戴な。
0143デフォルトの名無しさんNGNG
>>141
Forth の処理系って微妙どころか方言の嵐じゃないの。
カッコでくくってリスト処理すればなんでも Lisp、
ワードを並べてスタックに入れればなんでも Forth
ってように。
0144134=138=142NGNG
>143 まあ、ムーアのおっちゃんじゃないけど、
Forth のプログラミングってのは、その目的専用の新しい言語を
デザインするような作業だから、自由度さえ高ければ方言自体は
あまり問題にならないと思います。
0145141NGNG
>>143
組み込み済みのワードとユーザー定義のワードに差が全くないという方面では
Lispも似たような感じですね。Lispはワードとは言わないけれど。

>>144
自分専用のワードを作っていくと、新しい言語を作っているような気分になって
きますね。そこがグっとくるところ。
0146デフォルトの名無しさんNGNG
住人の少ないスレだが、貴様たち今年もよろしくage。
0147デフォルトの名無しさんNGNG
>ALL そういうことなので、本年もよろしく。
深夜になると、上がるのね。
0148デフォルトの名無しさんNGNG
forthで再帰処理とかってどう書くの?フィボナッチとか。
0149デフォルトの名無しさんNGNG
あけおめ。
RECURSEっていうワードを使うよん。

フィボナッチ↓
ttp://bishop.fuis.fukui-u.ac.jp/~nishino/hobby/prog/forth/fib-com.fs

FORTHはすでに存在するワードの再定義が可能なんだけど、再定義の中で
再定義する前のワードを呼び出せるように、(オーバーライドしている
メソッド中でスーパークラスの同名メソッドを呼び出す所を想像すれば良い
かと思われ)定義中のワードが辞書探索でヒットしない代わりにすでに定義
されている同名ワードがヒットするようになっている。
ヒットしない自分自身の代わりに使われるのがRECURSEというワードなわけです。

ちなみにMopsは一応、末尾再帰の最適化をやってるみたい。
0150デフォルトの名無しさんNGNG
あけおめ。

>>149
なるほど。
それを実装してみようと思うんだけど、
自分自身へのポインタを返すってことでいいのかな?
0151149NGNG
>>150
内部インタプリタがindirect threaded codeを解釈するpForthの場合、
RECURSEのワード定義は↓

: RECURSE latest name> compile, ; immediate

latestは辞書の最新のエントリのネームフィールドアドレスをスタックに返し、
name>がそれを実行アドレスにしてcompile,が書き込みをやってる。
immediateワードなのでコンパイル時にこれらの作業が行なわれて、実行時には
普通ののワード呼び出しと変わらない形になってる。
でもこれ末尾再帰の最適化はしてないね。

Mopsの場合はネイティブコードコンパイラで、末尾再帰、末尾呼び出しなどの
最適化をごりごりやってるものだから、RECURSEの実装は複雑怪奇ですなぁ。
アセンブリコードの書き換えをやってるのかな?(PowerPCの機械語なんて知らないよぅ。)
RECURSE自身はやはりimmediateなワードです。
結局ただのジャンプ命令にコンパイルされる模様。
0152デフォルトの名無しさんNGNG
ムーアの法則age

>>149
なるほど。盛れも今forth系の言語1つ作ろうと思っているんだけど、
recurseとかsuperとかをどう実装すりゃいいか迷っていたんで、
それ参考にさせてもらいますです。
0153デフォルトの名無しさんNGNG
superのメソッドを呼び出す実装の仕方はOOPの流儀でいろいろだけど、
Neon/Yerk/Mopsの場合は、隠れたインスタンス変数としてsuperと
selfをオブジェクトは持っているというトリックを使ってるね。

ttp://www.zetetics.com/bj/papers/oofs.htm

↑ちと古いけどコレまで実装されたOO Forthの比較ページ。
参考にしてみるとおもしろいかも。
ここに載ってないGForthとかのOO拡張の一つにはインターフェースとかも
取り入れられているみたい。
あんまり真面目に調査してないので詳細はわからないけど。
いずれにしてもForth自身でOO拡張を記述できてしまうのがForthの良い所
でもあり悪い所でもあり‥‥‥。
0154デフォルトの名無しさんNGNG
forthでOOて、苦しくない?
0155デフォルトの名無しさんNGNG
>>154
う〜ん、漏れ的にはOOのないForthをもう使いたくない。Forthの良くないところは、
スタック上のデータの型によって異なったオペレータを使用しなければならないところ
だとオイラは思ってる。
OOがあると多態が使えるので型(=クラス)が違っていても同じメッセージを送る事が
できる。だからForthの欠点を補う事ができると思うんだよね。
0156デフォルトの名無しさんNGNG
>>154
ForthでOO拡張を書く事による実行効率の話だとするとNeon/Yerk/Mopsのモデルは、基本的に
静的束縛なのでOOなしのForthと比較してさほど変わらないとおもう。
動的束縛を明示的に行なう場合には8方向リストとハッシュの組み合わせでメソッドの検索が
が行なわれる。(CLASS10.zipでの実装方法)
ポインタ参照が少し増えるぐらいのオーバーヘッドだと思われ。
0157デフォルトの名無しさんNGNG
お好み次第で自分流のOOパッケージを作るのがよろしい。
ソースの字面的には Smalltalk や CLOS 程度の使い勝手のものは
作れると思う。
本当は、デファクトのForth-OOパッケージがあるといいと思うけど。
0158デフォルトの名無しさんNGNG
おそくてすまんがあけおめ。

>>155
少なくともoop好きな漏れとしては禿同。
親戚のPostScriptでいうところのポリモルフィック オペレータって考えかたですね。
ハードとかをゴリゴリいじるためには型情報を無視してプログラマが手作業で
データの意味を把握するほうが良いこともある(Cでおなじみ)けど、
その場合以外はデータ自体が型(つまりメッセージの解釈方法)について
自己主張してくれるほうが、コーディングが楽です。

>>156
不勉強ですまそ。8方向リストって初耳なのですが、どういうものですか?
双方向じゃなく?
8方向にポインタ(参照)がつながってるリストって、
リストというよりもハイパーネットワーク構造みたいで凄くないですか?
0159デフォルトの名無しさんNGNG
今日も深夜になったage
>>158
単にクラスの持つハッシュのテーブルの大きさが8というだけです。
英文で8way linkea listとあったのでつい書いてしまいましたがまずかったですね。

なんとなく「Forth系言語を自作しようスレ」になっていますね・・・。
0160デフォルトの名無しさんNGNG
ぜひ自作してくれ
0161デフォルトの名無しさんNGNG
後置記法って、
演算子についてはなんとなくわかるんだけど、
構文はどうなるの?
0162デフォルトの名無しさんNGNG
>>161
制御構文のこと?forthの場合、
(条件) IF (真のとき) ELSE (偽のとき) THEN
(終値) (開始値) DO (ループ処理) LOOP
BEGIN ( 永久ループ) AGAIN
BEGIN (ループ処理) (条件) UNTIL
BEGIN (条件) WHILE (ループ処理) REPEAT
標準的なのはこのくらいかな?
0163デフォルトの名無しさんNGNG
制御構文の実装について
制御構文のどのワードもimmediateつまりコンパイル時に即実行される。
後方へのジャンプはマーク時にアドレスをスタックにつんでおく。

BEGIN ←マーク
AGAIN ←スタックからアドレスを取り出しジャンプ命令を生成。

前方へのジャンプはジャンプ命令をとりあえずコンパイルしておき、
アドレスを書き込むべきアドレスをスタックにつんでおく。

IF ←条件ジャンプ命令を生成し書き換えアドレスをスタックに積む。
THEN ←スタックからアドレスを取り出し現在のアドレスを書き込む。

ジャンプと条件ジャンプはプリミティブで残りのワードはForth自身で実装できるよ。
0164デフォルトの名無しさんNGNG
うーん、なんかなじめないなあ・・。
>(条件) IF (真のとき) ELSE (偽のとき) THEN
って、本場の人が見てもなんか変だと思いますよね?
syntaxだけ普通にif (条件) then (真のとき) else (偽のとき)
に出来なかったのかな。
BEGINは前に書くんだし。
0165デフォルトの名無しさんNGNG
>>164
たった3行でお望みの構文に変更できるyo。

: ENDIF postpone THEN ; immediate
: THEN postpone IF ; immediate
: IF ; immediate

これで、
IF (条件) THEN (真のとき) ELSE (偽のとき) ENDIF
↑この構文に変更できる。これはマクロみたいなコードだけど、他にも
Forthは制御構文を好きなように自作可能だよん。
0166デフォルトの名無しさんNGNG
>>165
それだと標準のライブラリとか読み込む時に問題になるから、

: }ENDIF postpone THEN ; immediate
: }THEN{ postpone IF ; immediate
: }ELSE{ postpone ELSE ; immediate
: IF{ ; immediate

とかにしたら?
0167デフォルトの名無しさんNGNG
おれは大文字は嫌いだ全部小文字にしたい。
できる?
0168デフォルトの名無しさんNGNG
>>167
ていうかたいていのForthはCase insensitiveなので小文字で書いて可。
>>166の定義で
if{ 条件 }then{ 真の時 }else{ 偽の時 }endif
と書けるYO。
0169167NGNG
ありがと。
forth使ってみる。
0170デフォルトの名無しさんNGNG
たまにはあげんとな。いかんぜよ。
0171デフォルトの名無しさんNGNG
Forthハァハァ
0172デフォルトの名無しさんNGNG
: >>171
 FORTH = IF
  " ハァハァ"
 ELSE
  " フーン"
 END
;
0173デフォルトの名無しさんNGNG
んがとっと
 んが とっ と
0174デフォルトの名無しさんNGNG
: >>172
 FORTH = IF
  " ハァハァ"
 ELSE
  " フーン"
 THEN \ ←ENDぢゃないぞ。
;
0175デフォルトの名無しさんNGNG
: fibo ( ● ´ ー ` ● )
  dup 2 < if drop 1 else dup 1- recurse swap 2 - recurse + then
;
0176172NGNG
>>174
スマソ。普通のFORTH使ったこと無いんで間違えました。
0177デフォルトの名無しさんNGNG
Win用の厨にでも使えるForth処理系キビンヌ
0178デフォルトの名無しさんNGNG
生きてる?
0179デフォルトの名無しさんNGNG
「フォース」って書いちゃ駄目?
018022NGNG
>>178
ごめん、半分死にかけ‥‥‥。
春になったらなんとか‥‥‥。
0181デフォルトの名無しさんNGNG
>>180
我 君 許
0182デフォルトの名無しさんNGNG
ficlってoopなの?
0183デフォルトの名無しさんNGNG
>>182
一応できるみたいね。使った事ないけど。

http://ficl.sourceforge.net/ficl_oop.html

0184デフォルトの名無しさんNGNG
いや、FORTHって豪快だな〜(笑
Perlの上を行ってるな〜
なんでも突き通せは思想なのかもなあ。


なんか関数型を使ったあと使うとめまいがしそうだ。

#FORTHに悪意のある書き込みではないので念のため。
0185デフォルトの名無しさんNGNG
確かにとんがってる感はある。
0186デフォルトの名無しさんNGNG
あげとくよ。
0187デフォルトの名無しさんNGNG
もいっちょ
0188デフォルトの名無しさんNGNG
結局さあ、使ってる人いるの?
おれスタック操作怖くてできない。
0189デフォルトの名無しさんNGNG
FCodeを語れそうなスレはここだけですか?
0190デフォルトの名無しさんNGNG
空ageしかできんなぁ。
0191デフォルトの名無しさんNGNG
>>188
え〜と、Mac用のフリーソフトを作ったことならあります。
でも普通のアプリケーション開発にFORTHを使う人は大変めずらしいと思いマスです。
Open FirmwareとかOpen Bootとか向けにFORTHで書かなければならなくなった
デバドラ屋さんは結構いるかも知れませんが職業プログラマじゃないので知りません。
スタック操作は慣れると不定個の返り値をもつ関数とか引き数としてスタックに積んだ
値を使っても使わなくても良い多態とかトリッキーなコードを書いてしまうという
両刃の剣。でも面白いですよん。
0192デフォルトの名無しさんNGNG
http://www.jwdt.com/~paysan/mini-oof.html
よりわずか12行のOOP拡張

: method ( m v -- m' v ) Create over , swap cell+ swap
DOES> ( ... o -- ... ) @ over @ + @ execute ;
: var ( m v size -- m v' ) Create over , +
DOES> ( o -- addr ) @ + ;
Create object 1 cells , 2 cells ,
: class ( class -- class methods vars ) dup 2@ ;
: end-class ( class methods vars -- )
Create here >r , dup , 2 cells ?DO ['] noop , 1 cells +LOOP
cell+ dup cell+ r> rot @ 2 cells /string move ;
: defines ( xt class -- ) ' >body @ + ! ;
: new ( class -- o ) here over @ allot swap over ! ;
: :: ( class "name" -- ) ' >body @ + @ compile, ;
0193192NGNG
使用例:

クラス定義

object class
cell var text
cell var len
cell var x
cell var y
method init
method draw
end-class button

メソッド定義

:noname ( o -- ) >r
r@ x @ r@ y @ at-xy r@ text @ r> len @ type ;
button defines draw

:noname ( addr u o -- ) >r
0 r@ x ! 0 r@ y ! r@ len ! r> text ! ;
button defines init

継承

button class
end-class bold-button

: bold 27 emit ." [1m" ;
: normal 27 emit ." [0m" ;

:noname bold [ button :: draw ] normal ; bold-button defines draw

インスタンスの生成とメソッド呼び出し

button new Constant foo
s" thin foo" foo init
page
foo draw

bold-button new Constant bar
s" fat bar" bar init
1 bar y !
bar draw
0194デフォルトの名無しさんNGNG
>>193
クラス定義はおおっ!って感じだけど、
メソッド定義以降、わけわからんのでガクゥ・・

このへんから
>:noname ( o -- ) >r
>r@ x @ r@ y @ at-xy r@ text @ r> len @ type ;
>button defines draw

forthの日本語の仕様書/規格書ってオンラインで無いですか?
例えば、193のコードを動かすには最低限、どのレベルの規格に準拠している
必要がある、とか。
なんだかその辺が混沌としてるイメージがあって、
なかなか取っ掛かかれないのれす。
0195192NGNG
>>194
>>192のOO拡張コード自体はANS Forth上で動作します。
pForthでクラス定義が可能な事を確認しました。
GForthのライブラリには上記コードがOO拡張パッケージの
一つとして付属しているみたいです。

‥‥ANS Forthの日本語仕様書はWebで見かけた事がないですねぇ。
0196デフォルトの名無しさんNGNG
>>194
:noname は無名ワードの定義開始ワードですぅ。セミコロンまでの部分がコンパイルされますが、
通常のコロン定義と違って特定のワードにバインドされません。
その代わりに実行アドレスがスタック上に残ります。ANS Forthが標準で持っているワードです。
( から )まではコメントです。
>rはパラメタスタックのトップをPOPしてリターンスタックにPUSHするワードです。
メソッド呼び出し時のパラメタスタックのトップにはオブジェクトが積んであるはずなので、
オブジェクトをリターンスタックのトップに移したということです。
r@はリターンスタックのトップを複製してパラメタスタックにPUSHするワードです。
リターンスタックのトップに積んだオブジェクトは保持されたままです。
つまりこの文脈ではr@はselfに相当しているわけです。

r@ x @

でインスタンス変数xの内容をパラメタスタックに積む、という動作になります。
at-xyはカーソル位置を移動するワード(たぶん)。r>はリターンスタックのトップをPOPして
パラメタスタックにPUSHします。リターンスタックをワードが呼ばれた時の状態に戻しておかない
と暴走します。(゚∀゚)
セミコロンで定義が終了したあとのスタックトップには先ほど定義した無名ワードの実行
アドレスが残っていますから、それをbuttonクラスのdrawメソッドにバインドするのが

button defines draw

の部分です。
0197デフォルトの名無しさんNGNG
え?スタックって何本あるんですか?
今までのお話だと、
リターンスタック
パラメタスタック
だけですか?
単に「スタック」というと、どれのことですか?
0198デフォルトの名無しさんNGNG
単にスタックと言うとパラメタスタックのコトです。
伝統的にはパラメタスタックとリターンスタックの二本ですが、流れ制御用のスタック
を持っていたり、float型専用スタックを別に持っている実装も存在しますね。
0199デフォルトの名無しさんNGNG
>>198
なるほど。ありがとうございます。
分けるのはやっぱり効率良いからですかね。
0200デフォルトの名無しさんNGNG
>>199
> 分けるのはやっぱり効率良いからですかね。
そうですね。パラメタとリターンアドレスが混在してしまうと、スタック上のデータの
操作が複雑になってしまいますし。
流れ制御用スタックについても同様な理由のようです。
float型は精度や実装によってスタックの1cellのサイズが通常の整数型と異なる
場合があるというのが理由かと思われます。

0201デフォルトの名無しさんNGNG
>>192に対する構文糖(5行)

: :method :noname postpone >r ;
: ;method postpone r> postpone drop postpone ; ; immediate
: self postpone r@ ; immediate
: get @ ;
: set ! ;

↓使用例。ちょっとだけ見やすい?

object class
  cell var x
  cell var y
  method init
  method print
end-class point

:method ( x y -- )
  self y set
  self x set
;method point defines init

:method ( -- )
  self x get .
  s" : " type
  self y get .
;method point defines print

point new constant foo
10 20 foo init
foo print
0202デフォルトの名無しさんNGNG
Forthチップ、Forthマシンがあるのなら、オブジェクト指向Forthチップと言うのは無いのですか。
116で「FORTHの本質」という言葉が出てきましたが、
「仮想マシンのアセンブラであり、かつ構造化言語」というのがFORTHの本質だと思っています。
「オブジェクト指向FORTH」の名前で
「仮想マシンのアセンブラであり、かつオブジェクト指向言語」
つまり、チップが作り得るものを想像します。
0203デフォルトの名無しさんNGNG
>>202
+ 激しく電波 +
0204デフォルトの名無しさんNGNG
>>202
オブジェクト指向拡張部分をROMに焼いてチップ上に乗っけちゃえば
それっぽく見える代物になるか?
デムパっぽいな〜。

Color Forthもデムパっぽいけどナ〜。(´Д`)
0205デフォルトの名無しさんNGNG
夢でも見ているのか。
このスレの稼働率とは思えない
0206デフォルトの名無しさんNGNG
>>205
忘れた頃に上がるナリ。このスレの特徴ナリ。

http://hoge.s7.xrea.com/tiki/tiki.cgi?c=v&p=Forth

↑ム板 2ch TikiのForthのページ。ネタがあったら追加して欲しいナリ。
‥‥‥誰かPostscript、教えてホスィなり。
0207202の名無しNGNG
Mopsのチップというのは作れるのですか。
0208デフォルトの名無しさんNGNG
>202
Java や Smalltalk のVMとか、Lispチップとかそんな感じじゃないかな。
Mops チップありでしょう。需要はないけど。

0209デフォルトの名無しさんNGNG
LISPだと汎用の内部イテレータ(map-carやら)が用意されてますけど、
forthで一般的なやつって無いですか?
0210デフォルトの名無しさんNGNG
>>209
Lispのmapに相当するような汎用イテレータですか?
素のままのForthではスタックへのアクセス以外はメモリへのダイレクトな
アクセスのようなものなので、「汎用的なイテレータをこなすワード」というよりは
汎用的なアクセサをもつ抽象化された「データ構造」自体が存在しないような‥‥‥。

いや、スタックがあった‥‥‥(´Д`)

Mopsの場合はクラスライブラリでイテレータ関連の機能に対応してるかな。
sequenceクラスのインターフェース(多重継承とかで)を持っていれば、
BEGIN each: <obj> WHILE <do something to the element> REPEAT
みたいなことは出来ます。
0211デフォルトの名無しさんNGNG
なんだなんだ?何が起こった?業界に異変?
0212デフォルトの名無しさんNGNG
211の脳内革命を確認。
0213デフォルトの名無しさんNGNG
↓似非map?ぽいものを定義してみた。

0 value SavedDepth
: (( depth -> SavedDepth ;
: )) depth SavedDepth - ;
: map ( P1...Pn n xt -- Q1...Qn n )
  over >r >r
  BEGIN dup 0 > WHILE swap r@ execute r> r> rot >r >r >r 1 -
  REPEAT
  drop r> drop r@
  BEGIN dup 0 > WHILE r> r> -rot >r 1 - REPEAT
  drop r> ;

0214213NGNG
使い方
・スタック上に一次元配列を作る。

 (( 1 2 3 4 5 ))

 各要素の後に要素の数をスタックに積んだ状態になる。
 上の例だとスタックの状態は: 1 2 3 4 5 5

・配列の要素一つに対する操作用ワードを定義する。

 : e++ 1 + ;

 ↑上のe++はスタックトップの値を1だけ加算して返す。

 (( 1 2 3 4 5 )) ['] e++ map とすると、
 (( 2 3 4 5 6 )) がスタックに返る。

 : countUp ['] e++ map ;

 と定義すれば、 (( 1 3 5 7 )) countUp で、
 (( 2 4 6 8 )) がスタックに返る。

0215デフォルトの名無しさんNGNG
>>213-214
貴様それで何をたくらんでいる!?
まさか・・・世界征服かっ!?
0216デフォルトの名無しさんNGNG
>>215
世界征服はJava VMにまかせた!!(゚∀゚)

0217デフォルトの名無しさんNGNG
>>215-216
和んだ。

ていうかさ、変数使わずにスタックだけでガシコンガシコン
プログラム組んだら、何がよくなるの?
0218デフォルトの名無しさんNGNG
>>217
局所性‥‥かな?
0219デフォルトの名無しさんNGNG
>>213の定義だと評価の順序が右から左なので左から右に評価するように変更。

: mapl ( P1...Pn n xt -- Q1...Qn n )
  swap dup >r
  BEGIN dup 0 > WHILE rot r> swap >r >r 1 - REPEAT
  drop r@ swap >r
  BEGIN dup 0 > WHILE r> r> r> -rot >r dup >r execute swap 1 - REPEAT
  drop r> drop r>
;

サンプル↓

: dspNum ( n -- n ) dup . ;
: tpl ['] dspNum mapl ;
と定義した時、
(( 1 2 3 4 5 )) tpl
で、
1 2 3 4 5
と表示される。

0220デフォルトの名無しさんNGNG
http://www.limo.fumi2kick.com/forum/lm_forum02.html
Forthタン萌え
0221デフォルトの名無しさんNGNG
>220 人気投票最下位...
0222デフォルトの名無しさんNGNG
最下位ではぬゎーいっ!!
18人エントリー中の9位であーる。
9位入賞と言ってくれ。
でないと泣く。
0223デフォルトの名無しさんNGNG
++forth
0224デフォルトの名無しさんNGNG
Forth.NET
0225デフォルトの名無しさんNGNG
#include <stdio.h>
#define cmdin ">>"
#define stksize 256
022622NGNG
数日前、つひにMac OS Xをゲトーしました。
Cocoaがまだ良く分からないので、Standard Toolでもって、
ターミナルから動くようにだけしてみたヘタレです‥‥‥。

http://www.geocities.co.jp/SiliconValley-SanJose/4733/



‥‥‥‥‥‥寝る。
0227202の名無しNGNG
手続きもオブジェクトにしてifもwhileもメッセージと言う具合にできるでしょうか。Smalltalkのように制御構造もメッセージで実現するわけです。もしかしたらその方が実装が簡単になりませんか。
022822NGNG
‥‥‥‥‥‥起きた!
>>227
Smalltalkのようにすべてがオブジェクトな世界なら、その方が美しくてイイ気がします。
‥‥‥Forthのことは忘れて一から独自言語にしてしまいますか。
比較演算子がスタックの上にbool型のオブジェクトを生成すればいいのかな?
でifTrue;メッセージをsendするという具合に。
手続きオブジェクトがレシーバになるという実装もアリかも‥‥‥。
‥‥‥でも実装の手間の割に効率は良く無さそうなのでヤル気が萎えるです。
アリモノのif else thenでいいぢゃん、とForthプログラマとしては考えてしまいます。
でもライブラリとかのコードを書くときには、簡潔で見栄えの良い表記になるかも。
(実装というかコード記述が楽になるのはこのレベルに達したときですよね。)

ところで、手続き渡しをしたいときにForthプログラマは伝統的に、

['] someWord

みたいな感じで、あるワードのエントリをスタックに積んでおいて、適当な時に
executeしていたわけですが、もう少し真面目にブロッククロージャに相当するモノを
実装するというのはイイかもしれないです。

022922NGNG
急な思いつきでGikoForthを非分かち書き日本語風に
書けるようにしてみますた。

クラス「 ギコハニャ〜ン 」は「オブジェクト」を継承し
  『 話せ: とは"逝ってよし"を文字列表示し改行』を実装する

クラス「 ギコフッサール 」は「ギコハニャ〜ン」を継承する

ギコハニャ〜ン ギコ
ギコフッサール フサフサ

ギコが話せ。
フサフサが話せ。


みたいに。

内部的には非分かち書き→分かち書きの処理をかましただけなんですけど、
該当部分はGikoForth自身でGiko.fth内に書いてあるので、Project Builderを
持ってなくてもGikoForth自身でいじって遊べまふ。
>>226のリンク先にうぷしてあるので、存分にいぢって下ちい。
0230202の名無しNGNG
条件分岐のネストで厄介なことになりそうです。
条件分岐の構文としては
条件成立時の手続き 条件不成立時の手続き 条件判定手続き ifメッセージ
(条件成立時の手続き、条件不成立時の手続き、条件判定手続きをスタックに積んで、
スタックトップの手続きオブジェクトがifメッセージを受け取る)
と言うものを考えていました。しかしこれで二つの条件分岐をネストすると
後から実行される条件判定が前に来てしまいます。
先に実行されるものが先に記述される上手い構文があるか、
それともこれこそオブジェクト指向FORTHらしい構文と思うか、
もう少し考えてみます。
023122NGNG
>>230

_{ ." true" } _{ ." false } _{ c true = } :if

上のような文法を持つ架空スタック言語があったとして、

_{ ." true1" } _{ ." false1" } _{ c1 true = }
_{ ." true2" } _{ ." false2" } _{ c2 true = } :if :if


c1,c2共にtrueの時こういう風に実行しようとすると、

true2
true1

という順序になってしまうということでしょうか?
自然です。‥‥それでこそスタック。
と、いう冗談は置いておいて、

_{ ." true1" } _{ ." false1" } _{ c1 true = } :if
_{ ." true2" } _{ ." false2" } _{ c2 true = } :if

のように単純に並列ではダメなのですか?
023222NGNG
>>226
コソーリ非分かち書きのバグ潰しをしました。
しばらくまた放置するとおもいます‥‥‥。
ではでは。
02331NGNG
他の言語によくある構文で

if c1 then
if c2 then true2 else false2 endif
else
else1
endif

と言うケースではc1の判定の後にc2の判定が行われますが、

_{
_{ ." true2" } _{ ." false2" } _{ c2 true = } :if
} _{ ." false1" } _{ c1 true = } :if

とc2が先に来てしまうと言うことです。

023422NGNG
>>233
了解しました。そういえばネストって書いてありましたね。(恥
実行順序は正しくても人間の思考の流れと記述が逆転するので
プログラムしづらいと‥‥‥。
では………

_{ c true = } _{ ." true" } { ." false" } :if

という構文にすれば、

_{ age 30 < }
{
_{ age 16 < } _{ ." タイーホ" } _{ ." ウマー" ) :if
} _{ ." マズー" } :if

となって条件の判定の順序が人間の思考と近いかもしれないですね。

_{ c true = } _{ ." true" } :ifTrue
_{ c true = } _{ ." false" } :ifFalse

という構文もあるとイイかもしれません。
制御構文はそもそも手続きに対するメッセージだと言う感じもしますし。
0235202の名無しNGNG
_{ c true = } _{ ." true" } _{ ." false" } :if

という構文では、:ifメッセージのレシーバは_{ ." false" }ですか。
それとも:ifメッセージは常にスタックの
二つ奥に送られると言うことでしょうか。
023622NGNG
>>235
_{ ." false" } がメッセージを受け取ればいいと思うんですけど。
どんなものでしょう?
023722NGNG
ところで、GikoForthへ手続きブロックの実装をやってみました。
下のIF文は同じ構文になるようにしただけの似非実装でOOではないです。
(そもそもGikoForthにはまだオブジェクト以外の標準クラスがないので。)
道具が揃ったらオブジェクトでラップしようと思いまふ。

バイナリとソースは今晩うぷします。たぶん。


☆ アルファベットでの表記の例
: test { age | func -- }
  :[ bl emit age . cr ]; -> func
  age 30 <
    :[ age 16 <
      :[ ." タイーホ" func call ];
      :[ ." ウマー" func call ]; :if
    ];
  :[ ." マズー" func call ]; :if
;

☆ 日本語風表記での例
単語 検査 { 年齢 | 年齢表示 -- } を
  【空白を一文字表示し年齢を数値表示し改行する】→年齢表示
  年齢が30より小さいとき
    【年齢が16より小さいとき
      【"タイーホ"を表示し年齢表示を呼び出す】を
     そうでないとき
      【"ウマー"を表示し年齢表示を呼び出す】を
     を選んで実行
     】
  そうでないとき
    【"マズー"を表示し年齢表示を呼び出す】を
  を選んで実行
と定義


0238デフォルトの名無しさんNGNG
: age { age -- } ;
0239202NGNG
>>236
このばあい_{ ." false" }では
どのようなメソッドを実行したらよいのでしょうか。
Smalltalkではtrue(false)クラスではtrue(false)の場合の手続きだけを実行する
と言う風にしていますが、上手いメソッドが思い付きません。
024022NGNG
Trueクラス、Falseクラスに
oProc oBool :ifTrue
oProc oBool :ifFalse
というメソッドが既に存在していれば、

:m :if ( oBool oProcT -- )
  self -rot over
  :ifTrue
  :ifFalse
;m

こんな感じで良いのではないでしょうか?
-rot ( a b c -- c a b )
over ( a b -- a b a )
というスタック操作ワードを使用していますが。
024122NGNG
えせMops表記で分りにくかったらごめんなさいです‥‥。
0242デフォルトの名無しさんNGNG
>>240
Forthの構文ってきれいだね。
おもしろそうだな。
0243デフォルトの名無しさんNGNG
>>240
over :ifTrue
self swap :ifFalse
でもいい?
024422NGNG
>>243
あう。そのほうがシンプルですねぇ。
-rotなんていうマニアックな命令をつかわなくて良いし‥‥。
恥ずいのでsage
0245202の名無しNGNG
裏で手続きが前にくる構文を使っているのですね。
これなら表でこの構文を使う方が好みです。
024622NGNG
>>245
あくまでもオブジェクトにこだわった実装の場合のシンタックスシュガー
ってことで。てへへ。
自分がやるときはFORTHのプリミティブ使って手続きクラスに直接実装しちゃうと思います。
024722NGNG
下げたまんまだった‥‥。
いちおうあげときます。
0248デフォルトの名無しさんNGNG
わけわからん。
説明されても、やっぱりわけわからん。
おれには一生理解できないのか。
024922NGNG
>>248
わかりにくくてスンマソン。(T-T)
ローカル変数を使って、

:m :if { oBool oProcT -- }
  oProcT oBool :ifTrue
  self oBool :ifFalse
;m

でもよかったんだけどそれじゃ身も蓋もないと思ったので‥‥。
スタック操作は確かにわかりにくいと思います。自分も書くときはすぐに
ローカル変数を使って楽をします。

話は変わりますが、ブロックが前にくるタイプのif文のオブジェクトの
スタック上の順番をどうするのが良いか、もう少しいろいろと議論した方が
良いのかもしれませんね。

025022NGNG
↓GikoForthですけども………、
http://www.geocities.co.jp/SiliconValley-SanJose/4733/

ブロックを使った例外処理とローカル変数を含む四則演算の中置記法の処理を
実装しまひた。
:[ 2 throw> ]; >catch
とか
i[ A^2+2*A+1 ] -> B
とか書けます。

あと地味な拡張として、アルファベット表記の動的束縛はこれまでは

anObject message: []

と書いていましたが、日本語表記との対応を考えて、

anObject ::message

とも書けるようにしまひた。
今度はかなり長く放置することになると思います。

‥‥‥‥寝る。
0251デフォルトの名無しさんNGNG
は〜〜〜〜〜〜〜〜ぁぁっ、




あげ。
0252ムーアNGNG
空揚げ
025322NGNG
>>252
いつもメンテしてくれてありがとん。


GikoForth : http://www.geocities.co.jp/SiliconValley-SanJose/4733/
なんだかんだでやっぱり気になるので、また手を付けてしまいました‥‥。

オブジェクト拡張を>>82のclassM10ベースに移行しました。
というわけで多重継承可になりました。
動的束縛しまくるGikoForthの場合、多重継承ベースのクラス構成だと、
遅くてたまらんとオモタのでスーパークラスを持てずインスタンス化
できないmix-inモジュールを定義できるようにしまひた。
非分かち書き拡張部にでっかいバグがあったので潰しました。
そのためすこし構文が変更になりました。

あー今度こそヤメルぞ‥‥‥。

0254コピペですまんNGNG
☆ モナーとじゃんけんゲーム

★ クラスの定義
クラス「じゃんけんモナー」は<オブジェクト>を継承し
  ☆ メソッドの定義
  『手: ( -- 手 ) とは
    3までの乱数に1を足す』
  『表示: { 手 -- } とは
    手が1と等しいならば"ぐー"を表示つぎに
    手が2と等しいならば"ちょき"を表示つぎに
    手が3と等しいならば"ぱー"を表示つぎに』
  『じゃんけん: { | 相手の手 モナーの手 -- } とは
    ここから
      "なにをだすモナ? 1:ぐー 2:ちょき 3:ぱー それ以外:やめる"を表示し改行
      数値入力→相手の手
      自分の手。→モナーの手
      相手の手が0以下相手の手が4以上のどちらかならば逝ってよし
      つぎに
      "あなたの手:"を表示し相手の手を自分で表示。改行
      "モナーの手:"を表示しモナーの手を自分で表示。改行
      モナーの手と相手の手が等しいならば
        "引き分けモナ"を表示し改行
      さもなければ
        モナーの手から相手の手を引き1と等しい
        モナーの手から相手の手を引き-2と等しい
        のどちらかならば
          "あなたが勝ったモナ"を表示し改行
        さもなければ
          "モナーが勝ったモナ"を表示し改行
        つぎに
      つぎに
    を再び繰り返し』
を実装する

★ 「じゃんけんモナー」クラスのインスタンス「モナー」の生成
じゃんけんモナー「モナー」

☆ 「モナー」インスタンスの「じゃんけん」メソッドを起動
モナーとじゃんけん。
0255デフォルトの名無しさんNGNG
深度280。sageヨシ。
0256デフォルトのムーアたんNGNG
「メンテ」
025722NGNG
深度406より浮上。
>>256
ムーアたん‥‥(;´Д`)ハァハァ

GikoForth : http://www.geocities.co.jp/SiliconValley-SanJose/4733/
更新しますた。

Objective-CのCategoryぽいものを実装。
インスタンス変数は追加できないところがCategory風(?)。
(ところでアスペクト指向ってなんすか?)

JTerminalを使用するにはデヴェツールでビルドが必要なことに
いまさら気が付いてFinderから起動することのできるGikoForthX
アプリケーションをでっちあげますた。

これでようやく本当にデヴェツール持ってなくてもお試しできます。

025822NGNG
いま一つ気になることが‥‥‥。
ライセンスってどうするべきなんでせう??
pForthはパブリックドメイン。
classM10とBNFパーサーはライセンス不明。
たぶんパブリックドメインのような気がします。
(Forthコミュニティの伝統??嘘かも。でもMopsもPDSだし。)

GikoForthはGPLにすべきなんだろうか?
パブリックドメインでもいいのかな?
迷ってます。

あとターミナル版GikoForthは他のUNIX系OSでもコンパイルし直すだけで
そのまま動作するような気がします。
‥‥‥‥‥makeファイルってなんすか?(T-T)
0259ダミー・ムアーNGNG
>>258
>ライセンスってどうするべきなんでせう??
全部自分で作れば即解決。ガンバ!
>迷ってます。
全部自分で作れば即解決。ガンバ!
>‥‥‥‥‥makeファイルってなんすか?(T-T)
ググールで【マケファイル】って検索したらでてきます。
026022NGNG
>>259
ダミーたん‥‥(;´Д`)ハァハァ


>全部自分で作れば即解決。ガンバ!

Cocoaネイティブに作り直すときにフルスクラッチに‥する?(氏

> ググールで【マケファイル】って検索したらでてきます。

http://www.google.co.jp/search?q=cache:Ex07HNJGMYUC:www.topworld.ne.jp/tw/red/sakura/0101/0112.html+%81y%83%7D%83P%83t%83%40%83C%83%8B%81z&hl=ja

(;´Д`)ハァハァ (;´Д`)ハァハァ (;´Д`)ハァハァ
0261デフォルトの名無しさんNGNG
Mops 5.01が出たみたいです。

ftp://jamsoft.com.au/mike_hore/Mops/

age
0262デフォルトの名無しさんNGNG
>>261
ダウソロードしたよ。
これでMac OS Xでも……(;´Д`)ハァハァ
とオモータんだけどEnterキーがきかねぇ。(怒
思わずcomp.lang.forth.macを覗いてみたら、
ウインドウをリサイズしてから他のアプリケーションを
フロントに持ってきて、も一度Mopsのウインドウを手前に
持ってくれば使える、とあった。(何のまじないだ?)
……ををコンパイルできる……けどInstallできねぇ(涙
スタンドアロンアプリを生成できないんですけど。
(これは何かの罰ですか?)

も少し待ちかなぁ……。



0263デフォルトの名無しさんNGNG
>>262
おおすごい。
うちもEnterきかなくて目が点でした。
これからやってみます。
0264デフォルトの名無しさんNGNG
Mops 5.01
アプリで表示させる日本語のタイトルやラベルが化けるんですが何か良い方法が
あるんでしょうか。

mops age
0265デフォルトの名無しさんNGNG
comp.lang.forth.macにMops作者のMikeタンのシリアスな書き込みが…

http://groups.google.co.jp/groups?dq=&hl=ja&group=comp.lang.forth.mac&selm=newscache%24wmxpvg%24wsm%241%4

> The tough reality is that for Mops to continue, it really does need more effort than I can manage alone.
> The IDE is showing its age -- in particular it now needs an OSX-native text editor.
> Also the Manual is way out of date, and needs a major revision.
> I'll do it if people need it, but otherwise I'd rather not bother.
> I've got other things I could be doing.

こんなこというてはります。

> But I'd really like to know now whether there are still a significant
> number of users who aren't in a position to contribute,
> for whatever reason, or whether there just aren't very many users any more.

とも言ってるんで、Mopsの開発継続して欲しい連中はMikeタンに
フィードバックしてくだちい。
今すぐに!


0266デフォルトの名無しさんNGNG
>>264
ほんとだ。文字化けする‥‥。
対策は………ワカンナイ、ゴメソ。
0267デフォルトの名無しさんNGNG
>>265
とりあえずMikeタンにおてまみ出しときますた。
0268デフォルトの名無しさんNGNG
以前Mopsを試したことがあるのですが、敷居が相当高い気がしました。
1.日本語のMops情報が限りなくゼロ
2.そもそもForth自体が超マイナー
3.本屋で日本語のForth本は手に入らない、今後も出る予定があるとは思えない。
4.結局ToolBoxの知識は必要になる。
5.したがってC言語の知識も必要になる。
6.日本語がインライン入力できない。解決するには結局ToolBoxどっぷりになる。
というつらい目にあうことになります。

最低限以下のようなページがないとつらい。
http://www.big.or.jp/~crane/cocoa/indexOnline.shtml

「Mopsはやっぱり!」

をだれかお願いします。(汗)



0269デフォルトの名無しさんNGNG
Mopsを使ってる人間が言うのもアレなのですが、正直、
Mopsはあまり初心者向きではないんですよね……。
MPWがフリーになる前は、無料でToolBoxを駆使できる唯一の
開発環境だったのですが、MPWもフリーになり、デベツールが
OS Xに付属している現在ではあまりアドバンテージがない……。
しかも付属のライブラリにバグがあったりしてそれを回避したり
直したりしながらプログラムすることになります。(涙

……じゃあいったい誰が使っているのか?といえばモノ好きなオレとか……。
……オレとか……オレとか……。

…………。
…………。



ところでMopsの英文マニュアルは、内容が古くなってはいますが、
Forth&OOP入門の書としてイイです。
……………英語ですけど…………。

0270デフォルトの名無しさんNGNG
openfirmware勉強CHU!
0271デフォルトの名無しさんNGNG
そういや、comp.lang.forth.macの投稿記事の半分ぐらいが
OpenFirmware関係だったりするなぁ。
時代は変わった‥‥。

ググルでもみられるYO。
http://groups.google.co.jp/groups?hl=ja&group=comp.lang.forth.mac

0272デフォルトの名無しさんNGNG
保守
0273>222タン作 GokiForthNGNG
スレッド 安芸る
0274デフォルトの名無しさんNGNG
>>273
あがってないよ。なんで?
0275273NGNG
どうなってんだ?
0276デフォルトの名無しさんNGNG
>>275
ちゃんとあがってるよ。
更新されてないだけでしょ。
027722NGNG
更新しますた。。。

‥‥いやネタじゃなく。ついでに移転しました。

GikoForth : http://gikoforth.s13.xrea.com/

実はxreaがめずらしく一般サイトの募集をやっていたので出来心でスペース
とっちまいました。

更新内容ですが、文字列と手続きブロックをオブジェクトでラップしてみました。

"逝ってよし" とか 【2を掛けて1を足す】とかは
それぞれ「文字列」「ブロック」クラスのオブジェクトをスタックに返します。

肝心のクラスライブラリの中身はスカスカに貧相ですが、カテゴリを使って
クラスを派生することなくメソッドを追加したり置き換えたりできるので、
とりあえずこの段階で公開しときます。

Cocoaネイティブ版を作りかけましたが、ヘタレなんで何年かかるかワカランです。
ちょとやる気が萎えますた。

027822NGNG
ちなみに「ブロック」クラスの中のifメソッド関係の定義を抜き出してみました。

:m ifTrue: ( b -- ) IF call: self THEN ;m
:m ifFalse: ( b -- ) not IF call: self THEN ;m
:m if: ( b ^blObj -- ) swap IF call: blockvec ELSE drop call: self THEN ;m

したがってブロックを使ったIF文モドキは今のところ以下のようになってます。

b true = :[ "True" ::print ]: :[ "False" ::print ]: ::if

trueやfalseがオブジェクトじゃないので、この順番でしか書けないんですよね。


0279ムアーNGNG
XREAはもうs13までいってるのか。
ワシんとこはs8です。3ヶ月ぐらい前かな。
早ぇ。
0280デフォルトの名無しさんNGNG
>>279
ムアーたんのサイトってどんなんだろ? (;´Д`)ハァハァ
0281チャルーズ・ムアーNGNG
再起下降でゴリゴリ書いた変な処理系とか
躁病患者を一気に鬱病患者にするほどのネガティブ天体観測日記等です。
もちろんデフォルトで電波を通常のサイトの3倍(赤)飛ばしています。
天文台から。ムアー(´∀`)
0282名無しのワードさんNGNG
>281
ネタに聞こえないところがアレですなぁ…
0283デフォルトの名無しさんNGNG
>>281
おながい、キーワードをもう1ワードだけ‥‥‥。(;´Д`)ハァハァ

>>282
http://www.colorforth.com/
‥‥‥‥ネタにしかみえない自分は、聖地巡礼の旅にでてきます‥‥‥。




0284デフォルトの名無しさんNGNG
F#出たね。
Forthじゃないけど。
028522NGNG
>>284
F#って?ocamlってなに〜?と思いますた。
functionalのFだたのか。

http://gikoforth.s13.xrea.com/
更新しました。

またしばらく放置になりそうです。
0286デフォルトの名無しさんNGNG
>>284
ていうかあったよ、Forth.NET

http://www.codeproject.com/dotnet/dforthnet.asp

0287デフォルトの名無しさんNGNG
>>286
Oh my GOD !
0288トリップの ◆8VdVxENI NGNG
してみる。
0289202NGNG
ところで他の言語ではキーワードを行のはじめに置いて字下げをしますが、
FORTHではキーワードを行の終わりに置いて字上げ(地上げじゃありませんよ)をするのがいいと思うのですがどうでしょう。

_____________(conditoin1) IF
______(conditoin2) IF
(procedure1.1) ELSE
(procedure1.2) THEN   ELSE
______(conditoin3) IF
(procedure2.1) ELSE
(procedure2.2) THEN   THEN

_________________BIGIN
(condition) WHILE
_(procedure) LOOP

IF文が何重にもネストした場合THENがいくつも並ぶことがありますが、
これが一行に詰め込めます。
0290デフォルトの名無しさんNGNG
>>289
逆Python記法??
0291デフォルトの名無しさんNGNG
>>290
THENやELSEは書いているみたいなので段差でブロックをあらわしてるわけでは
ないと思うが‥‥‥
029222NGNG
>>289
202さん、おひさしぶりす。
これはキーワードが右側に並ぶのがミソつうことですか‥‥?

ああん、だめ、脳がついてけないです。
(;´Д`)
0293デフォルトの名無しさんNGNG
Mops5.1.1リリースあげ。

http://www.panix.com/~goshawk/Mops/_download.html

0294      NGNG
 わっしょい
0295デフォルトの名無しさんNGNG
古本屋で買っちゃったよ。
「パソコンユーザーのためのForth入門」age
0296デフォルトの名無しさんNGNG
Forth インタプリタをもった、 ブートローダ 作りたいんだけど、 ここでよろしいですか?
0297デフォルトの名無しさんNGNG
>>296
ブートローダはわかんないけど、Forthの話題ならここで可かと。
0298デフォルトの名無しさんNGNG
ANS FORTHの規格の日本語訳と言うのは存在するんでしょうか?
訳してみようと思っているんですが、もしもう存在するなら無駄なこと
はしたくないので。

ご教示おながいします。
0299デフォルトの名無しさんNGNG
>>298
ない、と思います。少なくともネット検索でひっかかる範囲には。
(私も見つけられなかった。)

ftp://ftp.taygeta.com/pub/Forth/Literature/ansforth.pdf

↑ANS Forthの規格書でこれが一番新しいのかなぁ?
手伝いたいけど英語苦手なので‥‥機械翻訳でよければ‥‥‥‥(T-T

0300デフォルトの名無しさんNGNG
さげちゃった。
揚げ。
0301デフォルトの名無しさんNGNG
漏れ、今ほそぼそとDPANS94翻訳中
030222NGNG
>>301
神!








‥‥‥地味に更新しますた。
http://gikoforth.s13.xrea.com/
0303 ◆dPyZXuuM NGNG
>>302
Wikiかなり充実してま砂。
このスレの閲覧者、意外に多いのか。
030422NGNG
ヽ(;´Д`)ノムーアたんハァハァ

↑お茶目さん

‥‥それはともかく、
>>303
>このスレの閲覧者、意外に多いのか。

どうなんでしょう。(T-T

http://gikoforth.s13.xrea.com/wiki/wiki.cgi?RecentChanges
Wikiは、この辺↑から更新状況をチェックしてお好みの所に自由に書き込んで
いただけますと、涙でるぐらいウレスィかも。
ページも勝手にジャンジャン作って良いです。いや、ホント。
おながいします。

0305 ◆dPyZXuuM NGNG
勝手に作った(´∀`*)
030622NGNG
ありがとん。玉しゃぶろうタン‥‥‥‥。
0307301NGNG
DPANS2.htmアップップ。
で、DPANS3.htm翻訳中。

ページ数少ないし、分担したらサクサクっと終わるような気がするんだけど、
どうよ。
030822NGNG
http://www.taygeta.com/forth/dpans.htm
↑ココですね。

じゃ、せっかくだから漏れはdpans6.htmをやるぜ!!

……でも今日は寝ます。ゴメソ。
0309デフォルトの名無しさんNGNG
すげ。神降臨。
http://gikoforth.s13.xrea.com/wiki/wiki.cgi?DPANS2%2EHTM%A4%F2%CB%DD%CC%F5%A4%B3%A4%F3%A4%CB%A4%E3%A4%AF%A1%C1
0310デフォルトの名無しさんNGNG
えらい深いところに。
0311298NGNG
1. Introductionをほぼ訳し終わりました。
今、A. RationalのA.1 Introductionにかかっています。
素人さんなのであまり難しいところは訳せませんがぼちぼちやっていきます。
0312デフォルトの名無しさんNGNG
 ン
メ テ
0313デフォルトの名無しさんNGNG
ナ ン
 ス
0314デフォルトの名無しさんNGNG
ほしゅ
0315デフォルトの名無しさんNGNG
ほしゅ
0316    NGNG



  ら
    ぞ 
 ほ   
   し
0317デフォルトの名無しさんNGNG
ColorForth使ったことある人いる?
0318デフォルトの名無しさんNGNG
>>317
ColorForthのちゃんとした実装ってあったけ?と疑問を持ちつつぐぐってみたら
なんと!!

http://www.colorforth.com/install.htm
>Updated 2002 September

驚きますた。ムーアタン、老いてなを左官。
しかしファイルシステムが昔懐かしのブロックのよーな。
当方マカにて動作確認できません。人柱キボンヌ。
0319名無しさん@EmacsNGNG
Forth がブートローダに良く使われている理由はどういった事からですか?
処理系が小さいからかな?
0320デフォルトの名無しさんNGNG
そのたうり
0321デフォルトの名無しさんNGNG
Forthって一度ワードを定義したら、削除する場合、
それ以後に定義したワードを全部削除しなきゃいけないんですよね?
拡張してくうちに収拾付かなくなりそうな気がするんですけど。
0322デフォルトの名無しさんNGNG
以後が変
0323デフォルトの名無しさんNGNG
>>321
拡張するだけなら単に同名ワードを再定義しる。
過去に定義したワード自体の定義を変更したい場合には、辞書を再構築する方がよろし。
じゃあなぜ削除が存在するかと言えば、ファイルから定義を読み込み、実行し、処理が
終わったらそのワード定義以降のメモリを解放する、といった用途のためだと思われ。
0324デフォルトの名無しさんNGNG
321じゃないけど納得。
ANSのドラフトだとforgetは非推奨になってるね。メモリ管理用の
word setが出来たから必要なくなったってことかな。
0325デフォルトの名無しさんNGNG
マイナー言語だからこそ
愛着をもてるんだが、
意味ないよな。
JAVAでやった方が全然効率がいいのに
なぜか使ってしまう。
0326名無しさん@EmacsNGNG
Mops スレで聞くのも何ですが、皆さんは普段どんな Forth 処理系を使ってらっしゃいます?
0327デフォルトの名無しさんNGNG
か?
0328デフォルトの名無しさんNGNG
答えが返ってこないということは結構「俺Forth」が多いのかな?
ムーアタンも「俺Forth」作るの推奨しているし(w
0329デフォルトの名無しさんNGNG
今すぐL1-AしてOpenBootだ!
0330デフォルトの名無しさんNGNG
うぐ‥‥‥。しばらくみてなかったよ。
>>326
当方マカーなのでMac OS9で役に立つものを作る場合はMops使ってました。
Mac OS Xになってから昔のコードに不具合が出てきてちょっと疎遠になってます。
DというMac OS XでPowerPC Nativeコードを吐けるForthも持っていますが、ほとんど使っていません。

使った事はないけど、良さげな他プラットフォーム向けForth処理系で知っているのは、

GForth
bigForth
win32Forth

かな?

>>328
それもまた良し。

0331デフォルトの名無しさんNGNG
最近、興味を持ったので age ます。
ちなみに、モバイル板から来ますた。
0332デフォルトの名無しさんNGNG
age 忘れた・・・
0333デフォルトの名無しさんNGNG
おまいら、Palmデバイス向けForthのDragonForthがオープンソースに
なったらしいぞ。
ダウンロードは↓
http://www.activekitten.com/df102002.zip


0334デフォルトの名無しさんNGNG
>>333
ナイスな情報サンクス!!早速ゲットだ!



…って、Palmデバイス一つも持ってません(w
0335デフォルトの名無しさんNGNG
ほす
0336デフォルトの名無しさんNGNG
あぼーん
0337デフォルトの名無しさんNGNG
↑ムーアタソの悪口を書いたのか?(w
0338デフォルトの名無しさんNGNG
Forth インタプリタをもった、 ブートローダ 作りたいんだけど、 ここでよろしいですか?
0339デフォルトの名無しさんNGNG
0340デフォルトの名無しさんNGNG
0341デフォルトの名無しさんNGNG
0342デフォルトの名無しさんNGNG
ほ
0343デフォルトの名無しさんNGNG
し
0344名無しさんNGNG
         / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
Λ_Λ  | 君さぁ こんなスレッド立てるから          |
( ´∀`)< 厨房って言われちゃうんだよ             |
( ΛΛ つ >―――――――――――――――――――‐<
 ( ゚Д゚) < おまえのことを必要としてる奴なんて         |
 /つつ  | いないんだからさっさと回線切って首吊れ     |
       \____________________/

(-_-) ハヤクシンデネ… (-_-) ハヤクシンデネ… (-_-) ハヤクシンデネ…
(∩∩) (∩∩) (∩∩)

(-_-) ハヤクシンデネ… (-_-) ハヤクシンデネ… (-_-) ハヤクシンデネ…
(∩∩) (∩∩) (∩∩)

(-_-) ハヤクシンデネ… (-_-) ハヤクシンデネ… (-_-) ハヤクシンデネ…
(∩∩) (∩∩) (∩∩)
0345デフォルトの名無しさんNGNG
なんでも俺を実験に使うそうで
0346デフォルトの名無しさんNGNG
自由に発言してもいいが
その発言で問題が起きたら
自分で責任をとれって事。

そんな当たり前の事もできないんだ。

年収はいくらですか?
0347デフォルトの名無しさんNGNG
たかゆきってあんなにレスする香具師だっけ?
キャップ漏れだったりして
0348デフォルトの名無しさんNGNG
記念的カキコ
0349デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0350デフォルトの名無しさんNGNG
>>754
まともじゃない掲示板なんて存在意義ないね。
そういうことならここじゃ意味ないと思うが。
0351デフォルトの名無しさんNGNG
ワン切りしてみた!!
0352デフォルトの名無しさんNGNG
歌広で童貞捨てたのか、、
0353デフォルトの名無しさんNGNG
「書き込んだ人(恨みをもつ客?)」 VS 「病院」

のイザコザに巻き込まれた(利用された)、掲示板管理人ひろゆき氏。
だべ?
なんで加点のか不思議。
0354デフォルトの名無しさんNGNG
>>197
実家からはネット環境ないからできんよ、漫画喫茶からでないと。(w
0355デフォルトの名無しさんNGNG
...というわけで
[出せ]といわれて出すかどうか。
[見せろ]といわれて見せるかどうか。
[あるだろ]といわれてハイと言うかどうか。

そんだけのことのよーな気がする。
0356デフォルトの名無しさんNGNG
お前ら、勝手にスレを使わないでくれ。
ここは、人は少ないがForth言語についてのスレだ。
迷惑だから出ていけ。
0357デフォルトの名無しさんNGNG
正しい情報なら中傷誹謗もOKなんじゃない?
0358デフォルトの名無しさんNGNG
>>356
スクリプト荒らしと思われ。
放置汁。
0359デフォルトの名無しさんNGNG
悪食だから大丈夫かもとかいってみる。
0360デフォルトの名無しさんNGNG
大阪キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
0361デフォルトの名無しさんNGNG
>>312
キタ━━━━━(゚∀゚)━━━━━!!!!
0362デフォルトの名無しさんNGNG
マソコ
0363デフォルトの名無しさんNGNG
昔+にもいたぞ。
バカ丸出しだなw
0364デフォルトの名無しさんNGNG
00:00〜03:00
とか適当に書いておこう。
0365デフォルトの名無しさんNGNG
それでも私は /usr/bin/dc を使うのです。スタック万歳!!
0366デフォルトの名無しさんNGNG
総会屋さん、こんばんは。
0367デフォルトの名無しさんNGNG
ひろゆきがこないと盛り上がらないね
0368デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0369デフォルトの名無しさんNGNG
249 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:52 ID:rLfxQ17l
   >荒らしとか犯罪のためなの?
   そす。

246 名前:心得をよく読みましょう[] 投稿日:03/01/08 17:52 ID:BH998yxV
   >ひろゆき
   俺のお気に入りのスレとか荒されてるんだがそういうのにも有効?

257 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:53 ID:rLfxQ17l
      いずれは。

301 名前:心得をよく読みましょう[] 投稿日:03/01/08 17:57 ID:zbarv++q
   >ひろゆき

   2ch閉鎖って考えたことある?

310 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:58 ID:rLfxQ17l
      ラウンジが重いですとかいちいち電話してくる人がいたとき。
0370デフォルトの名無しさんNGNG
おもしろくないよ。
0371デフォルトの名無しさんNGNG
( ´ァョ)ノ< ワラタ♪
0372デフォルトの名無しさんNGNG
はどこで叩かれた有名人さんだろう?
0373デフォルトの名無しさんNGNG
隊長!誤爆しましたっ!
すまん!
0374デフォルトの名無しさんNGNG
■【予告】小学生の登校を狙って・・・
【ニュース速報】
【予告】小学生の登校を狙って・・・
あれだけ散々話題になったにも関わらず
1/8は犯罪予告スレが乱立してます。
人生捨てた人が多いのでしょうか? (;´Д`)
冗談でもこういうスレ立てはやめておきましょうね。
何もないことを祈ります。
つーか、ひろゆきが警告降臨してからもここのスレの1は予告書き込みしてるんですが (;´Д`)
冗談なのか本気なのかわからないのが怖いところです。
この記事投稿時点で現在進行形の速報です。

関連スレ:Part2
【ニュース速報】【予告】小学生の登校を狙って・・・
http://dempa.2ch.net/dat/2003/01/news-1042037071.html

以下はニュース速報板のものとは別の予告スレです
スレタイは過激なので伏せておきます。
【自己紹介】(略)
http://dempa.2ch.net/dat/2003/01/intro-1041997615.html
【ラウンジ】(略)
http://dempa.2ch.net/dat/2003/01/entrance-1042000392.html

何度も言いますが、こういうことはやめましょう。
捕まっても知らんよ。警察のご厄介になってるヤシ多いんだし(;´Д`)
(報告記者: 番組の途中ですが名無しです2号φ ★, 01/09 00:08)
0375デフォルトの名無しさんNGNG
あはは(^_^;)ま、大丈夫かどうか聞いてから書くくらいなら
書かなくていいわな。
0376デフォルトの名無しさんNGNG
GAっていつのまに2ちゃんねるアニメランキング1位になったんだ?(w
0377デフォルトの名無しさんNGNG
止んだ?
0378デフォルトの名無しさんNGNG
テレビで放送されると厨が大発生するから嫌になる
0379デフォルトの名無しさんNGNG
正月早々2ちゃんねる(プ
0380デフォルトの名無しさんNGNG
>>357-379
ここはFORTHスレッドだ。人はごく少ないが生きている。
雑談は他所でやってくれ。
0381じじぃNGNG
>>380
ここ数日間、この板全体がコピペ爆撃に晒されておるのじゃよ。
コピペに向かって叫んでも、それは詮なきこと。悲しいのう。
自治スレで何やら対策を協議しているようじゃが、何時になった
らこの惨劇が終わることやら。
0382デフォルトの名無しさんNGNG
>>381
ム板はこのスレしか見てないので気がつきませんでした。

とはいえ、これだけレスの少ない板だと本来のレスが埋もれて見にくいので
レスの削除依頼をかけようと思うのですがどうでしょう?
0383デフォルトの名無しさんNGNG
あ、あげてしもた。。。
0384デフォルトの名無しさんNGNG
裁判で負けたら、手のひらを返したようにルール変更
匿名は弱者保護のためですって言ってのは、やっぱり詭弁だったんだね (´・д・`)
0385デフォルトの名無しさんNGNG
ISP責任法でよろしこ
0386デフォルトの名無しさんNGNG
 厨質問スマソ
hobby 今何をされてるんでつか?
0387山崎渉NGNG
(^^)
0388デフォルトの名無しさんNGNG
4 名前:心得をよく読みましょう 投稿日:02/12/30 12:30 ID:yzKcjLnM
4ndってネタ?4thじゃないの?
0389山崎渉NGNG
(^^)
0390山崎渉NGNG
(^^)
■ このスレッドは過去ログ倉庫に格納されています