トップページtech
1001コメント329KB

【Lua】組み込み系言語総合 その3【Squirrel】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/05/01(土) 01:03:17
LuaやSquirrelやAngelScriptなどアプリケーションへの組み込み用途で
使われるプログラミング言語についてのスレッドです
まとめwiki(なにか質問する前に必ずみること!)
http://wikiwiki.jp/lua/

その他の参考URLは>2から

■前スレ
【Lua】組み込み系言語総合【Squirrel】
http://pc12.2ch.net/test/read.cgi/tech/1205208141/
【Lua】組み込み系言語総合 その2【Squirrel】
http://pc12.2ch.net/test/read.cgi/tech/1243210301/

■過去スレ
その3 http://pc11.2ch.net/test/read.cgi/tech/1160799232/
その2 http://pc8.2ch.net/test/read.cgi/tech/1063711237/
その1 http://pc5.2ch.net/tech/kako/1034/10341/1034182349.html
0357デフォルトの名無しさん2010/10/14(木) 02:58:59
名言すなあ
0358デフォルトの名無しさん2010/10/14(木) 03:16:22
その例だと、こんなかんじのラッパークラスつくって、
a = HogeWrap(); a:open() とかして使うのが楽かと。

class HogeWrap {
public:
HogeWrap() : data(NULL) {};
~HogeWrap() { close(); };
void open() { close(); data = OpenHoge(); }
void close() { if (data) { CloseHoge(data); data=NULL;} }
... 他いろいろ必要なメソッド if(data) を忘れずに
private:
Hoge *data;
};
0359デフォルトの名無しさん2010/10/14(木) 04:08:26
>>356
趣旨がw

>>358
クラスでラップしちゃう方法やら
ネームスペースで囲って必要なものだけフィルタする方法もありますが
そういったやり方はどうも不恰好に見えたので質問した次第であります。

何故Hoge型をスクリプト側に認識させたいかといいますと
出来る限りオリジナルに近い形で公開したいのです。
そうすればクラスリファレンス不要ですから迷うことはありませんしね。

オリジナルのソースを尊重しソース改変などの2度手間を避け
#include "xxx.c/cpp" などのライブラリの意味を根本から覆す事のない
ナイスなアイデアがあるのではと。

とりあえず、結論としては
c/cppソース内に隠蔽された構造体、クラスをバインドする方法はない
という事ですかね?

何か抜け道があると思うんだけどなぁぁぁ
0360デフォルトの名無しさん2010/10/14(木) 09:51:33
抜け道もなにも・・・

えーと、たとえば操作メソッドが必ず第一引数に構造体のポインタもってるとか
構造に規則はあるんでしょ?じゃあ、それを前提にしたバインダを自前で書けば良いだけ。

クラスにラッピング〜ってのは、luabind をはじめとする多くのバインダはクラス(構造体)構造を
前提にしたバインダだから、それを使うのならそれにあわせないとダメだよってだけの話。
0361デフォルトの名無しさん2010/10/14(木) 20:54:11
ぶっちゃけLuaってC++と相性あんまし良くないよね
みんなもっと天使スクリプト使えばいいのに
0362デフォルトの名無しさん2010/10/14(木) 20:58:29
テンシチャンマジテンシチャン
0363デフォルトの名無しさん2010/10/14(木) 23:29:15
オサルサンマジオサルサン
0364デフォルトの名無しさん2010/10/15(金) 01:09:09
Luaってなんであんな風にしたんだろね
0365デフォルトの名無しさん2010/10/15(金) 01:51:08
むしろC++が特殊すぎて、他のあらゆる言語と相性が悪いんじゃないかと思う。
C++のくびきから離れると、楽だぜー。
0366デフォルトの名無しさん2010/10/15(金) 07:46:50
LuaをC/C++以外のどこで使うんだろ。
疑問である。
0367デフォルトの名無しさん2010/10/15(金) 09:23:52
>>361
> ぶっちゃけLuaってC++と相性あんまし良くないよね
具体的にどのあたりが?

これだけ簡単に組み込めて
高速で柔軟性もあり
コンパクト(シンプル)で習得も容易なのに
相性が悪いとは到底思えないんだけど
0368デフォルトの名無しさん2010/10/15(金) 09:32:59
SWIG の C++ 対応は良くできてると思うけどなぁ。
Box2D のバインダを作ってみたけどすごく簡単だった。
0369デフォルトの名無しさん2010/10/15(金) 09:46:53
例外の対処もめんどうだし
ガベコレってリソースの寿命把握しにくいし
テンプレート使えないし
C++じゃなくてCで使ったほうがいいよ
0370デフォルトの名無しさん2010/10/15(金) 11:23:25
lua や squirrel と接続する機能を C で書くとか考えたくないな
0371デフォルトの名無しさん2010/10/15(金) 11:31:14
>>370
逆にそう言うのはCで書いたほうがいい。
Squirrelは処理系自体はC++で実装されてるけど
外部APIはC言語準拠になってるわけだし。
0372デフォルトの名無しさん2010/10/15(金) 11:34:17
squirrel 側の内部概念がクラスもってるのに、それに接続するオブジェクトを C で書くとか手間が増えるだけだぜ……
0373デフォルトの名無しさん2010/10/15(金) 11:37:52
>>372
仮想スタックに対する操作というレベルで考えれば、
LuaもSquirrelもほとんど差はないんだぜ?
0374デフォルトの名無しさん2010/10/15(金) 11:44:02
lua でも squirrel でも普通バインダ使うだろ
どうしてもスタックさわる必要がある場合でも、そのスタック処理自体を隠蔽したC++のクラスをまず作るだろう。
0375デフォルトの名無しさん2010/10/15(金) 11:46:26
そしてスルーされる天使ちゃん。

あれはあれでC++すぎて使う意義がぴんとこないんだ
0376デフォルトの名無しさん2010/10/15(金) 12:56:47
残酷な天使のテーゼ
少年よ神話になれ
0377デフォルトの名無しさん2010/10/15(金) 17:52:39
バインダってTMPとかでカオス状態になったクラスでも正確にLuaに公開してくれんの?
0378デフォルトの名無しさん2010/10/15(金) 18:04:23
カオスな定義さえ書けばいけるんじゃね
0379デフォルトの名無しさん2010/10/15(金) 18:08:20
テンプレートを使えない時点でお察し下さい
0380デフォルトの名無しさん2010/10/15(金) 21:20:01
>>375
他のスクリプト言語と同じで外部に記述できるのがでかいと思うよ。
C/C++とほとんど文法変わらないから、C/C++側で定義している列挙子(enum)やら定数やらほとんどそのまま持っていける。
Luaとかと違ってデフォルトでコルーチンないけど、作るの簡単だし。
0381デフォルトの名無しさん2010/10/15(金) 22:02:59
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

0382デフォルトの名無しさん2010/10/15(金) 22:04:59
                           __,,:::========:::,,__
                        ...‐''゙ .  ` ´ ´、 ゝ   ''‐...
                      ..‐´      ゙          `‐..
                    /                   \
        .................;;;;;;;;;;;;;;;;;;;;;;::´                      ヽ.:;;;;;;;;;;;;;;;;;;;;;;.................
   .......;;;;;;;;;;゙゙゙゙゙゙゙゙゙゙゙゙゙      .'                            ヽ      ゙゙゙゙゙゙゙゙゙゙゙゙゙;;;;;;;;;;......
  ;;;;;;゙゙゙゙゙            /                           ゙:               ゙゙゙゙゙;;;;;;
  ゙゙゙゙゙;;;;;;;;............        ;゙                             ゙;       .............;;;;;;;;゙゙゙゙゙
      ゙゙゙゙゙゙゙゙゙;;;;;;;;;;;;;;;;;.......;.............................     >>381      ................................;.......;;;;;;;;;;;;;;;;;゙゙゙゙゙゙゙゙゙
                ゙゙゙゙i;゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙;l゙゙゙゙゙
              ノi|lli; i . .;, 、    .,,            ` ; 、  .; ´ ;,il||iγ
                 /゙||lii|li||,;,.il|i;, ; . ., ,li   ' ;   .` .;    il,.;;.:||i .i| :;il|l||;(゙
                `;;i|l|li||lll|||il;i:ii,..,.i||l´i,,.;,.. .il `,  ,i|;.,l;;:`ii||iil||il||il||l||i|lii゙ゝ
                 ゙゙´`´゙-;il||||il|||li||i||iiii;ilii;lili;||i;;;,,|i;,:,i|liil||ill|||ilill|||ii||lli゙/`゙
                    ´゙`゙⌒ゞ;iill|||lli|llii:;゙i|||||l||ilil||i|llii;|;_゙ι´゚゙´
0383デフォルトの名無しさん2010/10/16(土) 01:05:43
LuaがC++に組み込むのが簡単と言っている奴は相当訓練されてるプログラマ
0384デフォルトの名無しさん2010/10/16(土) 01:08:15
.netでゲームエンジン作ってIronPython重い、DLRシネ、Booでようやく・・・という状況を
鼻で笑えるくらいに訓練されているとC++くらい使えるしLuaの組み込みくらいは余裕だろ
0385デフォルトの名無しさん2010/10/16(土) 03:50:06
luabindっつーライブラリがすでにあってだな。
0386デフォルトの名無しさん2010/10/16(土) 08:15:07
struct Hoge
{
};
class Fuga
{
class Piyo {};
public:
shared_ptr<Piyo> f(vector<Hoge> hv, Piyo const & p, optional<iostream &> ios);
};

バインダって使ったこと無いんだけど
こう言うクラスも簡単にバインドできるの?
0387デフォルトの名無しさん2010/10/16(土) 10:06:00
おまえわかってて書いてるだろw

0388デフォルトの名無しさん2010/10/16(土) 10:10:40
class Fuga
{
public:
shared_ptr<Piyo> f(vector<Hoge> hv, Piyo const & p, optional<iostream &> ios);
};

コレの意味がまったく理解できない俺に誰か解説お願い
0389デフォルトの名無しさん2010/10/16(土) 10:16:53
std::vector
boost::shared_ptr
boost::optional

あとはぐぐって自分で調べれ
0390デフォルトの名無しさん2010/10/16(土) 10:31:34
shared_ptr<Piyo> p;

optional<> f(){}
という使い方ぐらいなら分かるけど
クラスメンバで
shared_ptr<Piyo> p(...);
という使い方は見たこと無かったので。

と思ったら今分かった

shared_ptr<Piyo> f(vector<Hoge> hv, Piyo const & p, optional<iostream &> ios){}
これか。
0391デフォルトの名無しさん2010/10/16(土) 11:57:52
SWIG は STL のコンテナクラスはいくつか対応してるみたいだけど、Boost はさすがにだめかな。
でも typemap かけば、まぁ、可能といえば可能。簡単かどうかは知らん。

ただ、ゲームなどにスクリプトエンジンを組み込むときは、将来の変更のことも考えれば、
できるだけホスト言語とスクリプト言語のインターフェイスはシンプルししておいたほうがいいと思うんだ。
0392デフォルトの名無しさん2010/10/16(土) 12:02:50
変態テンプレートテクニックが使えなくなっちゃC++である意味なんて殆ど無いよね
0393デフォルトの名無しさん2010/10/16(土) 13:24:58
stlだろうがboostだろうが、そこに型があれば、それぞれ全部登録していけばバインドはできる。
ただ、いまあるバインダはテンプレート型意識してつくられてるのはあまりないから、
それぞれ全部メソッドを手で指定するはめになる。よく使うものは、バインダ側を拡張して、
テンプレート型ごとの自動登録処理を書いてしまうのが妥当だね。

shared_ptr は、スクリプト側のリファレンス管理とかぶるから意味が薄いな。
ただ、データの管理用の構造を組むのは簡単な部類だから、C++とのソース共用の意味では
バインダ側で汎用処理できるリリーサをはめるテンプレート一つ足しておくのは悪く無い選択。
わりと簡単に書けると思う。

vector はなー。vector そのものを型としてエントリするのは簡単だけど、
スクリプト側の配列系とうまくやりとりできたほうが嬉しいだろうからなぁ。
スクリプトの配列から全部つめなおし処理をしてくれるような型変換コードをかくか、あるいは、
lua はよく知らんが、squirrel は配列とかの参照のメタメソッド登録ってのができるので、
スクリプトの array と見た目的には同じようにアクセスできるような細工をしたクラスにするか。
スクリプト側の配列は型が汎用だけど、これはいれれるものは限定されるから、そのあたりは
入れようとした時点で例外で対処、とかかな。map も連想配列とうまくバインドできると便利そうだよね。

optional は、うーん、これはあれかなスクリプト側で void とか null とか渡されたときと、
目的の型をわたされたときとでうまく詰め替えて処理するような型変換処理を書くのがいいかな。

そんなわけで、この程度なら、テンプレート使いなら特に問題なくバインダを拡張することで対応可能だと思われる。
なかなか良いお題なので、自分のバインドコードにはそれぞれあとで考えて足してみることにするよw
0394デフォルトの名無しさん2010/10/16(土) 17:41:47
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
0395デフォルトの名無しさん2010/10/16(土) 17:49:04
いいかげんGameMonkeyのAAをくれよ
0396デフォルトの名無しさん2010/10/16(土) 19:16:01
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ GameMonkey!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
0397デフォルトの名無しさん2010/10/16(土) 20:17:00
このスレッドは天才チンパンジー「GameMonkeyちゃん」が
単体テストのために立てたものです。

GameMonkeyと開発者とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                         組み込み言語研究所
0398デフォルトの名無しさん2010/10/16(土) 20:25:02
そろそろ新しいクールな組み込み言語でねぇかな。既存のはそろそろ飽きてきた
0399デフォルトの名無しさん2010/10/16(土) 20:40:16
>>398
てめぇが作れ
0400デフォルトの名無しさん2010/10/16(土) 20:43:10
>>398Scheme以上にクールな組み込みスクリプト環境はねえぞ。
0401デフォルトの名無しさん2010/10/16(土) 21:14:24
Lispの一族はVB的なイージーさが致命的に欠けている
0402デフォルトの名無しさん2010/10/16(土) 21:46:07
ならJavaScriptでドヤ?
つかLISP族はプログラマー以外にスクリプトを欠かせる場合になかなかよいぞ。

専用命令を手続きとしてつくっておいてやれば、
HTMLのようにマークアップしてくれでOK。

細かい制御が必要な場合だけ共同作業。
0403デフォルトの名無しさん2010/10/16(土) 22:01:55
非プログラマにLISPを書かせる勇気がない
0404デフォルトの名無しさん2010/10/16(土) 22:38:51
非プログラマを想定する場合内部DSLは向いてないってレベルじゃない
0405デフォルトの名無しさん2010/10/16(土) 23:55:11
AngelScriptは組み込むのも簡単だよ!
ShiftJIS対応版とかも簡単だよ!
0406デフォルトの名無しさん2010/10/16(土) 23:59:48
シフトJISかよwww
0407デフォルトの名無しさん2010/10/17(日) 03:07:49
>>404
特定用途のシーケンスをだらだら書かせたりするのは割りとらくなんだけどなあ。
DSLって行ってもSQLや正規表現みたいに勉強が必要なものは作らないよ。
0408デフォルトの名無しさん2010/10/17(日) 03:11:02
lisp は括弧の関係で素人につかわせたらダメだろう。一番外の括弧なしでコマンド記述していくだけ、みたいに1段かませるならまあなんとか
0409デフォルトの名無しさん2010/10/17(日) 03:18:18
>>408
インデントのやり方をXMLやHTML風にしてあげるだけで、
ずいぶん初心者にもわかりやすくなるよ。

()のチェックや想定以外の手続き名のチェックとか、
そこらへんは自前のプログラムかけて検出するしね。
0410デフォルトの名無しさん2010/10/17(日) 22:32:59
LispってDSLが簡単に作ることができる、とよく言われてたけどあれって内部DSLのことだったのか
RubyのDSLが簡単に並みの詐欺じゃないのか
0411デフォルトの名無しさん2010/10/17(日) 22:35:21
内部DSLの利点って、
DSLつくってもけっきょくはへんすうやすうしきうめこんだりぷりぷろせっさつくるのもめんどうだよねー
というときのプログラマー向けの用途だと思ってた。
0412デフォルトの名無しさん2010/10/17(日) 22:43:28
readしてevalすれば外部DSLも簡単に!
0413デフォルトの名無しさん2010/10/17(日) 22:44:04
         \   l´⌒\⌒\ \\ \
           \ ヽ   )  )   \\ \\   
              (   \ \∩___∩ \\ 
           \   \  ⌒⌒| ノ      ヽ  \\      
              \ \   /  ●   ● ト、\ \\\ 
               \  Y |    ( _●_)  ミ\  \\\  
               \ / 彡、_  |∪| ノ   \  \\\
                 (____)―ヽノ' ヽ      ̄ ̄ ヽ\\
                                \,  j  l l .l }
                         Lua!   l (_ノノノノ

0414デフォルトの名無しさん2010/10/17(日) 22:48:12
Lispで書いたらどんな感じになる?
0415デフォルトの名無しさん2010/10/17(日) 22:52:33
このスレを見ていたらLua使いが厨房に見えるのはなぜだろうな
0416デフォルトの名無しさん2010/10/17(日) 22:59:24
>>415
そりゃあ、既にトレンドはマルチコアの活用に移りつつあるのに、
その一つ手前の軽量スクリプトで柔軟な開発をしよう、に留まってるからだ。
Luaを始めとしてほとんどの軽量スクリプトの処理系は、マルチスレッド化に対応できない。
0417デフォルトの名無しさん2010/10/17(日) 23:01:26
ならマルチコアを活用できる言語を作ればいいじゃない
0418デフォルトの名無しさん2010/10/17(日) 23:02:32
スクリプト処理系をマルチスレッド化してうれしいことがいまいち思いつかない
0419デフォルトの名無しさん2010/10/17(日) 23:46:57
やっぱりAngelScriptだな。
0420デフォルトの名無しさん2010/10/18(月) 00:15:15
だな
0421デフォルトの名無しさん2010/10/18(月) 01:59:05
>>416
頭固いな
スクリプト側で完結しようとせずに
並列化したい処理は組み込み先の言語にやらせたらいいじゃない
0422デフォルトの名無しさん2010/10/18(月) 07:03:20
>>418
複数のスクリプトを同時に走らせたい場合って無い?
結構あると思うんだけど
0423デフォルトの名無しさん2010/10/18(月) 08:27:38
>>422
走らせたきゃ走らせたら?
それが出来ない縛りでもあるの?
0424デフォルトの名無しさん2010/10/18(月) 11:11:03
>>422
んー、全部スクリプトで作ってるのならあるだろうけど、
C/C++にくみ入れてる状況ならスレッドが必要な処理は C側に持つよ。俺なら。
スクリプト側はコルーチンで十分。
0425デフォルトの名無しさん2010/10/18(月) 12:14:51
luaって静的スコープ?
クロージャーでもできる?
0426デフォルトの名無しさん2010/10/18(月) 12:57:03
>>425
localの有無
できる

0427デフォルトの名無しさん2010/10/18(月) 13:03:09
どれだけ時間がかかるか判らない処理とか、
明らかに時間がかかる処理とか、そういうのが入ってきたらどうするのよ。

コルーチン中で処理を小出しにするテクニックはあるけど万能じゃないし、
コルーチンにだけ頼ってたらすぐに破綻すると思うんだが?
0428デフォルトの名無しさん2010/10/18(月) 14:35:15
>>427
> どれだけ時間がかかるか判らない処理とか、
> 明らかに時間がかかる処理とか、そういうのが入ってきたらどうするのよ。
喩えのレベルが低すぎ。

> コルーチン中で処理を小出しにするテクニックはあるけど万能じゃないし、
> コルーチンにだけ頼ってたらすぐに破綻すると思うんだが?
スレッド使いなよ
少し前に同じ内容のレスが何度もあるんだから少しは目を通しなよ
連携が容易なんだから得意なほうに処理をまかせちゃいなよ
0429デフォルトの名無しさん2010/10/18(月) 15:01:12
>>427
そういうのはC側におくよ、と言ってるわけなんだが……。
コルーチンにたよるのはむろんそれで問題が無い範囲のみだ。

マルチスレッドのスクリプトを否定するわけじゃないよ。PC用にアプリ書く必要があるときは、
スクリプト使うならスレッドが扱えるものを選ぶ。画面固まるのイヤだし。

現状では、lua とか squirrel を選んでるジャンルでは、重たい処理は
Cで書かれたエンジン側でスレッド使ってまわすってのが暗黙の前提で
あると思う。そこに文句つけるのは微妙に筋違い。

今のPCレベルのマシンパワーがおりてくれば、コンソール機や他の組み込み用途でも
全部スクリプトで〜ってなってくる可能性はあるけどまだちょっと早いやね。
0430デフォルトの名無しさん2010/10/18(月) 21:17:58
LuaJITのインストールしたいんだけど、詳しく説明してるページありませんか?
0431デフォルトの名無しさん2010/10/18(月) 21:51:16
>>416
何故組み込みスクリプトとマルチスレッドが同時に使えない話になっているのか
コレガワカラナイ

PS3/XBOX360/PCに採用されている以上、マルチスレッド環境でも使われているということだろう
LuaならGame Programming Gems にいくつか載ってた気がするぞ
Stateをスレッド数分作成して、関数定義等は共有化する方法とかあったが、スレッド間で共有することになるから
(でなければスレッド数分複製することになる)並列処理中は定義の上書きはしない、同期処理部分で行う。
とかするのか?とか色々考えることはあるけど
0432デフォルトの名無しさん2010/10/18(月) 23:23:49
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
0433デフォルトの名無しさん2010/10/19(火) 00:26:46
>そういうのはC側におくよ

勿論そうなんだけど、Lua側からスレッドの制御できるようにしたり、
データの同期取れるように関数拡張しない?
0434デフォルトの名無しさん2010/10/19(火) 00:32:26
>>430
./doc/install.html
0435デフォルトの名無しさん2010/10/19(火) 02:03:56
>>433
すればいいじゃん

スレッドを生成してもいいが同期を取ってはいけない
という家訓でもあんの?
0436デフォルトの名無しさん2010/10/19(火) 03:36:27
>>433
当然するにきまってるだろう。というかしないと制御できないじゃないか。

コルーチンのドライブ部分に待ち制御をしこんで、スレッド待ち中はスクリプトを起動させない形で待ち合わせするか、
あるいは、非同期動作するオブジェクトに動作確認メソッドをしこんで、スクリプトから随時ポーリングして待ち合わせするか、
は設計次第ってことで

0437デフォルトの名無しさん2010/10/19(火) 05:45:54
なんか話が微妙にかみ合ってないな。

だからそういう拡張がLuaをマルチスレッドに対応させるってことなんじゃないの?
発端は
>Luaを始めとしてほとんどの軽量スクリプトの処理系は、マルチスレッド化に対応できない。
なんだろ?
0438デフォルトの名無しさん2010/10/19(火) 08:06:04
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

0439デフォルトの名無しさん2010/10/19(火) 08:16:24
というか、スレッド使う理由を挙げてる人間が二人いて、
・時代はマルチコアだよ!
っていってるヤツと
・コルーチンだけ使うよりスレッド使ったほうが便利だよ!
っていってるヤツがいるように見える。

>>418は前者に対するレスだと思うけど、それに対して後者で返してるんじゃねえのかなあ。
0440デフォルトの名無しさん2010/10/19(火) 08:51:36
なんだかLuaという言語の評判がいいらしい
使ってみる
CUIつまらんGUIでもやるか
wxなど使ってみる
重い処理を入れた、固まる
調べてみる、スレッド?排他?よく分からん
簡単な方法はないか、2chで聞いてみる(>>301)
コルーチンで対処出来るらしい(>>320)
マルチコアを生かしていないことにふと気づく
結論:マルチコア非対応のLuaはゴミ(>>416)

それに対する反論は一律していて
C/C++で書けよw
という内容なのだが
本人はLuaの軽量で高速、移植性があり柔軟で容易という思想はおろか
スレッド?排他?よく分からん
というレベルなので話が通じない

と俺予測してみた
0441デフォルトの名無しさん2010/10/19(火) 10:21:37
>>437
いいだしっぺの意図は、

「スクリプトのマルチスレッド実行」だろ?

反論してるやつらは皆そうみなした上での回答、
(「マルチスレッドはC側でするから別にスクリプトそのものをそうする必要はない」的な内容)
だぜ
0442デフォルトの名無しさん2010/10/19(火) 11:03:23
スクリプトそのものをそうする必要はない

これがよく意味が分からんな
0443デフォルトの名無しさん2010/10/19(火) 11:04:48
ttp://www.lua.org/about.html
>all platforms that have an ANSI/ISO C compiler
「マルチコアを生かす」プラットフォームに対応するわけがない。

Makefile には -ldl とか -lreadline とか書いてあるが、これでも御節介なレベル
0444441ではないが2010/10/19(火) 11:57:54
>>442
主観で翻訳すると

luaThread> lualibs[]の末席にでも加えてーな
一同> 無理、2軍(Lua Binaries)で実績作って来い

こんな感じかな
0445デフォルトの名無しさん2010/10/19(火) 12:25:19
>>442
python の thread モジュールとかみたいなのは無くても困らないだろ、ってことじゃね?

まあ、python(cpython) のは GIL なのでどっちにしてもマルチコア的には全然うれしくないわけだが。
仮に lua や squirre lをマルチスレッド化するとしても、ステートごと分離する以外だと、結局 GIL にするしか手はないよね。

スクリプト言語系でうまくマルチコアに対応した実行ができてるのは Haskell とかそっち系か、
あるいは、JPython とか JRuby のような、JavaVM 上でうごくやつらぐらい?

Xtal はよくわからん。詳しい人よろ。
0446デフォルトの名無しさん2010/10/19(火) 22:51:14
>無くても困らない
というか「プリエンプション」と「共有メモリ」の両方が有ると困るんだそうだ

だから「プリエンプション」がないコルーチン
または「共有メモリ」のないクラウド(笑)が流行る
0447デフォルトの名無しさん2010/10/20(水) 07:55:07
Cでマルチスレッドむつかしくてよくわかんねー -> Lua で簡単にできるようにして!
レベルでしょ。
0448デフォルトの名無しさん2010/10/20(水) 11:21:16
・プログラミング言語Lua公式解説書
・入門Luaプログラミング

入門用として一冊買うならどっちがいい?
0449デフォルトの名無しさん2010/10/20(水) 11:29:53
公式解説書のほうが1024倍ぐらい良い。下はゴミ
0450デフォルトの名無しさん2010/10/20(水) 11:53:45
即レスとか神やわ。上を速攻ポチッてきました。下は見向きもしなかった。
0451デフォルトの名無しさん2010/10/20(水) 11:55:32
お前が買うなら俺も買うぜ!
0452デフォルトの名無しさん2010/10/20(水) 12:21:11
ちっっくしょぉぉぉー・゜・(ノД`)・゜・
0453デフォルトの名無しさん2010/10/20(水) 21:33:44
組み込み言語に組み込みやすいと言われるPython選ばない時点でLuaでやりたいことっていったらたかが知れているわけでして
スクレイピングを楽にするためにRubyを組み込んだアプリはあったな。
ようは用途次第だと思うが。
0454デフォルトの名無しさん2010/10/20(水) 21:36:02
組み込みの意味が違うでしょ
ユーザーによる拡張を考えるならLuaはありえない
0455デフォルトの名無しさん2010/10/20(水) 22:23:27
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

0456デフォルトの名無しさん2010/10/20(水) 22:39:14
auL
■ このスレッドは過去ログ倉庫に格納されています