1read 100read
2012年07月プログラム230: 【Lua】組み込み系言語総合 その5【Squirrel】 (787) TOP カテ一覧 スレ一覧 2ch元 削除依頼
初心者の俺が初めて覚えるプログラム言語 (471)
JavaScriptスレ2 (537)
【最速へ】LowLevelVirtualMachine【LLVM】 (517)
JAVAってこんなことも出来ないの? (473)
【TDD】テスト駆動開発【TestFirst】 (230)
UNIXプログラミング質問すれ Part10 (536)

【Lua】組み込み系言語総合 その5【Squirrel】


1 :2011/11/12 〜 最終レス :2012/11/03
LuaやSquirrelやAngelScriptなどアプリケーションへの組み込み用途で
使われるプログラミング言語についてのスレッドです
まとめwiki(なにか質問する前に必ずみること!)
http://wikiwiki.jp/lua/
その他の参考URLは>2から
■前スレ
【Lua】組み込み系言語総合 その4【Squirrel】
http://hibari.2ch.net/test/read.cgi/tech/1301414458/
■過去スレ
その3 http://hibari.2ch.net/test/read.cgi/tech/1272643397/
その2 http://pc12.2ch.net/test/read.cgi/tech/1243210301/
その1 http://pc12.2ch.net/test/read.cgi/tech/1205208141/
プログラミング言語 Lua
その3 http://pc11.2ch.net/test/read.cgi/tech/1160799232/

2 :
□Lua
ttp://www.lua.org/ (本家)
ttp://lua-users.org/ (lua-users)
ttp://luaforge.net/ (LuaForge)
http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html(5.1マニュアル和訳)
Lua言語の紹介
http://staff.aist.go.jp/yutaka.ueno/lua/docsjp.html
入門Luaプログラミング
http://www.amazon.co.jp/dp/4797342722/
□Lua as an Effect File Format for OpenGL
http://prideout.net/blog/?p=1
□Squirrel
http://www.squirrel-lang.org/ (本家)
http://sourceforge.net/projects/squirrel/
http://sourceforge.net/projects/sqplus/ (SqPlus)
http://sourceforge.net/projects/squirrelsh/ (Squirrel Shell)
http://wikiwiki.jp/lua/?Squirrel_Lang%2Ftoc(wiki内2.1マニュアル和訳)
□AngelScript
http://www.angelcode.com/angelscript/
□Xtal(ゲーム向け。スタックを意識しなくていい?)
http://d.hatena.ne.jp/xtalco/
http://code.google.com/p/xtal-language/
http://blog.livedoor.jp/dankogai/archives/50836939.html
□elastiC
http://www.elasticworld.org/

3 :
■関連してるかもしれないスレ
Io Language
http://hibari.2ch.net/test/read.cgi/tech/1201100624/
2 part forth
http://pc11.2ch.net/test/read.cgi/tech/1073673931/
●●●●TCL/TKなら俺に聞け 2●●●●
http://pc11.2ch.net/test/read.cgi/tech/1177998764/
ECMAScript デス 3
http://pc11.2ch.net/test/read.cgi/tech/1190160481/
各種ライブラリ紹介スレ2(ゲ制作)
http://pc11.2ch.net/test/read.cgi/gamedev/1177886529/
Eclipse統合M32【Java/C++/Ruby/Python/Perl】
http://hibari.2ch.net/test/read.cgi/tech/1320318310/
「コンパイラ・スクリプトエンジン」相談室15
http://hibari.2ch.net/test/read.cgi/tech/1296214398/
Garbage Collection (GC)について語るスレ
http://pc11.2ch.net/test/read.cgi/tech/1141646850/

4 :
おひさー

5 :
firefox9 JS JITでの型推論
https://dev.mozilla.jp/2011/11/type-inference-to-firefox-beta/
実はUnityのJSのコンパイルでも使われてた。
http://forum.unity3d.com/threads/1117-Javascript-Version
http://www.cis.sojo-u.ac.jp/~izumi/Unity_Documentation_jp/Documentation/ScriptReference/index.Performance_Optimization.html
動的型を型推論で置き換えるのってschemeのstalinで聞いたことあったけど、
ほかの言語実装にも広がり続けるのかな。
30%upとか、LuaJITで未実装で実装されたら凄いことになりそうだけど、
今の速度なら実質同じような事できてるのかも。

6 :
AngelScript|Д`)<新スレ乙

7 :
>>6
前スレもそうだったけどAngelScriptの話題がなぜ定期的に挙がるんだww

8 :
あ、スマンLuaとSquirrelだけのスレかと思ったら組み込み系全般のスレだったか。
ネタで書き込んでたのかと思ってたw勘違いスマン

9 :
http://attractivechaos.github.com/plb/
js,lua,pyのJIT実装は世界が違ってきてる・・・

10 :
         \   l´⌒\⌒\ \\ \
           \ ヽ   )  )   \\ \\   
              (   \ \∩___∩ \\ 
           \   \  ⌒⌒| ノ      ヽ  \\      
              \ \   /  ●   ● ト、\ \\\ 
               \  Y |    ( _●_)  ミ\  \\\  
               \ / 彡、_  |∪| ノ   \  \\\
                 (____)―ヽノ' ヽ      ̄ ̄ ヽ\\
                                \,  j  l l .l }
                         Lua!   l (_ノノノノ


11 :
Added 'final' and 'override' keywords to the script language for better control over inheritance
http://angelscript.svn.sourceforge.net/viewvc/angelscript?view=rev&revision=1039

12 :
>>9
JIT実装ってJust in timeの略語だよね?
よく分からないんだけど必要最小限の構成にしたluaって認識でいいのかな。
余計な機能がない分早い、みたいな

13 :
>>12
本家の実装だとスクリプトをアーキテクチャに依存しないバイトコードに翻訳して実行するけど、LuaJITはネイティブマシンコードに翻訳実行するのが違い。

14 :
違いねえ

15 :
>>13
なるほど。つまり通常のLuaがJavaScriptだとするなら
JIT実装とはC言語みたいなもの、って認識でいいのかな。

16 :
LuaとかAngelScriptとかって何に使うの?
これらを用いるとどんな利点があるの?

17 :
一見してメリットが思い付かなきゃ
どのみちアンタにゃ必要ねえよ

18 :
心閉ざすなよww

19 :
アルゴリズムを外部に置けるってだけでもずいぶん便利だと思うけどね。
あとはスクリプトの処理を一時中断して実行ファイルの方へ処理を戻せるのとか。

20 :
コードを外部化するメリットもあるし、ちょっとした設定をXMLの代替のようにも活用できるし便利だよ。

21 :
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ


22 :
iLuaBoxなんてのがあるんだな

23 :
LuaでRPGつくる書籍立ち読みしてやってきた新参だが
今から勉強するなら
LuaとSquirrelどっちやれば報われるんだ?

24 :
>>23
メジャーなLuaにしとけ。

25 :
質問です。
luaで
011
012
013
というようなゼロパディングされた連番を生成するためにはどうしたらよいでしょうか。


26 :
string.format

27 :
>>661
論外。強者なら普通にやれる

28 :
すまんスレ間違えた

29 :
>>26
ありがとうございました。

30 :
リリースビルドした実行ファイルから文字列変換(..とtostring)を実行すると
テーブルがぶっ壊れるという現象に遭遇した

31 :
>>30
あんたのコードにバグがある。

32 :
>>30
論外。強者なら普通にやれる

33 :
javascriptをCに組み込んで使いたいんだけど、そういうライブラリ知りませんか?
商用利用だとライセンス的に問題があるのかな

34 :
SpiderMonkeyぐらいしか知らないなぁ
ただでさえ面倒なJSなのにCという縛りは辛いからお勧めはしない

35 :
Win環境ならJScriptもあるな
さらに面倒だけど

36 :
そうですか…
デザイナーに習得させるためのコストがゼロなのでJavascriptが良かったんだけど
別の言語探してみます

37 :
念のため聞くけど、C縛り?C++は駄目?

38 :
CouchDBとか、組み込みjsを使うプロダクトが増えているけど、
ECMAScriptの規格はブラウザ組み込み向けの機能だけしかない。
C/C++組み込み
http://code.google.com/intl/ja-JP/apis/v8/embed.html
https://developer.mozilla.org/en/SpiderMonkey
JVM http://www.mozilla.org/rhino/
C# http://javascriptdotnet.codeplex.com/ (去年で止まってる?他にあるかも)
Unity http://unity3d.com/support/documentation/ScriptReference/index.html
下の実践JSって本がサーバーサイドJSの本だから、独立言語として使うためのCommon APIのことが書いてあるけど、組み込みについては書いてないと思う。
http://dev.ariel-networks.com/wp/archives/501

39 :
>>37
条件が曖昧でしたね、C縛りではありません
CまたはC++で、Visual C++ でビルドします

40 :
>>39
それなら既に >>38 が出してくれてるけど、
・V8(修正BSDライセンス) chrome のJSエンジン
・SpiderMonkey(MPL/GPL/LGPL) Firefox のJSエンジン
・JavaScriptCore(修正BSDライセンス) SafariのJSエンジン (WebKitの一部)
とかお好きなものを使えばいいんじゃないかと
v8 が実装が独立してたライブラリになっててわりとお手頃。ためしに組んでみたことあるけど、
PC用のアプリなら全然問題なく組み込めるよ。ライセンスもBSD系なので商用でも気軽に使える。
SpiderMonkey は Mozilla (firefox) の一部として公開されてる関係で、どう切り出してきて
どう作業したらいいかぱっと見わかりづらくて大変だと思われる
SpiderMonkey を本当に「組み込み向け」に移植調整した Jsmn ってのもあって、
小さくまとまってるけどライセンスはMPLなのでちょっと使いづらい
JavascriptCore は良く知らない

41 :
luaでC++のSTLやBoostみたいなサブルーチン集みたいなのないの?

42 :
そういうこと言う人はC++を普通に使っといたほうが幸せだぞ

43 :
まあJavascript組み込むならV8が無難だろうね。
組み込むの簡単だし。

44 :
javascriptにもprototype.jsとかよく使うものまとめてものあるから
luaにもあるのかと思ったけどまだないってこと?

45 :
いろいろ自分で整備してる人はいるかもだけどメジャーなものは記憶にないな
lua だと、そういうのが必要になりそうな場合は直接 C/C++ でライブラリ書いた上で
呼び出しの口だけ作る、といった形にするのが一般的なのでニーズが無い。
誰かが良いものつくれば広まる可能性はあるかもね
単にバランスの問題でね。スクリプトレベルで高度なライブラリほしければ
python や ruby とか全部入りの高級なのを組み込んだほうがてっとりばやい。
lua はそういうのはいらないって分野でこそ使われてる

46 :
CPANやRubyForgeみたいなものはあるが、
http://luaforge.net/projects/
クオリティー担保してまとめたものがあるかは知らない。

47 :
ファイルシステム ネットワーク プロセス スレッド ウィンドウシステム
クオリティを担保するのは言語ではなくOSだ
強いて言うならばスレッドは言語の影響を受けやすい

48 :
とりあえずluaをスクリプティングに使いたいなら
luarocksでposixなりstdlibなりをインストールすればいいな

49 :
Luaは抽象度が高いし、アプリドメインの一番上で活用されるから、汎用ライブラリの出番は少ない。

50 :
>>1-49
論外。強者なら普通にやれる

51 :
stdlibってのがutility関数っぽい。
見た感じwebアプリケーション向けのライブラリが沢山あるのは、他のスクリプト言語みたいに単独で使うつもりなのかな。

52 :
stdlibってやつを軽く調べてみたけど、実用はなさそう。

53 :
LuaJITのGitリポジトリでは、共有ライブラリ化とPPC向けが実装済みで次(beta9)ぐらいに入るらしい。
http://luajit.org/sponsors.html#sponsorship_bc
共有ライブラリって名前通りに実行ファイルにしたり、LuaJITから呼んだり出来るのか?

54 :
bytecode をうめこんだネイティブなオブジェクトファイルを生成して、それを直接アプリとリンクしたり、
共有ライブラリのなかに入れたりできるようにする、とあるなかな
lua で書いたものが、JIT処理つきで Cベースのプログラムと直接リンク可能になるってことではないかと

55 :
探してもなかったので自分で便利関数書いてみた
公開してみようかと思ったらluaforgeが新規受付してないっぽい
今はどこに集積されてるんだ

56 :
codepadやここでいいんじゃね

57 :
パッケージのリポジトリならluarocksもあるけどこっちは受け付けてるのかな?
http://luarocks.org/en/Creating_a_rock
バージョン管理でソースあげれるところは結構いっぱいあるが、差は良く分からない。
http://repo.or.cz/w?a=project_list;t=lua
https://github.com/languages/Lua
https://bitbucket.org/repo/all?name=lua
http://code.google.com/hosting/search?q=label%3Alua&projectsearch=Search+projects

58 :
Lua 5.2.0 (rc2)
http://www.lua.org/work/

59 :
限定された機能しか使えない環境下でcronが使いたかった。探してもなかったので作った。
https://github.com/hiroro7/simple-lua-cron/tree/master

60 :
>>59
cron.luaでダメな理由は何だったの?

61 :
>>60
こんなものあったのですね。探し方がたりなかった。
ちなみにcron.luaだとcron job同士が遅延時間で絡む状態が作れなかったので、どっちにしても自分で作ってたかもしれないです。

62 :
>>53-54
ほんとだ、単にバイトコードをCの文字列にするだけみたい。

63 :
を、リスト処理関数まとめたんだ。

64 :
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ


65 :
luaってGCが頻繁に起こるようなプログラムすると遅くなるものですか?

66 :
そりゃそうだ

67 :
GCが頻繁に起こる状況だったら、Luaに限らずどんな言語でも重くなるんじゃないの?

68 :
そりゃそうだ

69 :
そらそうよ

70 :
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   

71 :
何で頻繁にクマーのAA貼られるの?

72 :
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >


73 :
なんかlist処理の部分しか興味もたれてないみたいなので
list処理を少し充実させました
ambもできたらいいんだけど無理っぽい

74 :
あんぶってコルーチンで綺麗に実装できたりするかな?

75 :
Lua5.1.libとLua51.libの違いってなんですか?

76 :
ambって何だ?と思ってググッたら、Schemeって言語の非決定性云々って出てきたけどこれの事?

77 :
>>75
たぶん、linuxなどのディストリビューションでは、パッケージのディレクトリだどに合わせたものが出来ている。
luaの公式配布物からmakeすると共有ライブラリを用意してなかったり結構違いがある。
ので、名前の命名規則の違いかも。

78 :
http://rosettacode.org/wiki/Amb#Lua
こんなの見つけたけどこれじゃ簡単すぎるか

79 :
>>77
なるほど。違いがわかって納得しました。
ありがとうございます。

80 :
         \   l´⌒\⌒\ \\ \
           \ ヽ   )  )   \\ \\   
              (   \ \∩___∩ \\ 
           \   \  ⌒⌒| ノ      ヽ  \\      
              \ \   /  ●   ● ト、\ \\\ 
               \  Y |    ( _●_)  ミ\  \\\  
               \ / 彡、_  |∪| ノ   \  \\\
                 (____)―ヽノ' ヽ      ̄ ̄ ヽ\\
                                \,  j  l l .l }
                         Lua!   l (_ノノノノ


81 :
-- Cから呼ばれる関数
function a()
for i=1, LOOP do b() end
end
-- lua内部から呼ばれる関数
function c()
for i=1, LOOP do
do_something()
coroutine.yield()
end
end
みたいなことをやっている時に、C側からこのスレッドを終了させたいとき
どうしればいいんだろう? lua_resume でCからLuaへ適当な値 CANCEL を返して
function a()
for i=1, LOOP do
if b() == CANCEL then return CANCEL end
end
end
fucntion c()
for i=1, LOOP do
do_something()
if coroutine.yield() == CANCEL then return CANCEL end
end
end

82 :
再投稿スマソ
-- Cから呼ばれる関数
function a()
 for i=1, LOOP do b() end
end
-- lua内部から呼ばれる関数
function c()
 for i=1, LOOP do
  do_something()
  coroutine.yield()
 end
end
みたいなことをやっている時に、C側からこのスレッドを終了させたいとき
どうしればいいんだろう? lua_resume でCからLuaへ適当な値 CANCEL を返して
function a()
 for i=1, LOOP do
  if b() == CANCEL then return CANCEL end
 end
end
fucntion c()
 for i=1, LOOP do
  do_something()
  if coroutine.yield() == CANCEL then return CANCEL end
 end
end
ってやるしかないのかな?

83 :
スレッドの残りの処理をやる必要は全く無いので、Cから強制終了できるならそうしたい。

84 :
Cから lua_resume で呼び出してるのなら、単にその呼び出しにつかってる lua_State を2度と呼び出さずに破棄するだけかと

85 :
lua_sethookでフック関数を登録しその関数の中でエラーを呼んであげればいいよ
lua.cを読むといい

86 :
ありがとう、まさに求めていた情報でした
ついでにココも参考にしました
http://stackoverflow.com/questions/862256/how-can-i-end-a-lua-thread-cleanly

87 :
Lua内でFinalizeが必要な処理(メモリの開放とか、ファイルのクローズとか)を
使われてない保証はあるの?

88 :
なぜ使う人が責任を持たない?
使わせない責任はないと思う。

89 :
使わせない責任…

90 :
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
               /     /
               (_ ⌒丶..
                | /ヽ }.
                  し  ))
                    ソ  トントン

91 :
逆に php を組み込みスクリプトとしてコールできるような cライブラリはそんざいするの?

92 :
phpならnginxつかっとけ。捗るぞ

93 :
ごめん…。誤爆しました……。
もし、PHPをバインディングしたいのなら、fasrCGIとか参考になるかもしれぬわ。

94 :
原理的にはできるだろうけど、組み込みが簡単にできるように調整されてるって話はきかないね > php
一応 php_embed.h / php_embed.c という解説皆無の組み込み用インターフェースなファイルはあるらしいよw

95 :
lua server pages使っとけよ

96 :
Lua 5.2.0 released
http://www.lua.org/ftp/lua-5.2.0.tar.gz

97 :
ひゃっほー!

98 :
記念していつもの
lua52.dll
ttp://ll.la/*j5u

99 :
Language Changes
Only Lua functions have environments.
C functions no longer have environments.
To manipulate the "environment" of a userdata (which is now called user value), use the new functions lua_getuservalue and lua_setuservalue.
Lua identifiers cannot use locale-dependent letters.
Doing a step or a full collection in the garbage collector does not restart the collector if it has been stopped.
Weak tables with weak keys now perform like ephemeron tables.
The tail return debug event was removed. Tail calls generate a special new event, tail call instead of return.
Equality between function values has changed.
Modules are not expected to set global variables anymore.


100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
Mathematicaプログラミング 質問箱 その1 (335)
monazilla Part 6 (631)
【バグ管理】 BTS使ってる?【追跡】 3 (974)
Win32API質問箱 Build112 (698)
CLDC+MIDP+携帯電話用Javaスレッド part 9 (928)
テストしにくいコードをテストする方法教えて下さい (398)
--log9.info------------------
チャットモンチー (235)
バンドスコア (216)
ハードコアやりたい (533)
【桜高軽音部】けいおん!!スレ in楽作板 その70 (836)
【ゼマティス】 Zemaitis 2 【ゼマイティス】 (894)
【YAMAHA】Broad Bass【BB】 (376)
【Gibson】ES-335 Part28【ギブソン】 (909)
【アフィ違反】 きになるおもちゃ2 【アンチ専用】 (295)
◆国産◆バッカス Part.3◆DEVISER◆ (914)
Marshall 36段目 (997)
【YAMAHAアコギ専門】 アコースティックマインド 12 (448)
【マーチン】Martinギター総合スレ Part17【マーティン】 (592)
【盛者必衰】 ヤフオク審議会75 【基地墓場】 (611)
B'zのスーパーギタリスト松本スレ (346)
【真剣に】ギターが弾きたい【音楽知識皆無】 (237)
〜金なし・腕なし〜安いセミアコ愛好者の集い (737)
--log55.com------------------
Switchの神ゲーキャプテン翼のプレイ動画が公開される!
【switchモンハン確定?】ドラガリのモンハンコラボが本気出し過ぎな件
SONYの息の根を止めるために任天堂がすべきこと
■■速報@ゲーハー板 ver.52711■■
【悲報】FF7Rさん、コング予約悲惨すぎて累計50万すら危うい模様
【悲報】ゴンじろー、テコ入れで路線変更か?
任豚ってFF7Rやりたくないの?
豚「人形劇ガーーー!ー!」←これめちゃ簡単に論破てきるんだが