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の実装も
マジックナンバーばっかで何を根拠に調整してんのか
よくわからんしなぁ。