プログラミング言語 Lua その3
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/10/14(土) 13:13:52前々スレ http://pc5.2ch.net/tech/kako/1034/10341/1034182349.html
前スレ http://pc8.2ch.net/test/read.cgi/tech/1063711237/
本家 http://www.lua.org/
lua-users http://lua-users.org/
LuaForge http://luaforge.net/
Lua 5.1 リファレンスマニュアル(日本語訳)
http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html
0784デフォルトの名無しさん
2008/02/08(金) 01:06:33つうか、tccならC内でもcを実行できるだろ。
0785デフォルトの名無しさん
2008/02/08(金) 18:36:35Io Language
http://pc11.2ch.net/test/read.cgi/tech/1201100624/
0786デフォルトの名無しさん
2008/02/08(金) 18:46:070787デフォルトの名無しさん
2008/02/08(金) 19:05:020788デフォルトの名無しさん
2008/02/08(金) 19:15:080789デフォルトの名無しさん
2008/02/08(金) 20:45:540790デフォルトの名無しさん
2008/02/09(土) 01:29:48ただ、実際に組み込んで使っている人いるのかな・・・
組み込みサンプルやドキュメントが少なすぎてなんつーか('A`)
0791デフォルトの名無しさん
2008/02/10(日) 20:35:17http://park7.wakwak.com/~blackbox/
0792デフォルトの名無しさん
2008/02/10(日) 21:19:53超乙
つか、ニコニコ技術部 の人か?w
応援しとるよ
0793デフォルトの名無しさん
2008/02/10(日) 21:24:35スレちですが、せっかくなので Netinstaller 対応しませんか?
0794791
2008/02/10(日) 23:04:440795デフォルトの名無しさん
2008/02/18(月) 06:45:340796デフォルトの名無しさん
2008/02/18(月) 07:55:090797デフォルトの名無しさん
2008/02/18(月) 11:31:46sq.exeを動かす環境がビッグエンディアンじゃないと、
バイトコードがそのまま実行できない
まあ、当たり前なんだが、みんなどうやって解決してるの?
0798デフォルトの名無しさん
2008/02/18(月) 23:18:36それってWi○?
0799デフォルトの名無しさん
2008/02/18(月) 23:24:29それぞれ一つの関数を使っていたりするから
(sqstd_writeとか?もう一つ上の関数だったかも。うろ覚え)
そういうところでまとめてスワップさせてるな、俺は。
んでコード改変したものをコンバート用のツールとして使うと。
0800797
2008/02/19(火) 12:28:23まあ、あえて何かは言わないけど、
今の据え置きってリトルエンディアンの方が少なくね?
>>799
やっぱ、それしかないのね
なんかうまい方法があればなーと、思ったんですが、
楽はできないですね
ありがとうです
0801デフォルトの名無しさん
2008/02/19(火) 17:03:33だったらエンディアン変換くらい対応しといてくれと思ったりするよね
あと読み込みとか書き込みのところでfopenとか使うの止めて欲しい。
あらかじめファイル読み込んだバッファを渡すとかいう風にすればどんな環境でも対応できるのに・・・
0802デフォルトの名無しさん
2008/02/19(火) 17:41:07エンディアン変換は同意なんだが、後者は普通にそうなってるだろう
sq_compile, sq_compilebuffer, sq_readclosure, sq_writeclosure と全部抽象化されてるぞ?
sqstdlib では fopen つかってるけど、これは実装用のライブラリだし、あと、
直接つかってるわけではなくて、1段階抽象化してあるんで、sqstdio.cpp のあたまの
関数いくつか書きなすだけだから、どちらかというと親切な部類にはいると思う。
0803デフォルトの名無しさん
2008/02/20(水) 12:44:02EclipseにLuaEclipse入れて動作させて見たところ
ConsoleViewに
<terminated> test.lua [Lua Standalone Application] hogehoge\lua5.1.exe test.lua
と出てしまいます。手打ちで
>hogehoge\lua5.1.exe test.lua
としたときはちゃんと結果が表示されたのですが
EclipseのConsoleViewに結果を表示させるには
何かおまじないが必要なのでしょうか?
0804デフォルトの名無しさん
2008/02/21(木) 21:12:13http://pc11.2ch.net/test/read.cgi/dtm/1194648279/216
0805デフォルトの名無しさん
2008/02/22(金) 07:17:150806デフォルトの名無しさん
2008/02/22(金) 16:29:420807デフォルトの名無しさん
2008/02/22(金) 16:30:290808デフォルトの名無しさん
2008/02/23(土) 20:47:20http://www.watch.impress.co.jp/game/docs/20080223/gdc_home.htm
0809デフォルトの名無しさん
2008/02/23(土) 22:57:40Luaハジマタ\('o`)/
0810デフォルトの名無しさん
2008/02/23(土) 23:06:410811797
2008/02/23(土) 23:20:59やっつけのパッチ当てたけど、需要ある?
0812デフォルトの名無しさん
2008/02/24(日) 01:48:06というか本家にフィードバックしようぜ
0813デフォルトの名無しさん
2008/02/24(日) 03:09:28うぉ、日本メーカーでLua使用って公開したところはほとんど記憶にないから、
結構インパクトあるねぇ
そういや今GDCの季節かぁ
0814デフォルトの名無しさん
2008/02/24(日) 08:58:560815デフォルトの名無しさん
2008/02/24(日) 12:30:51改変したソースも公開してくれよ
0816767
2008/02/24(日) 14:51:34WikiのSquirrelのページに添付させてもらいました。
SQ_BIGENDIANを定義しておくと、出力が強制的にBEになるです。
やっつけなので、これを基に、ちゃんとした対応をしてくれると嬉しいなあ。
ちなみに、出力したバイトコードが、ビッグエンディアンな環境で動作することは確認済み。
でも、SQ64と_UNICODEは知らん。
_UNICODEはこれからやるかも。
最後に、スレ住人&Wikiの管理人さんアリガトー(゚∀゚)
0818デフォルトの名無しさん
2008/02/24(日) 17:24:11>Squirrelについては、「メモリの消費量は増してしまうが、それだけの価値がある」という白石氏。
>プログラムの7割はSquirrelを使用しているという。
ですって。
0819デフォルトの名無しさん
2008/02/24(日) 17:28:30つかこのスレに書いてる人いそうだなw
0820デフォルトの名無しさん
2008/02/24(日) 19:22:53スクエニが使っているという情報はでかい
Squirrelを採用する企業もこれからかなり増えるんじゃないか
いい感じ
0821デフォルトの名無しさん
2008/02/24(日) 20:17:18開発効率に対する姿勢が比較的アメリカ型なスクエニがこういう方法をとったことは不思議ではない。
C/C++(&内製の半端なスクリプト言語)一辺倒から離れられないプログラマや企業はいよいよ
ついていけなくなるかもね。
0822デフォルトの名無しさん
2008/02/24(日) 20:26:54基本的にスクリプト言語の方が習得難度が低いからね。
まぁその歴史的なしがらみが大きな障壁になるのかもしれないけどさ。
1言語しか扱えないニセグラマとか猿スクリプタとか。
0823デフォルトの名無しさん
2008/02/24(日) 20:40:34プロでそんな人はいなさそう
むしろ、メモリの動的確保が信じられないとか、そっちの方が使わない理由だろう
0824デフォルトの名無しさん
2008/02/25(月) 01:33:21オレはそれならSCE派だな。Nintendoは趣味じゃねー。
0825デフォルトの名無しさん
2008/02/25(月) 01:37:01そこまで考えれたらいっぱしのマネージャークラス?
0826デフォルトの名無しさん
2008/02/25(月) 07:39:050827デフォルトの名無しさん
2008/02/25(月) 07:56:22という時代じゃないし
0828デフォルトの名無しさん
2008/02/25(月) 14:24:07別に任天堂本体が使ってる訳じゃあんめえ
スクエニでしょ
0829デフォルトの名無しさん
2008/02/25(月) 15:59:460830デフォルトの名無しさん
2008/02/25(月) 19:35:14DSの開発言語の標準がC++らしいので、Nintendo自体もSquirrelに
まんざらではない可能性も。
0831デフォルトの名無しさん
2008/02/25(月) 21:29:10WiiはともかくDSにSquirrelはない。メモリ的に
0832デフォルトの名無しさん
2008/02/25(月) 21:36:22スクエニつーかリードプログラマの趣味じゃね?>Squirrel
カリカリチューンとかいってもLuaとかSquirrelで全部やろうとしたらそら重いけども。
単なるイベントハンドラとして使うだけならどっちでも大して変わらんでしょ。
LuaPlayerでゲーム作るノリでゲーム中の全オブジェクトの管理・更新をLuaとかSquirrelとかで書いちゃう人って結構多いの?
0833デフォルトの名無しさん
2008/02/25(月) 22:20:35積極的に開発にフィードバックしてくれたら良いけどな
ただ日本企業にそこまで期待できるか実際のところ何ともいえないけど
0834デフォルトの名無しさん
2008/02/25(月) 23:23:490835デフォルトの名無しさん
2008/02/25(月) 23:35:58ちょっと前まで過疎スレだったのに
0836デフォルトの名無しさん
2008/02/25(月) 23:37:430837デフォルトの名無しさん
2008/02/25(月) 23:38:170838デフォルトの名無しさん
2008/02/26(火) 00:21:49うちでも採用検討しようかな
0839デフォルトの名無しさん
2008/02/26(火) 01:34:26>>811さりげなさ過ぎて気付かなかったw
>>616のバグもめでたく正式に修正されたみたいね
-fixed a coroutine bug
0840デフォルトの名無しさん
2008/02/26(火) 21:37:58あと、上のほうでSquirrelでJITみたいな話がありましたが、
ちょっと前にJITをつけたものを公開してます。
速度的にはあまり早くなりませんし、コードも汚いですがよろしければどうぞ。
ttp://muffin.cias.osakafu-u.ac.jp/~matumoto/cgi-bin/xt.cgi?prog/sqjit
0841デフォルトの名無しさん
2008/02/26(火) 22:14:17神乙
きっとスクエニの人もあなたの翻訳は見ているでしょう
0842デフォルトの名無しさん
2008/02/26(火) 23:31:53koukai sitakerya koukai sitemo iiyo
oreha iranai kedo ne
0843デフォルトの名無しさん
2008/02/27(水) 15:54:40ちょwwww
SquirrelJITってwすげえw
速くならないのは残念ですね。いま時はVM実行でもプロセサが速いから吸収しちゃうのかね
0844デフォルトの名無しさん
2008/02/27(水) 21:40:380845デフォルトの名無しさん
2008/02/28(木) 08:20:37>SCEはLua(C)で、NintendoはSquirrel(C++)か。
LuaがC++対応じゃないみたいに見えるからやめれ。
LuaのC++との相性はSquirrelと同程度だろう
0846デフォルトの名無しさん
2008/02/28(木) 12:08:01から、相性が同程度ってのは疑問だなぁ。Lua ってそのあたりなんか最近変わった?
0847デフォルトの名無しさん
2008/02/28(木) 19:12:32ここんとこ、少し解説してくれまいか?
0848デフォルトの名無しさん
2008/02/28(木) 22:08:060849デフォルトの名無しさん
2008/02/28(木) 23:28:01マニュアルの「C言語のAPIからSquirrelの値への強参照の維持」のところ以降を参照
以下使い方の例の一つ:複数のsquirrelのクロージャをC側で保持して任意に呼び分け
前準備
1. スクリプトをコンパイル
2. スタック上のクロージャを、sq_getstackobject でHSQOBJECT として参照保持
3. スタック上のはとりあえず必要ないので sq_pop で解放
4. 必要な分だけこれを繰り返す
使う場合
1. スタックに HSQOBJECT として参照してるクロージャを sq_pushobject で積む
2. sq_call でそのクロージャを呼びだす
LUA でおなじようなことをしようとすると、なにかしら名前をつけてグローバルのテーブルか
レジストリにいれとくとかして、それをいちいちスタック上で取り出すような処理が必要なはず。
squirrel だと、任意のオブジェクトに対する参照をC側でもてるので、
(強参照なので、参照されてる限り消えない)、使うときだけまたスタックに積む、という使い方ができる。
値を set するにはスタック介さないとダメだけど、get だけならAPIで直接ぬくこともできる。
制御の本体を C 側でおこなってる場合でも、この機構があるおかげで、Squirrel 側のオブジェクトの
とりまわしがすごい楽にできる。
sqplus を使うと、このあたり関連の処理が SquirrelObject としてラッピングしてあって、
値の代入から配列/辞書としての操作まで、全部 Cからのメソッド呼び出しで
簡単にできるようになってる。
0850デフォルトの名無しさん
2008/02/29(金) 00:09:18>LUA でおなじようなことをしようとすると、なにかしら名前をつけてグローバルのテーブルか
>レジストリにいれとくとかして、それをいちいちスタック上で取り出すような処理が必要なはず。
ここ以外はLuaと機能の差がないという解釈でOK?
Luaでもちょっとした(数行の)関数かけば解決しちゃうような。
もちろんその手間はかかるけど。
>強参照なので、参照されてる限り消えない
Luaでもレジストリに保存されている限り消えない。
>get だけならAPIで直接ぬくこともできる。
もうちょっと詳しく書いていただけると助かります。
>SquirrelObject としてラッピングしてあって
luabind::objectでも同様にしている。
0851デフォルトの名無しさん
2008/02/29(金) 00:22:140852デフォルトの名無しさん
2008/02/29(金) 00:54:33なんだって! そんな便利なものがあったのかよ!
0853デフォルトの名無しさん
2008/02/29(金) 01:27:20まあラッピングすればねー。
SqurrelObject は例示としてはよくなかったね。
Cの名前空間との関連を管理するコードを自前で書かないと
いけないってのはちょっとうれしくないぁと。
それをしなくて良い分親和性が高いってのは納得いただけるかと。
>getだけなら
sq_objbool とかそのへん
あと、話はそれるけど、言語文法もかねw>C言語との親和性
begin/end がどうしても慣れなかった……
0854デフォルトの名無しさん
2008/02/29(金) 04:54:19スタック操作とか、参照カウンタとか頭こんがらがってくる
C++じゃなかったからtemplate library 使ってないせいもあるんだろうけどさ。
みんなやっぱりその辺のbinding使ってるの?**Plusとかみたいなの
>>849
強参照ってそんなときに使うのか・・・
0855デフォルトの名無しさん
2008/02/29(金) 07:57:010856デフォルトの名無しさん
2008/02/29(金) 12:13:320857デフォルトの名無しさん
2008/02/29(金) 14:34:16うまいこといったつもりか!
0858デフォルトの名無しさん
2008/02/29(金) 15:42:34スタックはややこしいよね……。
テンプレートは使ったり使わなかったりかな。単純な関数呼び出しぐらい
なら、普通に書いたほうがわかりやすいので。
0859デフォルトの名無しさん
2008/02/29(金) 18:37:04結局スタック操作から逃れられなかったなあ。
操作をできるだけ簡略化しようとして変態的になっていく不思議。
スタックの取得とかはこんなん。
lua_Var var = Lua.peek(-1);
↑Luaが扱うオブジェクトなら何でも入る共有体クラス
関数呼び出しはこんなん。
( Lua.global()["object"]["setPosition"] << 1.0 << 12.3 << 0.4 )(3, 0);
0860デフォルトの名無しさん
2008/03/01(土) 00:10:39luaのバージョンも進んでいるうえ、VS2008も販売された今では、
サポート放置されたライブラリには手が出しにくいです。
0861デフォルトの名無しさん
2008/03/01(土) 00:29:400862デフォルトの名無しさん
2008/03/01(土) 00:44:46最小限の関数だけエクスポートして積極的にLua側に
ロジック追い出すように練り直した方が良いと思うけど。
0863デフォルトの名無しさん
2008/03/01(土) 00:46:58http://code.rasterbar.com/luabind/wiki
0864デフォルトの名無しさん
2008/03/01(土) 08:56:590865デフォルトの名無しさん
2008/03/01(土) 09:32:40変態っぽいw
でも関数呼び出し面白い
>>864
スタックは仕組みがわかってても、日常のプログラミングでつかわないから疲れる
で、Squirrelは基本ライブラリですらスタック周りのバグがあったりして、
ソースみながら理解しようとしても信用できずに不安(もちろんパッチなげたけどさ)
0866デフォルトの名無しさん
2008/03/01(土) 09:33:45DMonkeyもスレ違いじゃないよね?
0867デフォルトの名無しさん
2008/03/01(土) 10:09:03<< 1.0 << 12.3 << 0.4ってのは何を渡してるの?(3,0)は関数呼び出しって分かるけど。
>>865
バグについてkwsk
確かにスタック操作は煩雑だよね。特に開放。忘れたらリソース食いつぶすって点で
new-deleteに通じるものがある。
Squirrel使う予定なんだけど、やっぱりスタック操作の理解を深めるためにバインダは
自作したほうがいいかな。
0868デフォルトの名無しさん
2008/03/01(土) 10:22:28情報処理試験の勉強をするのがよいとおもう。
0869デフォルトの名無しさん
2008/03/01(土) 10:43:45> 自作したほうがいいかな。
Squirrel Wikiのバインディングを一通り試してみてからでも遅くはないと思う。
http://wiki.squirrel-lang.org/
どっちにしろ、1から書くには大変だと思うので。
>>867
バグkwsk覚えてない。SqPlusのバグだったかも。
>>867も言うような pop忘れだったと思う。
俺が見た時は、安定版にパッチが取り込まれてなかった。
大分前、去年の話だけどね。
他にも似たようなところがあるかもしれない。
0870デフォルトの名無しさん
2008/03/01(土) 10:48:13まぁ車輪の再発明もいいところだが、バインダ作るよ。できたら公開するぽ
0871デフォルトの名無しさん
2008/03/01(土) 10:51:39>>869
とりあえずSqPlusのソースを読み始めたところ。SqPlusと似たインターフェイスになりそう。
名前空間何にしよう。とりあえずsqbindでいいか。
0873デフォルトの名無しさん
2008/03/01(土) 13:13:31ストリームみたいにしたいなら
gcall<<"object"<<"setPosition"<<arg<<1.0<<3.0<<-2.0<<end;
みたいにマニュピレータつかった方が見やすいと思うけど
0874デフォルトの名無しさん
2008/03/01(土) 14:17:150875859
2008/03/01(土) 14:20:12その辺は考えてなかった。
0876デフォルトの名無しさん
2008/03/01(土) 14:59:38a << 1.0 の戻り値はどんなオブジェクトになっとるの?
a と同じオブジェクトを返しているのですかね。
ということは、メソッドチェーンみたいなのでも可能か・・・
a.push(1.0).push(12.3).push(0.4).call(3, 0)
みたいな
0877デフォルトの名無しさん
2008/03/01(土) 15:59:30SqPlusを読んで勉強中。
SquirrelObjectのコピーコンストラクタだけど、以前保持していたオブジェクトへのハンドル
はsq_releaseしなくて平気なんだろうか。
operator=ではちゃんとsq_releaseしてるし、バグだよなぁ・・・やっぱり。
0878デフォルトの名無しさん
2008/03/01(土) 17:21:12アホス つってきまつ
0879デフォルトの名無しさん
2008/03/02(日) 02:02:22なんでもいいけど一行でcallできるのと
一行でnative closure登録できるようにしとけば
他はほとんどつかわんよ
0880デフォルトの名無しさん
2008/03/02(日) 06:28:46それを人はバインダと呼ぶ
0881デフォルトの名無しさん
2008/03/02(日) 11:54:53ttp://colon.nsf.jp/lua/
MSVC用なんで需要なさそうだけど^^
0882デフォルトの名無しさん
2008/03/02(日) 12:48:58ソースコードのほうはいいけど、test.luaのほうの文字コードがぶっ壊れてるように見えるんですが。
str = "\\5爐!Eェ殉\\}柔檻5\"xさぜ\"ェ殉柔爐さ檻Exぜ!}"
pat = "[^檻]*"
testf( 1, str, pat, "xさぜ\"ェ殉柔爐さ" )
これってテスト用だからわざとだったりします?
でも、SJISじゃないって警告が8箇所出てたりもします。
0883デフォルトの名無しさん
2008/03/02(日) 13:13:04漢字コードの境界部分を多く含むようにしてあるので
フォントによっては表示すらできません
■ このスレッドは過去ログ倉庫に格納されています