プログラミング言語 L ..
871:デフォルトの名無しさん
08/03/01 10:51:39
あ、>>870は>>868に対して。
>>869
とりあえずSqPlusのソースを読み始めたところ。SqPlusと似たインターフェイスになりそう。
名前空間何にしよう。とりあえずsqbindでいいか。
872:859
08/03/01 12:34:57
>>867
ストリームみたいな感じで引数3つスタックに積んでる。
あくまで例なんで、数値に意味は無い。
873:デフォルトの名無しさん
08/03/01 13:13:31
>>872
ストリームみたいにしたいなら
gcall<<"object"<<"setPosition"<<arg<<1.0<<3.0<<-2.0<<end;
みたいにマニュピレータつかった方が見やすいと思うけど
874:デフォルトの名無しさん
08/03/01 14:17:15
もといマニピュレータです
875:859
08/03/01 14:20:12
ああ、元々ストリームを意識して作ったわけじゃないから
その辺は考えてなかった。
876:デフォルトの名無しさん
08/03/01 14:59:38
C++のストリーム演算子?はよく知らんだが、
a << 1.0 の戻り値はどんなオブジェクトになっとるの?
a と同じオブジェクトを返しているのですかね。
ということは、メソッドチェーンみたいなのでも可能か・・・
a.push(1.0).push(12.3).push(0.4).call(3, 0)
みたいな
877:デフォルトの名無しさん
08/03/01 15:59:30
バインダの名前sqppに決定。
SqPlusを読んで勉強中。
SquirrelObjectのコピーコンストラクタだけど、以前保持していたオブジェクトへのハンドル
はsq_releaseしなくて平気なんだろうか。
operator=ではちゃんとsq_releaseしてるし、バグだよなぁ・・・やっぱり。
878:デフォルトの名無しさん
08/03/01 17:21:12
って何を血迷ってるんだコピーコンストラクタにreleaseいるわけ無いじゃんOTL
アホス つってきまつ
879:デフォルトの名無しさん
08/03/02 02:02:22
binderなんていらないね
なんでもいいけど一行でcallできるのと
一行でnative closure登録できるようにしとけば
他はほとんどつかわんよ
880:デフォルトの名無しさん
08/03/02 06:28:46
>>879
それを人はバインダと呼ぶ
881:デフォルトの名無しさん
08/03/02 11:54:53
Lua5.1.3のlstrlibのSJIS化してみたので置いときます
URLリンク(colon.nsf.jp)
MSVC用なんで需要なさそうだけど^^
882:デフォルトの名無しさん
08/03/02 12:48:58
>>881
ソースコードのほうはいいけど、test.luaのほうの文字コードがぶっ壊れてるように見えるんですが。
str = "\\5爐!Eェ殉\\}柔檻5\"xさぜ\"ェ殉柔爐さ檻Exぜ!}"
pat = "[^檻]*"
testf( 1, str, pat, "xさぜ\"ェ殉柔爐さ" )
これってテスト用だからわざとだったりします?
でも、SJISじゃないって警告が8箇所出てたりもします。
883:デフォルトの名無しさん
08/03/02 13:13:04
すいません。わざとです。
漢字コードの境界部分を多く含むようにしてあるので
フォントによっては表示すらできません
884:デフォルトの名無しさん
08/03/02 14:01:30
SquirrelのGCは参照カウンタ型か・・・
GCの負荷を分散するわけだからどうしても重くなるよね。
やっぱLuaかな・・・
885:デフォルトの名無しさん
08/03/02 14:17:15
>>884
つ ベンチマーク
って、ゲームとかの組み込みだろうから、単純計算しても参考にならんわな。
実際の簡単なゲームの比較ベンチマークでもあれば、いんだろうけどね。
886:デフォルトの名無しさん
08/03/02 14:35:37
なんでマイノリティの参照カウンタ型採用しちゃったんだろ?
当然参照カウンタ型のデメリットも把握してたはずだが・・・
一般的なLua型にもデメリットはあるが今現在
決定的なアルゴリズムはないのだからとりあえず一般的な型(Lua型)
にしときゃよかったのに。
887:デフォルトの名無しさん
08/03/02 15:14:03
んー。確か、Squirrelを作った理由に、LuaのGCの挙動にブチギレたってのも合ったはず。
どっかに記事なかったかな。
888:デフォルトの名無しさん
08/03/02 15:17:21
ゲーム用途に組み込む人は解放のタイミングが確実な参照カウンタのほうを好む気がする
889:デフォルトの名無しさん
08/03/02 15:28:28
マシンはどんどこリッチになるしな
特にPCは
専用機(コンソール)だと各世代の寿命と段差が大きいが
890:デフォルトの名無しさん
08/03/02 16:46:14
大体Squirrelはマーク&スィープGC積んでるんだから、それでもあえて
リファレンスカウントを選んだのはちゃんと理由はある。
URLリンク(wiki.squirrel-lang.org)
俺がSquirrelを使ってる理由はリファレンスカウントだから。理由は>>888。
巨大なリソースを組み込みスクリプト側で扱う設計にしてるなら、リファレンスカウント
のありがたみが分かるはず。
折角GCつき言語採用してるのに、リソース開放のためにdispose()とかダサいよ。
891:デフォルトの名無しさん
08/03/02 16:55:03
luaにネイティブ整数型がないのはときどき困る。
892:デフォルトの名無しさん
08/03/02 20:00:03
チラシの裏。
Squirrelバインダ製作中。とりあえずC++からSquirrel呼び出しは、
SquirrelVM vm;
int value = sq_cast<int>( vm.getRootTable()[ "foo" ] );
vm.getRootTable()[ "bar" ] = "BarString";
vm.getRootTable()[ "setPosition" ]( 1.0f, 2.0f );
vm.beginCall( vm.getRootTable[ "setPosition" ] )
.param( 1.0f )
.param( 1.0f )
.endCall();
みたいな感じに。
SquirrelからC++呼び出しが面倒くさい。Sqplusみたいにテンプレートを駆使した
バインダにするか、それともネイティブクロージャを楽に登録できるようにするだけに
するか、悩みどころ。
893:デフォルトの名無しさん
08/03/03 07:50:12
>>890
まあ「俺の好みだからほっとけ!」いわれればもうなにもいうことないけど
リファレンスカウント型には毎度のカウンタ操作による負担が重いという弱点があり
そこを嫌われてマイノリティなのは事実だから仕方ないよ。
894:デフォルトの名無しさん
08/03/03 08:58:58
>>893
マイノリティか?海外で大人気のPythonは参照カウント&GC式だぞ。Squirrelと同じ。
Pythonのスタックレス版はどっかのネトゲのサーバーに使われてたはず。
>毎度のカウンタ操作による負担が重いという弱点
これそのままメリットなんだよね。マーク&スイープGCは回収している間プログラムが
とまるって事実は忘れちゃいけない。参照カウントはGCのコストをちょっとずつ払って
いるから、止まることは無い。
一般的に嫌われてるってのはただ単に>>893の個人的な感想じゃないか?
両者のメリット・デメリットを把握して運用するのが重要だと思う。
895:デフォルトの名無しさん
08/03/03 09:44:53
>>894
PHPとかIoもやね。あとObjective-Cも。
896:デフォルトの名無しさん
08/03/03 11:17:30
ちょうどそんな話題がPythonスレに出てたよ
スレリンク(tech板:182番)
897:デフォルトの名無しさん
08/03/03 14:32:21
>>896
凄くみにくい言い争いに発展してるんだがwww
898:デフォルトの名無しさん
08/03/03 19:00:16
>>896
参照カウントにも利点があることが分かったよ。なんとなく。
あと、英語が読めないと開き直ることに、利点がないのも分かった。はっきりと。
899:デフォルトの名無しさん
08/03/03 20:15:59
チラシの裏。
Squirrelバインダ製作中。ただ、作ってるうちにSqPlusへの理解が深まったせいで、SqPlus
使えばいいんじゃね?みたいな雰囲気に。もうだめぽ
とりあえず
DefineClass< SampleClass >( "SampleClass", vm )
.constructor()
.method( "testFunction", &SampleClass::testFunction )
.method( "testFunction2", &SampleClass::testFunction2 );
のようにバインドできるようにしたけど、これから作りこんでいくかどうか悩んでる。
メンバ関数ポインタの配列をsq_get/settypetagを使って設定してるけど、
使い方間違ってるぽ\(^o^)/オワタ
900:デフォルトの名無しさん
08/03/04 00:46:02
日本語変数名つかえるようにしたのと入れ替えました
さらに需要ないんだろうなあ
901:881
08/03/04 00:50:25
すいません。間違えてあげちゃいました。
メール欄に881ってw
902:デフォルトの名無しさん
08/03/04 07:56:42
>>894
うーん、この辺が入門としてはお勧めかな。
URLリンク(ssl.ohmsha.co.jp)
割と大きい図書館ならおいてあるよ。
マーク&すいーぷの欠点はそのとおり。
903:デフォルトの名無しさん
08/03/04 08:42:52
Squirrelのバインダなんだが、C++からエクスポートするときのインターフェイスに悩んでる。
どっちがいいかな?とアンケート。
1.
void foo( cpp_ptr<TestClass> arg )
{
904:デフォルトの名無しさん
08/03/04 08:45:23
xtal使いやすいよ。
905:デフォルトの名無しさん
08/03/04 08:55:51
うわ途中で送信しちまったい。
1.
void foo( cpp_ptr<TestClass> arg )
{
/*なにか処理*/
}
2.
void foo( TestClass* arg )
{
/*何か処理*/
}
//ヘッダファイルのどこか
SQPP_DECLARE_CLASS( TestClass );
2はSqPlusと同じ方法。1は代替案って感じ。
基本型以外は全部C++のクラスと仮定してエクスポートしてもいいんだけど…
(そうしたらSQPP_DECLARE_CLASSいらない)
906:デフォルトの名無しさん
08/03/04 13:18:02
参照カウント式が特段優れたものではないということは確か。
というか逃げられない(GCしないという選択肢がない)分、有害ですらありうるな。
907:デフォルトの名無しさん
08/03/04 13:31:54
話が盛りあがっているところ申し訳無いのですが
GC一般の話題は専用スレがあります。
過疎スレですからそちらを使って頂けないでしょうか。
Garbage Collection (GC)について語るスレ
スレリンク(tech板)
908:デフォルトの名無しさん
08/03/04 13:47:30
>>905
1
909:デフォルトの名無しさん
08/03/04 14:15:57
>>906
GC使わないようなコード書くなら、組み込み言語使う意味が大幅に薄れるような。
そんな涙ぐましい努力をするくらいなら最初からC/C++で書くよ。
俺も参照カウントが優れた方法だとは思わないが、こと組み込み向けならば
メリットがあると個人的には思うよ。
910:デフォルトの名無しさん
08/03/05 01:08:52
LuaのインクリメンタルMark&Sweepの実装も
マジックナンバーばっかで何を根拠に調整してんのか
よくわからんしなぁ。
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5045日前に更新/210 KB
担当:undef