プログラミング言語 Lua
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGhttp://www.lua.org/
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG>>1は責任を持ってどこがどうパワフルでライトウェイトな言語なのか説明汁。
0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNGhttp://www.lua.org/faq.html
プログラミング言語Luaの紹介
http://staff.aist.go.jp/yutaka.ueno/lua/docsjp.html
プログラミング言語Lua
http://www.etl.go.jp/etl/divisions/~ueno/lua/docj/indexjp.html
0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG言語仕様にあまり癖がなくてライブラリサイズが小さいのはいいね。
組み込むアプリがないとしょうがないが。
0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNG001311
NGNG0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG増やしてもいいけど取り上げる必要は無いと思うね。
0017デフォルトの名無しさん
NGNG同意。特別嬉しいことが具体的にないのなら。
0018デフォルトの名無しさん
NGNG初心者丸出しのインタプリタじゃないか!
0019デフォルトの名無しさん
NGNG同感。新しいのを出すなら、何らかのパラダイムシフト、または既存言語への
アンチテーゼがあるべきと思います。
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNGはぁ?意味わかんね
0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNGスレ立てるだけならサルでも出来るぞ。
0024デフォルトの名無しさん
NGNG( ⌒ ヽ >>1
∪ 。ノ
∪∪
0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNG0029Ruby!!!!!!!!!!!
NGNG0030bloom
NGNGhttp://homepage.mac.com/bloombloom/
0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNG% lua -e 'for i=1,10000000 do end; print(clock())'
0.3359375
% perl -e'for($i=1;$i<10000000;$i++){}; ($u,$s,) = times; print $u+$s,"\n"'
5.78125
% ruby -e'for i in 1..10000000 do end; t = Time.times; p t.utime+t.stime'
3.7578125
%
0033デフォルトの名無しさん
NGNGttp://lua-users.org/wiki/LuaVersusPython
0034デフォルトの名無しさん
NGNGlocal t = {content=nil}
local get = function()
return %t.content
end
local set = function(c)
%t.content = c
end
return {get = get, set = set}
end
local o1, o2 = create(), create()
o1.set(1)
o2.set(2)
print(o1.get()) -- 1 が出力される
print(o2.get()) -- 2 が出力される
0035デフォルトの名無しさん
NGNG最近ゲームやゲーム用にライブラリに結構使われてる模様。
Pythonもいいが、ひたすら重厚長大だしな。
0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNG0038デフォルトの名無しさん
NGNG「 ' ; 'を付けてもよい 」と書いてあるから
自分で書くぶんには付ければよいだけだが
サンプルプログラムを読むだけでも気持ち悪い。
いつのまにか' ; '無しでは生きていけない身体になってしまってる。
0039デフォルトの名無しさん
NGNGC系言語中毒ですね;
お大事に;
0040デフォルトの名無しさん
NGNGPascal(Delphi)やBasicみたいに区切りに;を使うのを見ると混乱する人ですか?
0041デフォルトの名無しさん
NGNG0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNGまあ、いやけりゃつけろってことだな。
0044デフォルトの名無しさん
NGNGいちいちセミコロン忘れてエラー出るよりありがたいだろう。
0045デフォルトの名無しさん
NGNG・・・って昔からそうだろうけど。
0046デフォルトの名無しさん
NGNG↑これは Lua ではどう書けるの?
0047デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNG0049デフォルトの名無しさん
NGNGreverse(map(function (i) return i*2 end, iota(2,4)))
とかでいいんじゃない?
Lua知らないから通るかどうか知らんが。
0051デフォルトの名無しさん
NGNGfunction I(x) return x end
function Y(f)
return I(function (x) return %f(x(x)) end)(
function(x)
return %f(function(arg) return %x(%x)(arg) end)
end
)
end
local fact = Y(
function(f)
return function(x)
if x == 0 then
return 1
else
return(x * %f(x-1))
end
end
end
)
print(fact(5)) -- 120
0052luaでGo!
NGNG0053デフォルトの名無しさん
NGNG0054名無しさん@Emacs
NGNGLua 3.2の頃に同人ゲームで使ったことある。さくさく使えて楽しいよ。
Lua 5.0になって色々変わって面白そう。またやろうかな。
>>52
> ゲーム用ライブラリやプログラムのサンプルなど、どこかにないですか?
とりあえず思いつく限りではこんな感じ。他にもLua使っているゲー
ムはClanlib使っているゲームの中にちらほらとある。
[GraphicFrontend]
ttp://www.gime.org/twiki/bin/view/Gime/GraphicFrontend
[Clanlib]
http://www.clanlib.org/
[LuaSDL]
http://tulrich.com/geekstuff/index.html
[engine testbed]
http://sourceforge.net/projects/tu-testbed
[Soul Ride]
http://soulride.com/
0055デフォルトの名無しさん
NGNGそのレベルというのがどういう観点かわからないけど、
PHPにクロージャはない。luaにはある。
言語としての表現力はかなりレベルが違う。
0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNG式を評価させるために利用してるよ、自前実装面倒なんで
ttp://staff.aist.go.jp/yutaka.ueno/lua/spe96jp.html
の「2.Luaを作った理由」辺りを読んで使えると思った
やつだけが使えば委員でないの?
005958
NGNG「表」とか)がうまく扱えないんで手抜き日本語対応パッチ
(lua-4.0.1用、ビッグエンディアンの人はそれなりに変更すれ)
llex.c 236行から273行
switch (LS->current) {
case EOZ: case '\n':
// 略
}
を
if (_mbsbtype((unsigned char*)&LS->current, 0) == _MBC_LEAD) {
save_and_next(L, LS, l);
save_and_next(L, LS, l);
} else {
switch (LS->current) {
case EOZ: case '\n':
// 略
}
}
と変更
006058
NGNGいけないんだが、いちいち変数ごとに処理するの面倒なので
lua_Stateの状態をそのまま保存・復帰できないのか調査中
やった人居る?
0061デフォルトの名無しさん
NGNG0062デフォルトの名無しさん
NGNG盛りageようyo! Go Lua !!
0063デフォルトの名無しさん
NGNG0064デフォルトの名無しさん
NGNGあげついでに
lua for unicode なんて話題でも。
http://groups.yahoo.com/group/lua-l/messages/10665
0065デフォルトの名無しさん
NGNGhttp://groups.yahoo.com/group/lua-l/message/10805
0066Merry X'mas
NGNGlua-l-archive.gz 24-Dec-2002 02:33 5.5M
lua-l-digest.gz 23-Dec-2002 22:58 5k
lua-l-recent.gz 24-Dec-2002 02:33 998k
ttp://www.lua.org/ftp/
0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNG0069デフォルトの名無しさん
NGNG個人の掲示難なのに管理者側が
めちゃ官僚的なのに笑えます。
0070デフォルトの名無しさん
NGNG0071デフォルトの名無しさん
NGNG本音が書き込めない
0072デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0073デフォルトの名無しさん
NGNGそれもコピペ荒らし
0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNGAge2ch Part4
http://pc3.2ch.net/test/read.cgi/software/1041952901/
0076デフォルトの名無しさん
NGNGまた明け方に現われる・・・・(´Д⊂)
0077デフォルトの名無しさん
NGNGその登場はずるい・・・ヽ(`Д´)ノウワァァン
0078デフォルトの名無しさん
NGNG二つ前のレスも読めないのですか。
0079デフォルトの名無しさん
NGNG年末まで
0080デフォルトの名無しさん
NGNGウザとかって、もしかして真剣に聞いてたのか?
正直すまんかった。厨は早く寝てね。
0081デフォルトの名無しさん
NGNG放置してもいいんだが、つい説教してしまうのだよ。
荒らしの放置とは別次元の攻防なわけだ。
一般人が荒らしを放置するのとは違う話ってことだよ。
0082デフォルトの名無しさん
NGNG0083デフォルトの名無しさん
NGNGテストの結果次第でこのまま運用が続いたら書くかもです。
0084デフォルトの名無しさん
NGNG削除依頼を出したら
→削除依頼板以外では受け付けませんよ。
晒し?知りません
2chルールで削除依頼を出したら
→2chの匿名は弱者保護です。内容の真実性の判断が出来ません。
問題があれば裁判でもどうぞ。
状況が不利になってきたら
→IP記録して問題は当事者どうしで、と言ってみるテスト
現在
→全部にいれてみた。
0085デフォルトの名無しさん
NGNG企業やある個人の内容について要望や改善点を指摘したつもりで書いたものが
誹謗と受け止められるようでは傲慢以外の何物でもない
ただの私怨であってもなんらかの事柄があっての書き込みだろうし
匿名だからこそ参加している者が多数いただろうし
魅力なくなるね
0086デフォルトの名無しさん
NGNG0087デフォルトの名無しさん
NGNG情報でしょ?口コミだって立派な宣伝なんだから。あまりにも
現実とかけ離れた根拠のない発言はいけないと思うが
「あそこの病院で誤診された」とかっていうのはなんでいっちゃ
いけないの。おれも生まれたとき医者のミスで体の一部分を
無くしたんだが、うやむやになって結局手術台は自分持ちだった。
0088デフォルトの名無しさん
NGNG全部混ざれば只の黒
フルート、オーボエ、ティンパニー、オルガン、ピアノ、チェロ、尺八、
チャルメラ、シチリキ、琴、ハープ、
一緒に鳴らせば只の雑音
0089デフォルトの名無しさん
NGNGそれは楽しみでつ。
0090デフォルトの名無しさん
NGNG0091デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNGもう最後の方はさっぱり意味わかんなかったけど・・・
ってゆうかほろゆきが止めたのか?
0094デフォルトの名無しさん
NGNG各板で見るけど。感想は「びびった」ばかり。
0095デフォルトの名無しさん
NGNG0096デフォルトの名無しさん
NGNGおいらは2ちゃんの味方ですが?
コピペなんかした事ないし
0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNG今更の話題によく盛り上がってるな。年明け初2ちゃん組か?
0099デフォルトの名無しさん
NGNG専用ブラウザでは見れます。対処お願いします。
0100山崎渉
NGNG0101デフォルトの名無しさん
NGNGID:ADTGAx9xはヒッキー
つーか、いつ寝てるんだ?>おまいら
0102デフォルトの名無しさん
NGNG0103デフォルトの名無しさん
NGNG残念。
C言語onlyソースから呼び出して使うこともできないのか。
0104山崎渉
NGNG0105デフォルトの名無しさん
NGNGhttp://www.vendian.org/language_year/
Lua は激動の一年だったそうだ。
0106デフォルトの名無しさん
NGNG0107デフォルトの名無しさん
NGNGできるよ
0108デフォルトの名無しさん
NGNGオブジェクト指向的使い方もできるよ。
luaのtableはかなーり柔軟。
http://lua-users.org/wiki/ClassesAndMethods
0109デフォルトの名無しさん
NGNGこれかい?
http://homepage3.nifty.com/digikei/ten.html
0110山崎渉
NGNG0111デフォルトの名無しさん
NGNG0112
NGNG>>103 C言語onlyソースから呼び出して使う...
system("lua");
さぶ〜
0113デフォルトの名無しさん
NGNGLUAのソースはC言語だし、組み込み用のヘッダファイルも全部C言語なのだがー
0115デフォルトの名無しさん
NGNG誰かどんな点が特徴として熱いのか熱く叫んで。
0116デフォルトの名無しさん
NGNG0117Go Lua
NGNG0118デフォルトの名無しさん
NGNG#include "lua.h"
#include "lualib.h"
int main(void){
lua_State *L=lua_open(0);
lua_strlibopen(L);
lua_dostring(L, "a = 1*2*3*4");
lua_dostring(L, "b = gsub('age sage', '(%w+)', '%1 %1')");
lua_getglobal(L, "a");
lua_getglobal(L, "b");
printf("a = %f\n", lua_tonumber(L, -2));
printf("b = %s\n", lua_tostring(L, -1));
lua_close(L);
return 0;
}
0119デフォルトの名無しさん
NGNGwinでmakeする方法を教えてください。
0120デフォルトの名無しさん
NGNG0121デフォルトの名無しさん
NGNG0122デフォルトの名無しさん
NGNG紹介されたんだが。。。
luaってどう読むの?「ルア」でいいの?
あと、流行ってますか?
0123デフォルトの名無しさん
NGNG単純だという事以外には、特に利点も無さそうだ。
0124デフォルトの名無しさん
NGNGAngband が使ってるね。
http://www.lua.org/uses.html
0125デフォルトの名無しさん
NGNG0126デフォルトの名無しさん
NGNG0127デフォルトの名無しさん
NGNGhttp://lua-users.org/wiki/LuaAddons
0128デフォルトの名無しさん
NGNGhttp://www.lua.org/lua-l-stats.html
0129デフォルトの名無しさん
NGNG0130デフォルトの名無しさん
NGNGhttp://www.iplab.is.tsukuba.ac.jp/protoku/lua/Lua.htm
0131デフォルトの名無しさん
NGNGこめんとが--というのが萎えた。。。
0132デフォルトの名無しさん
NGNG0133デフォルトの名無しさん
NGNG0134デフォルトの名無しさん
NGNGつーか何に使うの?
0135デフォルトの名無しさん
NGNGhttp://ruby-lua.unolotiene.com/
0136デフォルトの名無しさん
NGNGstdin:1:<name> expected near `:'
これの意味は何ですか? エラーぽいんですけど。。
0137デフォルトの名無しさん
NGNG0138デフォルトの名無しさん
NGNG0139デフォルトの名無しさん
NGNG作るのに良さそう(w
0140デフォルトの名無しさん
NGNG0141デフォルトの名無しさん
NGNGこれがラテンなんだろうか?
0142デフォルトの名無しさん
NGNG0143デフォルトの名無しさん
NGNG0144デフォルトの名無しさん
NGNGテーブルは、かなり便利と感じたが。。。
0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNGただし、連想配列なのでAWKの配列のイメージ
このあたりはrubyよりかなりいい!
0147デフォルトの名無しさん
NGNGそれとも -- なの?
0148デフォルトの名無しさん
NGNG0149デフォルトの名無しさん
NGNGありがとう。
ところで、luaつかってますか???
0150デフォルトの名無しさん
NGNG0151デフォルトの名無しさん
NGNGどういうこと?
マニュアルなら日本語の奴もある、
単に用途がみつからんということ???
0152デフォルトの名無しさん
NGNGluaだからこんなことができる、とかあるのかな。
感想。
0)全ての文(?)の終端がendなのは萎える。
rubyもそうだけど、これ、実はすごく読みにくい。
結局、文の対応がインデントでしかわからない。
1)式の終端記号がない。危険な香りがする。
2)テーブル{}に関係する構文と操作全般がわかりにくい。
3スクリプト用途にしては、)returnとかfunctionとか長い名前が気になる。
return不用、function → fn or lambda、 local → letとか。まあ修正すりゃいいけど。
4)elseifかよ。
5)local変数群への多重代入がややわかりにくい。
6)でも多値を返せるのは便利。
7)レジストリって何?
8)タグの有効な使い方ってなんだろう?
9)テーブルは慣れれば使いやすいかも。
0153デフォルトの名無しさん
NGNG> 7)レジストリって何?
組み込み/拡張用でわ
> 8)タグの有効な使い方ってなんだろう?
タグメソッドでわ
VectorTag=newtag()
function Vector(a,...) do v={}; settag(v,VectorTag); v[1]=a; for i=1,getn(arg) do v[i+1]=arg[i] end; return v; end; end
function dot_product(v, u) do s=0; for i=1,min(getn(v),getn(u)) do s=s + v[i]*u[i] end; return s; end; end
settagmethod(VectorTag, "mul", dot_product)
print(dot_product({1,2}, {3,4}))
print(Vector(1,2)*Vector(3,4))
0154デフォルトの名無しさん
NGNG確かにendって使いにくいね。
読みやすさが有ると言う意見もあるが、ちょっこりif文なんかいれて
end忘れたひにゃ。。。(以下略)
あと、キーワードが長過ぎるのも同感
多値リターンはすぐれものか?
0155デフォルトの名無しさん
NGNG0156デフォルトの名無しさん
NGNGMIT は修正 BSD 相当だから互換じゃないのか?
0158デフォルトの名無しさん
NGNGPython?
0159デフォルトの名無しさん
NGNG0160デフォルトの名無しさん
NGNG0161ヽ(´ー`)ノ
NGNG始めに触ったのが C だからブレースが無い言語は苦手…。
0162デフォルトの名無しさん
NGNGすぐに慣れるし、慣れたらそんなことどうでも良くなるよ
0163デフォルトの名無しさん
NGNGまあそれはいい。しかし
function f(x)
a = x+1
return a
end
print(f(1))
これのワンライナが
lua -e 'function f(x) do a = x+1; return a end end; print(f(1))'
になるのには少々驚いた。
0164デフォルトの名無しさん
NGNGplus = function(a) return function(b) return %a+b end end
print(plus(2)(3)) -- 5
0165デフォルトの名無しさん
NGNGそれ高階関数だね。
ML風に書くと
val plus=fn a=>fn b=>a+b; print(plus 2 3);
テーブルの役割からすると意味的にはLISPと似てる。
(((lambda(a)(lambda(b)(+ a b)))2)3) ;;5
0166デフォルトの名無しさん
NGNGむしろ upvalue を使ったスコープの制御が面白いかなと。
それと plus(x)(y) と書けるのは直観的だなと。
ruby だと変数名の後にカッコでは引数を渡せないから [] を使う必要がある:
plus = lambda{|a|lambda{|b|a+b}}
p plus[2][3] # 5
python ではどう書くのだろう。
plus = lambda a: lambda b: a+b
では駄目だし。
この点S式は比べにくい。
0167デフォルトの名無しさん
NGNG2番目は、そのソースとバイナリの大きさかな?
0168デフォルトの名無しさん
NGNG多値や多重代入は python でも ruby でもできるよね。
% lua -e 'function f(x) return x*2,x*3 end; a,b = f(3); print(b,a)'
9 6
% python -c '
def f(x): return x*2,x*3
a,b = f(3)
print b,a'
9 6
% ruby -e 'def f(x) return x*2,x*3 end; a,b = f(3); p b,a'
9
6
0169ヽ(´ー`)ノ
NGNGそうだね。とりあえず、Lua と Ruby を勉強してみるよ。ありがとう。
>>168
む〜、便利だな。Perl の list($a,$b) = f(3) とは違って、配列と同じ扱いじゃないの?
// 今ちょっとコンパイラが(゚Д゚)マズ-な事になってて Lua を入れれないのです。
0170デフォルトの名無しさん
NGNGlua の場合は一つの何かを返すわけではないので common lisp の values に近いみたい
しかしこう↓書けるのでさらにイカす
% lua -e '
function f(x,y) return x+1,y+10 end
print(f(f(0,0)))'
2 20
python と ruby は値を引数リストに展開するために f(*f(1,2)) と書く必要がある
多値といっても ruby は Array を、python は tuple を返すから
0171デフォルトの名無しさん
NGNG2 20
0172デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNG0174デフォルトの名無しさん
NGNGしかしendがウザイね。
return省いて多値返すときだけvaluesにしたらいいのに。
fun f(x,y) x+1,y+10; //カンマは演算子。y+10が関数の値
fun f(x,y) values x+1,y+10; //カンマはvaluesの区切り
0175デフォルトの名無しさん
NGNGどっちかっていうと、LISPみたいな関数型だな。
テーブルのタグ付けでそれっぽい事はできそうだが。
0176デフォルトの名無しさん
NGNGLispみたいなというのはちょとちがうのでは?
0177デフォルトの名無しさん
NGNG簡単に言えば、
リストをテーブル(配列)にして、括弧無くしたLISPモドキ→Lua
でしょ
0178デフォルトの名無しさん
NGNG・関数と変数に型がない
・call by value
・lambda 相当の function
・無名関数
くらいでは。eval がない点は大きく違う。
0179デフォルトの名無しさん
NGNGrepl改造する時ぐらいじゃないか。
それに、lua自身もeval入れようと思えば出来るだろうし。
0180デフォルトの名無しさん
NGNG使える事だろう。
lispは括弧を閉じ忘れるだけで、エラー個所の特定が難しくなる。
0181デフォルトの名無しさん
NGNG0182173
NGNG私も触ってみようと思いました。
ところで、最近endで区切るのが流行ってる(?)ような感じですが、
これってメリットあるのでしょうか?
(好みは別として)
なんか、素人丸出しで恐縮ですが、{}の方が閉じ忘れをすぐに見付
けることができるっぽいので(例:vi の % キー)良いような気もし
ています。
0183デフォルトの名無しさん
NGNGちゃんとparseしない限り機械的な対応付けも辛い。
既にlua-mode.elなんてのもあるけど。
0184デフォルトの名無しさん
NGNGPascal派への挑戦と受け取る。
爆撃
0185デフォルトの名無しさん
NGNG好みの問題でしょう。
ブロックの開始を省略できるのがメリット
と思える人にはメリット。
0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNGそれなら}のみにすれば更に吉かも?
0188デフォルトの名無しさん
NGNG0189デフォルトの名無しさん
NGNGいっそ.とかの方が気持ちよくないか?
0190デフォルトの名無しさん
NGNGPascal の後で C をやったときは == にも抵抗があったがそれも今では些細なこと。
0191デフォルトの名無しさん
NGNGいや、そうではなくて(つまり、好き嫌いとかなれとかでなくて)
editorが対応してない香具師があるというのが問題なんだ
下手すればemacs専用になるよ(w
0192デフォルトの名無しさん
NGNG何を訳のわからんことを・・・
0193デフォルトの名無しさん
NGNGしかし、言語が変わるたびに書き方変わるのが正直つらい。
いつになったら、--になれることやら。。。
だれか?マジデluaを改造してくれんか?
0194デフォルトの名無しさん
NGNG重度の不感症ですね。
0195デフォルトの名無しさん
NGNGttp://lua-users.org/wiki/LuaEditorSupport
Vim, Emacsen, Jed, MED, NEdit, TextPad, Scintilla/SciTE, EditPlus, EditPadPro, MC-Cooledit
0196デフォルトの名無しさん
NGNGおお〜、ありがとう!!
0197デフォルトの名無しさん
NGNGってなんで必要なんだろう?
改行じゃまずいのでしょうか?
0198デフォルトの名無しさん
NGNGこれって単にハイライト表示するだけじゃないの?
{}のマッチと比較するには非力か?(ちがってたら、スマソ)
0199MLer
NGNG演算子の区分を決めるために必要。
ただし、別にthenじゃなくてもいいんだけど。
例えば、C言語の条件演算子'?' と ':' の間の式中には
優先度の低いカンマ演算子が置ける。これと同じ原理。
仮に改行を区切り子にすると、BASICの様な行指向言語に
なってしまう。
0200デフォルトの名無しさん
NGNGでも、どうでしょう?
実際のところifの条件箇所をマルチラインでサクッと書ける言語
なんてほとんどないと思うけど。。。
0201デフォルトの名無しさん
NGNG0202200
NGNG例えば、すっごくなが〜い条件文があったとしても、
backslash で結べば十分だとおもうのですが。。。どこか欠けてますか?
if x>3 and \
y<3
a=4
end
来んな風には書けないとおもったが。。。
if x>3 and
y<3 then
a=4
end
0203200
NGNGスマン>ALL
0204デフォルトの名無しさん
NGNGindent/lua.vim は適切にインデントしてくれる
0205デフォルトの名無しさん
NGNG0207デフォルトの名無しさん
NGNGluaのオフィサイトにおいてあるけど
0208デフォルトの名無しさん
NGNG最新のvimには両方ついてくるね
0209デフォルトの名無しさん
NGNG勘違いしてる香具師が多いので言っとくけど、インデントなんて
ど〜でもいいんよ!
0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNG0212デフォルトの名無しさん
NGNG{ } じゃなくて end だと数があってるかがエディタで確認しにくい
↓
エディタが end を認識すればいいんだけど
↓
emacs ならできるよ
↓
じゃあ emacs 以外は?
↓
vim には標準で indent/lua.vim がついてくる
0213デフォルトの名無しさん
NGNGvim なんか使ってネエ
↓
たかがindentがeditorに依存するのは馬鹿げてる
↓
luaは一応program作る言語
↓
pretty-printぐらい欲しいだろう
↓
pretty-print誰か作れ
0214デフォルトの名無しさん
NGNG知るか、死ね。
0215デフォルトの名無しさん
NGNGサンクス、流れがよくワカッた。
つまり、vimならインデントと言っても%によるマッチが(標準で)つかえるのね?
0216デフォルトの名無しさん
NGNGこれをスクリプト言語として使うのは、無理でないにしてもやや
目的外って感じになるのでしょうか???
0217デフォルトの名無しさん
NGNGんなこたないと思うよ。5.0ではtagまわりがさらに強化されてるし。>>108のリンク嫁
0218デフォルトの名無しさん
NGNG試してみたが、indentはインデントであって % によるマッチは行なわない。
改行した瞬間やendと打った瞬間にインデントされる。
また gg=G でバッファ全体のインデントが修正される。
詳しくはvim使いに聞いて。
0219デフォルトの名無しさん
NGNGやはり、というか%マッチの威力を知らん香具師のあおりの検証サンクス!
有る意味、自動でインデント(綺麗に)されてると、変なかたわれブロック
が出来たときにかえってバグ取りが難しくなる。
よって、endは糞決定!
>>217
結局TAGっていっても素直にADDのFUNCTIONと(この例読むかぎりでは)なん
の違いもない。(こちらは、99%もれの理かい不足!)
0220デフォルトの名無しさん
NGNG> 有る意味、自動でインデント(綺麗に)されてると、変なかたわれブロック
> が出来たときにかえってバグ取りが難しくなる。
そのためにも >> と << があるのでは。
0221デフォルトの名無しさん
NGNGなにそれ?
0222デフォルトの名無しさん
NGNGTo increase the amount of indent in a line, use the ">" operator. Often this
is used as ">>", which adds indent to the current line.
そういうことじゃなくて?
まあ % 好きに非難されるのは理解できなくはない
0223デフォルトの名無しさん
NGNG普通のif文の中で、endのないifをいれてしまったら
と思うとぞっとする。
0224デフォルトの名無しさん
NGNGセンスなさすぎ。
0225デフォルトの名無しさん
NGNGこんなにマイナーな言語なのに。。。(w
0226デフォルトの名無しさん
NGNG0227デフォルトの名無しさん
NGNG0228デフォルトの名無しさん
NGNGsubroutineと違うのか?
0229デフォルトの名無しさん
NGNG0230デフォルトの名無しさん
NGNG0231デフォルトの名無しさん
NGNGどうもうまくいかん。
lua_dostring(l, ... );
while( lua_resume(l) != 0 ){
;
}
というような感じの事をしたいのだけど、5.0Βはまだ謎がいっぱいだ。
0232デフォルトの名無しさん
NGNG記述できるようになるんだけど、Luaって改変して配布するのってOKなの
かな?
まぁ、そこまでして使うのはどうかと思うけど、どーせ使うならあのダサ
いコメント「--」だけは//辺りに変更する事をお勧めするよ。
0233デフォルトの名無しさん
NGNG>ダサいコメント「--」だけは//辺りに変更する事をお勧めするよ。
正直、//に比べて--のどこがダサいのかわからん。
単にお前の好き嫌いだろ?
0234デフォルトの名無しさん
NGNGあ SQL もそうだよ
珍しくもないな
0235デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNG0237デフォルトの名無しさん
NGNG理由は簡単。Cへの組み込みスクリプトだからコメントがCと同じほうが
いいに決まってる。それに--はCではデクリメント演算子なので意味合い
が違う。だから--コメントはダサい。と、個人的に思う。
まぁちょっとパッチ当てるだけで変更出来るんだからいいんだけどね。
0238デフォルトの名無しさん
NGNG0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNG今じゃ // コメントは ISO C の標準になってるよ。
0241デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
NGNG0243デフォルトの名無しさん
NGNGInvalid option `-std:c99'だってよ。ちなみにgcc 2.95.3
0245デフォルトの名無しさん
NGNGLua(5.0beta)はMITライセンス(修正BSDライセンス相当)だから、
自由に改変、再配布できるよ。
俺もコメントは//か#がいいのでパッチ作成キボン。
ついでにdo ... endを{ ... }にしてくれると最高。
0246デフォルトの名無しさん
NGNGtest.c:
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
int main(int argc, char **argv) {
int index, i;
lua_State *L, *co;
L = lua_open();
lua_baselibopen(L);
index = lua_gettop(L);
lua_dofile(L, "test.lua");
lua_settop(L, index);
lua_getglobal(L, "coroutine");
lua_pushstring(L, "create");
lua_gettable(L, -2);
lua_getglobal(L, "co_func");
lua_call(L, 1, 1);
co = lua_tothread(L, -1);
lua_setglobal(L, "co");
index = lua_gettop(L);
for (i = 0; i < 4; i++) {
lua_pushnumber(co, i);
printf("c: resume=%d\n", lua_resume(co, 1));
printf("c: co top=%d, L top=%d\n", lua_gettop(co), lua_gettop(L));
printf("c: co result1=%lf\n", lua_tonumber(co, -2));
printf("c: co result2=%lf\n", lua_tonumber(co, -1));
}
lua_close(L);
return 0;
}
0247続き
NGNGfunction co_func(arg)
i = 100
print("co_func: start")
while 1 do
print("co_func: arg=", arg, " i=", i)
i = i + arg
arg = coroutine.yield(i, arg)
end
end
0248デフォルトの名無しさん
NGNGこんな感じでもOK
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
int main(int argc, char **argv) {
int i;
lua_State *L, *co;
L = lua_open();
lua_baselibopen(L);
lua_dofile(L, "test.lua");
co = lua_newthread(L);
lua_getglobal(co, "co_func");
for (i = 0; i < 4; i++) {
lua_pushnumber(co, i);
printf("c: resume=%d\n", lua_resume(co, 1));
printf("c: co result1=%lf\n", lua_tonumber(co, -2));
printf("c: co result2=%lf\n", lua_tonumber(co, -1));
}
lua_close(L);
return 0;
}
0249デフォルトの名無しさん
NGNGうお神降臨!さっそく試してみます。ところでlua_closethreadって実装されて
なさげなのですが、任意のスレッドを開放するにはどうすればいいんでしょうね?
lua_close使うとエラー 出るし。マニュアルにはちゃんとあるんだけどなー。
>>245
Lua5.0b file:llex.c line:317に次レスを追加。//と/**/が普通に使えるようになります。
きちんとデバッグしてないので自己責任でどーぞ。#も似たような感じで。
ちなみに漏れはlua_commentblock( "//" , "/*" , "*/" )で自由にカスタムできるよう
にしてます。あと、--コメントを消し去りたいのならその次のブロックをコメントアウト。
Cスコープ{}にあわせる方法はLuaを弄る訳ではなくプリプロセスを通してLua
コードに変換するだけなので汎用性はあるけど、ちょっと微妙。スマヌ。
0250デフォルトの名無しさん
NGNGnext(LS);
if (LS->current != '/' && LS->current != '*' ) return '/';
/* else is a comment */
//long comment
if (LS->current == '*'){
while (1){
if( LS->current == '*' ){
next(LS);
if( LS->current == '/' ){
next(LS);
break;
}
continue;
}
if ( LS->current == EOZ) break;
next(LS);
}
continue;
}
//short comment
next(LS);
while (LS->current != '\n' && LS->current != EOZ){
next(LS);
}
continue;
}
0251デフォルトの名無しさん
NGNG上の7行目(if (LS->current == '*'){の次)に
next(LS);
を追加しといてちょ。
0252デフォルトの名無しさん
NGNG0253デフォルトの名無しさん
NGNGたとえ改変OKでも、言語仕様を変えてしまうのはどうかと思う。
0254デフォルトの名無しさん
NGNG0255デフォルトの名無しさん
NGNG>ところでlua_closethreadって実装されて
GCに引っ掛けると開放されるのかな?
というか、変数参照されたスレッドをクローズしちゃうとかなりやばそう。
0256デフォルトの名無しさん
NGNGすんげー量の未使用メモリが残るのな。開放のタイミングも全然良く解か
らんし、こりゃメモリリソースがキツい環境じゃ使用がためらわれるな。
断片化怖いしな。
0257デフォルトの名無しさん
NGNG0258デフォルトの名無しさん
NGNGそりゃダメダメだな。
採用しようかと思ってたが、見送ることにするよ。
0259デフォルトの名無しさん
NGNGただ、MLの感じでは5.1あたりから#もコメントとして認識される方向のようだね。
0260デフォルトの名無しさん
NGNGわかりやすく説明してほしいなぁ。
0261デフォルトの名無しさん
NGNG0262デフォルトの名無しさん
NGNG>>248の例だと、
co = lua_newthread(L); ここで"test.lua"の実行環境整えて、
lua_getglobal(co, "co_func"); co_funcを探して、
lua_pushnumber(co, i); co_funcに引数わたして、
printf("c: resume=%d\n", lua_resume(co, 1)); co_funcがyieldを実行するまで待って、
printf("c: co result1=%lf\n", lua_tonumber(co, -2)); スタックから結果を取り出す。
って感じで理解できるんだけど、
>>246の例では、getglobalとかgettable,settop等が何をやっているのかわかりません。
0264デフォルトの名無しさん
NGNGあー、coroutine, thread関係はとりあえず忘れたほうがいいかも?
5.0の新機能だし。
>>246のforの前まではLuaで書くと、以下の文と同様のことをしてる。
co = coroutine.create(co_func)
(1)lua_getglobal(L, "coroutine");
グローバル変数"coroutine"をスタックのトップに積む
ちなみにこいつはテーブルだ。
(2)lua_pushstring(L, "create");
文字列"create"をスタックのトップに積む
(3)lua_gettable(L, -2);
スタックのトップから2番目の要素((1)のcoroutineのこと。テーブルである必要がある。)から、
スタックのトップに積んである文字列("create")で示されるメンバをスタックに積む。
このとき、スタックのトップはpopされる。
ちなみに、createメンバは関数なので、その関数がスタックのトップに詰まれる。
こいつは、(4)で使われる。
(3)lua_getglobal(L, "co_func");
test.luaで定義された関数co_funcをスタックのトップに積む。
続く...
0265続き
NGNG関数コール: 引数が(3)のco_funcで、呼ぶ関数が(2)のcreate。
ちなみに、lua_call(L, m, n)と呼ぶときは、スタックは以下のようになってなければならない。
stack: ... [関数] [引数1] [引数2] ... [引数n] <- ここがスタックのトップ
で、呼ばれるとスタックはこうなってる↓。
stack: ... [戻り値1] [戻り値2] ... [戻り値m] <- ここがスタックのトップ
つまり、(4)は、
[関数"create"] [関数:"co_func"] -> [createの戻り値(スレッド)]
となるわけだ。
(5) co = lua_tothread(L, -1);
lua_setglobal(L, "co");
スタックのトップから値をスレッド型でとってきてそれをグローバル変数"co"に設定する。
こんなんで分かるかな?スタックの状態を想像しながら読んでくれ。
coroutineのことは置いといて、LuaをCから使うための基本は大体入ってるような
気がする(グローバル変数の操作、テーブルの操作、Luaの関数呼び出し)。
あとは、indexの指定の仕方とかどの関数で何がpushされて何がpopされるかが
分かれば大体作れると思うんだけど。
ちなみにcoroutineは、lua_baselibopen(L)を呼んだときに定義されます(ハズ)。
0266デフォルトの名無しさん
NGNG× ちなみに、lua_call(L, m, n)と呼ぶときは、スタックは以下のようになってなければならない。
○ ちなみに、lua_call(L, n, m)と呼ぶときは、スタックは以下のようになってなければならない。
0267デフォルトの名無しさん
NGNG関数が呼ばれるのは、lua_resumeが呼ばれたとき。
lua_resumeは、スレッドのスタックの一番下(index=1)に積んである関数を
呼ぶ(もしくはyieldで中断された実行を再開する)関数ね(多分)。
lua_resumeに指定するのはLじゃなくてスレッドオブジェクトだということに注意。
で、>>248も>>246も
co = coroutine.create(co_func)
for i = 0, 3 do
r1, r2 = coroutine.resume(co, i)
print("main:", r1)
print("main:", r2)
end
と動作的には同じ事をしてる(厳密に同じわけじゃないけど)。
test.luaのこいつを書き加えれば同じように動くよ。
0268デフォルトの名無しさん
NGNG0269デフォルトの名無しさん
NGNGcoroutine.createってcoroutine["create"]って感じですね。
すごくわかりやすくて、Luaを組み込めるようになりそうです。
どうもありがとうございます。
0270デフォルトの名無しさん
NGNGhttp://216.239.53.100/search?q=cache:www.etl.go.jp/etl/divisions/~ueno/lua/manual4jp.html
0271デフォルトの名無しさん
NGNGhttp://staff.aist.go.jp/yutaka.ueno/lua/manual4jp.html
0272デフォルトの名無しさん
NGNGこっちは最後まであるんだね。
これまで、googleのキャッシュをローカルに保存してみてたので、
ちゃんとしたのがあるのは嬉しいなぁ。
0273デフォルトの名無しさん
NGNGちょっとだけ混乱したよ。
0274デフォルトの名無しさん
NGNGと
table:function(a, b, c)
は逆にして欲しかった。
もしくは、JavaScriptみたいにselfを暗黙のローカル変数にするか。
0275デフォルトの名無しさん
NGNG0276デフォルトの名無しさん
NGNGそれを一挙に代入しようとすると、扱いが変わってしまうとき
があるようなので、ちょっと萎えた。
0277デフォルトの名無しさん
NGNG例えばどんな場合か書いてもらえると嬉しい。
0278デフォルトの名無しさん
NGNGx,y=2,3
ならお望み通り
しかし、aho(0)->4,5 と返す関数があったとして、
x,y,z=aho(0),6
としてみて!
0279デフォルトの名無しさん
NGNGたとえば
A, B, C を集合とするとき <a,b>∈A×B, c∈C に対して
<x,y,z> = <<a,b>, c> で x=a ∧ y=b ∧ z=c を期待すべきか?
まあ、確かにそうかも知れない。
しかし、
x,y,z = 1,2 ; x == 1 and y == 2 and z == nil
が成り立つ世界でもそれは妥当か?
0280デフォルトの名無しさん
NGNGfunction a()
return 1, 2
end
x, y, z = 0, a()
とすると、
x=0, y=1, z=2
なんだよね。
確かに一貫性がないように見えるね。
リスト中に多値を返す関数がある場合は、
・リストが展開される
・常に戻り値が一つに丸められる
のどちらかに統一した方が仕様的には美しいかも?まぁ、好みの問題か。
(ただ、前者だと関数がいくつ値を返すかによってプログラムの動作が
異なってしまうので好ましくない。)
ちなみにこの辺の動作は、マニュアルの「Calling Functions」の項に
それとなく書かれてる。
0281280
NGNG×「Calling Functions」の項
○「Function Calls」の項
http://staff.aist.go.jp/yutaka.ueno/lua/manual4jp.html#SECTION00045800000000000000
0282デフォルトの名無しさん
NGNG0284デフォルトの名無しさん
NGNGL
ua 4.0 Copyright (C) 1994-2000 TeCGraf, PUC-Rio
>
> print((function()end)())
error: `)' expected;
last token read: `(' at line 1 in string "print((function()end)()) "
>
なんか実行できねーんですけど。
このインタプリタなんかおかしい?
0285デフォルトの名無しさん
NGNGerror: <statement> expected;
last token read: `(' at line 1 in string "a=(function()end)(); print(a) "
なんなの、これ。
一つも実行できねえ。
全然駄目だ・・
0286デフォルトの名無しさん
NGNGこれでどうしろと。
0287デフォルトの名無しさん
NGNGLua 5.0 (beta) Copyright (C) 1994-2002 Tecgraf, PUC-Rio
$ lua -e 'print((function()end)())'
$ lua -e 'a=(function()end)(); print(a)'
nil
0288デフォルトの名無しさん
NGNG-eつかわないでやりたいんだけど
0289デフォルトの名無しさん
NGNG0290デフォルトの名無しさん
NGNGんじゃこれ
$ lua4
Lua 4.0.1 Copyright (C) 1994-2000 TeCGraf, PUC-Rio
> function f() end
> print(f())
> a=f(); print(a)
nil
0291デフォルトの名無しさん
NGNGそっちは通った。
なんで>>282はダメなの?
なんかLuaって構文的に変だよな。
0292デフォルトの名無しさん
NGNGただ単に、
'(' 式 ')' '(' 引数リスト ')'
っていう構文が定義されてないだけでしょ。
5.0にあるHISTORYに
+ more general syntax for function calls (e.g. (print or write)(9)).
とか書いてあるから、>>282みたいな構文は5.0から新設されたんだと思われ。
0293デフォルトの名無しさん
NGNG4のころは
function foo() return function() end end
とは書けたけど、無名関数に適用する構文がなかった。
関数がファーストクラスオブジェクトな言語ではそれは不便なわけで、
実際5では使えるようになったわけで、喜ばしいんじゃないの。
0294デフォルトの名無しさん
NGNGfunction f0() return end
function f2() return 1,2 end
に対して
a,b,c,d = f2(),f0(),f2(),f0() は a,b,c,d=1,2,1,2 か a,b,c,d = 1,2,nil,1,2 か。
しかし実際はどちらでもなく a,b,c,d = 1,nil,1,nil となる(>>278)。
では print(f2(),f0(),f2(),f0()) はどうか。
これは print(1,nil,1) と等価(省略可能な引数は値がなければ渡されないから)。
まあ仕組みは分かるんだけど、理屈は納得しにくい。
0295デフォルトの名無しさん
NGNG英語メール打ってよ。
「日本ではendが不評です。
functionは長すぎです。」って。
あとさ、returnあるときと無いときってどうなってるの?
print(function()end)
ってreturn書いてないからエラーにすべきじゃないの?
a = function()end
print(a())
print(a(), 1)
nil 1
結果も違うし、おかしいよこれ。
0296デフォルトの名無しさん
NGNGnil
さっぱりわからん
0297デフォルトの名無しさん
NGNG値のない関数自体は悪くないんじゃない?
まあ明示的な return がなければ最後の値またはnilを返すというのもありだと思うが。
それから>>294もいってるように最後の引数は省略可能なので
print((function()end)()) は print() と同様の扱い。
0298デフォルトの名無しさん
NGNG0299デフォルトの名無しさん
NGNG> function nul() end
> argn(nul())
0
> argn(nul(),nul())
1
> argn(nul(),nul(),nul())
2
0300デフォルトの名無しさん
NGNGそういうことじゃなくて、つまりさあ、
a()は値を返さない関数なわけだから、
他の関数の引数として使われた時点でエラーにでもしないと
辻褄合わないでしょって事。これじゃバグ埋めこみまくり。
print(a())
error: 値を返さない関数a()を引数に適用しました
とかなんとか。
もうだめぽ。
0301デフォルトの名無しさん
NGNGちょっと気持ち悪いかもな。
C言語APIいじってるとそのうち違和感なくなったりするんだがw
0302デフォルトの名無しさん
NGNGerror: `=' expected;
last token read: `<eof>' at line 1 in string "a"
もういいや。
疲れただけだった。
0303デフォルトの名無しさん
NGNG・リスト(引数リスト、多値代入リスト)の途中に現れた場合、1個の戻り値が要求される
・リストの最後に現れた場合、戻り値がそのままリストに加えられる
・どちらの場合でも、戻り値が要求された個数に満たない場合はnilが補完される。
また、多すぎる場合、先頭から要求された個数のみ使用される。
5.0からは次の場合が追加されてる。
・()で括られた場合、1個の戻り値が要求される。
んで、要求された個数だけ値がリストに加えられて、多値代入なり、
関数コールに使われるわけだね。
0304デフォルトの名無しさん
NGNGうーむ、どういうバグを埋め込んでしまうんだろう。。。?
0305デフォルトの名無しさん
NGNG値を返すつもりがreturn書いて無かった
↓
エラー出ない
↓
気付かない
↓
動かない
0306デフォルトの名無しさん
NGNGLua使えねえ
↓
作者にスパムメール
↓
タイーホ
↓
(´・ω・`) ショボーン
↓
仮釈放
↓
復讐のオニ(`・ω・´)
↓
作者にスパムメール
↓
(繰り返し)
0307デフォルトの名無しさん
NGNG動的型付けの言語でそれを期待する方がおかしいと思うが…。
luaだけの問題じゃないし。
(というか、インタプリタでそういうえら出すやつってあんまりないような。)
0308デフォルトの名無しさん
NGNG0309デフォルトの名無しさん
NGNGちゃんと読んでよ。
問題はそこじゃないくて、returnの付け忘れで値が変化することだろ。
防止できないならreturnなんて構文は無い方がいい。
ということ。
0310デフォルトの名無しさん
NGNGこういう問題は起きない。
0311デフォルトの名無しさん
NGNG>>298に同意。
0312デフォルトの名無しさん
NGNGそれともそのバグのある関数をほかの関数呼び出しの引数の最後にくっつけたとき、
渡される引数の個数が異なるのことを問題にしてる?
0313デフォルトの名無しさん
NGNG>>309
0314デフォルトの名無しさん
NGNGrubyなら、
def foo
initialize()
result = ...
finalize()
result
end
def foo
initialize()
result = ...
finalize()
end
で、値が違ってくるでしょ?
これは、luaのreturnありなしと同じことじゃない?
それともこんな書き方は「できない」ようにした方がいい?
0315デフォルトの名無しさん
NGNGつまりこういうこと。
> a = function() return 0 end
> b = function () a() end --return付け忘れた
> b()
> print(a())
0
> print(b())
あれれ・・
0316デフォルトの名無しさん
NGNG0317デフォルトの名無しさん
NGNGやっぱり引数の数を問題にしてる?
それが問題になるのは、可変長引数の関数のときだけでしょ?
もしくは、本当に値のことなら、
def foo
0
end
def foo
0
print "debug..."
end
とか、つまらんミスだけど完全には「防止」できないよね?
(俺には「値を返す場所が1つ」で「そこにreturnを付け忘れた」なんていうミスは
上と同列(文法を理解してない)に見える。)
まぁ、関数にreturnが一つでもついていたら、
「returnで値を返さないパスが存在します。」とかの
warningくらい出してくれてもバチは当たらないだろうけどね。
0318デフォルトの名無しさん
NGNGなんか、全然理解してくれてないね。
もういいよ。
0319デフォルトの名無しさん
NGNG代入文も値を持つので a = b = 0 とか出来るようになるが、
一方で a = b == 0 も合法になるので、
if a = 0 then ... end というありがちな罠が出来るわけだがその辺はどうよ。
0320デフォルトの名無しさん
NGNG誰かもっと実際にありえそうな例で解説してくれ。
0321デフォルトの名無しさん
NGNGあんたの好きなrubyの場合、
def a(x) print(x) end と def a(x) return print(x) end で a(1) は nil を返すし、
lispならそもそも return がないが、lua の場合、
function a(x) print(x) end と function a(x) return print(x) end は違うのが危ない
っていってんだろ。
0322デフォルトの名無しさん
NGNG> b = function()end
> print(a(b()))
> print(a(0))
0
確かに危険だなこれ。
0323デフォルトの名無しさん
NGNGという事だな。
Luaは関数のくせに値を返さない可能性がある。
0324デフォルトの名無しさん
NGNG0325デフォルトの名無しさん
NGNGその場合もfunctionで書いたとき、
return忘れをチェックできないと解決しない。
全ての関数が値を返すという前提で、
return削除するのが一番簡単で楽だと思うけど。
0326デフォルトの名無しさん
NGNG0.5の方がいいんじゃないのか。
0327デフォルトの名無しさん
NGNGreturnはセミコロン(;)と同じ様に、あってもなくてもいい事にすれば、
修正も最小限で済むかな。
さらに変な言語になるけど。
0328デフォルトの名無しさん
NGNGいやいや、subroutine は本来値を持つものではないのよ。
しかし return によって値つきで戻ることが出来るわけで。
0329デフォルトの名無しさん
NGNG0330デフォルトの名無しさん
NGNG単に構文要素 procedure をケチっただけなんだろうか
0331デフォルトの名無しさん
NGNGなんじゃそりゃ。
>>329
それも問題ある。
というか問題が変わってない。
0332デフォルトの名無しさん
NGNG付き合いきれん。
0333デフォルトの名無しさん
NGNG気に入らないなら使わなきゃいい。これだけヌルいライセンスなんだから
解決策も上げずにクダクダ文句言うのはお門違いだ。キエロ
0334デフォルトの名無しさん
NGNG0335デフォルトの名無しさん
NGNG・functionで、returnがない実行パスがあった場合エラー
・procedureは引数リストや代入の中で使えない
でOK?
parserの改造くらいですみそうだが。
0336デフォルトの名無しさん
NGNG解決策は上がってるじゃん。
つーかウザそうなやつって、真っ先にお前じゃねーか(w
0337デフォルトの名無しさん
NGNGところで、ちょっと前にも話題に出したのだけどlmem.c内のメモリ
確保/開放の所をトレースすると全くと言って良いほど開放が行われて
いないのね。試しにループコード書いてみたらメモリが100M近くまで
確保されても開放する気配もなかった。っていうか通常でも良く解か
らないタイミングでメモリ確保するのね。たとえば
a=1
これだけの行でも数個のメモリを確保してる。(しかも開放しやがらねー)
生成したスレッドの開放手段も用意されてないし、クラスモドキは
作れてもデストラクタが作れないとか、いろいろと組み込みには問題が
山積みのような気がする。
betaだからだと思いたいなぁ。
0338デフォルトの名無しさん
NGNG0339デフォルトの名無しさん
NGNGgc積んでるんじゃないの?
0340デフォルトの名無しさん
NGNG互換性考えるなら、>>325 and >>327
0341デフォルトの名無しさん
NGNGそそ、GC積んでるみたいなんだけど、開放タイミングが良く解からないのね。
っていうか、メモリ周りはもうちょっとクリーンに使えないとつらいねぇって話。
出来る事ならメモリ周りはlua_openの時のみ1回の確保にして貰えると助かる。
足りないときは例外投げて再確保とかがいいな。
0342デフォルトの名無しさん
NGNGというかそもそもl_free()ってreallocでしか使われてないじゃん。
GCの後余ったメモリをOSに返すようにするGCって稀なんじゃないかな。
コンパクションのときオブジェクト再配置でかかるコストとか馬鹿にならなそう出し。
んで、確保したメモリは1回メモリプールに置いといて、足らなくなりそうだったら
改めて確保するわけだ。だからタイミングが不定に思えるんでしょう。
前にメモリの断片化を心配してたみたいだけど、オブジェクトサイズは
ほぼ一定の大きさになるようにして、文字列とか不定長のやつは別管理にする
とかいうメモリ管理をするのが一般的だと思う、インタプリタでは。
(luaがどうなってるのかは知らないが。realloc()のコストが高そうだ…。)
まぁ、組み込み用途としては失格なのかもしれんが(組み込み機器なんかで使いたい場合は特に。)
デストラクタは、自分で作って明示的に呼びましょうってことじゃない?
Javaと同じく(Javaには一応あるけど事実上使えないよね)。
0343342
NGNGどかっとメモリ確保してそれを分割して使うわけじゃないのか。
ちなみに、4.0もほぼ同じコードなのでbetaとれても変わらないでしょう。
まぁ、lmem.cのreallocを自分で固定メモリ領域から取ってくるように
改造すれば対応可能だから、まだましか…?
そういうのを作ってコントリビュートしてみてもいいかもね。
0344デフォルトの名無しさん
NGNGうん。lmem.cを見る限りでは外部のallocaterを利用する事も考慮している
みたいなんよね。ただ、開放のタイミングがちょっとアレなので例えばメモ
リプールを64kとかするとあっという間に溢れちゃう。やっぱメモリは不要に
なった先から開放して欲しいっす。
ここをなんとかしないととてもじゃないけど組み込みどころかPCでも使え
ないすね。っていうかどうゆう環境を想定してんだろ…。
個人的にはメモリブロックを取得して保存/復帰が出来るようになれば
サイコーなんだけど…。
0345デフォルトの名無しさん
NGNGvoid lua_setgcthreshold (lua_State *L, int newthreshold);
って関数があるね。
ちとLuaをガベコレレスに改造するテストしてみようと思います。上手
くいったらレポートします。
あとはスレッドの開放だな…。
void lua_closethread (lua_State *L, lua_State *thread);
はマニュアルに記述はあるのでそのうちFixされると思いたいのだが…。
0346デフォルトの名無しさん
NGNG・Baldur's Gate
・MDK2
・Angband
とかあるね。
まぁ、どこで使われてるか、ってのも問題だけど。
BGはAIのところだっけ?
0347デフォルトの名無しさん
NGNG荒らしでもなく、sage優先にしては記録的!
でも、ageると嵐が来そうなので、sageておこうっと。
0348デフォルトの名無しさん
NGNGLuaの仕様をちゃんと理解できないやつが難癖つけてただけじゃない?
0349デフォルトの名無しさん
NGNGfree()で領域がOSに返るかどうかはlibc依存なんだがそういう話ではない?
現状ではOSに返らない環境の方が多いと思う。
0350デフォルトの名無しさん
NGNGそういう話ではない。
0351デフォルトの名無しさん
NGNGメモリが足りなくなった時に追加確保しないでゴミ掃除なりして欲しいってこと?
(ちゃんとソース読んでないけど) safe-point 方式っぽいからしょうがないんじゃないのかなあ。
参照カウント方式はカンベンしてほしいし。
0352デフォルトの名無しさん
NGNGtop(1)で観察できるluaのコードは何かありますか?
0353デフォルトの名無しさん
NGNGこいつは、オブジェクトが多くなればなるほど時間がかかるという弱点を持ってる。
上の話は、言語で一括してメモリプールを取るんじゃなくて
オブジェクトを作るたびにmalloc()が走るからメモリ使用状況が
把握しにくいから嫌、って話じゃない?
んで、解決方法としては、malloc()のソースとか持ってくるなりして
アロケータを適当に書く、と。
実際には、言語内で確保したオブジェクトをプールしてるのか、
しばらくするとアロケータもGCもあんまり走らなくなるんだけどね。
(複雑なサンプルでは試してないけど、単純ループとか再帰とかでは。)
0354デフォルトの名無しさん
NGNGコード追ってみました。ほぼ353氏のいうとおりですね。不思議なのは
最後にあるようにある程度走らせたらメモリの再利用らしき挙動が起こっ
てメモリの確保が行われなくなる事かな。ガベコレってそういうもんなの
かも知れないけど、これがちょっと困り者。
ぶっちゃけ、自分が想定していた家庭用ゲームコンソールへの組み込み
はよほど扱いを限定しないとむつかしそうな感じです。PCゲーならOKかな?
0355デフォルトの名無しさん
NGNGなんかGCにいちゃもんつけてる粘着がいるみたいだけど、
第一そんなにシビアな環境でなんでインタプリタ使うんだ??
俺には信じられんが。。。(w
まぁ、PCゲーあたりが現実的なターゲットかと。。
0356デフォルトの名無しさん
NGNGLuaのWikiでは、ゲームに使うためにGCを何とかしようとかいう議論もあったけどね。
インクリメンタルGCとか世代別GCとか。
俺的には、リアルタイム性という点では、mark&sweepより参照カウントのほうが
向いてると思うんだけどね。Luaを参照カウント方式にするのはかなり労力掛かると思うが…
で、保険としてmark&sweepも入れておくと。
全体的にLuaはメモリアロケーションが少なくてすむように設計されてるように見えるので、
メモリ管理関係にあんまりこだわるのも本質じゃないのかも(もう少しソース追わんと
はっきりとしたこといえないけど。)
ただ、Luaのソース上でのGC呼び出しタイミングとか見てみると、どうもmalloc()が失敗する
ことはほぼ無いという前提で作ってるように見えるので、組み込み系はちょっときついのも
確かか。
0357sage
NGNG汎用スクリプトには向かん見たいですね。
0358デフォルトの名無しさん
NGNGLuaをガベコレレスにしようと一日格闘してみましたが、根が深くて相当
骨が折れますね。で、諦めて色々なケースでパフォーマンスのチェックをし
てみたのですが、普通の利用では30〜40kb程度で動くようです。複雑な再起
でも単純なループでも確保量があまり変わらないのでおそらくこの辺がLua
の標準プールサイズなのかと思われます。うーん…今の所はこれぐらいすね。
>>355
別にいちゃもんつけてる訳じゃなくて、Luaの正確な挙動を把握しようと
しているだけ。汎用スクリプトとしてのLuaは非常に興味深いので。
まぁメモリアルゴリズムは組み込み用途に合わせて幾つかのアルゴリズムを
選択できると理想的なんだけどね。
うーん、有意義な話題だと思ったが粘着扱いか…欝だ。
0359デフォルトの名無しさん
NGNG0360デフォルトの名無しさん
NGNG0361デフォルトの名無しさん
NGNG> Luaをガベコレレスにしようと一日格闘してみましたが、根が深くて相当
漏れも Boehm-Demers-Weiser に変えたらどうなるか調べようと思ったけど、
2時間くらいでは終らなかった。
0362デフォルトの名無しさん
NGNGガベコレレスなんてできるの?
できたら神、ってもう諦めたのかyo!
0363デフォルトの名無しさん
NGNG0364デフォルトの名無しさん
NGNGそれ以前のバージョンはライセンス読んでないから知らない。
0365デフォルトの名無しさん
NGNG0366デフォルトの名無しさん
NGNGhttp://www.lua.org/ftp/lua-5.0.tar.gz
0367デフォルトの名無しさん
NGNGGとOは何の略でいく?
GNU Objective Lua・・・じゃ面白くないし
0368デフォルトの名無しさん
NGNGGOLua is Objective Lua
Luaが土台なら使えるものができるかも!
0369デフォルトの名無しさん
NGNG0370デフォルトの名無しさん
NGNG・テーブルを作るとき
・テーブルサイズが大きくなるとき(グローバル変数定義含む)
・スレッドを作るとき
・ユーザオブジェクトを作るとき
・文字列操作をしたとき
・再起なのでスタックサイズが伸びたとき
・パーサが動いたとき(luaのインタラクティブモードだとこれでいっぱい確保される)
くらいだと分かりました(漏れがあるかもしれんけど)。
つまり、スタックサイズが十分にあれば、
・テーブルを作らない
・テーブルのメンバを増やしたり配列を伸ばしたりしない
・「深い」関数コールや深い再帰をしない
・文字列操作をしない
という条件下ではreallocはまったく呼ばれないみたいです。
当然オブジェクトも増えないからGCも呼ばれない。
上の話題でメモリが開放されないってのはつまり確保されてないからだね。
for i=0,10000 do a = {} end
こういうのを実行すれば定期的にGCが実行されてメモリが開放されてるのも分かるはず。
0371デフォルトの名無しさん
NGNGほんとはlibcとかのmalloc.cとかまともなのもって来たほうがいいんだと思うんだけど、
読むのめんどくさいので超適当なやつ。
Luaは小さいメモリをたくさん確保するので、それにあわせてみた。
↓差分ファイル。 patchに食わせてね。
http://up.your2ch.net/1050171092.txt
メモリ確保は早くなってるみたい。
% time ./lua -e 'for i=0,10000000 do a = {} end'
4.046u 0.015s 0:04.12 98.3% 129+5465k 0+0io 0pf+0w
% time lua -e 'for i=0,10000000 do a = {} end'
6.429u 0.000s 0:06.50 98.7% 128+240k 0+0io 4pf+0w
0372デフォルトの名無しさん
NGNGうわ、またしても神登場だ。ただ、問題視されているのは
for i=0,10000 do a = {} end
で必要とされているメモリはa = {}だけなのにGCの開放タイミングが微妙
なお陰で十数kb近くの確保が行われちゃう事なのね。だから参照カウンタ
方式にして不必要になったらすぐ開放しちゃって欲しいって訳。
あと、1/60sceとかでループをまわすゲーム用途にはGCが働いた時に負荷
が偏るのも宜しくない訳です。
うーんでもこの調子で皆でパッチを当てあえばそのうち何とかなりそう
だね。GoLuaができる日も近そうだ。漏れも神目指してがんばるべ。
0373デフォルトの名無しさん
NGNG参照カウンタだと参照が循環してるとゴミにならないんだけどそれでいいの?
参照が循環しないように注意しながらプログラムすることに不満はない?
0374デフォルトの名無しさん
NGNG参照カウンタとGCを組み合わせればいいのでは?
0375デフォルトの名無しさん
NGNGん、もしかしてgcの基本的な動作が把握出来てない?
あれはスレショルド越えるまでオブジェクトを確保して最後に一気に要らないメモリを開放するという仕組み。
だから不定期にしか解放されないのは問題無い。
最初に数十キロ確保されるのは関数や文字列が確保されるせい。その中に無駄なメモリは無いハズ。
gcを動かさないための条件は上に書いた通り。
ま、任意のオブジェクトをその場で消す機能くらいあってもいいとおもうけどね。
0376デフォルトの名無しさん
NGNGあらかじめ十分な量のオブジェクト(テーブル)を確保しておいて、
実際のループ内では、オブジェクトプールから必要な分を取ってきて
使うという方法。テーブルじゃなくてユーザデータを使うのもいいかもしれない。
そうすれば、確保するオブジェクト量+Luaコードの複雑さで、
必要とされるメモリ量はほぼわかるはず。
あとは、独自アロケータでも用意しとけば安定した運用が出来るわけですな。
ただ、運用では、安全のために、テーブル生成子({})を使えないようにする
必要があるかも?
スクリプト中でメモリ確保を行うような動作をさせたい場合、
毎フレーム強制的にGCを呼ぶという手もあるけど、GCの速度がまだ未知数…。
暇があったら、今度計ってみようと思う。
0377デフォルトの名無しさん
NGNGそれは正しいが、そこまでする必要あるならなんでluaつかう?(
0378デフォルトの名無しさん
NGNGいや、わからんなら使わないでもいいと思うけどね。熱血で解決。
↓このへんでも読んどくといいんじゃない?PythonをPC、コンソールともに使ったところの記事。
http://www.gamasutra.com/features/20020821/dawson_01.htm
0379デフォルトの名無しさん
NGNG0380デフォルトの名無しさん
NGNG超古参ユーザーでつか?
0381379
NGNGソースはVer1のを見たっきり。。。(w
0382デフォルトの名無しさん
NGNG漏れ的には演算やループや関数呼び出しにメモリ確保がない(=GCが呼ばれない)だけで
十分に利用価値があると思うけどなぁ。
03835.0しか知らない新参者
NGNGHISTORYによるとオブジェクト指向的な要素が追加されたのは、
1.1→2.0の時のようですな。1995年ころのことらしい。
0384381
NGNG0385デフォルトの名無しさん
NGNGどういった部分にスクリプト機能を導入すると、効果的でしょうか?
いろんな例を知りたいです。宜しくお願いします。
0386デフォルトの名無しさん
NGNGLuaを含め、内部にVM持ってる系はほとんどがそうだが。
0387デフォルトの名無しさん
NGNG0388デフォルトの名無しさん
NGNG寝ぼけてた。すんません。
0389デフォルトの名無しさん
NGNGttp://www.lua.org/uses.html
0390デフォルトの名無しさん
NGNG0391デフォルトの名無しさん
NGNGうん。で、言語的に他に遜色ない記述能力を持ち、かつ、処理系が小さい。
だから、Luaに注目してるわけだが…。
0392デフォルトの名無しさん
NGNG小さいつったら、他にも沢山ありそうだけど。
あえてLuaに拘る理由って何?
0393デフォルトの名無しさん
NGNGよければ他のよさげな候補を教えてクレー。
0394デフォルトの名無しさん
NGNGまぁ、別にどうしても拘ってるってわけじゃないけどね。そう見えた?
組み込みというと、PythonやRubyがそういうのを意識したつくりになってるね。
Perlはどうなんだろう?
Pythonは世代別GCをもってるみたいなんで、Luaよりはリアルタイムな組み込み系に
向いてるかもしれない。そういう実績もあるみたいだし。
Rubyも世代別GCが実装されて、バイトコード化もされたんだっけ?詳しく追ってない。
あとは、Mozillaなんかに使われてるJavaScriptエンジンとか、
Netscapeで使われてたJavaScriptエンジン(njs)とかあたりも、ブラウザ以外の
アプリに組み込みで使われることを意識して作られてるね。
njsは実行効率も結構良いらしい(というのはとある日記の受け売りだけど…)。
言語の速度比較サイトとかみてみると興味深いかも。
http://www.bagley.org/~doug/shootout/
あと、LISPとかScheme系で使えそうなのがいろいろありそうだけど調べてない。
おれも情報求む。
0395デフォルトの名無しさん
NGNG誰でも使いこなせるほどにはコンパクトな仕様じゃない。
あと、ライブラリのスクリプトも同梱しなきゃなんないし。
0396デフォルトの名無しさん
NGNGlua思ったより早いですよね。
0397394
NGNGglueとしてのスクリプトだけじゃなくて、各オブジェクトの振る舞い記述にも使えそう
かなぁ、と。だから拘って見えるのは正解だ。
ちなみにpythonもstackless pythonという実装があって、こいつもおんなじ様なことが
できるみたいね。
http://www.stackless.com/spcpaper.htm
0398デフォルトの名無しさん
NGNGって仕組みがあってコルーチン的に使えるんだが、
これ以上はスレ違いなのでsage
0399デフォルトの名無しさん
NGNGこの速さ(と小ささ)は ruby も見習って欲しいです
0400デフォルトの名無しさん
NGNGPythonは気軽に使うにはちと繁雑。Rubyはライセンスうざいから無視。
あと、複数帰り値や可変引数の扱いが非常にイイ。そんな訳でGCに絡む
メモリ周りはなんとかしたいですね…。
0401デフォルトの名無しさん
NGNGArtisticライセンス(Perlで使われてるもの)使えばいいでしょ。
0402デフォルトの名無しさん
NGNG言語の大きさはほとんどがライブラリの大きさだよ。
0403デフォルトの名無しさん
NGNG比較するならなんかデータを示してほしーなーとか。
ポインタでもいいから。
0404デフォルトの名無しさん
NGNG0405デフォルトの名無しさん
NGNG組み込み型やクラスを外すとその型やクラスに関係した文法の
意味論が無効になるわけだがその場合同じ言語と呼べるのか否か。
0406デフォルトの名無しさん
NGNG0407デフォルトの名無しさん
NGNG0408デフォルトの名無しさん
NGNGどの辺が、"some internal modifications"なんだろ?
http://lua-users.org/lists/lua-l/2002-10/msg00191.html
> what is the current plan for GC in Lua 5 [...]
We are planning to release 5.0, and then to start working in a
generational GC for 5.1. To make a new GC for 5.0 would delay too much
its final release.
-- Roberto
http://lua-users.org/lists/lua-l/2003-01/msg00147.html
>"incremental garbage collection"? Are there plans for an incremental
>collector or is the generational one being summerised (wrongly?) as an
>incremental one? Did I miss something?
You read it right, we plan to have incremental garbage collection in 5.1.
Lua 5.0 already has some internal modifications to allow this but the real
work will begin as soon as Lua 5.0 (final) is released officially.
--lhf
0409デフォルトの名無しさん
NGNGsmallとかどうですか?
http://www.compuphase.com/small.htm
parser無しで50Kくらい。
JIT、デバッガつき。ポインタ、GCが無い。Cライク文法。
実績:
halflife admin mod
NoX: free Ultima Online Server
他
0410デフォルトの名無しさん
NGNGいいねこれ。
#if とか使えるのが特に。
まさに組み込み向け?
0411デフォルトの名無しさん
NGNGttp://ici.sf.net/
0412デフォルトの名無しさん
NGNG0413デフォルトの名無しさん
NGNGlight wight 言語萌え
0414デフォルトの名無しさん
NGNG0415デフォルトの名無しさん
NGNGLua5.1か…。意外とリリースは早いのかな?ところで次世代GCと呼ばれる
ものはどういうものを指すのかな?GC+SmartPointerと見て問題なさげ?
smallって開発止まってたと思い込んでいたけどそうでもなかったのね。
ところで軽量スクリプト言語でリコンストラクトをサポートしているモノ
ってありますか?記憶領域ブロックを保存することで同じ状態を再現でき
るようなもの。
Unrealに使われているスクリプトエンジンがそんな感じっぽかったんだ
けど、さすがに汎用ではそんなのないか…。
0416デフォルトの名無しさん
NGNGsin()とかcos()とかを自前の奴に差し替えたいんですがどうしたらいいんでしょうか?
0417デフォルトの名無しさん
NGNG>次世代GC
ナニソレ?
>記憶領域ブロックを保存することで同じ状態を再現できるようなもの。
これは永続化の事を言ってるの?だとしたら、全てのオブジェクトを
GCのマークフェーズの様に辿れる状況であれば、オブジェクトの
アドレスをインデックスに変換するだけでファイルから読み書きできる。
自作の言語でも使ってるけど、昔いくつかのLISP処理系でも見かけた。
あと、この機能を抜き出した単体製品もあった。
ただし、ポインタを辿らせる関係で色々設定が必要。
0418デフォルトの名無しさん
NGNGgenerational GC のことを言っているなら「次世代 GC」じゃなくて「世代別 GC」
どういうものかは Paul R. Wilson の
Uniprocessor Garbage Collection Techniques あたりでも参照してください。
0419デフォルトの名無しさん
NGNG0420デフォルトの名無しさん
NGNGttp://lua-users.org/wiki/BindingCodeToLua
0421デフォルトの名無しさん
NGNGゴミになるオブジェクトのほとんどが新規作成されたオブジェクトであるという
仮定の元に作られたGC。通常は新しいオブジェクトのみを対象としたGCを
行うことで、対象オブジェクト数を減らしGCのスピードを稼いでいる。
http://ruri.csys.ce.hiroshima-cu.ac.jp/~masato/research/master-slide/
http://www.atmarkit.co.jp/fjava/rensai2/webopt06/webopt06.html
インクリメンタルGC(Incremental GC):
GCを分割して行えるようにしたもの。GC時間が分割できるのでリアルタイム向け。
全体のGC時間は大きくなる。
http://members.tripod.co.jp/zzyyb/gc/incremental-collector.html
両方の手法をあわせたものもあるみたい。
>>408のlhfが言ってるincremental garbage collectionがどれをさしてるのかは
分からないが。ただ、参照カウントにはならなそうだね。オーバーヘッドやら
実装の複雑性やらが云々とか書いてあった。
0422デフォルトの名無しさん
NGNGメッチャ、サンスコ。
0423デフォルトの名無しさん
NGNGmarkを世代別にすればさらに無駄が少なくなる。
0424デフォルトの名無しさん
NGNGまぁなんていうか知らないけど、漏れは再構築機構と呼んでます。漏れの
Luaのな使い方はアプリケーションのステータスやインストラクション情報の
構築なんかなんだけど(ゲームで言えばステージセットや敵の配置やイベント
処理ね)、これをLuaコードで吐き出すのではなくLuaに確保した配列情報を
そのままLuaバイナリイメージで保存してそのまま復元できたりすると便利だろうなぁと。
例えばアプリのコンフィグデータを扱うような場合を考えてみると便利
さが解ると思います。更に将来的にデータが拡張されたりユーザ数によって
サイズが可変したりなんて場合にも連想配列で扱えると便利ですよね?
0425デフォルトの名無しさん
NGNGしかしインタプリタの実装が変わったらアウトなんでは?
コルーチンを永続化したいのでない限りは、
単にテーブルをシリアライズして持っとけば十分と思うんだが。
0426山崎渉
NGNG0427デフォルトの名無しさん
NGNG0428デフォルトの名無しさん
NGNGつーか主語が何なのか書けよ。質問する前に日本語なんとかしろ。
0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNG0431デフォルトの名無しさん
NGNG演算(+-*/)とif文だけ作って、strip しても既に30kB
luaは脅威だ!!
0432デフォルトの名無しさん
NGNGネタですか?
手元にある、
read.eval.gc.cons.car.cdr.quit.defun.lambda.quote.setq.eq.null.atom.
numberp.print.terpri.rplaca.rplacd.progn.cond.and.or.not.list.+.-.*./.divide.>.<
が組み込まれた習作LISPの実行ファイルは19kb、
quote.if.lambda.set!.macro.begin.define.while.with-input-from-file.with-output-to-file.
and.or.quasiquote.unquote.unquote-splicing.sharp-hook.car.cdr.cons.read.write.load.eq?.
strcat.gc.oblist.pair?.null?.symbol?.string?.number?.macro?.newline.memq.apply.substring.
read-char.write-char.list->string.string->list.not.add2.sub2.mul2.div2.mod2.<.>.<=.>=.display.
string-length.string->symbol.symbol->string.length.string->number.number->string.eqv?.
peek-char.back-char.getd.procedure?.closure?.set-car!.set-cdr!.eval.append2.identity
が組み込まれたSchemeの実行ファイルは26kbですが。
ちなみにUPXで圧縮するとそれぞれ10kb, 14kb,。
ソースは両方ともC言語で700行以下。mingw -O2 strip
0433デフォルトの名無しさん
NGNGってそういう話題じゃないか…。
0434431
NGNGでも700行でなにがでるんだろう?
今の段かいでwc-lしてみたけど、約2000行いってた。
もちろん、これを1行で書くことも出来るわけだが。。。(w
0435431
NGNG足し算して合計を求めてみたが。。。
<2000行>
real0m1.234s
user0m1.230s
sys0m0.010s
<lua>
real0m1.538s
user0m1.530s
sys0m0.010s
<ruby>
real0m8.752s
user0m8.710s
sys0m0.010s
と、とりあえずは早いみたい。32ビットコードに変換して
実行させてるからかな?(大きさ&速度)
激しくオフトピなのでsage
0436デフォルトの名無しさん
NGNGrubyってもっと遅くない? >>32
0437デフォルトの名無しさん
NGNG書けることが実証されていますが…
ttp://www.ioccc.org/1990/dds.c
0438デフォルトの名無しさん
NGNGBASICではないように見えるが…
0439>>436
NGNG十分遅いとおもうけど?(w
0440デフォルトの名無しさん
NGNGうpしる!!!!
ていうかして下さいお願いします(=´ω`)
0441デフォルトの名無しさん
NGNGなにいれてもOkしか帰って来ない?
0442デフォルトの名無しさん
NGNG0443デフォルトの名無しさん
NGNG$ ./dds
Ok
100 S = 0
Ok
120 FOR I = 1 TO 100
Ok
130 S = S + I
Ok
140 NEXT I
Ok
150 PRINT S
Ok
RUN 100
5050
Ok
0444デフォルトの名無しさん
NGNGttp://www0.us.ioccc.org/1990/LANDER.BAS
0445デフォルトの名無しさん
NGNG0446デフォルトの名無しさん
NGNGすまそ。自己解決。
日本語マニュアル良い感じで訳されて( ・∀・)イイ!!
0447>>443
NGNGなるほど出来た、たいしたもんだね。
100万回ループさせたら、桁溢れしたけど(桁溢れを考慮すると)
値は正しいものだった。
ちなみに、速度は。。。
同一環境で。。。
real0m4.990s
user0m4.980s
sys0m0.000s
こちらも、このソースを考えればすごい!
rubyは、オブジェクト指向なので単純比較は出来ないのかもしれんが、
やはり遅いようだね。
0448デフォルトの名無しさん
NGNG0449デフォルトの名無しさん
NGNGfunction loop()
local i = 1000000
while i > 0 do
i = i - 1
end
return i
end
2) 700行scheme: while
(define (a)
(let ((i 1000000))
(while (> i 0)
(set! i (- i 1)))
i))
3) 700行scheme: tail call
(define (b)
(let loop ((i 1000000))
(if (> i 0) (loop (- i 1))
i)))
1) 842msec
2) 973msec
3) 2108msec
誤差はあるけど順位は変わらないです。
schemeはread時点でmacro-expand済み。
3)はgcの影響。ちゃんとフロー解析して2)に近づけるのが目標。
0450デフォルトの名無しさん
NGNGやっぱり、こういうことするには大学の情報系出てるか、
独学で難しい理論しってる必要あるの?
0451デフォルトの名無しさん
NGNG0452デフォルトの名無しさん
NGNGその次に経験が重要で、それらがあれば知識は自然に付いてくる。
ちがうかなぁ?
0453デフォルトの名無しさん
NGNGソース見てみると結構煩雑に見えるけど。
0454デフォルトの名無しさん
NGNGたしか、上のほうで誰かがHP書いてくれてたけど、
他のスクリプトと比べてもかなり良い線入ってる漢字がした。
配列がやや遅い漢字もするが、これはハッシュと同一なので
納得できるきもする。
いかが?>ALL
0455デフォルトの名無しさん
NGNG0456デフォルトの名無しさん
NGNGend
萎える
あと、 functionなんで古スペル?
0457デフォルトの名無しさん
NGNGお前もか。
俺も、
if ... then begin
end
でないと、と思ったよ。
> function
さすがに、funcとか、fnだと萎えるだろ?
0458デフォルトの名無しさん
NGNGLuaは生涯、この手の話題で無限ループだな。
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まだ〜?ヽ(`Д´)ノ
0559デフォルトの名無しさん
NGNGそれとも世代GCのことか?
結局ストップ&コピーだから停止するのに変わりない。
GCそのものよりも、いつGCが呼ばれるかの方が大事。
0560デフォルトの名無しさん
NGNGで、世代別GCが導入されれば、GC時間のオーダーは全オブジェクト数じゃなくて
新しい世代のオブジェクト数のみに依存するようになるから、毎フレームGCを呼ぶ
とか出来るようになるね(ゲームで使うなら)。
現状の奴では、オブジェクトが増えれば増えるほどGC時間が増えるから、
リアルタイム向きには、どうしてもオブジェクト数を限定して使わざるを得ない。
そういえばPythonはリファレンスカウンタだっけ?
GCが気になるならあっちの方がいいかも。
(あと「Luaの」次世代GCね。)
0561デフォルトの名無しさん
NGNG0562デフォルトの名無しさん
NGNG任天堂だった。
つーか、次世代って言葉の意味わかってるのか。
0563デフォルトの名無しさん
NGNG0564デフォルトの名無しさん
NGNG0565デフォルトの名無しさん
NGNGhttp://cheese.2ch.net/ghard/
こいうこと?
0566デフォルトの名無しさん
NGNG上のほう読めってことでしょ。
かなり実のある話してまつ。
0567デフォルトの名無しさん
NGNG0568デフォルトの名無しさん
NGNG0569デフォルトの名無しさん
NGNGLuaの次世代GCってマジネタなのか?
ソースきぼん
0570デフォルトの名無しさん
NGNG導入されるって、コアチームの人がMLで書いてたよ。リンクは上のほうにある。
0571デフォルトの名無しさん
NGNG0572デフォルトの名無しさん
NGNG0573デフォルトの名無しさん
NGNGhttp://lua-users.org/wiki/LuaAddons
0575デフォルトの名無しさん
NGNGありがとう
0576デフォルトの名無しさん
NGNGいまいち解らない。ゲームのパラメータなんかで使えると聞いたけど
どなたか実例キボンヌ。
0577デフォルトの名無しさん
NGNGG-わんげ鳩大往生XII〜絆ダウン〜 三週目
http://game4.2ch.net/test/read.cgi/arc/1058781399/
0578デフォルトの名無しさん
NGNGこれでも読んど毛
http://lua-users.org/wiki/BindingCodeToLua
0579デフォルトの名無しさん
NGNG狂おしくサンクスコ。というか、上のスレ面白いなw
0580デフォルトの名無しさん
NGNGあと、>>513や、白い弾幕くんもLuaを使ってる。参考にすべ氏
白い弾幕くん
http://user.ecc.u-tokyo.ac.jp/~s31552/wp/sdmkun/
0581山崎 渉
NGNG0582山崎 渉
NGNG│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
■ このスレッドは過去ログ倉庫に格納されています