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

プログラミング言語 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
0314デフォルトの名無しさん2007/07/15(日) 18:07:59
バカしか書けんのか、この荒らしは...
虚しいのう...
0315デフォルトの名無しさん2007/07/15(日) 18:11:42
バカなお前のために、俺の語彙力を発揮しろと?

というか、バカなんだから理解できないだろ?
0316デフォルトの名無しさん2007/07/15(日) 18:13:01
>>313
ここはぅあのスレですよ。喧嘩をしたいのなら他所でやって頂けませんか。
0317デフォルトの名無しさん2007/07/15(日) 18:14:21
>>315
あまりにも程度が低過ぎてワラタ。お前面白いからもっと頑張れw
0318デフォルトの名無しさん2007/07/15(日) 18:14:27
もう終わりで良いんじゃない、と言った本人がダラダラと続けてるからムリ
0319デフォルトの名無しさん2007/07/15(日) 18:15:39
>>317
お前もガンバレよ、そのネット難民の生活をなw
0320デフォルトの名無しさん2007/07/15(日) 18:16:57
うわー、レッテル貼られたw
何だっけ? レッテル貼るのは反論出来ない時のごまかしなんだっけかw
0321デフォルトの名無しさん2007/07/15(日) 18:17:44
これが2ch名物、"悔しいからお互いにレスし続ける合戦"ですか。

低脳二人がこの合戦にはまると、まさにエンドレスサマー
0322デフォルトの名無しさん2007/07/15(日) 18:18:53
>>320
えw
お前レッテルの意味わかってるの?w
0323デフォルトの名無しさん2007/07/15(日) 18:21:30
スマソ。はしゃぎ過ぎたわ。あとは誰か適当に相手してあげて。
ちょっと面白かったわ。
0324デフォルトの名無しさん2007/07/15(日) 18:21:54
そろそろ「夏か…」と言い出す夏厨厨も参加して、
事態はますます混迷を深めていきます。
0325デフォルトの名無しさん2007/07/15(日) 18:31:09
もう夏か・・・
0326デフォルトの名無しさん2007/07/15(日) 18:32:03
>>323
まぁよくがんばったよ。

散々やっときながら、"ちょっと面白かったわ"と、
"俺は余裕だった、ちょっとアラシをからかってやっただけ"
という演出をするところがなかなか将来有望。

そんな演出を入れてみても、
傍から見るとどっちもアラシにしか見えないんだけどね。
0327デフォルトの名無しさん2007/07/15(日) 18:33:41
↑傍観者気取りでた〜www
0328デフォルトの名無しさん2007/07/15(日) 18:35:21
スマソはどうした?
0329デフォルトの名無しさん2007/07/15(日) 18:40:45
相手を特定したがる割に、匿名を嫌うわけでもないのが始末に終えない
匿名の全体主義こそすべて
0330デフォルトの名無しさん2007/07/15(日) 19:27:00
>>328
俺は傍観してるよ。>>327 は誰だか知らん。
0331デフォルトの名無しさん2007/07/15(日) 22:17:16
Luby
0332デフォルトの名無しさん2007/07/15(日) 22:24:40
ぅび
0333デフォルトの名無しさん2007/07/16(月) 01:07:47
あぁ、とうとうこのスレにもキチガイがきたか…。はやく別のとこいってくれねーかな。
0334デフォルトの名無しさん2007/07/16(月) 23:52:40
結論 同一人物or魂の双子
0335デフォルトの名無しさん2007/07/17(火) 00:44:33
RubyとLuaが?
0336デフォルトの名無しさん2007/07/17(火) 00:55:29
>>283
rubyのは オ マ ー ジ ュ な
パクリとオマージュは紙一重だけど
rubyのはオマージュだと言える
だいたいパクリで成り立ってる言語なんてあるのか
0337デフォルトの名無しさん2007/07/17(火) 01:23:44
Java
0338デフォルトの名無しさん2007/07/17(火) 01:26:20
ところで、squirrelの記事を書いてくれると言った>>166はどうしたのかね?
0339デフォルトの名無しさん2007/07/17(火) 01:48:10
>>336
パクりで成り立ってない言語なんてあるのか
の間違いじゃないの?
まあ俺が言ってるのはその「オマージュ」なんだろうけど
0340デフォルトの名無しさん2007/07/17(火) 12:04:38
どうでもいいからお前らLuaの大域変数の初期値与える方法教えろよ!
具体的に言うとあるゲーム(説明のために簡単にブロック崩しにしておく)の初期値

ユーザ側でスクリプトを作ることが出来るゲーム(カルネジのような)を作ろうと思ってるんだが
ステージごとに初期位置可変なのでLua側に大域変数として全部与えてLuaから必要な変数だけ使う形にしたい。けどどう実現するべきか分からない
上から出来たら簡単だろうなーと思う順に言うと
1 C側からLuaに初期値を与えることが出来る関数がある
2 ユーザ型とかいうの使って色々やると値を作れる
3 変数読む為だけのCの関数を作る
0341デフォルトの名無しさん2007/07/17(火) 16:44:11
質問なんだけど
 lua_getfield( L, -1, "test" );

 lua_pushstring( L, "test" );
 lua_gettable( L, -2 );
って何が違うの?
0342デフォルトの名無しさん2007/07/17(火) 21:00:19
Squirrelムズイな・・・というか、Lua系というか。

>>166さんをマジで期待したいぜ・・・
0343デフォルトの名無しさん2007/07/18(水) 14:51:43
>>341
どっちも同じ。
テーブルからキーが文字列の値を取り出すことは
頻繁にあるから前者が用意されているのよ。
0344デフォルトの名無しさん2007/07/18(水) 20:24:00
>>342
何が難しい?
0345デフォルトの名無しさん2007/07/18(水) 22:08:00
Ruby好きはLuaが好き、
Java好きはSquirrelが好きって感じだね
0346デフォルトの名無しさん2007/07/18(水) 23:44:03
C++好きはXtalが好きと言われるくらいにXtalが発展してくれるといいんだけどなぁ
0347デフォルトの名無しさん2007/07/19(木) 02:49:10
>>345
Lua好きがRuby好きとは限らない罠
0348デフォルトの名無しさん2007/07/19(木) 04:28:49
>>344
ホスト言語からの大域変数の取得でいきなり、つまづいた
今はできたけど・・・

APIリファレンスは、日本語のものがあって助かるんだけど、
リファレンスの説明だけじゃ、わかんなくて、本家にもAPIの使用例が全然ないので、
これ、何に使うのってことが一杯・・・
何かするにも手探り状態


もっとも肝心なのは、関数呼び出しとか、変数の取得などの効果的なラッピングの方法なんだけど。
まさか、ホスト側でSquirrel APIそのまま使うわけにもいくまい。
C++じゃないんで、SqurrelPlusなどつかえなくて(参考にはしてるが、なかなかにきっかい)

>>345
Ruby好きだけど、Squirrelの方が文法は好きだよ
0349デフォルトの名無しさん2007/07/19(木) 08:08:19
Luaは速いけどRubyは遅いからちょっと違うかな
0350デフォルトの名無しさん2007/07/19(木) 08:18:33
RubyはS。
ぅあはM。

に決まってんだろ
0351デフォルトの名無しさん2007/07/19(木) 22:29:43
luaでFFTを実装しようと思うんだが
言語使用が違うからCやjavaから単純に移植というわけにはいかないので
どなたかC2LUAやらjava2luaのようなトランスレーターを知っていたら
是非教えて貰いたいのだけど
0352デフォルトの名無しさん2007/07/20(金) 02:55:30
普通、トランスレーターはわざわざ遅くなる方向には作らんよ。
少し考えれば判る事だろ。
それとFFTがFINAL FANTASY TACTICSだとかいう
逆上脊髄反射ネタも禁止な。
0353デフォルトの名無しさん2007/07/20(金) 04:03:01
ttp://www.kurims.kyoto-u.ac.jp/~ooura/fftman/ftmn1_2.html
にある再帰版のFFTならluaに移植できるんじゃない?
0354デフォルトの名無しさん2007/07/20(金) 07:13:51
そういう方面はバインディング書くのが妥当かなー
0355デフォルトの名無しさん2007/07/20(金) 07:35:02
foo.f.bindenv(foo)

これ汚ねえなー
デリゲート渡したいだけなのに、何だよbindenvって
0356デフォルトの名無しさん2007/07/20(金) 22:21:27
せっかくなんでFFTルーチン手直ししてみた。
ネタ元はRigidChipsスレみたいなのでこっちに書き込み。
>>http://game11.2ch.net/test/read.cgi/gameama/1182042852/498

実装が間違ってないとして・・・
64点なら1万回繰り返して4秒程度だったので(Core2Duo)
実用も可能そう。

luaソース:http://hammm.dw.land.to/lua/fft.lua
0357デフォルトの名無しさん2007/07/23(月) 02:35:57
Perl好きだけどLuaの方が親近感は沸く
0358デフォルトの名無しさん2007/07/23(月) 02:36:33
ぅあー助けて
0359デフォルトの名無しさん2007/07/24(火) 11:53:01
>>346
Xtalいいよね。
早く1.0にならないかなぁ
0360デフォルトの名無しさん2007/07/24(火) 18:39:57
>>359
1.0になってもバグフィックスぐらいで殆ど機能変わらないと思うぞ。
てか早く1.0になって欲しかったら沢山使ってバグ報告しようぜ。
0361デフォルトの名無しさん2007/07/24(火) 19:12:45
Xtalは仕様が変態的で面白いんだが実装が首傾げたくなるんだよなぁ
"1" == 1はnullが返って1 == "1"はエラーとか。
前者がC++からsend使ってて
後者がXsrcで存在しないString::op_eq_r_Intを呼んでるせいだと思うんだが。
0362デフォルトの名無しさん2007/07/25(水) 07:22:08
PC初心者でも弄り易くというぅあの思想が好きだ。
0363デフォルトの名無しさん2007/07/25(水) 19:14:56
Luaは学習用に使えるサンプルやチュートリアルが少なすぎるな
0364デフォルトの名無しさん2007/07/25(水) 23:15:37
lua-wikiのチュートリアルやらsample-codeやら見たけど
なかなか面白い

Pascalの文法に近いので、Pascalのサンプルやチュートリアルをluaでも動くようにしたらいいのではないだろうか
googleのソースコード検索で探してみたが、あまりヒットしなかった
0365デフォルトの名無しさん2007/07/25(水) 23:46:40
ところでLuaのコルーチンで途中から別の関数に切り替えるのってどうすればいい?
例えばFunc0っていう関数の途中でyieldしてC++側に制御戻した後、
次にresumeするとFunc1という関数の最初から始まるようにする感じ。

単純にC++からの関数呼び出しでやると、yieldのところでエラー出てしまい、その後resumeしても戻らないんだが・・・。
0366デフォルトの名無しさん2007/07/26(木) 01:54:57
やりたいことがいまいち不明だけど yield のあとに return Func1() って書くという意味ではないのかな。
0367デフォルトの名無しさん2007/07/26(木) 02:14:50
lua_tostringで得られたポインタは、解放しなくていいんでしょうか?
0368デフォルトの名無しさん2007/07/26(木) 13:09:04
>>367

チュートリアルの、lua_tolstringのところに

 Because Lua has garbage collection, there is no guarantee that the pointer returned by lua_tolstring will be valid after the corresponding value is removed from the stack.

ってあるから、ガベージコレクタで解放されるものだと思っています。
0369デフォルトの名無しさん2007/07/26(木) 23:57:05
>>366
Luaのスクリプト側で次にresumeして戻る位置を決めるんじゃなくて、C++側から切り替えたい場合どうすればいいのかな、と。
ちょっと記述不足だった。すまん。
0370デフォルトの名無しさん2007/07/27(金) 13:53:53
スクリプトでできることはすべてC側からもできるよ
0371チラシの裏2007/07/27(金) 20:51:33
LuaをC++で使うときは
lua.hの代わりに、lua.hppをインクルードする、っと
0372デフォルトの名無しさん2007/07/28(土) 19:30:45
UNICODEに対応していれば、ぅあ.hでもおk
0373デフォルトの名無しさん2007/08/01(水) 16:40:05
Squirrelに関して質問。

SqPlusのソースを呼んでいるのですが、
SquirrelObjectで使っている、sq_addref というAPIがあり、
リファレンスによると、参照カウンタのインクリメントとあるのですが、
これって、つまり、C++側で作成した SquirrelObject で束縛?するためでしょうか?
sq_addref を sq_release しない限りは、squirrelが勝手に開放しないということで
あってるでしょうか?
0374デフォルトの名無しさん2007/08/01(水) 16:41:13
読みにくくてすまそ。

SqPlusのソースを呼んでいるのですが、
SquirrelObjectで使っている、sq_addref というAPIがあります。
リファレンスによると、参照カウンタのインクリメントとあるのです。

これは、つまり、C++側で作成した SquirrelObject で HSQOBJECT を束縛?するためでしょうか?
sq_addref を sq_release しない限りは、squirrelが勝手に開放しないということで
あってるでしょうか?
0375デフォルトの名無しさん2007/08/01(水) 19:17:53
参照カウンタのインクリメントは参照カウンタのインクリメントだよ
けどその理解で多分間違ってないと思う
0376デフォルトの名無しさん2007/08/01(水) 19:39:20
ttp://ll.jus.or.jp/2007/
0377デフォルトの名無しさん2007/08/01(水) 21:08:24
ttp://ja.wikipedia.org/wiki/%E5%8F%82%E7%85%A7%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88

- sq_addrefで参照カウンタが+1
- sq_releaseで参照カウンタが-1 (0となったらsq_resetobjectが呼ばれる)
0378デフォルトの名無しさん2007/08/01(水) 22:04:59
サンクス。

あ、いや、参照カウンタ知らないわけではないすw
HSQOBJECTを保持するときは、こうやって参照カウンタをいじるのがその流儀なのね、思っただけなので。

0379デフォルトの名無しさん2007/08/02(木) 16:53:20
Squirrelの質問です。
SqPlusの SquirrelVM.cpp の SquirrelVM::RunScript を見ています。

sq_gettopでスタック位置を確認しながら、見ていたのですが、
この関数、スタック操作が、間違ってませんか?
sq_callが成功した時点で、二つスタックが残っているので、
sq_popで2つポップしないといけないはず・・・。

バージョンは、ersion 2.1.1 stable
(でもHISTORYみてたら、
-sq_call() doesn't pop the closure (just the params) って書いてあるんだよなあ)

SquirrelObject SquirrelVM::RunScript(const SquirrelObject &o,SquirrelObject *_this)
{
  SquirrelObject ret;
  sq_pushobject(_VM,o._o); //スタックに残る
  if(_this) {
    sq_pushobject(_VM,_this->_o); //引数1
  }
  else {
    sq_pushroottable(_VM); //引数1
  }
  if(SQ_SUCCEEDED(sq_call(_VM,1,SQTrue,SQ_CALL_RAISE_ERROR))) {
// 成功したら、スタックに戻り値が残る
    ret.AttachToStackObject(-1);
    sq_pop(_VM,1); // sq_pop(_VM,2);では?
    return ret;
  }
  sq_pop(_VM,1); // 失敗したら、スタックに
  throw SquirrelError();
  
}
0380デフォルトの名無しさん2007/08/02(木) 16:55:10
  sq_pop(_VM,1); // 失敗したら、スタックに1つだけ残っている
  throw SquirrelError();
  
}

なんで、そう思ったかというと、
testSqPlus2.cppが残っているはずのスタック(戻り値)を全然考慮してないからなんですけど
0381デフォルトの名無しさん2007/08/02(木) 17:03:52
ごめんちょっと勘違い

バージョンとHISTORYは、SqPlusじゃなくて、Squirrelのですね。
SqPlusのバージョンは、stable 25でした。
0382デフォルトの名無しさん2007/08/02(木) 18:30:48
http://squirrel-lang.org/forums/thread/1749.aspx
0383デフォルトの名無しさん2007/08/02(木) 18:48:57
>>382
どっちも日本人なのか・・・
0384デフォルトの名無しさん2007/08/02(木) 19:09:04
>>382
同じバグかYO!\(^o^)/

サンクス。
おれの判断は正しかったようだ。

つか、公式フォーラムくらい検索しろ > 俺

コミッターもメンテナーにも日本人居るのなw
0385デフォルトの名無しさん2007/08/03(金) 04:06:58
生のSquirrelでなくSqPlus使うと
コード大きくなたり重くなったりするの?
0386デフォルトの名無しさん2007/08/03(金) 07:27:17
もともと重いからあまり関係ないような
0387デフォルトの名無しさん2007/08/04(土) 21:27:01
LuaLua魂オワタ
0388デフォルトの名無しさん2007/08/04(土) 21:37:39
>>387
参加したのか?
0389デフォルトの名無しさん2007/08/04(土) 22:18:34
ぅあぅあ
0390デフォルトの名無しさん2007/08/04(土) 22:58:17
行った。
・上野氏(みんな読んでるLuaマニュアルの訳者)によるLua紹介。
 「遺伝子関連のプログラムを組む上で最も都合が良かった」
・Luaの速度がXtalとPnutsから比較対象にされてた
・Xtalは頑張って作ってる印象。作者ナイスキャラ
・Squirrelは上野氏が一言触れた程度

その他はプレゼン中にチャットログ(Lingr)が流れる奴とか、嘘だらけのmatzプレゼンとか、いろいろ。
全体的には演者のレベルが結構高かった印象。
体調が最悪じゃなければなかなか良かった。
0391デフォルトの名無しさん2007/08/05(日) 03:55:44
Xtaの彼はテンパっちゃったのか「切迫」を正しくない使い方で
連発してたね。気持ちはわかるがもうちょっとおちつけとw
0392デフォルトの名無しさん2007/08/05(日) 19:33:36
>・Luaの速度がXtalとPnutsから比較対象にされてた
Luaメジャーじゃん?と思った
0393デフォルトの名無しさん2007/08/06(月) 03:09:03
測るだけに
0394デフォルトの名無しさん2007/08/06(月) 08:06:31
>>393
山田君ざぶとん1枚あげて!
0395デフォルトの名無しさん2007/08/06(月) 22:48:18
Lightweight Language Spirit
http://ll.jus.or.jp/2007/

これかー
LuaLuaっていうからわからんだじゃねーか

Luaだけじゃねえw
つか、Luaの話すくねえw
0396デフォルトの名無しさん2007/08/06(月) 23:57:53
Lua 自体の話は少ないけど、色んなところで触れられてた。>>390 参照
0397デフォルトの名無しさん2007/08/07(火) 02:37:50
> 原著第5版
テクスチャへの描画とか、実際に使う際の普遍的なチップスとかって
載ってますのん?

そういうのは、Game Programming Gems買えって事かな?(そろえたら、赤本よりたけええけどよぉおぉ)
0398デフォルトの名無しさん2007/08/07(火) 02:38:25
誤爆 orz
0399デフォルトの名無しさん2007/08/07(火) 04:06:38
Game Programming Gems といえば
6巻でLuaが扱われてるよね。
読んでないけど、どうなんだろう
0400デフォルトの名無しさん2007/08/08(水) 01:12:02
LL魂、まとめ見てたけど、Cleanとか、Javaとか、OCamlはLLじゃねえw
すでに、適用範囲広がってるな。
普通に、L魂でいいんじゃないのか?
0401デフォルトの名無しさん2007/08/08(水) 01:27:34
lightのL?
ぅあのL?
0402デフォルトの名無しさん2007/08/08(水) 01:55:24
LanguageのLのつもりで書いた > L魂
0403デフォルトの名無しさん2007/08/08(水) 03:01:53
>>400
確かだ一回目でHaskellが取り上げられてるはずだが?
すでにどころか最初から適用範囲も何もあったもんじゃなかったんじゃねえの。

0404デフォルトの名無しさん2007/08/08(水) 04:15:12
>>400
うむ、Cleanの説明で「速い!」って言ってるの見て、これはカテゴリ違うよなーとは思った。
言語まわりの新しい動きをおさえつつ、中心軸はlightweightに置くって感じで理解している・・・

Javaに関してはJythonとかJRubyとかの絡みが主かと。
今後スクリプト言語が動くプラットフォームとして、JavaなのかDLRなのか、みたいな。

そういう流れでは、JLuaとかIronLuaはでないのかと。
lua-lのほう見るとつくってる人は居るっぽいな。
0405デフォルトの名無しさん2007/08/08(水) 04:31:46
IronSequirrel超希望
0406デフォルトの名無しさん2007/08/09(木) 00:24:37
Lua魂開催しよう!!
0407デフォルトの名無しさん2007/08/09(木) 14:48:53
参加者1名とかで終わりそう
0408デフォルトの名無しさん2007/08/10(金) 23:53:06
要するにOff会じゃないのか?
0409デフォルトの名無しさん2007/08/11(土) 10:52:37
>>407は来てくれるってことだね!
0410デフォルトの名無しさん2007/08/11(土) 13:11:25
>>407が参加したら主催者と合わせて参加者2名になっちゃうでしょ
0411デフォルトの名無しさん2007/08/11(土) 18:57:01
主催者すら来ないOff、ってのもそれはそれで魅力的だけどな
0412デフォルトの名無しさん2007/08/13(月) 03:00:30
それはもう主催者って呼び方が適当じゃないなw
企画者とか。
0413デフォルトの名無しさん2007/08/19(日) 21:03:14
>166
もう三ヶ月経ってますよ。ちょっと焦らしすぎじゃーないですかね?
■ このスレッドは過去ログ倉庫に格納されています