プログラミング言語 Lua
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGhttp://www.lua.org/
0459デフォルトの名無しさん
NGNG漏れは、
if(...){
}
の方が楽で良いな。あと関数はfuncがよくない?
なんつーか、最近の言語ってキーワードが長過ぎて萎え萎え
0460デフォルトの名無しさん
NGNGbegin無いほうがすっきりするよ。
Wirth先生もModula-2ではbegin無くしてたし
0461デフォルトの名無しさん
NGNG0462山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0463デフォルトの名無しさん
NGNGなんか宣伝とか比較とか実験とかそんなのばっかりだし。
0464デフォルトの名無しさん
NGNG前に C もどきのマクロ言語作ったことあったけど、
次にそういう仕事があったら Lua 使うかも。
言語仕様考えるのって大変。
0465デフォルトの名無しさん
NGNG漏れはプライベートプログラムじゃ活用しとるが、仕事ではまだ使うには
情報不足やねぇ。で、こんなスレに足げに通ってるワケだ。
でも、何となくだけどアマチュアプログラムの組み込みにLuaはちょっと来
るんじゃないかという予感もあるよ。HSPとかあの辺の層を一気に取り込む
だけの動きがあるんじゃないかと。もちろん漏れはそんなのには興味ないが
そういうコミュニティからLuaへのフィードバックは期待できるしなー。
0466デフォルトの名無しさん
NGNGこれ何?
0467山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0468デフォルトの名無しさん
NGNGおいらは、Lua使って弾幕記述言語作ってる。
HSP用のプラグインもついでに作ってるんだが、並列で走らせる方法
とwait時抜け出す方法が分からなくて・・・。
hook使うの分かってるんだがどうも。
0469デフォルトの名無しさん
NGNGなにそれ?
0470デフォルトの名無しさん
NGNG0471デフォルトの名無しさん
NGNG構文違うし、これといったメリットないし、
さらに、マイナーで、究めつけはまだバグが多くて、仕様がよく変わる。
やはり、組込み向けぐらいかね?漏れは知らんけど。。。
0472デフォルトの名無しさん
NGNG0473GoLua
NGNG0474デフォルトの名無しさん
NGNG0475デフォルトの名無しさん
NGNGYaccとかそういうのつかっててくれればなぁ…。
0476デフォルトの名無しさん
NGNG0477デフォルトの名無しさん
NGNG0478デフォルトの名無しさん
NGNG0479468
NGNGこのスレもしかして見られてるのかな?
0480デフォルトの名無しさん
NGNG見てます。別の弾幕記述言語として、
Lua使ってみたいなーと思って検索したらこのスレ見つけました。
ゲームの組み込みには本当にいいですね。
0481468
NGNG0482デフォルトの名無しさん
NGNG0483デフォルトの名無しさん
NGNG…としょうがないから反応してみる。
0484デフォルトの名無しさん
NGNG…としょうがないから反応してみる。
MinGWでうまくコンパイルできないんです。
0485デフォルトの名無しさん
NGNGmame32plus!のコンパイルに使ったmingwセットだけどw
cygwinで-mno-cygwinだとライブラリは問題なくコンパイルできるけど
lua.exeがなんかうまくcygwinフリーにならない…
0486デフォルトの名無しさん
NGNG0487デフォルトの名無しさん
NGNG0488449
NGNG2) 66msec
3) 564msec
にまで上がった。
ちなみにもう700行じゃない。
(Cで2000行、schemeで5000行程度)
2)と3)で、またかなり差が開いたが、
2)はループ全体をネイティブコードに変換できた結果。
簡単な演算なら全てネイティブ変換可能にした。
環境に対しての変数参照の手数が結構ある事と、
毎回デクリメントで型変換が発生するのでC言語程速くはならない。
これ以上は型について解析しないと改善されない。
3)はloop呼び出しで一旦ネイティブコードの中断が起きるのと、
毎回環境フレームの移動が起こる結果。
このケースではフレームの直接上書きが可能な事に着目すれば
もうちょっと改善される。whileに形式変換してしまう手もある。
GCは明示的にcons等やclosureを生成していかない限り、起動されることはない。
0489山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0490デフォルトの名無しさん
NGNG関数も含めた内部状態を丸ごと保存・丸ごと復帰したいんだけど
方法が判らんぜよ。
luacみたくluaL_loadfile()してluaU_dump()する方法なら問題なく
できるんだけど・・・もしかしてluaL_dofile()、lua_dostring()した
結果は保存不可?
0491デフォルトの名無しさん
NGNGどうすればよいでしょうか?
Cのincludeのようなものがあるのでしょうか?
それともlua_Stateを使ってなんらかのバインド処理を行うことが
できるのでしょうか?
0492デフォルトの名無しさん
NGNG0493デフォルトの名無しさん
NGNGまたまたご冗談を・・・・
猿がそんなことできるわけないでしょ。
0494デフォルトの名無しさん
NGNGdofile("")
0495デフォルトの名無しさん
NGNG一瞬顔文字に見えたし。
0496デフォルトの名無しさん
NGNG8ヶ月前にレスするなんて遅すぎでは?
0497デフォルトの名無しさん
NGNG0498デフォルトの名無しさん
NGNGマチクタビレタ〜
☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・) < Incremental GCまだ〜?
\_/⊂ ⊂_ ) \_____________
/ ̄ ̄ ̄ ̄ ̄ ̄ /|
| ̄ ̄ ̄ ̄ ̄ ̄ ̄| |
| 愛媛みかん |/
0499デフォルトの名無しさん
NGNGGOLuaどーなってるの? >>477
0500500
NGNG0501デフォルトの名無しさん
NGNGcoroutineつかって1キャラ1スレッドとかやってみた。
BulletMLみたいに逐次っぽく書けるやつ。それっぽく動いてる。
LuaXMLとかやったひといる?使い勝手とかどうなんでしょ。
http://lua-users.org/wiki/LuaXml
0502480
NGNG期待っす。面白いものができたらぜひ公開してくださいな。
coroutine って速度的にはどうですか?
LuaXML に関してはなんで Lua から XML を
いじる必要があるんだろうかと思ってしまいますが…
たぶん C/C++ 側で処理した方が良いのでは。
0503デフォルトの名無しさん
NGNG0504デフォルトの名無しさん
NGNGHSPプログラムコンテスト2003オンライン投票
http://www.onionsoft.net/hsp/contest2003/entryn1.html
HSPプログラムコンテスト2003に一番乗りで出展したものの
Windowsに標準でついてくるゲームを手軽に起動できるという(というかただのショートカットつめあわせ)
しょーもないプログラムでたたかれまくっているプログラミング暦3年(!)の高校生の
作品、ゲーム君をみんなの力で一位にしよう。
【【【 投票方法 】】】
http://www.onionsoft.net/hsp/contest2003/entryn1.html の一番下、エントリーNo8の「ゲーム君」
評価を「A」で選んでコメントを記入して「送信」(コメントいれるとなおよし)
http://www.onionsoft.net/hsp/contest2003/eval/eval.cgi?md=cmt&id=8
でいままで送信されたコメントが見えるよ!(けっこう笑える)
0505デフォルトの名無しさん
NGNGそのcoroutineを再利用したい場合、どうしたらいいんだろう?
あ、再利用ってのは、lua_newthread()で作ったthreadの再利用ね。
スレッド毎回作るのは重そうだから、プールしといて再利用しようと思ったんだけど、
実行が終わってないと、再利用してlua_resume()呼んでも前の関数の続きが
実行されちゃうんだよね(あたりまえだが…)。
0506505
NGNG今のところうまく動いているように見える。
LUA_API void lua_stopthread (lua_State *L) {
lua_lock(L);
L->ci = L->base_ci; /* go back to initial level */
L->base = L->ci->base;
L->nCcalls = 0;
luaF_close(L, L->base); /* close eventual pending closures */
restore_stack_limit(L);
lua_unlock(L);
}
>>503
MITライセンスだから、ほとんど制限無いと思うんだが。
0507505=501
NGNG>coroutine って速度的にはどうですか?
とりあえず、スレッド付きオブジェクトを200個くらい表示させてみても
60FPSは出てたみたいだから、そんなに遅くないみたい(Pen!!!866Mhz)。
ソース見ても関数呼び出しとほとんど同じだしね。
0508デフォルトの名無しさん
NGNGgod!
できたら実装例キボンヌ。
> MITライセンス
見てみたけど、BSDライセンスと同様に扱ってOKって感じかな?
0509デフォルトの名無しさん
NGNG> Each thread has an independent global environment table.
> When you create a thread, this table is the same as that of the given state, but you can change each one independently.
> 各スレッドは独立したグローバル環境テーブルを持っている。
> スレッドを作ったときは、このテーブルは元のテーブルと同じ状態であるが、それぞれ独立して変更を加えられる。
って嘘?
関数はクロージャになってるからそのままではスレッドのグローバル領域に
アクセスできないのはわかるけど、getfenv(0)とかやっても、やっぱりスレッドごとに
別のグローバル変数領域が作られてるようには見えない…
まぁ、lua_newtable(L); lua_replace(L, LUA_GLOBALINDEX);で作ることが出来るわけだけど。。
0510デフォルトの名無しさん
NGNGpairs()やipairs()が使えなくなることに気づいた!
イテレータ間数の取り出しが元のグローバル変数テーブルに依存してんだね。
0511デフォルトの名無しさん
NGNG「スレッドを作ったときは、このテーブルは元のステートのものと同じであるが、それぞれ独立に変更できる。」 かな?
0512デフォルトの名無しさん
NGNG最初は「同じテーブルオブジェクト」を指してるけど、別々のものに
置き換えることも出来るという意味なんだね。
1文目が微妙なんだよなぁ…。あれじゃ、テーブルへのリファレンスの
話じゃなくてテーブル本体の話だと思っちゃうよ。
MLの方には、こう直したほうがいいとかいう話題も上がってた。
"Thread may have an independent table for global variables."
これなら解る。
0513501
NGNGLuaでモーション記述する部分はだいたいできてきたんでアップしてみるよ。ソース付き。
luaに関する処理は、luasht.cppに大体まとまってるので、見てみてくださいな。
あと、BulletMLからLuaへのコンバータも適当に書いてみた。
まだうまく動かないのもあるけど、それなりに動いてるっぽい。
ちなみに、あたり判定無いのでゲームにはなってないです。
http://gamdev.org/up/img/030.zip (本体+ソース)
http://gamdev.org/up/img/031.zip (白弾くんのBulletMLから変換)
0514デフォルトの名無しさん
NGNG(・∀・)イイヨイイヨー
0515デフォルトの名無しさん
NGNGす・・すごいな・・
0516デフォルトの名無しさん
NGNG5.0用だと、wxLuaをつかわざるをえないのかな
0517デフォルトの名無しさん
NGNGemacs+lua-mode.el
というか、IDEったってやることなさそう。
0518デフォルトの名無しさん
NGNGありがとう!ためしてみます。
ひょいひょい使える環境をさがしてたもんで。
wxLuaもなかなかのもんでした。
0519デフォルトの名無しさん
NGNGスレッドでlua_call()とかすると落ちちゃうんだね...
まぁ、なんとなく駄目かもとかいう予感はあったけど(lua_Stateの構造から)。
でも、スレッドのグローバル変数領域とlua_call()で呼ばれる関数から見えるグローバル
変数領域を同じにしたいんだな...。どうしたものか。
0520デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNG結構越すとか借りそうかと思ったら、Lua関数3つ呼び出すだけでグローバル変数領
域移せるんだね。
lua_pushvalue(fromL, LUA_GLOBALSINDEX);
lua_xmove(fromL, toL, 1);
lua_replace(toL, LUA_GLOBALSINDEX);
そんなコストかから無そうだから、これで逝くことにした。
サンクス!
0522デフォルトの名無しさん
NGNGずいぶんと有益な情報だな・・・
0523521
NGNG設定しているときの話ね。普通にスレッド作ると、グローバル変数領域は、
全部一緒の領域が共有されてるから。
0524デフォルトの名無しさん
NGNG0525デフォルトの名無しさん
NGNGは、
obj.method(obj, hoge)
と同じ。
0526デフォルトの名無しさん
NGNG話は変わるけど、
eclipse+Luaやってみたい。
0527デフォルトの名無しさん
NGNG0528デフォルトの名無しさん
NGNGすごい気合の入ったIDEもどきのエディタが入ってるんだね。
ステップ実行できるのはかなりイイ!
これ、自分のアプリに組み込めないかな。。。
0529デフォルトの名無しさん
NGNGたのむ、VS.NET2003でコンパイルできようにしてくれ・・・
0530山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0531デフォルトの名無しさん
NGNG0532デフォルトの名無しさん
NGNG0533デフォルトの名無しさん
NGNGなになに?
どんなやつよ?GPLよりしょっぱい?
0534デフォルトの名無しさん
NGNGwxLuaの方は、バイナリ配布時にソース公開義務のないGPLかな。
BSDスタイルやMITのまま配る場合、ちょっときついねってだけでつ…
0535デフォルトの名無しさん
NGNG関係ないでしょ?
(まぁ・・ないとは思うけど)
wxLuaは開発環境なわけだし。
0536デフォルトの名無しさん
NGNG「サンプルとして」気合の入った開発環境が付いてます。
0537デフォルトの名無しさん
NGNGLGPLと"wxWindows"のデュアルライセンスだね。
0538デフォルトの名無しさん
NGNGそうでした!
wxなとこは全然つかってなかったもんで・・・
0539デフォルトの名無しさん
NGNG0540デフォルトの名無しさん
NGNGmazu nanini tsukaitaika ie.
0541デフォルトの名無しさん
NGNGサイズはPythonのほうが大きい。
スピードは知らん。上のほうに比較したページのリンクがあった。
LuaはPCのゲームで使用された実績が結構ある。
Pythonはコンシューマゲームで使われた実績があるらしい。
Pythonはリモートデバッグ環境があるらしい(↑で使われた)。
というか、Python少ししかやったこと無いんで、これぐらいしか言えん。
0542デフォルトの名無しさん
NGNGhttp://lua-users.org/wiki/LuaVersusPython
必ずしも最新の情報じゃないが。
0543デフォルトの名無しさん
NGNGgeneratorもcoroutine的に使えないことも無いけど、ちょっと制約多いね。
あと、↓が本当ならリアルタイム向けにはちょっと厳しいかも。
>Everything is an object allocated on the heap in Python, including numbers.
0544デフォルトの名無しさん
NGNGのが扱いやすいかも知れぬ。
しかし・・・Luaの文法のほうが一般には受けやすいと思うぞナ。
0545デフォルトの名無しさん
NGNGLuaの文法・・・これは微妙でしょ。
#一般の定義なんてできるわけないから、煽りは無しの方向で。
Luaでも、オブジェクト指向っつーか(lua-users.org参照)
それっぽいことできるから
C++に浸かってる人にも、にゃかにゃかいけるんでは無いかな?
0546デフォルトの名無しさん
NGNGbootsってboost?ファイバってなんでしょ。興味あります。
(検索しても出てこないし…)
>>545
LuaのOOはプロトタイプベースだしねぇ。
メタテーブルでいろいろやると暮らすベースに近いシステムも組めると思うけど。
(その場合の速度比はどれくらいだろ?)
0547デフォルトの名無しさん
NGNGゴメンboostだ。ただのタイプミス。ファイバもマイクロスレッドのほうが
一般的な呼び方だったかも。重ね重ねスマソ。
個人的にPythonはあの構文が受け付けなさ杉です。
0548デフォルトの名無しさん
NGNG0549デフォルトの名無しさん
NGNGファイバは、stacklessのほうね。generatorはいまいちだったので、
そっちの方を調べてみるか。組み込み用途的にはstacklessはどうなんだろ?
0550デフォルトの名無しさん
NGNG速度もそうだけど、メモリ効率がいまいち?
インスタンス?は、メソッドをコピってるから、
オブジェクトの生成ごとっつーかオブジェクト毎に
そのメソッドのためのメモリを食ってるかと思うと・・・
#ようするにVirtualTableが無い。
0551デフォルトの名無しさん
NGNGLuaでOOについてはここね。クラスの作り方も書いてある。
http://lua-users.org/wiki/ObjectOrientationTutorial
metatableを使う場合、1回テーブルの検索を失敗してから
metatableを検索に行くみたいなので、その辺のオーバヘッドが
どれくらいかかるのかなぁと。
0552ためしてみた
NGNG-------------
Hoge = {}
mt = {}
function Hoge:new()
return setmetatable({}, mt)
end
function Hoge:foo()
end
mt.__index = Hoge
-------------
metatable経由で呼び出し: 0m2.827s
-------------
h = Hoge:new()
for i = 0, 10000000 do
h:foo()
end
-------------
テーブル内の関数を呼び出し: 0m1.843s
-------------
h = {foo=Hoge.foo}
for i = 0, 10000000 do
h:foo()
end
-------------
ちなみに、
空ループ: 0m0.327s
fooをグローバルに定義して呼び出すだけ: 0m1.608s
となった。
0553デフォルトの名無しさん
NGNGうあ。ありがと。参考になる〜
ってことは、テーブルの要素がふえればふえるほど・・・
0554デフォルトの名無しさん
NGNGOOやりたいならRubyとか専用のやつ使った方がいいよ。
0555デフォルトの名無しさん
NGNG0556デフォルトの名無しさん
NGNGいや、いっぱいあるのは分かるけど、代表的なものとして。
もしかして、自作処理系ですか?(上のほうにもそんな話題があったけど)。
0557デフォルトの名無しさん
NGNGゲームにつかうとき、
パラメータやシナリオの流れをLuaに逃がすとウマー
OOするための言語じゃねーぞ。
やろうと思えばできる。それで十分じゃねーか。
0558デフォルトの名無しさん
NGNG中途半端なところが多かったりするんだな。
まぁ、PCで使う分には全く問題はないんだけど(そのためのOSだし)。
というか、自世代GCまだ〜?ヽ(`Д´)ノ
■ このスレッドは過去ログ倉庫に格納されています