1 名前:デフォルトの名無しさん mailto:sage [2013/03/10(日) 15:10:32.28 .net] LuaやSquirrelやAngelScriptなどアプリケーションへの組み込み用途で 使われるプログラミング言語についてのスレッドです まとめwiki(なにか質問する前に必ずみること!) wikiwiki.jp/lua/ その他の参考URLは>2から ■前スレ 【Lua】組み込み系言語総合 その5【Squirrel】 toro.2ch.net/test/read.cgi/tech/1321063450/ ■過去スレ その4 hibari.2ch.net/test/read.cgi/tech/1301414458/ その3 hibari.2ch.net/test/read.cgi/tech/1272643397/ その2 pc12.2ch.net/test/read.cgi/tech/1243210301/ その1 pc12.2ch.net/test/read.cgi/tech/1205208141/ プログラミング言語 Lua その3 pc11.2ch.net/test/read.cgi/tech/1160799232/
2 名前:デフォルトの名無しさん mailto:sage [2013/03/10(日) 15:12:03.71 .net] □Lua ttp://www.lua.org/ (本家) ttp://lua-users.org/ (lua-users) ttp://luaforge.net/ (LuaForge) sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html (5.1マニュアル和訳) Lua言語の紹介 staff.aist.go.jp/yutaka.ueno/lua/docsjp.html 入門Luaプログラミング www.amazon.co.jp/dp/4797342722/ □Lua as an Effect File Format for OpenGL prideout.net/blog/?p=1 □Squirrel www.squirrel-lang.org/ (本家) sourceforge.net/projects/squirrel/ sourceforge.net/projects/sqplus/ (SqPlus) sourceforge.net/projects/squirrelsh/ (Squirrel Shell) wikiwiki.jp/lua/?Squirrel_Lang%2Ftoc (wiki内2.1マニュアル和訳) □AngelScript www.angelcode.com/angelscript/ □Xtal(ゲーム向け。スタックを意識しなくていい?) d.hatena.ne.jp/xtalco/ code.google.com/p/xtal-language/ blog.livedoor.jp/dankogai/archives/50836939.html □elastiC www.elasticworld.org/
3 名前:デフォルトの名無しさん mailto:sage [2013/03/10(日) 15:15:41.30 .net] ■関連してるかもしれないスレ Io Language hibari.2ch.net/test/read.cgi/tech/1201100624/ 2 part forth pc11.2ch.net/test/read.cgi/tech/1073673931/ ●●●●TCL/TKなら俺に聞け 2●●●● pc11.2ch.net/test/read.cgi/tech/1177998764/ ECMAScript デス 4 toro.2ch.net/test/read.cgi/tech/1325448978/ 各種ライブラリ紹介スレ2(ゲ制作) pc11.2ch.net/test/read.cgi/gamedev/1177886529/ Eclipse統合M34【Java/C++/Ruby/Python/Scala】 toro.2ch.net/test/read.cgi/tech/1361510049/ 「コンパイラ・スクリプトエンジン」相談室15 hibari.2ch.net/test/read.cgi/tech/1296214398/ Garbage Collection (GC)について語るスレ(DAT落ち) pc11.2ch.net/test/read.cgi/tech/1141646850/
4 名前:デフォルトの名無しさん mailto:sage [2013/03/10(日) 15:18:19.66 .net] 誰も立てないから同じテンプレで立ててみた いつ立てるの?今でしょ!
5 名前:デフォルトの名無しさん mailto:sage [2013/03/11(月) 00:44:45.26 .net] 乙
6 名前:デフォルトの名無しさん mailto:sage [2013/03/11(月) 01:15:20.59 .net] 乙 次スレは>>980 あたりが立てればいいか?
7 名前:デフォルトの名無しさん mailto:sage [2013/03/11(月) 09:56:54.76 .net] AngelScript|Д`)<新スレ乙
8 名前:デフォルトの名無しさん mailto:sage [2013/03/11(月) 18:39:51.97 .net] LuaJIT 2.0.1 Update 2013-03-08: Please apply Hotfix#1 to the 2.0.1 download.
9 名前:デフォルトの名無しさん mailto:sage [2013/03/13(水) 21:01:52.29 .net] \ l´⌒\⌒\ \\ \ \ ヽ ) ) \\ \\ ( \ \∩___∩ \\ \ \ ⌒⌒| ノ ヽ \\ \ \ / ● ● ト、\ \\\ \ Y | ( _●_) ミ\ \\\ \ / 彡、_ |∪| ノ \ \\\ (____)―ヽノ' ヽ  ̄ ̄ ヽ\\ \, j l l .l } Lua! l (_ノノノノ
10 名前:デフォルトの名無しさん mailto:sage [2013/03/19(火) 08:31:39.53 .net] Programming in Lua 第3版おめ
11 名前:デフォルトの名無しさん mailto:sage [2013/03/19(火) 20:43:32.77 .net] いつ?
12 名前:デフォルトの名無しさん mailto:sage [2013/03/19(火) 20:54:19.77 .net] なぜluaを使うのですか?
13 名前:デフォルトの名無しさん mailto:sage [2013/03/19(火) 21:21:41.59 .net] >>12 小さくて密度の高い事は美しいことだから。
14 名前:デフォルトの名無しさん mailto:sage [2013/03/19(火) 23:18:07.76 .net] スタックダンプが快感
15 名前:デフォルトの名無しさん mailto:sage [2013/03/20(水) 05:44:19.66 .net] テーブルの威力がすごすぎるから
16 名前:デフォルトの名無しさん mailto:sage [2013/03/20(水) 07:12:07.39 .net] めたたbぇ
17 名前:デフォルトの名無しさん mailto:sage [2013/03/20(水) 09:54:07.19 .net] luaを使うことを強いられているんだ!
18 名前:デフォルトの名無しさん mailto:sage [2013/03/20(水) 14:50:07.03 .net] luaにはC#のLINQやPythonのリスト内包表記は無いんですか?
19 名前:デフォルトの名無しさん mailto:sage [2013/03/22(金) 15:29:50.19 .net] metatableってクソじゃないか? コードを難解にするだけじゃん
20 名前:デフォルトの名無しさん mailto:sage [2013/03/22(金) 17:52:56.00 .net] 確かにリスト内包表記は可読性を著しく損なう糞だな。
21 名前:デフォルトの名無しさん mailto:sage [2013/03/22(金) 19:55:31.63 .net] >>20 あれほど簡潔なものはないとおもうが?
22 名前:デフォルトの名無しさん mailto:sage [2013/03/22(金) 20:16:28.69 .net] 論点をずらすなよ
23 名前:デフォルトの名無しさん mailto:sage [2013/03/22(金) 21:49:15.12 .net] metatableはクソって話だったな
24 名前:デフォルトの名無しさん mailto:sage [2013/03/22(金) 23:37:53.28 .net] めたたbぇprpr
25 名前:デフォルトの名無しさん mailto:sage [2013/03/23(土) 00:31:02.17 .net] たとえば DATETIME というクラスを定義したときに 演算子をメタテーブルで与える。 これはC++のoperatorとかRubyの def 演算子() に該当するなんのへんてつもないただの定義でないのん?
26 名前:デフォルトの名無しさん mailto:sage [2013/03/23(土) 00:32:36.87 .net] そもそもoperator再定義自体が下品で破廉恥な行為だ
27 名前:デフォルトの名無しさん mailto:sage [2013/03/23(土) 00:53:51.29 .net] せやな
28 名前:デフォルトの名無しさん mailto:sage [2013/03/23(土) 09:28:32.81 .net] 確かに
29 名前:デフォルトの名無しさん mailto:sage [2013/03/23(土) 17:16:41.74 .net] リスト内包表記はいいものだ
30 名前:デフォルトの名無しさん mailto:sage [2013/03/23(土) 17:50:15.62 .net] あっそ
31 名前:デフォルトの名無しさん mailto:sage [2013/03/23(土) 19:47:34.80 .net] Luaにはなぜないのだろうね
32 名前:デフォルトの名無しさん mailto:sage [2013/03/23(土) 21:38:19.50 .net] クロージャとコルーチンで同じことできるし…
33 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 09:41:18.14 .net] 内包表記のためにそんなもん使うのは大袈裟だろ
34 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 16:32:17.84 .net] 内包表記っぽいものを作るのにコルーチンは使わんだろ generatorじゃないんだから
35 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 16:35:10.57 .net] pythonはジェネレーターだよ
36 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 16:48:46.24 .net] いいね
37 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 17:42:15.18 .net] >>35 ん? pythonの内包表記は即座にリストとして展開されるよ [ x ** 2 for x in range(10) if x%2 == 0 ] みたいに角かっこで書くやつね ( x ** 2 for x in range(10) if x%2 == 0 ) みたいに丸かっこで書くとgenerator式になる
38 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 17:46:46.83 .net] Luaは関数の末尾呼び出しを最適化してくれるのがいいね
39 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 18:13:24.43 .net] そんなんどこでもやってますよ・・?
40 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 18:34:00.43 .net] JVM!JVM!
41 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 19:27:34.14 .net] Luaはとにかく組み込みやすいのがいい。 逆に言えばLuaだけで何でもできると思ってる奴はアフォ
42 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 20:05:41.56 .net] メタテーブルとcoroutineもすき
43 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 20:12:10.70 .net] >39 関数型言語では当たり前だけど、pythonとかメジャーなスクリプトではスタックがあふれるだろ?
44 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 20:15:13.57 .net] 単なる末尾呼び出しの最適化は最適化の中でも初歩の初歩だしやってないわけないと思う・・・んだけどなあ
45 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 20:31:15.66 .net] Luaで真似事しようとするとこんな感じ? function LC(f) local t = {} for x in coroutine.wrap(f) do table.insert(t, x) end return t end -- rangeの実装は省略 local t = LC(function () for x in range(10) do coroutine.yield(x ^ 2) end end)
46 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 20:32:18.04 .net] 最適化の理論とかはよく知らんけど pythonの関数呼び出しは単純にC言語のコールスタックに依存してるので、どんどん積み上がっていくよ
47 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 20:33:56.31 .net] >>45 これはキモイな やはりpythonには勝てないか
48 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 20:43:35.17 .net] Pythonはlambdaとdefが異なるのがガン。 Luaは区別無し。名前の無いfunctionがlambda
49 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 20:57:01.13 .net] >45 やるとしたらそんな感じだろうね でも、内包表記って言うよりはmapみたいな雰囲気になっちゃうよね 内包表記って数学の集合みたいに宣言的に記述できるってところがメリットのひとつだからなぁ 数学だとこんな感じ? S = { x^2 | x ∈ N, x < 10, x mod 2 = 0 } やっぱり言語としてサポートしないとつらそう
50 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 21:05:14.50 .net] >>48 すごく同意 pythonのlambdaは中途半端だね Luaは文法がコンパクトですっきりしていて、すごく便利って感じではないが でもコルーチンをサポートしてたり、末尾呼び出し最適化してたりで ちょうどいい塩梅
51 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 21:14:17.85 .net] しかし内包表記がないと一行が数倍にふくれあがるし見た目も悪い
52 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 21:27:46.25 .net] 単なるシンタックスシュガーだからパーサを弄ればできそうだけど lispのリーダーマクロっぽいのほしいな
53 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 21:31:07.63 .net] 有志でlua#つくろうず
54 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 21:33:14.06 .net] mrubyでいいじゃん もっと欲張るならPythonも比較的組み込みやすい
55 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 21:59:26.75 .net] mrubyの実行速度ってどんなもん? なおrubyも内包表記はない模様
56 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 22:59:45.74 .net] Luaとの比較だと、スクリプト自体の実行速度はちょっと遅めだけど誤差レベル 実行時のメモリのフットプリントが数倍くらい多い APIがスタックベースじゃないため拡張は幾分書きやすいけど そのせいでネイティブとの行き来が増えると実行コストは大きくなる傾向がある JITはまだ実用レベルじゃない みたいな感じ(俺調べ) Luaに取って代わるかは知らんけど、二番煎じ処理系(Sq*とかxta*とか)は駆逐できそうな感じではある
57 名前:デフォルトの名無しさん mailto:sage [2013/03/25(月) 00:06:08.81 .net] mrubyの問題は .cのソースコードの行数でLuaの1.5倍ある。 1万6千行に対し二万四千行。 んで、LuaのソースコードはCでもC++でも どちらでもコンパイル可能なので Luaの関数の内部からC++のライブラリが使える (ただしthrowが外側に貫通してはいけないけどね) yaccとかも不要。 なんというか、最近のbisonとかは内部でm4使ってるとか いろいろとめんどくさい仕様に改悪されてるから助かるw
58 名前:デフォルトの名無しさん mailto:sage [2013/03/25(月) 03:30:49.12 .net] Luaも確かv3.0くらいまではyacc使ってたんだけどね 今のパーサはシンプルな手書き再帰下降でLL(2)だから 内包表記の対応は難しいんじゃないかな
59 名前:デフォルトの名無しさん mailto:sage [2013/03/25(月) 07:51:15.04 .net] 内包表記みたいなのの解析は、luaの場合パーサがLLかLRかよりも 構文木を介さず直接コード生成してるところが逆にネックになりそう
60 名前:デフォルトの名無しさん mailto:sage [2013/03/25(月) 17:54:00.04 .net] Luaのソースコード見てみたら他の言語に比べて超短いな 全部でこれだけかよってびっくりしたわ これなら個人で解析出来るな、今日から読んでみるわ
61 名前:デフォルトの名無しさん mailto:sage [2013/03/25(月) 21:59:44.09 .net] パーサいじるんなら ついでに「:」か「.」を別の記号に変えたくなるけどね
62 名前:デフォルトの名無しさん mailto:sage [2013/03/26(火) 01:13:30.00 .net] metaluaみたいにluaのパーサー上書きする方法はあるみたいだぞ。 luajitでは動かないみたいだが。
63 名前:デフォルトの名無しさん mailto:sage [2013/03/27(水) 21:52:23.47 .net] パーサー弄ってわざわざ「->」演算子を追加した事があるな俺
64 名前:デフォルトの名無しさん mailto:sage [2013/03/28(木) 08:20:38.05 .net] 記念していつもの lua-5.2.2 www1.axfc.net/uploader/so/2847097
65 名前:デフォルトの名無しさん mailto:sage [2013/03/28(木) 08:36:16.34 .net] おめ
66 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 21:46:57.64 .net] AngelScript|Д`)<AngelScript2.26.2記念カキコ
67 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 22:04:23.95 .net] おめ
68 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 22:09:38.32 .net] >>64 依存関係がMSVCRT.DLLってことはMingW?
69 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 22:16:19.20 .net] いいえ
70 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 22:26:09.11 .net] んん VC6?
71 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 22:27:32.44 .net] いいえ
72 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 23:20:37.81 .net] てかコンパイル環境とか書いてないと DLLって公開する意味あるの? 不整合とか気にするジャン。
73 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 23:24:16.56 .net] いいえ
74 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 00:02:33.52 .net] そうすっと たとえばEXEのランタイムと DLL側のランタイムでデータフォーマットや 整列条件違ったら困ったことにならないの?
75 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 00:15:02.91 .net] そういえばSquirrelだけ記念カキコがない
76 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 00:31:33.85 .net] はい
77 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 01:20:18.06 .net] Luaの場合はヘッダに構造体定義してるのがlua_Debugくらいだし DLLの境界問題出にくいけどな ちゅーかどこぞの馬の骨が捨て置いたバイナリに喰いつく暇があったら 自分のプロジェクトにLuaのソースコード突っ込んだ方が建設的かと
78 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 01:22:27.16 .net] はい
79 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 20:17:59.94 .net] Luaはなぜ早いのですか? 中の妖精さんと高額契約したのですか?
80 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 21:11:29.32 .net] /| |/__ ヽ| l l│<ハーイ ┷┷┷
81 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 21:37:47.94 .net] コアにVMを置いて中間コードを実行していること (この方式は他も追従し追いつかれつつある) VMがレジスタマシンであること 設計の合理性 (整数演算の切捨てなど、ボトルネックの分析が良かった) JITなど速い方式の実装も行われている かな
82 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 21:55:44.63 .net] 整数演算がボトルネックというのが分かりません doubleのほうが百万倍遅いじゃないですか気持ち的に
83 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 22:05:29.72 .net] うん、だからその理屈だと整数演算を切り捨ててはいけないんだけど Luaはそれを切り捨てたのよ。 それでもベンチマーク成績は高かった。 つまり、演算以外の部分が問題だったわけね。
84 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 22:11:56.98 .net] doubleそれほど遅くないよ。割り算を除けばせいぜい2倍位じゃないの? intとdoubleの変換が遅かったりして。
85 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 22:14:30.36 .net] doubleの処理は、今時のそこそこのデスクトップマシンと、 そこいらへんにたくさんあるARMとで、天と地ほどの差があるなw
86 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 22:16:23.31 .net] 整数演算がないと困るのはビット演算 が5.2でライブラリが追加されたからそれもほぼ解消
87 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 22:19:25.09 .net] >>83 浮動小数演算がボトルネックにはならなかったって話と、整数演算が ボトルネックだったって話は関係ないじゃん。
88 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 22:28:42.34 .net] その辺のことはこのあたりかな lua-users.org/wiki/FloatingPoint
89 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 22:31:35.75 .net] そもそも誰も「整数演算がボトルネック」なんて話してないし
90 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 22:52:19.88 .net] 整数演算がボトルネックといっているのではなく、 浮動小数点演算の遅さは実は問題ではなかったという判断 だから整数演算いらんというデザイン
91 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 22:53:39.83 .net] 速くなればなるほど問題が表面化するというわけだな
92 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 23:01:32.81 .net] JIT版の実装が良くなればたぶんね
93 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 23:14:14.82 .net] >>89 つまり、整数演算切り捨てたこととLuaが速いことは関係ないってことだろ。 >>81 はボトルネックと言っているが。
94 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 23:25:40.76 .net] >>81 はLuaが速い一因として設計の合理性を挙げていて 整数演算がボトルネックとは言ってないし >>83 や>>90 のフォローもそれを補強していると思うんだが 読解力がないのならしょうがない
95 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 23:31:28.29 .net] 言語仕様そのものが速さ目的で設計されてるってのもあるんでないか ローカル変数をわざわざ指定しなきゃならんとか 書く側からすれば面倒な仕様だけど多分これだとGCがやりやすいんだろうなとか ソース見たわけじゃないから分からんけどね
96 名前:デフォルトの名無しさん mailto:sage [2013/04/04(木) 20:48:23.65 .net] AngelScript|Д`)<みんなでtemplate触ろうぜ
97 名前:デフォルトの名無しさん mailto:sage [2013/04/04(木) 20:55:01.09 .net] Squirrel |Д`)<Squirrel 3.0.4記念カキコ
98 名前:デフォルトの名無しさん mailto:sage [2013/04/05(金) 20:50:30.10 .net] Squirrel更新か!? と思ったのに!
99 名前:デフォルトの名無しさん mailto:sage [2013/04/10(水) 01:40:40.27 .net] AngelScriptにDelegate対応が来てた
100 名前:デフォルトの名無しさん mailto:sage [2013/04/12(金) 20:39:39.69 .net] 今度のはfuncdefとかの関数ポインタが無くなってデリゲートに置き換わるのか。