トップページtech
981コメント297KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2011/03/30(水) 01:00:58.93
LuaやSquirrelやAngelScriptなどアプリケーションへの組み込み用途で
使われるプログラミング言語についてのスレッドです
まとめwiki(なにか質問する前に必ずみること!)
http://wikiwiki.jp/lua/

その他の参考URLは>2から

■前スレ
【Lua】組み込み系言語総合 その3【Squirrel】
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 http://pc8.2ch.net/test/read.cgi/tech/1063711237/
その1 http://pc5.2ch.net/tech/kako/1034/10341/1034182349.html
0409デフォルトの名無しさん2011/07/09(土) 18:31:11.10
__index以外の要素もあったらめんどくさいよね、それって
0410デフォルトの名無しさん2011/07/09(土) 22:08:36.28
>>387
local truthy_false = {}
function truthy(x) return x==false and truthy_false or x end
function falsy(x) if x==truthy_false then return false else return x end end

return falsy( truthy(EX1[k]) or EX2[k] )
04114072011/07/09(土) 23:10:07.52
>>408
ありがとうございます。
論理演算で関数つなげれるって便利ですね。
0412デフォルトの名無しさん2011/07/10(日) 00:04:46.61
>>409
基底に垂れ流すだけなら
inherit_mt[k] = base_mt[k]
で参照してあげるだけなので
rideして何をするか次第じゃないかな
0413デフォルトの名無しさん2011/07/10(日) 00:44:27.70
クラスとか継承に向いてないよねLuaって
0414デフォルトの名無しさん2011/07/10(日) 01:58:26.32
プロトタイプベースの継承は、苦手ですか?
クラスベースの継承を使いたいなら、クロージャでクラス実装したライブラリ探すとか?
0415デフォルトの名無しさん2011/07/10(日) 02:01:47.22
http://lua-users.org/wiki/ObjectOrientedProgramming
04163952011/07/10(日) 02:17:52.79
>>406
それを保証するのは難しいね。好きで続けられる分にはいいんだけど。
もし飽きたら重荷を背負い続けることになるし、放棄したら無責任と思われそう。
俺自身がこれを使い続けるのが、動機的にもモチベ的にも一番いい手だろうなぁ。

ちょいと調べてみたが、LuaもPythonも意外と歴史があるんだね。
Lua 18歳
Python 20歳
Squirrel 8歳
0417デフォルトの名無しさん2011/07/10(日) 06:39:10.12
>>413
君がLuaに向いてないんだと
0418デフォルトの名無しさん2011/07/10(日) 07:03:34.78
>>415
javascriptみたいで簡単じゃん
0419デフォルトの名無しさん2011/07/10(日) 07:46:27.83
そもそもプロトタイプベースの継承が、継承には適してないし
ルアにはメタテーブルの問題があるからよけいに継承しにくい
そして厄介なことにクラスの実現方法が何パターンもある
結局のところ基底クラスをソースコードレベルでよく読んで
それから派生クラスのファクトリを書かなければならない
カプセル化や抽象化の概念に喧嘩売ってる
継承に向いてる言語だなんて考えるほうがオカシイ
0420デフォルトの名無しさん2011/07/10(日) 09:47:48.35
>>419
クラスの実現方法が何パターンもあるのは事実であって意見ではない
意見を喧嘩させることはできるが事実は喧嘩しない
0421デフォルトの名無しさん2011/07/10(日) 09:51:17.40
>>420
意味不明
0422デフォルトの名無しさん2011/07/10(日) 10:15:05.57
おまえは5分以内で分からないとキレるのか
0423デフォルトの名無しさん2011/07/10(日) 10:20:34.52
jsと同じルールに落ち着くんじゃね?
0424デフォルトの名無しさん2011/07/10(日) 10:51:32.42
>>420
喧嘩じゃなく選択の問題だろう。
0425デフォルトの名無しさん2011/07/10(日) 14:14:14.23
AngelScript|Д`)<何か面倒くさい事になってるなオイ
0426デフォルトの名無しさん2011/07/11(月) 00:38:50.74
Luaは.と:の違いが視覚的に分かりにくい時点でもうね
チェック機構は組めるけど
そんなところで型チェックとか本末転倒だろ?
要するにだな
もっと開発が活発になるようSquirrel使って下さいお願いします
0427デフォルトの名無しさん2011/07/11(月) 02:11:45.05
> 視覚的に分かりにくい
それはフォントやエディタの色分けに問題があるってだけでLuaと関係なくね?
0428デフォルトの名無しさん2011/07/11(月) 03:01:06.41
直感的って言ったほうが正しいんじゃね
0429デフォルトの名無しさん2011/07/11(月) 07:11:11.68
delphiの := を思い出した。
慣れればどーってこと無いさ。
0430デフォルトの名無しさん2011/07/11(月) 08:23:23.12
フォントやエディタの色分けで.と:の区別がついたところで
どちらを使うのが正しいのかは見ただけでは分からない

コーディング規約で縛るとかで対策してる?
0431デフォルトの名無しさん2011/07/11(月) 08:34:43.52
create = function()
local x = 0
local set = function(a) x = a end
local get = function() return x end
return { set = set, get = get }
end

local obj = create()

obj.set(10)
print(obj.get())

これで統一するのが一番分かりやすいし安全
0432デフォルトの名無しさん2011/07/11(月) 09:35:08.06
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

0433デフォルトの名無しさん2011/07/11(月) 22:54:42.33
AngelScript|Д`)<型チェック?任せておけ
0434デフォルトの名無しさん2011/07/11(月) 23:01:55.70
AngelScriptは早くJIT動くようにしてよね
0435デフォルトの名無しさん2011/07/12(火) 07:48:31.56
スクリプトがアップデートされる度に本体のソフトが完成しない ことに。
Luaにしとけばよかった。
0436デフォルトの名無しさん2011/07/12(火) 08:55:51.83
それ何てd言語?
0437デフォルトの名無しさん2011/07/12(火) 09:21:30.45
Luaって速度で負けたらあっという間に廃れそう
0438デフォルトの名無しさん2011/07/12(火) 10:57:54.81
速度以外だとポータブルなところがメリットかなぁ。
Pythonあたりを組み込むよりかなり手間が少ない。
0439デフォルトの名無しさん2011/07/12(火) 11:26:26.75
PythonがLuaに速度で勝てる要素なんて今後も皆無だよ
用途に応じてベストの物を使うのがおりこうさんだ
0440デフォルトの名無しさん2011/07/12(火) 23:32:37.91
もうLuaでの資産ができちゃってるから、気軽に移行できない。
0441デフォルトの名無しさん2011/07/13(水) 08:31:14.48
Squirrel 久々使ってみようと思ったらバージョンが 3 になってたのでwktkしたのに、
バインド系(sqbind, SqPlus, Squadd, Sqrqt)が軒並み更新とまってるじゃん…

そんなに人気ないの?
つーか今注目のバインダってないのん?age
0442>>4412011/07/13(水) 09:17:39.14
これ使えって感じですかね…

http://squirrel-lang.org/forums/default.aspx?g=posts&m=4561
0443>>4412011/07/13(水) 09:28:01.02
間違ったw

http://squirrel-lang.org/forums/default.aspx?g=posts&m=4184
0444デフォルトの名無しさん2011/07/13(水) 21:54:38.45
>>441
AngelScript|Д`)ジー
0445デフォルトの名無しさん2011/07/13(水) 23:38:16.63
>>444
AngelScript好きだなおいw
0446デフォルトの名無しさん2011/07/14(木) 07:57:29.00
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

0447デフォルトの名無しさん2011/07/14(木) 14:45:55.85
いい加減2バイト圏の文字列に対応したバージョンアップして欲しいな → Lua
0448デフォルトの名無しさん2011/07/14(木) 17:27:30.87
UTFは対応してるだろ?
0449デフォルトの名無しさん2011/07/14(木) 21:48:35.67
>>445
結構使いやすいと思うんだけどなぁ。

>>447
SquirrelがUTF16、AngelScriptがUTF8に対応してるんだっけか?
0450デフォルトの名無しさん2011/07/15(金) 04:23:11.68
>>448
え?そうなの?
0451デフォルトの名無しさん2011/07/15(金) 07:36:11.45
>>450
というか対応って何?
所詮文字列も配列の一種じゃん。
0452デフォルトの名無しさん2011/07/15(金) 11:22:25.51
ソースの対応じゃなくて、入出力の文字コードのこったろ?
0453デフォルトの名無しさん2011/07/15(金) 12:35:46.40
LuaでUTF8を使う場合
ttp://blog.livedoor.jp/ractis5m/archives/51567803.html

SJISを使いたい場合は [[ ]] で
くくるとエスケープシーケンス無効リテラルになるので、ダメ文字問題もおきない。
""でもSJISが使いたい場合はソースにパッチが必要になるが。
0454デフォルトの名無しさん2011/07/15(金) 14:47:47.23
それは対応「させてる」って話であって「してる」じゃないんでね?
0455デフォルトの名無しさん2011/07/15(金) 19:41:29.44
語りえないことについて、対応が対応がと呪文を唱えるのは
かっこわるい
0456デフォルトの名無しさん2011/07/15(金) 19:43:09.05
IronLuaってないの?
0457デフォルトの名無しさん2011/07/15(金) 19:43:51.81
どのみちLuaが文字コード対応なんて贅肉を取り入れることはないから安心しなょ
0458デフォルトの名無しさん2011/07/15(金) 22:09:31.08
>>456
LuaInterfaceとNuaってのがある
0459デフォルトの名無しさん2011/07/16(土) 01:51:44.64
Lua 5.2.0 beta
http://www.lua.org/work/
ただしLuaJIT2.0は5.1のままいくらしい(一部は5.2から取り込み)。
世の中、5.1/5.2/LuaJIT2.0対応のライブラリばかりでいて欲しい。
0460デフォルトの名無しさん2011/07/16(土) 07:24:24.54
>>455
どこの翻訳機使ってるんだよ
0461デフォルトの名無しさん2011/07/16(土) 08:01:14.49
要するに

print([[ハロワ]])

みたいな代替手段を使ったり、ソース弄ったりコンパイルし直したりせずに

print("ハロワ")

でSJISに代表されるような文字コードでも化けずに表示できるようにならんかなって事だろ?
0462デフォルトの名無しさん2011/07/16(土) 08:56:50.75
Lua側で文字を弄らず出力せず、組み込んだアプリ側でやればいいってお話?
0463デフォルトの名無しさん2011/07/16(土) 11:47:49.69
対応対応いってるやつは素人
0464デフォルトの名無しさん2011/07/16(土) 11:54:32.46
まあソースにわざわざSJIS埋め込むメリットないし。
0465デフォルトの名無しさん2011/07/16(土) 18:01:32.28
そーっすね
0466デフォルトの名無しさん2011/07/16(土) 19:10:58.12
しょーゆーこと
0467デフォルトの名無しさん2011/07/16(土) 23:02:38.71
ここ参考にしてやっとこさ__index〜__callまでキー全部入りのメタテーブル設定したクラスを継承する関数作れた。
サンクスコ。
0468デフォルトの名無しさん2011/07/16(土) 23:05:44.86
では次はオーバーロードとオーバーライドを指定して継承できるように改良して下さい
0469デフォルトの名無しさん2011/07/17(日) 01:25:45.43
□ Falcon
http://www.falconpl.org/
http://en.wikipedia.org/wiki/Falcon_(programming_language)

□ Dao
http://www.daovm.net/
http://en.wikipedia.org/wiki/User:Phoolimin/Dao_(programming_language)

使ってる人います?
0470デフォルトの名無しさん2011/07/17(日) 01:59:07.87
clang-interpreterを動かしてみた
http://d.hatena.ne.jp/ohtorii/20110716/1310783800

LLVMでC++interpreterが動くみたいだね
プログラムに組み込めるようにならんかな
0471デフォルトの名無しさん2011/07/17(日) 02:05:07.42
ctor/dtor って constructor と destructor か

repl の無い言語は組み込み言語としては魅力を感じないな
0472デフォルトの名無しさん2011/07/17(日) 09:25:56.99
         \   l´⌒\⌒\ \\ \
           \ ヽ   )  )   \\ \\   
              (   \ \∩___∩ \\ 
           \   \  ⌒⌒| ノ      ヽ  \\      
              \ \   /  ●   ● ト、\ \\\ 
               \  Y |    ( _●_)  ミ\  \\\  
               \ / 彡、_  |∪| ノ   \  \\\
                 (____)―ヽノ' ヽ      ̄ ̄ ヽ\\
                                \,  j  l l .l }
                         Lua!   l (_ノノノノ

0473デフォルトの名無しさん2011/07/17(日) 10:43:52.15
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
0474デフォルトの名無しさん2011/07/17(日) 10:46:02.74
ASのほうがカッコイイな
0475デフォルトの名無しさん2011/07/17(日) 13:05:32.48
羽が生えてるから遅いのか
0476デフォルトの名無しさん2011/07/17(日) 13:13:00.55
AngelScriptって名前が恥ずかしくて使えない。厨二っぽい
0477デフォルトの名無しさん2011/07/17(日) 13:26:13.54
禿同
0478デフォルトの名無しさん2011/07/18(月) 10:37:44.02
GodScriptとかHolyScriptとかJusticeScriptとかLegendScriptとかのほうがかっこいい
0479デフォルトの名無しさん2011/07/18(月) 10:53:35.69
ImagineBreakerScript
0480デフォルトの名無しさん2011/07/18(月) 13:10:25.80
AngelScript良さそうじゃん!
型チェックしてるれるの?
0481デフォルトの名無しさん2011/07/18(月) 22:32:45.45
型チェックって動的型付けなら数字か文字かリストかくらいでしょ?
いちいち宣言で型を書かなきゃいけない面倒くささと比べれば
型のチェックなんて自分でやればいいんじゃねの?
0482デフォルトの名無しさん2011/07/18(月) 22:38:33.21
リストとかテーブルを一つの型として扱って
目的を達成できるならそうかもね
0483デフォルトの名無しさん2011/07/18(月) 22:45:38.12
カプセル化がしっかりしてればいちいち型チェックなんてしなくていいんだけどな
C++で言うと
void hoge::fuga() { assert(typeid(this) == typeid(hoge())); ・・・ }
なんてするアホは居ない
でもluaだと
selfが期待した型じゃないなんてことはよくある(意図的にしたり、.と:のタイプミスだったり)
ほかの引数も同様だ
宣言を書く手間と
もっとガチガチに強固なクラスを作る機能を提供してくれてもいいじゃないか
0484デフォルトの名無しさん2011/07/18(月) 22:49:26.22
>>481
チェックコード書く手間と宣言書く手間って大差なくね?
0485デフォルトの名無しさん2011/07/18(月) 22:53:19.87
>>480
静的型付け言語だからね。
他のスクリプト言語と比べて、デフォルトで連想配列とコルーチンオブジェクトがないのが難点かな?
0486デフォルトの名無しさん2011/07/19(火) 21:38:23.25
そんなにピキピキガチガチでクラスとか型チェックしたいならC++使ってろ。
0487デフォルトの名無しさん2011/07/19(火) 21:42:31.15
Lua厨の敗北宣言である
0488デフォルトの名無しさん2011/07/19(火) 21:46:08.57
むなしい勝利宣言であった
0489デフォルトの名無しさん2011/07/20(水) 00:16:55.37
文字コードも型チェックも完成するまでにバージョンがいくつ上がるかわからんが
できれば最弱バージョンから最強バージョンに一回だけアップデートしたい
0490デフォルトの名無しさん2011/07/20(水) 00:38:38.71
>>489
バージョンアップしたら以前のスクリプトが使えなくなった、ってそんなに多いかな?
0491デフォルトの名無しさん2011/07/20(水) 01:05:22.16
実行時のタイプチェックなら、erlangみたいな関数型っぽく頑張れればいいんだけどね。なんかないのかな?
http://lua-users.org/wiki/LuaTypeChecking
http://metalua.luaforge.net/

0492デフォルトの名無しさん2011/07/20(水) 06:20:15.30
Lua の coroutine.create() ってのは重い処理なのでしょうか?
それから coroutine.resume() で関数抜けた後(coroutine.status == "dead"な状態)に
そのコルーチンオブジェクト?は再利用は可能でしょうか?
0493デフォルトの名無しさん2011/07/20(水) 08:06:07.04
わりと重い処理だとされている。つーか「コルーチン 再利用」とかでググれ
0494デフォルトの名無しさん2011/07/20(水) 10:22:12.90
テーブルでFSM作ったほうが速いよ
出来ることの差なんてないし
0495デフォルトの名無しさん2011/07/20(水) 10:30:24.24
>>493
dクス。luabindでの例とかありますね。
しかしluaでほとんど処理させてるんで導入したくないでござる。

>>494
状態の数が多い処理だと記述は確かに楽なんですけどね。
それもアリかもですね。

海外のコードみてても普通にcreateして変数上書きしてたりしますね。
速度関係無いなら別にこれでいいかな。
何か簡単ならやっとこうと思ったんですけどね。
0496デフォルトの名無しさん2011/07/20(水) 10:38:12.38
使い回すコード書いてベンチとったけどあんまり速くならんかった記憶があるが、実装適当だったせいかも
「スクリプト言語による〜」でもわざわざ言及されてたし、差が出るかどうか計った人いたら教えて欲しい
0497デフォルトの名無しさん2011/07/20(水) 10:43:11.13
ゲームとかシビアな要求がある場合だけでいいんじゃん?所詮スクリプトだし
0498デフォルトの名無しさん2011/07/20(水) 11:50:48.25
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
0499デフォルトの名無しさん2011/07/20(水) 17:43:18.24
               . -―- .     
             /       ヽ
          //         ',     
            | { _____  |       
        (⌒ヽ7´        ``ヒニ¨ヽ
        ヽ、..二二二二二二二. -r‐''′     Lua!!
        /´ 〉'">、、,,.ィ二¨' {.  ヽ     _ _     
         `r、| ゙._(9,)Y´_(9_l′ )  (  , -'′ `¨¨´ ̄`ヽ、
         {(,| `'''7、,. 、 ⌒  |/ニY {               \
           ヾ|   ^'^ ′-、 ,ノr')リ  ,ゝ、ー`――-'- ∠,_  ノ
           |   「匸匸匚| '"|ィ'( (,ノ,r'゙へ. ̄ ̄,二ニ、゙}了
    , ヘー‐- 、 l  | /^''⌒|  | | ,ゝ )、,>(_9,`!i!}i!ィ_9,) |人
  -‐ノ .ヘー‐-ィ ヽ  !‐}__,..ノ  || /-‐ヽ|   -イ,__,.>‐  ハ }
 ''"//ヽー、  ノヽ∧ `ー一'´ / |′ 丿!  , -===- 、  }くー- ..._
  //^\  ヾ-、 :| ハ   ̄ / ノ |.  { {ハ.  V'二'二ソ  ノ| |    `ヽ
,ノ   ヽ,_ ヽノヽ_)ノ:l 'ーー<.  /  |.  ヽヽヽ._ `二¨´ /ノ ノ
/    <^_,.イ `r‐'゙ :::ヽ  \ `丶、  |、   \\'ー--‐''"//
\___,/|  !  ::::::l、  \  \| \   \ヽ   / ノ
0500デフォルトの名無しさん2011/07/20(水) 20:10:21.26
全くLua厨のキモさは天性だな。( ´,_ゝ`)プッ
0501デフォルトの名無しさん2011/07/20(水) 20:18:14.49
アンヘルスクリプト最強
0502デフォルトの名無しさん2011/07/20(水) 20:35:30.86
シナリオのあるゲームならLUAの有用性も分かるんだけど、組み込み家電で活用できる用途ってあるかな?
0503デフォルトの名無しさん2011/07/20(水) 21:19:29.14
>組み込み家電
そんな餌で(ry
0504デフォルトの名無しさん2011/07/20(水) 21:32:43.91
Pornってやつが組み込み家電でも使えなかったっけ?
0505デフォルトの名無しさん2011/07/20(水) 22:07:03.41
確かAcceedが組み込み家電向けの言語だったと思う。
0506デフォルトの名無しさん2011/07/21(木) 00:27:27.81
>>503
いや、すまん。組み込み家電っつーか、組み込み機器でも良いんだけど。
今のところヤマハのルーターぐらいしか応用例知らなくて。
0507デフォルトの名無しさん2011/07/21(木) 08:52:59.70
         \   l´⌒\⌒\ \\ \
           \ ヽ   )  )   \\ \\   
              (   \ \∩___∩ \\ 
           \   \  ⌒⌒| ノ      ヽ  \\      
              \ \   /  ●   ● ト、\ \\\ 
               \  Y |    ( _●_)  ミ\  \\\  
               \ / 彡、_  |∪| ノ   \  \\\
                 (____)―ヽノ' ヽ      ̄ ̄ ヽ\\
                                \,  j  l l .l }
                         Lua!   l (_ノノノノ

0508デフォルトの名無しさん2011/07/21(木) 20:39:48.55
Acceedいいな。まさにLuaとAngelScriptの良いとこ取りだね。
■ このスレッドは過去ログ倉庫に格納されています