【Lua】組み込み系言語総合 その4【Squirrel】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2011/03/30(水) 01:00:58.93使われるプログラミング言語についてのスレッドです
まとめwiki(なにか質問する前に必ずみること!)
http://wikiwiki.jp/lua/
その他の参考URLは>2から
■前スレ
【Lua】組み込み系言語総合 その3【Squirrel】
http://hibari.2ch.net/test/read.cgi/tech/1272643397/
■過去スレ
その2 http://pc12.2ch.net/test/read.cgi/tech/1243210301/
その1 http://pc12.2ch.net/test/read.cgi/tech/1205208141/
プログラミング言語 Lua
その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
0552デフォルトの名無しさん
2011/08/06(土) 01:00:20.800553デフォルトの名無しさん
2011/08/06(土) 09:08:54.34はいはい。業界君乙。
0554デフォルトの名無しさん
2011/08/06(土) 09:10:50.780555デフォルトの名無しさん
2011/08/06(土) 09:11:43.390556デフォルトの名無しさん
2011/08/06(土) 09:14:47.50つまりお前のプログラムのバグでスレッドアウトってだけだろ?
Luaのせいにすんなよ
0557デフォルトの名無しさん
2011/08/06(土) 09:54:20.580558デフォルトの名無しさん
2011/08/06(土) 09:54:52.310559デフォルトの名無しさん
2011/08/06(土) 10:01:43.94スレッドごとにlua_stateを独立して保持してやれば、スレッド毎に独立して動きます。
こういう意味でLua(のDLL)はスレッドセーフです。
なお、各lua_state間(各スレッド間)で情報共有(グローバルj変数などの共有)が
できるかどうかまでは確認していません。
0560デフォルトの名無しさん
2011/08/06(土) 11:28:47.230561デフォルトの名無しさん
2011/08/06(土) 11:49:24.27はい
0562デフォルトの名無しさん
2011/08/06(土) 11:53:31.69書き込み可の共有変数を無くすか
Luaは後者
0563デフォルトの名無しさん
2011/08/06(土) 11:58:08.53はい
0564デフォルトの名無しさん
2011/08/06(土) 12:00:59.78「スレッドセーフなライブラリだ」とか普通に使うよなぁ。
業界君の業界ってどこなんだろ?
四次元の世界のプログラマとかか?
0565デフォルトの名無しさん
2011/08/06(土) 12:15:10.670566デフォルトの名無しさん
2011/08/06(土) 12:33:46.57ruby しかり python しかり。
lua とか squirrel はそもそもスタック操作が atomic じゃないわけで、最初からそういう点でのスレッドセーフを確保するつもりが全く無い実装だよね
VM わけてスレッドセーフなのはあたりまえすぎるというか、そうなってない言語実装とかはずかしくて表にだせないような
0567デフォルトの名無しさん
2011/08/06(土) 12:43:36.75http://sourceforge.net/p/safelua/wiki/Home/
SandBox? TryLuaみたいなサイトでも作るんかな
0568デフォルトの名無しさん
2011/08/06(土) 12:45:18.95Luaはlua_sate毎に別スレッドで動かせることを確認した次第です。
それ以外のことは知りません。
0569デフォルトの名無しさん
2011/08/06(土) 13:11:29.76スレッドセーフであることの確認って
ソースコードチェックする以外にどうやるの?
0570デフォルトの名無しさん
2011/08/06(土) 13:21:50.16実際に使ってみるとか。
0571デフォルトの名無しさん
2011/08/06(土) 13:23:14.44RubyやPythonってひとつのプロセスに複数VM持てたっけ?
0572デフォルトの名無しさん
2011/08/06(土) 13:39:14.58こいつは本質的にはLuaと同じ方法でスレッドセーフを実現してる
0573デフォルトの名無しさん
2011/08/06(土) 13:56:53.74ストレステストです。
0574デフォルトの名無しさん
2011/08/06(土) 14:09:01.86グローバルに一つやね。スレッドセーフは GIL で確保する実装
ruby はマルチVMの研究はやってたと思うけど詳しいことは知らない
マルチVMでシームレスに使うには結局メッセージパッシングの機構を
つくりこむ必要があってそこで難航してたんじゃなかったっけか
lua や squirrel はその点は総スルーしてるから、使う側はあきらめるか独自に頭をひねる必要がある
0575デフォルトの名無しさん
2011/08/06(土) 14:16:15.190576デフォルトの名無しさん
2011/08/06(土) 14:20:57.31スレッドセーフと呼ばない、というのが業界標準なのか?www
それどこ業界よ?
0577デフォルトの名無しさん
2011/08/06(土) 16:59:20.24lua_stateが別でも相互に参照し合いたいってことか?
イラネ
そんなマイナーな議論よそでやってくれよ
0578デフォルトの名無しさん
2011/08/06(土) 17:02:54.39Luaをコントロールする言語側でロックなり何なりして情報を共有すればいいだけ。
Lua言語ですべてやろうとする馬鹿は消えてほしい
0579デフォルトの名無しさん
2011/08/06(土) 17:09:56.18Luaはlua_state毎に別スレッドで動作させることができます。
そういう意味でLuaはスレッドセーフです。
異なるlua_satateで情報を共有できるか否か、というのはまた別の話になりますです。
普通は母体となるC言語なり何なりでロックしてから情報を書き換えるなどすればよいだけなので、
一般的な意味でも、Luaはスレッドセーフであるといえると思います。
0580デフォルトの名無しさん
2011/08/06(土) 17:15:36.47Luiz Henrique de Figueiredoのコメント。
http://lua-users.org/lists/lua-l/2011-07/msg00072.html
Lua states, created with lua_newstate or luaL_newstate are completely
separate and thread safe.
0581デフォルトの名無しさん
2011/08/06(土) 17:19:02.57スレッドセーフと呼ばない、という業界が存在するらしく
話がかみ合わない場合があるので注意。
0582デフォルトの名無しさん
2011/08/06(土) 17:54:26.45スレッドローカルデータってのにあたるのかな?
この方法でLuaはスレッドセーフといえるのであれば、
広域変数もスレッドセーフであると言えるってこと?
0583デフォルトの名無しさん
2011/08/06(土) 17:58:03.760584デフォルトの名無しさん
2011/08/06(土) 18:13:08.71ああスマソ。理解した。
lua APIはスレッドセーフだけど、lua_stateはスレッドセーフじゃないよってことか
0585デフォルトの名無しさん
2011/08/06(土) 18:23:43.54スレッドセーフってのはAPIとかコードの性質であって変数のじゃない
お前は全然分かってない
0586デフォルトの名無しさん
2011/08/06(土) 19:06:40.860587デフォルトの名無しさん
2011/08/06(土) 19:07:50.79Do not confuse Lua threads with OS threads.
www
0588デフォルトの名無しさん
2011/08/06(土) 20:46:00.83AngelScript|Д`)ジー
0589デフォルトの名無しさん
2011/08/06(土) 23:21:08.880590デフォルトの名無しさん
2011/08/06(土) 23:28:43.000591デフォルトの名無しさん
2011/08/07(日) 01:39:17.21http://lua-users.org/wiki/DebuggingLuaCode
http://lua-users.org/wiki/LuaIntegratedDevelopmentEnvironments
0592デフォルトの名無しさん
2011/08/07(日) 08:42:26.790593デフォルトの名無しさん
2011/08/07(日) 08:53:57.78スタックトレースっちゅうよりユニットテストじゃん。
0594デフォルトの名無しさん
2011/08/07(日) 10:45:31.82また業界用語は厳密に使うべき君か?
0595デフォルトの名無しさん
2011/08/07(日) 12:16:40.81スタックトレースとユニットテストは別物だよね?
0596デフォルトの名無しさん
2011/08/07(日) 14:11:40.03javaの皮だけ用意すれば
ふつうにコンパイルしてc/c++とLua使えるんじゃないの?
ndk?
http://www.google.com/search?q=lua+ndk&hl=ja
0597デフォルトの名無しさん
2011/08/07(日) 20:34:11.99ユニットテスト → クラスが正常に動作するかチェックするためのクラス?
0598デフォルトの名無しさん
2011/08/07(日) 23:01:53.34なんかメリットあるの?
0599デフォルトの名無しさん
2011/08/08(月) 06:24:28.05gotoのないバージョンで置けて
なんかメリットあるの?
0600デフォルトの名無しさん
2011/08/08(月) 17:00:26.360601デフォルトの名無しさん
2011/08/08(月) 17:58:56.66::= の部分ってなにを意味しているの?
0602デフォルトの名無しさん
2011/08/08(月) 18:17:12.41イラネ
0603デフォルトの名無しさん
2011/08/08(月) 18:59:39.21BN記法でぐぐれ
0604デフォルトの名無しさん
2011/08/08(月) 19:58:01.99ありがとうございます
いままで知らなかったのが嘘の様なほどの基本なんですね
0605デフォルトの名無しさん
2011/08/08(月) 20:38:51.81なんで?サイズが大きくなるから?
0606デフォルトの名無しさん
2011/08/08(月) 21:27:29.26AngelScript|Д`)ジー
0607デフォルトの名無しさん
2011/08/08(月) 21:29:24.91BNF記法でイコールみたいな感じらしい
0608デフォルトの名無しさん
2011/08/08(月) 22:37:40.900609デフォルトの名無しさん
2011/08/09(火) 07:59:00.89コーディング時間が長くなるとかより、コード解析速度ダウンのほうが痛いから。
0610デフォルトの名無しさん
2011/08/09(火) 17:50:24.150611デフォルトの名無しさん
2011/08/09(火) 18:55:10.81フツーにあるし
http://code.google.com/p/android-scripting/
0612デフォルトの名無しさん
2011/08/09(火) 22:10:48.62X = if Y < 0 then -1 else 1 end みたいに。
あとメタテーブルがあるんだから演算子は必ず代入しないといけないのもやめてほしい
Table + {1,2,3} とか
0613デフォルトの名無しさん
2011/08/09(火) 22:13:14.72この論理がどう繋がってるのかわからんのだが
0614デフォルトの名無しさん
2011/08/09(火) 22:28:57.95要は3項演算子が欲しいんだろ?
0615デフォルトの名無しさん
2011/08/09(火) 23:01:07.790616デフォルトの名無しさん
2011/08/09(火) 23:14:02.07でいいんじゃなかったっけ
0617デフォルトの名無しさん
2011/08/10(水) 00:10:49.21Ruby脳なんだよ
0618デフォルトの名無しさん
2011/08/10(水) 00:17:16.810619デフォルトの名無しさん
2011/08/10(水) 00:21:33.230620デフォルトの名無しさん
2011/08/10(水) 00:26:46.590621デフォルトの名無しさん
2011/08/10(水) 01:10:41.77f(x and g(y) or z)
自己責任で適当な f, g を選ぶ
0622デフォルトの名無しさん
2011/08/10(水) 01:27:08.330623デフォルトの名無しさん
2011/08/10(水) 02:03:13.96true and false or true
0624デフォルトの名無しさん
2011/08/10(水) 02:14:37.63ソレダ
真のときの返値が偽値のときにおかしくなるんだな
0625デフォルトの名無しさん
2011/08/10(水) 08:53:45.480626デフォルトの名無しさん
2011/08/10(水) 11:40:58.81Schemeでは(call/cc (lambda (k) (or (and x (k y)) z)))
0627デフォルトの名無しさん
2011/08/10(水) 19:26:22.15今のPythonには、そもそも三項演算子がある
ちょっと珍しい書法だが
条件が真の際の返値 if 条件式 else 条件が偽の際の返値
0628デフォルトの名無しさん
2011/08/10(水) 20:59:09.92F(条件、真、偽)とかじゃ駄目なの?
0629デフォルトの名無しさん
2011/08/10(水) 21:24:49.300630デフォルトの名無しさん
2011/08/10(水) 21:28:05.19それだと返値に関数が指定されたとき
関数に全く副作用が無く、かつ
呼ばれることによるオーバーヘッドが気にならない程度の小さい関数ならば良いが
呼ばれることによって何らかの状態が変わってしまうものや
呼ぶことによって大量の処理が動く場合はマズいことになる
0631デフォルトの名無しさん
2011/08/10(水) 22:03:12.74今さら気がついたんだけど1行でも動くんだな。関数なんか書かなくていいっすね
もっとリファレンスきちんと読み直してくるわ
0632デフォルトの名無しさん
2011/08/10(水) 22:39:02.20スピードって、複合代入やインクリメントの話?
0633628
2011/08/10(水) 22:48:23.43もうほっといてくれー(ノ_・。)
0634デフォルトの名無しさん
2011/08/13(土) 06:59:24.230635デフォルトの名無しさん
2011/08/13(土) 07:55:39.27結局、Basicにチン毛が生えた程度の誰得言語だなLua。
0636デフォルトの名無しさん
2011/08/13(土) 07:58:33.32??
0637デフォルトの名無しさん
2011/08/13(土) 08:38:05.84http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html#2.2
> 数値 は実数 (double) を表現する。 (しかし数値の内部表現としてfloatやlongなど他の型を使うよう
> Luaインタプリタをビルドし直すのは簡単である。ファイル luaconf.h を参照。)
0638デフォルトの名無しさん
2011/08/13(土) 08:46:12.16http://boinc.oocp.org/benchmark.php
> Intel x86 プロセサでは、単精度でも倍精度でも速度の差はあまりありません。
http://lua-users.org/wiki/FloatingPoint
(単精度で用意したAngelScriptとかSquirrelのプログラムと比較しないと意味ないだろうけど)
数値計算ループ自体は他のスクリプト言語より速いしLuaJITならかなり速い。
http://shootout.alioth.debian.org/u32/benchmark.php?test=mandelbrot&lang=all
http://luajit.org/performance_x86.html
ゲームみたいなフレーム単位のリアルタイム処理やってると固定小数点演算とかライブラリ使うみたいだし、
シビアでいろいろ大変ですね。
http://www2.muroran-it.ac.jp/circle/mpc/front/old1/program/algorithm/fixedpoint/index.html
0639デフォルトの名無しさん
2011/08/13(土) 08:55:52.88ループしてるよ!
0640デフォルトの名無しさん
2011/08/13(土) 11:08:49.020641デフォルトの名無しさん
2011/08/13(土) 14:10:24.86/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Lua!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0642デフォルトの名無しさん
2011/08/13(土) 20:44:27.380643デフォルトの名無しさん
2011/08/13(土) 21:08:55.040644デフォルトの名無しさん
2011/08/17(水) 00:13:26.24かといってLuaは整数、少数で変数分けてないからfloatにすると精度がきついので
固定少数を検討することになる
ところで蒸し返すようで悪いんだが、Luaはスレッドセーフではないよね?
リエントラントに作ってあって、アプリ実装者がやりやすいように作ってあるだけで
LuaGemsの人はState分離したらスレッドセーフにできるよって言ってるだけだし、
いや、規制で書き込めなくて、過去スレで何回かスレッドセーフではないって言われてるのに
なんか理不尽な流れだなーと思って眺めてたんだ。オレオレ君が間違った認識持って帰る分には
いいんだけどね
0645デフォルトの名無しさん
2011/08/17(水) 00:15:17.220646デフォルトの名無しさん
2011/08/17(水) 00:33:01.210647デフォルトの名無しさん
2011/08/17(水) 00:35:37.68同一のstateとそれから派生した state は別スレッドからは扱えない。スレッド毎に作る分には問題ない
事実は単にこれだけ。
0648デフォルトの名無しさん
2011/08/17(水) 05:04:41.03それに対して「僕はこうだとおもいまーす」はブログに書いといてください
0649デフォルトの名無しさん
2011/08/17(水) 08:38:38.61Luaはstate単位でスレッドセーフ。
それをもってスレッドセーフでないというのは単なる言葉遊び。好きにしろ。
0650デフォルトの名無しさん
2011/08/17(水) 08:41:27.32Do not confuse Lua threads with OS threads.
By Luiz Henrique de Figueiredo
0651デフォルトの名無しさん
2011/08/17(水) 08:50:19.38そんな間違いをしてる人はこの話の流れで一人もいないぞ
0652デフォルトの名無しさん
2011/08/17(水) 13:33:36.16いいわけで、大した問題ではない。
一つのStateを複数のスレッドから使う場合も、Mutexでアクセス権を付与すれば
いいだけだし、そもそもそんな使い方をする状況もあるのか怪しい。
複数走らせてるLuaStateから同じC変数にアクセスする必要性ならわかるが、
それはLuaがスレッドセーフになってるかは関係ないケースだし。
スレッドセーフ厨の人は、どういう状況を想定してるんだろ?
■ このスレッドは過去ログ倉庫に格納されています