[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 10/05 19:36 / Filesize : 259 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

「コンパイラ・スクリプトエンジン」相談室8



1 名前:デフォルトの名無しさん mailto:sage [2005/11/06(日) 19:45:18 ]
プログラミング言語処理系の開発に興味のある人達のスレッドです。

字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換,
CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン,
SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化,
JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。
意味論に関する話題も歓迎です。

前スレ
1 pc.2ch.net/tech/kako/981/981672957.html
2 pc2.2ch.net/test/read.cgi/tech/1021136715/
3 pc5.2ch.net/test/read.cgi/tech/1070089173/
4 pc5.2ch.net/test/read.cgi/tech/1100097050/
5 pc8.2ch.net/test/read.cgi/tech/1106129164/
6 pc8.2ch.net/test/read.cgi/tech/1115335709/
7 pc8.2ch.net/test/read.cgi/tech/1129287390/

関連リンクは多分 >>2-10 あたり


82 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 21:43:18 ]
Lispと一緒で、勉強なり研究なりするとき。
あと、夜のおかずかな?w


83 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 21:52:30 ]
>>81
特定のドメインに特化した言語を作ることで
開発効率を上げたりとか。

84 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 21:54:06 ]
>>83
COBOLだな?
俺もそろそろDB直結も可能なCOBOLスクリプトが欲しいと思ってたとこだ。

85 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 22:00:34 ]
>>82-83
ありがとう。

何らかのフォーマットに対するパーサまでなら良く作りますが
言語を解釈するところまで作ったことはありませんでしたが、
このスレで自分言語を作っている人が多くて、
もしかして何か知らないメリットみたいなものがあるのかと質問しました。

86 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 22:21:56 ]
>>82 いいかげんウザイ。キモすぎる。Lisp と共に消えてくれ


87 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 22:27:56 ]
>>85
俺言語があれば他人が作った気に入らないクソ言語でストレス溜めながら
書く必要がなくなるじゃん。それだけでもメリット。
例えばJavaがクソ言語だと思ってる人が仕事か何かでクソで書かなきゃ
いけなくなった時、Javaで俺言語を作って仕事を俺言語で片付ければ2度おいしい。
クソ言語上に俺言語を作っておけば以降のクソ言語の仕事でも俺言語上だけで
仕事できるし、そういう人は俺言語を弄ってるだけで楽しいだろう。
クソ言語から早急に離脱するためには、それなりの俺言語の設計をする
必要があるけど、クソ言語だけで仕事をする苦労に比べたらマシだし
モチベーションにも繋がると考えるだろう。俺言語のためならクソ言語で
書く作業もあまり苦にならないはずだ。
他にも、もしかするとそれでクソ言語の勉強にもなるかもしれない。
あるいはクソだと思っていた言語の良いところが見えて改心するかもしれない。
逆にクソ言語はどこまで行ってもクソだったと確信するかもしれない。

88 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 22:30:31 ]
>>87
それってオナニーではないでしょうか?

仕事は他の人と一緒にやるものですよ

89 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 22:31:48 ]
>>88
俺言語はオナニーに決まってるだろ。
それ以外の何かだと思ってる奴はきっと勘違いしてる。

90 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 22:33:05 ]
>>87
クソ、クソとずいぶんお下品だと見受けられますね。



91 名前:デフォルトの名無しさん [2005/11/07(月) 22:41:19 ]
ゲーム作ってると使うよー。
デザイナーにパラメータいじってもらうのとか、
コンパイルせずに修正する箇所があるときに使う。
実行形式の再起動なしで、挙動を変更したり、テストが楽になる
でも最近、Luaとか既存のLLでいいじゃんという気がしてきた。
俺言語メンテまんどくせ。

92 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 22:43:38 ]
>>90
やっぱ上品に「うんち」って書かなきゃね。

93 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 22:44:00 ]
オナニーですよ (*´∀`)
飽きたら捨てるで問題ないでしょー。

94 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 22:46:45 ]
オナニーがセックスまで進化したのがLISP

95 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 22:50:20 ]
そろそろ倦怠期

96 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 22:51:37 ]
>>94
あーなるほど、ぼこぼこ子供(方言、派生言語)が出来上がる意味ではな。

97 名前:78 mailto:sage [2005/11/07(月) 22:58:00 ]
>79
その制限て何か意味あるの?タダのクソ仕様にしか見えんが……

>81
個人的に一番多いのが、自作アプリなんかの設定ファイルかな。
最近はXML使うことも多いけど、ルールは結局自分で決めなきゃいかんからね。

98 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 23:15:14 ]
今度は四日ぶりに来たが、凄いことになってるな
読む必要なさそうだから、読まないけどよ

99 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 23:17:36 ]
>>91
おーなるほど、確かにデザイナーさんなど、
プログラムに慣れていない人のために書くのはありそうですね。
言語というより設定ファイルとパーサみたいな印象でしょうか。

>>97
上を書いてからこのレス読みました。確かに設定ファイルも言語ですよね。

100 名前:14 mailto:sage [2005/11/07(月) 23:17:50 ]
>>97
>その制限て何か意味あるの?タダのクソ仕様にしか見えんが……

インストールが楽。実行形式ひとつ、パスの通ったところに投げ込めば
動くってのはそれなりのメリットだと思うが。
もっと拡張ライブラリが増えて、必要なライブラリだけをオンデマンドで
読み込むとかするようになったら別ファイルにもするけど、今のところ
実行形式単体で動くのはメリットだと思ってる、ってこと。

まあこれをメリットだと思わない人もいるだろうけどさ。




101 名前:14 mailto:sage [2005/11/07(月) 23:35:37 ]
しまった100getしとくんだった…
なんてくだらん話は置いといて。

>>55
うちの言語では、ネイティブ側で確保したオブジェクトへのポインタ型に
ファイナライザを付けられるようにしてる。それ以外のオブジェクトにはなし。
あとで知ったんだけど、Luaもそんな感じらしい。ていうかLuaの場合は、
確保の逆順にファイナライザを呼ぶことを保証してるらしい。

>>56
>ファイナライザ用のスタックに一端退避して保護対象にする。

ええと、このスタックから参照張られたオブジェクトについてファイナライザ
走らせる前に、これらのオブジェクトを起点にしてまたmarkするのでしょうか?
この解釈であってる?


102 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 00:41:05 ]
>>9
そのわりにテンプレには入ってないな

103 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 04:01:29 ]
相談室八になって、多少はまともになったなw
まぁ、他の擦れでもそうだけど、嵐って擦れ変わりで無くなるもの。

ところで、その俺言語公開してんの?名前だけでもさらして見れば?


104 名前:14 mailto:sage [2005/11/08(火) 08:08:50 ]
>>103
まともに公開してるんならこんなとこで名前晒すバカはいないと思うが。

こんなこともわからずに、本当に作ったんならupしろ! できないなら脳内言語だ!
とかわめくキチガイがいたから、前スレは荒れたんだよな。
# あのキチガイは誰も彼も脳内で同一人物化してたしなw


105 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 08:12:14 ]
語るに落ちるというやつですね。
誰もまだ何も言っていないうちから脳内言語脳内言語とw

こんな場末の空間で作れもしないものを作ったとアピールするのは
無駄な努力なのでやめたほうがいいと思いますw

106 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 08:48:36 ]
>>105に同意
手探りでレスするのも情報の小出しを食らうのも鬱陶しい

107 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 08:51:55 ]
>>106
小出しというが、情報を与える側から見れば 「与えなければならない情報をどこまで削れるか」 なんだよな。
いきなり膨大な量の情報を与えられても、それはそれで困るぞ。

昨日思い知った。

108 名前:デフォルトの名無しさん [2005/11/08(火) 08:53:43 ]
んー。VBでparser作る時みんなどうやってんだろ?不思議不思議。

109 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 10:13:32 ]
なんで単なる相談や経験やアイディアの提示が
「作れもしないものを作ったとアピールする」
と読めるのかが不思議。
もしかして当人がアピールしたくて仕方ないけど何も作れなくて悔しいのかな?

110 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 10:16:25 ]
>>108
VB使うようなプロジェクトでは普通はパーサなんか作らないからです!

…とか言い切ってみる。
まぁXMLの形式に載せてXMLパーサとか使うんじゃないの?
VBやったことないけどMSXMLのDLLくらいなら呼べるんでしょ?



111 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 10:20:30 ]
>>108
LLで手作りなら全く問題なかろう?
パーサジェネレータが無いとつらい文法ならそもそもVBと言う選択肢棄てるだろうし
VB自体で済みそうな話の部分に自前文法の言語実装する必要あるとは思えないし。



112 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 10:36:58 ]
>>111
手作りの場合、漏れは構文解析よりも字句解析のほうが
コードが泥臭くて面倒だなー。
適当にやっつけるにせよ有限オートマトン作るにせよ。

113 名前:108 [2005/11/08(火) 12:15:17 ]
はぁ、、、そもそもVBでこんなことするのがおかしいのか、、、ショック

実は設定ファイルを書くための簡単な自分言語?が必要なんです。
その設定ファイルは現場の人に書いて貰う予定なんで、あまり難しいの無理だし。
がんがって書くか、、、



114 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 13:20:33 ]
>>113
ならLL文法で十分ぢゃないか。
LL系の学習用の簡単なソースならMicroPlan(パスカル系でセルフコンパイラのソースが付いてた)
とか言うのが大昔のBitに掲載されてたから図書館で探してみれば?



115 名前:114 mailto:sage [2005/11/08(火) 13:22:10 ]
これね
www.google.co.jp/search?hl=ja&c2coff=1&q=%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%ADPlan+bit&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja


116 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 13:34:18 ]
>>113
設定ファイルならDTDも簡単に書けそうだし、
もうオリジナル言語なんかやめてXMLにしちゃえw
一々オリジナル言語設計するより作成もメンテも楽だぞ。
ツールも揃ってきてるし検証パーサ使えば検証もサボれるし。
XSLでHTMLに変換すれば整形表示も簡単w

117 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 13:39:01 ]
XMLのおかげで、パーサを書く手間がずいぶん減った気がする。
既に存在しているフォーマットを読むとき以外は使わなくなった。

118 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 13:58:23 ]
VisualBasic XMLでググってみると
ttp://kamoland.com/comp/xml2.html
こんなページがあった。どうやら割と簡単に使えそうじゃないか。

119 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 14:51:38 ]
果てしなくどうでもいいことだけど、日本人は何でVisual Basicにスペース入れずに書くの?

120 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 14:54:30 ]
>>119
果てしねーーーーー



121 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 14:57:38 ]
分かち書きで単語を区切る言語圏に居ないからじゃないのか?


122 名前:118 mailto:sage [2005/11/08(火) 15:26:02 ]
>>119
漏れの場合は:
スペースはデフォルト設定のMS-IMEでは変換キーなため
日本語入力時は一続きの入力が終わって意図的に変換するとき以外は
スペースキーに触らない。
大文字でスタートするIMEの英字入力モード中はスペースは変換でなく
スで、ペースになるのではあるが、やっぱり触るのに心理的抵抗があり、
入れなくて済むものは入れずに済ましたい心理的傾向がある。
多分それが原因。

123 名前:118訂正 mailto:sage [2005/11/08(火) 15:27:00 ]
スで、ペース→スペース

124 名前:108 [2005/11/08(火) 15:42:04 ]
XMLか、、、勉強不足で良く分からないんだけど、例えば、

if (isExist("hoge")) i+3; else i+2;

みたいな条件分岐も何とかなる?




125 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 15:56:39 ]
「設定ファイル」内でどの程度の計算記述能力が必要かにもよるが、
条件分岐を表現するエレメントを書けば書けない事はなかろう。
(例えばmakeのような働きをするANTのファイルはXMLで書かれている。
あるいはXSLスタイルシートはそれ自身XML形式で、
関数型言語スタイルでかなり複雑な変換処理が書ける)
ただ条件付設定ファイルレベルならばいいが
本格的な汎用スクリプトが必要になるようだと
XMLでは不可能ではないまでもあんまりおいしくなくなる可能性はある。
設定ファイルでどんな種類の条件分岐や計算が必要になるかを
把握することが鍵。


126 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 16:31:29 ]
>>125
つかそんなXMLを生エディタで書かされる方はたまらんだろう。
108が設定ファイルをXMLにするのなら、むしろそのXMLを生成する条件設定アプリ作る方がマシじゃなかろうか?


127 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 17:24:44 ]
>>126
いずれにせよ「設定ファイル」として想定される内容次第だな。
ある程度定まったパターンの処理ばかりであるならXML化してもいいが
汎用スクリプト言語的でどんな種類の処理がかかれるかについて
設計時に把握しきれないなら
そもそもXMLを選ばないほうがいい可能性が高いし…。

別の言い方をすれば、主に値や型の宣言が並ぶスタイルならXML向きだが、
複雑な制御フローや汎用の演算セットがあるようなら向かない可能性が高い。
XMLは元来「文書」を表現するためのものだから
「設定ファイル」の性質が「文書」に近ければXMLで比較的表現しやすいし、
「文書」から離れて手続きプログラム的になるとXMLでは段々表現し辛くなる

条件設定アプリはその中間くらいの複雑さのときの解だな。

128 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 18:07:45 ]
>>124
あくまでも一例
<if test="isExist('hoge')">
<true>i+3</true>
<false>i+2</false>
</if>

実際はXSLなどを参考にしつつもうちょっとマシなのがいいと思うけど。

129 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 18:14:01 ]
XMLなんて馬鹿の思いつきだよ。
する〜よろ>>ALL

ところで、俺言語いいじゃないか。
どんどん語ってくれ!


130 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 18:24:45 ]
>>129
そういう根拠を述べない決め付けはよくないな。
技術者ならば各手法の選択に当たって目的に対する得失を比較せねばな。

>>127>>125でも述べた通り、
XMLを使ったほうが開発・維持の手間が減らせる場合は確かにある。
逆に使わないほうがいい場合もある。万能な方法はない。



131 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 18:42:53 ]
データ構造を記述するだけの場合にはXMLは非常に優れた能力を持つよね。
でもプログラムを記述する場合にXMLを使う例は今のところあまりないと思う。
JavaMLなんてものもあるけれど、あれは構文木をXMLにしただけだし(うろ覚え)。

132 名前:108 [2005/11/08(火) 18:48:24 ]
んー。XMLでもできそうな気がしてきた。VB使う限りはXML使うのが楽っぽい。
VBはもう終っちゃう言語だろうけどさ、、、
一応XML使ってみるよ。条件分岐が少し多いだけで、多分、そんなに複雑にはなら
ないから多分大丈夫かと。




133 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 18:57:28 ]
>>131
代入や演算、一般的な条件分岐などで
データ・フローやコントロール・フローが複雑になると
XMLではおそらく読みにくくなる。
データ構造記述は比較的それらが単純で局所的な要素が多いからな。

ANTなんかはタスクの依存関係を記述してプログラムのビルドやセットアップを行う
スクリプト的側面を持つが、処理のパターンが依存関係とコマンドというように定型的で
宣言的だからXMLでも比較的追いやすい。

もう一つの基準はスクリプトや設定ファイルの処理で
ツリー構造を作るところまでの仕事が占める割合だな。
データ構造記述の場合パースしてツリーができればかなりがとこ仕事は終わっている。
タスクの依存関係を記述するANTの場合も然り。
けれど代入や分岐などを認め複雑なデータフローや
コントロールフローなどを処理する必要が生じるとツリーを作った後が中心になってくる。
XMLパーサを使うことでコストが減るのはパースする部分までだから、
ツリーなどのデータ構造を作った後の処理の比重が重いと旨みは減る。

134 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 19:04:01 ]
もう一つXML使ってメリットがありうるのはスクリプト自身を処理する
スクリプトを書くなどメタな処理をする場合だな。
スクリプト自身をデータとして処理する予定がある場合や、
XPathなどを駆使してXMLファイル内にXMLファイルの構造を辿るような記述を埋め込む場合だ。
XSLやXML Schemaなどはこのような例だな。

135 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 19:18:46 ]
XSLTはかなり良く設計されていると思う。XML Schemaはノーコメント。

あと、企業独自言語で、XML内にスクリプトを埋め込むというのを何度か見た。
SVGとかも確か、スクリプト(ECMAScript?)をエレメントの中に記述したよね。
よく考えれば、SVGをいうまでもなくXHTMLもそうか。

136 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 19:37:30 ]
>>128
うへえ。
いろんな意味でLISPのS式の方がいいじゃん。

137 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 19:48:04 ]
みんな! 136がVB用のLispパーサを書いてくれるそうですよ!

138 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 19:48:36 ]
>>136 ログ嫁

139 名前:デフォルトの名無しさん [2005/11/08(火) 19:52:00 ]
ばかかお前ら?
XMLのコンテンツとして、文をいれる訳???
まだ、*ispの方が遥かにいいよw


140 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 19:53:13 ]
ん、配列扱える言語なら基本的なLISPぐらい書けるでしょ。
VB使う機会があったら書いてみるよ。



141 名前:デフォルトの名無しさん [2005/11/08(火) 20:07:38 ]
いや、、お前らよく考えろ。XMLなんて素人に書けないぞ。結局XMLを生成する
アプリ作る必要が出てくるに違いない。いや、中間言語としてXMLを使うのは
悪くは無いかもしれんが、、、

142 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 20:14:25 ]
>>141
その通りだが、Lispもそうなんだよな。デザイナーが書ける言語って何だろう。

143 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 20:17:42 ]
デザイナーとプログラマーのプログラミングに対する意識は人それぞれといえまったく違うみたいだしなぁ

144 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 20:36:48 ]
設定ファイル解釈系相談室、の方が実態に即してるんじゃないか、このスレ。

145 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 20:58:04 ]
>>142
素人受けして、文法に柔軟性がある言語があるが、
あえて名前は書かないw


146 名前:デフォルトの名無しさん [2005/11/08(火) 21:10:57 ]
>>145
ほほぅ、、もしかして「日本語」か?


147 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 21:12:48 ]
>>145
詳しく


148 名前:145 [2005/11/08(火) 21:13:20 ]
>>146
その通りw


149 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 21:45:40 ]
りんごタソは、やまとなでしこ。

150 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 21:51:52 ]
>>142
素朴な疑問だが、どこから「デザイナー」が出てきたんだ?

設定ファイルにLispというと、.emacs.elの感覚かねえ…
素人にはお勧めできないわな、そりゃ。




151 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 22:17:56 ]
>>150
あ、ごめん、俺は昔デザイナーがカスタムタグベースのJSPを書けなくて
ショックを受けて、プログラムをする必要のある素人といえばデザイナーが
脊髄反射で出てきてしまった…

152 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 22:43:01 ]
>>108&113
ここでこういうレスを入れるの自体スレ違いかもしれないけど、iniファイルじゃ
駄目なの?制御構文が絡まなければ別段パーサなんて作る必要性感じないんだけど

153 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 22:51:32 ]
>>101
>うちの言語では、ネイティブ側で確保したオブジェクトへのポインタ型に
>ファイナライザを付けられるようにしてる。それ以外のオブジェクトにはなし。

成程成程、自分の場合作っているのがECMAScriptのスーパーセットなもので
その辺はファイナライザを指す特定のシンボルを動的検索です、ちょっとオーバー
ヘッドが気になるのだけど致し方無しという所です。

>ええと、このスタックから参照張られたオブジェクトについてファイナライザ
>走らせる前に、これらのオブジェクトを起点にしてまたmarkするのでしょうか?

うちの場合も構文木でスタックは持ってないんだけど、要はオブジェクトリスト
を管理している所を2本化してチェック走らせれば良いのでは、と理解しました。

# ちなみに構文木辿っている途中の中間計算で使用されているオブジェクトは
リファレンスカウンタ介してGC時に除外する方式取ってます、ちょっとオーバーヘッド
あるけど。

154 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 23:30:51 ]
デザイナー自体は>>91で出てるね。

デザイナーが書ける(こともある)プログラミング言語というと、
やっぱりFlashのActionScriptじゃないかな。


155 名前:14 mailto:sage [2005/11/09(水) 00:15:53 ]
>>153
うーんと。
ファイナライザがあるとGCが厄介だ、というのは、ファイナライザの中で
thisをグローバル変数か何かに放り込まれると、オブジェクトが「復活」する
からだよね?
んで、復活するのは、ファイナライザを呼ぶオブジェクトそのものだけでなく、
そのオブジェクトから辿れるオブジェクトすべてだから、
>ええと、このスタックから参照張られたオブジェクトについてファイナライザ
>走らせる前に、これらのオブジェクトを起点にしてまたmarkするのでしょうか?
と書いたわけだけど。ただ、今読み返すと、>>56氏も>>58氏も、そんなことは
当然として書いてるように思える。恥さらしましたかね。

ちなみに.NET FrameworkのGCについて以下のページに説明があって、

www.microsoft.com/japan/msdn/net/mag00/GCI.asp

下の方に、ファイナライザを含むオブジェクトのGCの話も書いてある。
でも、俺にゃ「完結キュー」がなぜ必要かわからないし(オブジェクトごとの
フラグじゃいかんの?)、復活の話も書いてあるけど、.NETのGCがどう対処してる
のかもよくわからない… 俺がアホなのか。


156 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 10:53:26 ]
>>141
素人さんにはXMLに限らずどんな形式言語でも書けない。
だからユーザとして想定する相手の技術レベルよっては
どのみち設定ウィザードみたいなものは必要。

157 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 11:02:10 ]
>>152
どっちみち.iniファイルの中の仕様を決めねばなるまい、
あれだって単純とはいえ一応形式言語だぞ?

それと>>124を見る限り、
>>108は簡単な設定ファイル内で簡単な条件判定くらいはするつもりらしい。

158 名前:108 [2005/11/09(水) 12:19:08 ]
ん。そうです。設定ファイルというと語弊があったかも、、、実際には
現場の人に計算式を入れて貰うわけです。パラメータにAがあったらこういう計算、
パラメータにBがあったらこういう計算。寸法がある範囲内ならこういう計算、
みたいに計算式と条件を書いて貰おうと。

この条件の部分が後からどうなるか分からないので、比較的自由に条件が設定できる
ようにしたいわけです。

とりあえずLL(1)で書いてみたけど、ちょっと気持ち悪いです、、、
getcharのかわりにmid関数とか使ってるんだけど、こんなんでいいの?



159 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 12:34:49 ]
条件式はかなり複雑なものになりえる?
計算式もスクリプトが計算するのか?
その辺がYesならまぁXMLは向かない可能性が大なので忘れてくれ。

>>135
XMLに別言語のスクリプトを埋め込むのはまぁあんまりオススメはしない。
特に埋め込む言語が広く使われている既存の言語ではないとか、
XMLのフォーマットが既にある程度普及してる訳ではない場合とか、
スクリプトが断片的でXMLの記述と絡み合い、
それ自身では完結しない場合とか。
いずれも処理が煩雑になり理解もしにくいものになるからな。

まぁHTMLにJava Script(ECMA Script)埋め込んでそれなりに動いてる
って前例があるからやりたくなるんだろうが…。
あれはHTMLが爆発的に普及してその拡張手段が必要となって
止む無くやってるわけで最初から目指すものではない気がする。

まぁTeXとPascalコードを融合してアルゴリズムの文書的記述と
プログラムを融合したweb(Knuthの提唱する文芸的プログラミング)
という試みもあってそういうのは面白いかも試練が、
あの場合はドキュメント+実行可能サンプルって意味合いが強く
コードとドキュメントにキレイに分離できて、
分離後は別々に処理できたから問題なかった。

160 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 13:53:46 ]
昔、INIファイルのままでTinyBASICもどきを作ろうとしたことがあった
(実行環境に応じて設定が動的に変わるように)
[MAIN]
VAR=グローバル変数
100=A=0
110=FOR I=0 TO 10: PRINT I;: NEXT I
120=GOSUB MOKEKE
130=END
[MOKEKE]
100=VAR=$SCREENWIDTH
110 RETURN

とか
仕様考えているうちにダルくなってそれっきり。
やっぱGOSUBは!=じゃなきゃだめとか(ぉぃ



161 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 14:56:17 ]
>>158
やはり、という気がするのだけれど、それを設定ファイルと呼ぶのは、
問題に対する誤解を生むだけの間違いのような。
条件はともかく計算式を「現場の人に書かせる」のが必然かどうか知らんが、
入力の妥当性検査やエラー含めて、どの程度の記述能力が必要なのか、
確定しているのかな? 下手すれば(少なくともUI的には)
本体の処理内容自体よりよほど重要なわけで、それが
>この条件の部分が後からどうなるか分からないので、
というのは、設計以前の問題把握/認識として大丈夫かな、と……


162 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 16:01:36 ]
58です。
>>155
CLRの図で行くとFリーチャブルキューが生成された時点ではまだヒープに
オブジェクトは残っていて、1回のGCサイクルが

1) 完結キューに無く、かつFリーチャブルキューにのオブジェクトをヒープから削除
2) 完結キューに存在するオブジェクトの参照をFリーチャブルキューに移動
(この時点ではオブジェクトは残っている)

2')非同期でファイナライザ実行スレッドが走る

なので次の実行時に復活されているオブジェクトはそのまま残るのでは?
56の話も1GCサイクルは

1) ファイナライザを持っていてファイナライズされていないオブジェクトはリストへ、
それ以外の未使用オブジェクトは削除
2) ファイナライズリストにあるオブジェクトはファイナライズ実行

なので次の呼び出しで復活している場合は1で参照されているので復活は処理できるのでは
ないかと思ってるんですが、何か抜けてる?

完結キューの話はその方がクラスのメモリ上のレイアウトがすっきりするし、CLRの
場合クラス設計は静的だからオブジェクト作成時にファイナライザがあるかどうかは
はっきりしているので、実装によってはそういう方法もあるかな、位に考えてました
が、、、抜けてるかな

163 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 16:06:27 ]
間違い)
1) 完結キューに無く、かつFリーチャブルキューにないオブジェクトをヒープから削除

164 名前:108 [2005/11/09(水) 16:08:50 ]
>>159
ありがとうございます。とりあえず、XMLは勉強不足なので、今後の課題に
したいと思います。

>>161
すみません。設定ファイルと言うと誤解されても仕方ないですね。
条件が後からどうなるか分からないというのは、
現状なら大丈夫だけど、今後、外的要因で変わる可能性もあるっつーこと
です。



165 名前:デフォルトの名無しさん mailto:??? [2005/11/09(水) 16:11:02 ]
C言語の学習および開発をしたいのですが、visual C++.netよりも
いいものってあるでしょうか?

166 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 16:14:10 ]
GCC

167 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 16:28:06 ]
ICC

168 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 16:29:52 ]
>>165
学習と開発を一緒にしないでください。

169 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 16:31:57 ]
>>164
>条件が後からどうなるか分からないというのは、
>現状なら大丈夫だけど、今後、外的要因で変わる可能性もあるっつーこと
いや、当然せめてそのレベルにないと話にならないわけで……
その可能性等、未確定要素でもある程度認識しておかないと、
>比較的自由に条件が設定できるようにしたいわけです。
たって、なんでもできる万能言語を作る能力にめぐまれるわけでも無く、
記述能力の水準やら(言語の)設計方針もきまらないんじゃ? と、
心配するわけです。(だから軽く設定ファイル、なんて言っちゃうのかなと)

170 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 16:41:26 ]
>>165
TinyCCが良い、コンパクトなのでソースも読み易いぞ



171 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 17:01:00 ]
>>168
まぁしかし広義には人生これ全て学習じゃよw
開発も人生の一部であるからにはまた然りじゃろて。

172 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 19:22:08 ]
開発が人生のすべてで、他はオマケという人もいる罠。w

173 名前:14 mailto:sage [2005/11/09(水) 20:27:28 ]
>>162
>1) ファイナライザを持っていてファイナライズされていないオブジェクトはリストへ、
>それ以外の未使用オブジェクトは削除
>2) ファイナライズリストにあるオブジェクトはファイナライズ実行

単純なmark sweep GCを考えると、この1)のフェーズの前にmark phaseがはいってて、
1)はsweepと同時にやるようなイメージなんですが、ここまでの認識は合っているでしょうか?
ファイナライズされるオブジェクトをAとすると、Aは定義からしてマークされていないはずで、
当然、Aが参照しているオブジェクト(Bとします)もマークされていないはずです。
この状態でsweepすると、Bはなくなってしまうわけですが(Bにはファイナライザはついて
ないものとして)、Aが復活したら、Bも一緒に復活しなければなりません。
だから、
>ええと、このスタックから参照張られたオブジェクトについてファイナライザ
>走らせる前に、これらのオブジェクトを起点にしてまたmarkするのでしょうか?
と書いたわけで。

もちろん、mark phaseにて、ファイナライザ持ったオブジェクトは最初から
すべてmark対象にしてもいいわけで、そう考えると.NETの完結キューも
意味があるのかな、とこれは今思った。完結キューもルーツに含めればよいわけで。

174 名前:デフォルトの名無しさん [2005/11/09(水) 20:39:13 ]
なんか、俺様言語のオンパレードだなw

プログラミング言語 俺様 改訂2版


175 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 22:14:28 ]
>>171 >>172 >>174 あたりがウザイ。せめてアボーンできるようにコテハンつけてくない?


176 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 22:15:21 ]
>>173
指摘thanx、見落としてました。という事は

1) 通常通り変数,Fリーチャブルキューから参照されているものをmark
2) 1でmarkされなかったファイナライザ付きオブジェクトを
ファイナライズリスト/Fリーチャブルキューに登録し、そのオブジェクトを起点にmark
3) sweep
4) ファイナライザ実行

でどう?


177 名前:108 [2005/11/09(水) 22:20:08 ]
>>169
多分,
>比較的自由に条件が設定できる
という部分が誤解を招いたかと。すみません。

条件の部分はあらかじめ組み込み関数を用意する予定です。
現場の人にはそれらと論理演算記号とを組み合わせて条件を書いてもらいます。
今後何かあっても変更になるのは条件の部分だけなので,変更があったら,
組み込み関数を都度追加すればよいだけなんで。

正直,これ,条件分岐と,四則演算さえできればいいんです。
言語というほどのものではなく,eval関数に毛が生えたみたいなもんだと
思っていただければ・・・・そもそもあまり難しくすると現場の人書けない
ですから。

というわけで,大体できました。皆さんありがとうです!

178 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 22:23:38 ]
あれ? ファイナライザでオブジェクトが復活するかどうかって、コンパイル時に決定できる?

179 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 22:24:55 ]
復活するかどうかは普通は決定できない、持っているかどうかは決定できるという話じゃない?

180 名前:178 mailto:sage [2005/11/09(水) 22:27:18 ]
ごめん。思いつきで書いたけど良く考えなくても決定できそうにない (;´Д`)



181 名前:デフォルトの名無しさん [2005/11/09(水) 22:45:29 ]
>>175
おまえがいちばん鵜剤w

182 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 23:11:24 ]
>>177
文法がある以上、言語だと思うけど。
多分DB絡んでる?違うかな。。。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<259KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef