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 あたり
45 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 01:33:45 ] IEならスクリプトデバッガがあるし、狐ならJSコンソールがある。 変数監視系のデバッグツールまでいくと聞かないけどね。
46 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 01:44:24 ] >>45 デバッガの有無というより、形無し言語だからでは?
47 名前:41 mailto:sage [2005/11/07(月) 01:51:57 ] ははぁ、どっちもarityメソッドとか使って ライブラリにできなくもない、という感じですか。 勉強になりました。ありがとう。
48 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 01:53:40 ] ふむ。しかしまぁ、JSでデバッガが必要な規模のコードなんて書かないけどねぇ。 Ajaxなら必要なのかも知れんけど1000行程度の外部JSファイルで1アプリ分かけない?
49 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 02:02:09 ] デバッグツールなんて、ベースがLISPだったら簡単に作れるのにね。 こういうレベルの話ばっかだからダメなんだよ。 わかれよ。
50 名前:43 mailto:sage [2005/11/07(月) 02:09:10 ] かつては、型がない、開発環境がない、実装間の互換性がない、の三重苦でしたが、 後ろ2つまではわりと解決されてるっぽいですね。 型はまあ、趣味の問題かなぁ。 >>49 言語ユーザとしての話に過ぎませんでしたね。すみません。
51 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 02:14:09 ] コードでエラーはなくともIEが突然落ちるJSはまだまだ怖い。
52 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 04:27:21 ] そういや、前スレの埋め立て時に出てた話題だケド、 GCまで作ってる人って、そんなに珍しいの? 俺の作ってる俺スクリプトでは、今、GCを作ってる途中なんだが・・・
53 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 05:11:32 ] そんなに珍しくも無いんじゃない?明示的削除構文の無い言語でオブジェクト をサポートする言語なら必須でしょ。値,文字列,配列のサポートのみで 配列内に配列を入れない制約をして良いならリファレンスカウンタで処理できるけど ただ自分の場合はCのスタックを直にスキャンするような方式にはしなかった けど、その分ちょっと処理が重くなったかもしれない
54 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 05:15:20 ] ECMAScript作った時はクロージャサポートの為構文木もGC対象にしなきゃいけなかった んでちょっとめんどくさかった、それ以外良い方法が思いつかなくて
55 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 05:27:44 ] このスレ的にはファイナライザってどうなんでしょ、俺言語でnativeのdll呼び出し できるように作った都合上native側で確保したリソースの管理・エラーレポート用 にファイナライザを実装したのですが、GCとの相性が悪くてかなり気持ち悪い思い 気分だったのですが
56 名前: ◆LispYaxRvY mailto:sage [2005/11/07(月) 06:54:53 ] >>55 GC対象になったファイナライザ付きオブジェクトは、 ファイナライザ用のスタックに一端退避して保護対象にする。 GC後にそのスタックの各々に対してファイナライザを起動、 処理が終わったオブジェクトは処理済みマークか何かを付けて保護から外す。 処理済みオブジェクトは次回のGCか何かで回収する。 こんなんでどうかな。
57 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 07:03:38 ] >>31 俺はLispは知らないECMAScripterなんだけれど、 ラムダが利用できますってどういう意味なんだろう。 クロージャは頻繁に利用しています。便利すぎる。
58 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 07:56:47 ] >>56 ふむふむ、現状ではGC実行中に全てのGCを止めた状態でファイナライザを実行して いるのですが、そのように2本化してしまってファイナライザ実行中は通常GCのみ許可、 ファイナライザ処理のみ禁止としてしまう方が融通効きそうですね、アドバイス ありがとうございます、早速検討してみる事にします。
59 名前:14 mailto:sage [2005/11/07(月) 08:11:32 ] >>52 >GCまで作ってる人って、そんなに珍しいの? 珍しいと思い込んでる妄想クンがひとり暴れてただけでしょ。
60 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 08:11:43 ] >>57 ラムダは無名関数リテラルが扱えるという意味で、括弧のバランスはLISPの 大量の括弧を書く話と対比してと受け取った、間違えてるかもしれないけど。 ECMAScriptはクロージャにおけるthisが呼び出しコンテキストに左右されてしまい 必ずしもオブジェクトを指しているとは限らない所と、感情的にだけど宣言なし で未宣言の変数を使った時に宣言先がグローバルになる所、それからクラスメンバ の未宣言がエラーにならない所が気持ち悪く感じた。 最新の4th(普及してないけど)での型宣言の書式も冗長な気がするし でも文句は多いけど頑張って欲しいとは思う。
61 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 08:16:09 ] >>60 クロージャにおけるthisが呼び出しコンテキストに左右されるのは クロージャがある以上当然の設計だと思うんですが。ActionScriptもそうだね。 左右されないthisを使いたいなら、例えば次のように書けばいいはず。 var constThisFunc = function(instance) { return function(x,y){/*real function using 'instance' instead of 'this'*/}; }(this);
62 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 08:30:24 ] >>60 なるほど、無名関数のことでしたか。 ありがとうございます。ラムダについては機会があれば詳しく調べてみます。
63 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 08:33:11 ] >>61 そそ、そこでthisをクロージャメインと考えると妥当なのだけど、一応オブジェクト 機能もあるのでthis==オブジェクトと考えたい部分もあって、例えば var a=new Foo(); eventList.add(a.onMouseDown); みたいな書き方をしたいと、確かにコンストラクタに相当する関数の先頭で var me=this; などとしてクロージャコンテキストに入れてしまえば良いだけなんですが、 言語標準の機能としてあればもっと安心かなぁ、という所です。 ActionScriptはそもそもECMAScript実装なので基本的には同じでは?
64 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 08:37:58 ] >>63 > などとしてクロージャコンテキストに入れてしまえば良いだけなんですが、 > 言語標準の機能としてあればもっと安心かなぁ、という所です。 なるほど、早とちりすまんでした。 最近は癖でthisを必要が無くても常にクロージャに含めてしまっているので、 いまや何の違和感もないですが、言われてみれば言語標準の機能として 自分自身のオブジェクトを指すキーワードを入れても不自然ではないですよね。 > ActionScriptはそもそもECMAScript実装なので基本的には同じでは? 知らなかった、恥です。 これだけ普及しているのに、なかなかECMAScriptの開発環境出てこないなぁ…
65 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 10:16:50 ] 実装依存な仕様が多くて、一般的なものを作っても無駄なんじゃなかろうか
66 名前:デフォルトの名無しさん [2005/11/07(月) 10:46:27 ] ちょっとスレ違いかもしれないけど、VBで構文解析しようと思ったらこれ!っていう ツールある?lex/yaccみたいなのあったら知りたい、、、 現状再帰下降構文解析とかちまちま書いてるんだけど、、、
67 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 15:11:20 ] 実装依存な仕様というか、仕様範囲外のライブラリが多いからね。 あと、組み込み用途がほとんどだから、ES開発環境自体も ホームページエディタやFlash MXなど組み込む対象物の開発環境に 組み込めないといけないのも難しいし、今さら感もある。 ところで、俺言語にJSを組み込ませてみたいと思ってるんだけど、 こういうアイデアを実現した言語って既出? 俺言語は関数型言語なので、 手続き型で書きたいところはさっくりJSでかけるよー、 って感じにしたいんだけど。実行速度は気にしてない。 let f x = g (x - 1) function g(x) { return f(x + 1); } みたいなのが書けるの。
68 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 15:40:23 ] >>67 関数型言語に手続き型記述を埋め込むという話なら、 それこそ前スレで大人気(w)のlispのprog形式とか、 もうちっと今時の言語ならHaskellのMonadとか。 言語に他の言語要素を埋め込むという話なら… CにSmalltalkを埋め込んだObjective-Cとかかなぁ。
69 名前:デフォルトの名無しさん [2005/11/07(月) 18:09:08 ] Lispの次は俺言語かw
70 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 18:15:51 ] だがそれがスレの趣旨にはあってるからなw
71 名前:デフォルトの名無しさん [2005/11/07(月) 19:55:50 ] 俺言語は隔離すれでやってくれよw
72 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 20:04:12 ] >>71 はぁ?
73 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 20:07:51 ] 隔離スレかどうかは知らないけど、過疎ってるスレ結構あるからな〜。 少数で占有すんのもアレなんで、そっちを有効活用するのもアレかと。
74 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 20:11:46 ] >>71 はぁ? 俺言語にLispもいれろw
75 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 20:12:55 ] 俺言語といえば スリムドカン?だっけか どうなったんだべ?
76 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 20:15:07 ] >>75 宣伝乙w
77 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 20:17:12 ] >>75 おみゃーらはようw おみゃーらはようw
78 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 21:00:10 ] >14 遅レスだけど。 おいらだったら a') ローダを実装して別ファイルの俺言語ソースを読み込む ですな。 俺言語ソースを変更するたんびに再コンパイルはちょっとスマートじゃないね。 最近のPCは速いからあまり気にする必要がない、つうのはあるかもしれんが……
79 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 21:25:22 ] >>78 インタプリタ本体+標準拡張ライブラリは1ファイルに という制限があったと思った。
80 名前:デフォルトの名無しさん [2005/11/07(月) 21:29:58 ] >>79 俺様言語の仕様ぐらいちゃんと覚えとけw
81 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 21:31:45 ] 質問ですけれど、自分言語ってどういうときに必要になるんですか?
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