トップページ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
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
もう三ヶ月経ってますよ。ちょっと焦らしすぎじゃーないですかね?
0414デフォルトの名無しさん2007/08/19(日) 21:38:34
お前ら他人の作った糞言語使って嬉しいか
おれは我慢ならん
0415デフォルトの名無しさん2007/08/19(日) 22:07:07
C++だってJavaだってC#だって他人が作った言語なんだが、お前は使わないのか?

これらの言語が糞じゃなくてぅあが糞だというのなら、それはお前の主観であって
他人に押し付けるものではないよ
0416デフォルトの名無しさん2007/08/19(日) 22:14:12
糞言語かどうかは俺が決める事であって、
C++やJavaやC#がそうだとは一言も言ってないが
0417デフォルトの名無しさん2007/08/19(日) 22:16:14
糞言語判定委員乙
0418デフォルトの名無しさん2007/08/19(日) 22:22:01
他人のレスは初めの一行しか読まないのな
0419デフォルトの名無しさん2007/08/19(日) 22:25:06
>>416は明らかにレスを読んでないし、
恐らく普段から人の話を聞かない自己中な人間なんだろうね。

糞言語判定委員乙
0420デフォルトの名無しさん2007/08/19(日) 22:46:34
決め付けは良くない。
0421デフォルトの名無しさん2007/08/19(日) 22:59:14
↓糞言語番付
0422デフォルトの名無しさん2007/08/19(日) 23:05:42
1.糞言語かどうかは俺が決める事
2.糞言語かどうかは俺が決める事
3.糞言語かどうかは俺が決める事
4.糞言語かどうかは俺が決める事
5.糞言語かどうかは俺が決める事

決め付は良くない。
0423デフォルトの名無しさん2007/08/19(日) 23:09:17
糞言語かどうかは俺が決める事であって、決め付けは良くない。
0424デフォルトの名無しさん2007/08/19(日) 23:25:44
いや俺が決めるやるってば.決め付けは良くない.
04254242007/08/19(日) 23:27:04
日本語がおかしいかどうかも俺が決める.
0426デフォルトの名無しさん2007/08/19(日) 23:52:53
俺がおかしいかどうかは…orz
0427デフォルトの名無しさん2007/08/20(月) 00:02:59
俺が糞かどうかは日本語がおかしいかどうかで決まった。
0428デフォルトの名無しさん2007/08/20(月) 01:02:36
俺が糞かどうかはお前が決める事であって、
お前が糞だとは一言も言ってないが
0429デフォルトの名無しさん2007/08/20(月) 08:06:52
日本語は糞言語じゃないよ
0430デフォルトの名無しさん2007/08/20(月) 08:25:17
日本語は糞言語だって土屋賢二が言ってた
0431デフォルトの名無しさん2007/08/20(月) 08:27:26
LightWeight的観点からすれば日本語は糞
0432デフォルトの名無しさん2007/08/20(月) 08:33:55
ついでにRubyは糞
0433デフォルトの名無しさん2007/08/20(月) 09:29:10
スレが伸びてると思って楽しみにしてきてみれば
またこれか
学習しろ俺
0434デフォルトの名無しさん2007/08/20(月) 14:18:58
まあお前らはそうやって糞言語を決めつけてればいいさ
その代わりPerlたんは俺の嫁だからな
0435デフォルトの名無しさん2007/08/20(月) 23:00:02
         ∧_∧   ┌────────────
       ◯( ´∀` )◯ < 僕は、LISPちゃん!
        \    /  └────────────
       _/ __ \_
      (_/   \_)
           lll
0436デフォルトの名無しさん2007/08/20(月) 23:13:00
Cで書いてあるのが良言語でC++で書いてるのが糞言語。この分類で9割方
当たる。
0437デフォルトの名無しさん2007/08/20(月) 23:25:12
どこがどう糞なのか書いてくれると言語談義に花が咲くのに
0438デフォルトの名無しさん2007/08/21(火) 00:14:12
C++はいろんな機関で策定されてきた標準ライブラリにのみ価値があり、
それ以外の自家製オナニーライブラリは糞と言っていい。
Cで書き直せグズ
0439デフォルトの名無しさん2007/08/21(火) 00:49:14
boostとかほんとゴミだね
0440デフォルトの名無しさん2007/08/21(火) 02:20:19
↓MFCはおまえの嫁
0441デフォルトの名無しさん2007/08/21(火) 02:49:19
    / ̄ ̄ ̄ ̄\
    /      ::  ヽ
  /     \   / |
(∂|      | ・  ・丿 |
 ヽ|     ""   "" |
   |      ___   |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   \    /__/ /  < やっぱぅあはすげえや!
   /ヽ       /\   \_________________
04421662007/08/22(水) 18:11:01
squirrelの解説書きました
ごめん、もうめんどくさくなってすっぽかすつもりでした
かなり投げやりですがとりあえず約束は守りましたよ〜
0443デフォルトの名無しさん2007/08/22(水) 21:08:02
>>442
URLを張ってくれ
0444デフォルトの名無しさん2007/08/22(水) 22:14:06
wiki
0445デフォルトの名無しさん2007/08/22(水) 23:31:20
ジェネレータが役に立たない理由が気になる.
何をどう直すつもりなのかも.
0446デフォルトの名無しさん2007/08/23(木) 00:18:17
>>445
その辺をちょっと書き足しました
0447デフォルトの名無しさん2007/08/23(木) 00:53:40
速度にナシつけるならもうちょっと裏付けを示そうよ
delegateの使い方が無茶苦茶だよ
threadあたりは突込みどころが多すぎてもう
0448デフォルトの名無しさん2007/08/23(木) 11:11:51
>>447
速度に関しては確かにはっきりと言えることじゃないですね
delegateは非常駐っぽいことをやる方法がこれしか思いつかなかったので…
突っ込みどころあるなら具体的に言ってもらえると助かります。個人的にそれを期待して書いてみたというのもあるので
■ このスレッドは過去ログ倉庫に格納されています