[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 03/27 01:12 / Filesize : 247 KB / Number-of Response : 962
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 09:11:41 ]
LuaやSquirrelなどアプリケーションへの組み込み用途で
使われるプログラミング言語についてのスレッドです
まとめwiki(なにか質問する前に必ずみること!)
wikiwiki.jp/lua/

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

■前スレ
【Lua】組み込み系言語総合【Squirrel】
pc12.2ch.net/test/read.cgi/tech/1205208141/

■過去スレ
その3 pc11.2ch.net/test/read.cgi/tech/1160799232/
その2 pc8.2ch.net/test/read.cgi/tech/1063711237/
その1 pc5.2ch.net/tech/kako/1034/10341/1034182349.html

912 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 02:47:27 ]
なんかロベルトさんがLua5.2のグローバルとか環境まわりの仕様変え始めたような。lua-l参照。

913 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 14:12:12 ]
バージョンアップは無能レベルに到達するまで止まらない
でも5.2はまだリリースされてないから止めようと思えば止められるけど

914 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 04:05:04 ]
イエルサリムスキー教授の翻訳本にuserdataのメタテーブルはLuaからCを出しぬいて手出しすることはできないから安全、みたいなことが書いてあるんだけど

ud = create_ud()
getmetatable(ud).__gc = nil

のようにごくごく普通にアクセスできるように思えるんですが・・・これは本の間違いじゃないですかね?

915 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 08:33:03 ]
>>914
保守的GCって知ってるか
解放すべきかどうか疑わしいときは、解放しないほうが安全

916 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 11:12:19 ]
>>915
今ググって知りました
しかし、保守的GCの話は>>914の話とは関係ないように思えるのですが、実は何か関係があるんでしょうか?

917 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 11:20:30 ]
Squirrelに興味があるやつは見ておけ。
よく考えられてるサンプルだと思う。
ruriko.denpa.org/201002c.html#23

918 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 18:44:23 ]
>>914
userdataはsetmetatableはできないがgetmetatableはできる。
よってその例のようなアクセスはできる。
禁止したいなら__metatableを適切な値に設定するといい。

919 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 19:47:36 ]
安全とは禁止することと見つけたり・・・

920 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 11:27:59 ]
coroutineの利点がいまいちわかんね
state:update()の戦略の方がコスト低いしわかりやすいと思うんだが



921 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 12:48:09 ]
利点がわかんないなら
君には不要って事なんだよ
無理して使う必要ない

922 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 15:01:14 ]
自分の理解している範囲の外に利点があることだって普通にあると思うけど。

923 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 15:08:48 ]
複数回に分けて動かさないといけない処理を継続的な処理として実装可能になる。
結果として同期処理の不要な軽量スレッド的な実装ができるようになる。

924 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 15:46:16 ]
コルーチンは、ゲームで「アイテムを取った直後に一定時間白くなる」という処理を書くときとか便利だな。


925 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 16:04:54 ]
>>921
むちゃくちゃな論理展開わろた^^

>>922
ですよね

>>923
複数回に渡って処理を分割するのってstateパターンでも普通にできることだと思う
コルーチンじゃないとどうしてもできない、あるいは明らかに優れてるっていう要素が自分には見えないんすよね

926 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 16:07:46 ]
Stateパターンが「普通」?
Stateパターンのような回りくどいことをしないといけないのがおかしいとは思わない?

927 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 16:23:51 ]
>>925
どうしてもできないから、で使ってる人はいないよ。
機能的にすぐれてる部分は全く無い。ぶっちゃけコルーチンも、
全状態保持を言語側が担ってくれてるだけのおおがかりな state だから。

State パターンで何個もあったり、さらには個数が変動したりするオブジェクトの複雑な
挙動のからみあいとか、考えたくもないけど、コルーチンだとわりとすっきり書ける。

最初に仕様にあわせて組んでいくだけなら State でもいいんだけど、
後から見直す時とか、細かい修正に対応する時とか、コルーチンのが圧倒的に読みやすいし記述も楽。
遷移図をそのまま if や while やら使って書き起こすだけだけになるからね

コルーチン切り替えのコストは、固定で組まれた State 切り替えよりかなり大きくなってしまうけど、
表記の楽さがそれを上回る、と判断した人が使うもの。あらゆる状態遷移を頭の中だけでさくさくくめてしまえるので、
State のが簡単だよって言う人は知り合いにもいるけど、それ、凡人には無理ですからー


928 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 16:36:19 ]
そもそもオブジェクト指向におけるデザインパターンというのは、
言語側でサポートしきれていないニーズを無理やり克服するためのバッドノウハウのようなものだ。

929 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 18:44:20 ]
>>925
例えばFizzBuzzの通常版が既に完成していて
function fizzbuzz(n, print) for i = 1, n do ... print("FizzBuzz") ... end

後になってState版が必要になったときに使う。
co = coroutine.create(function() fizzbuzz(100, coroutine.yield) end)

930 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 22:20:25 ]
コルーチンの便利さは、記述が簡単になるって点だな。



931 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 22:34:16 ]
coroutine.create(function (a, b) showMessageDialog(a, b, "Hello! World!") showMessageDialog(a, b "byebye")end) とか
lua-users.org/lists/lua-l/2009-11/msg00214.html
>Run Lua in a separate thread and somehow stop it if it takes too long. とか

おつかい行って来てよ、と丸投げしまう簡便さ
でもちゃんと帰ってこれるのかな・・・的不安

932 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 08:18:34 ]
>>930
コルーチンは記述が簡単なだけに非同期対応が面倒に感じるんだよな
>>924みたいな単純な処理ですら、アイテムを連続で取るとキャラが白くならなかったり、
直後にゲームクリアしてもキャラが白いままだったり、直後にキャラが変身するとハングしたりとか
Stateパターンならちゃんと回避できる人がコルーチンだと回避し忘れるのはありがちなこと

933 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 14:56:36 ]
(何言ってんだコイツという眼差し)

934 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 23:06:08 ]
>>932
他の人はコードで例を示しているんだから、君もコルーチンよりStateパターンが明らからに優れているという例をコードで示したら?
そうでないと、ただの知ったか君と区別つかないよ

935 名前:デフォルトの名無しさん [2010/03/08(月) 23:32:20 ]
>920の「state:update()の戦略」が良く判らん……トランザクションのこと?

936 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 00:01:37 ]
Stateパターンを理解してりゃ、そこは判らない文脈じゃないと思うけど。

937 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 00:07:39 ]
switch(state) { case WALK: … case WAIT: … case ATTACK: … }
をちょっと格好付けただけ
コルーチンと比較されるような使い方の場合は特にメリットもない

938 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 00:47:56 ]
>>936
ハイハイ、逃げないでコードで示してね
それともやっぱり、知ったか君だったのw

939 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 01:02:11 ]
そもそもコルーチンと組み込み系言語って何か関係あるの?

940 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 01:15:03 ]
このスレで話題になることが多い lua と squirrel が搭載している、以上のものではないかな
他何が搭載してたっけ



941 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 01:20:31 ]
よくわかんないけど状態遷移するたびにStateインスタンスを破棄、生成してれば
切り替わるタイミングが明確になって後片付けとかが確実になるとかそういうことなんじゃないの

942 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 02:34:51 ]
ちなみに型が厳密な言語でコルーチンを扱うと複雑になるか、制約が大きくなる
どのみちオブジェクト指向が好きならJavaとかC#とかで正解なんだよ

943 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 02:43:45 ]
小規模だとコルーチンのがキモチイイけど、遷移が複雑になってくると機械的に遷移図からコードに直せるステートのほうがいいかなって感じる


944 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 03:03:14 ]
画面遷移処理とか、ADV的な演出の逐次制御とかはコルーチンがいいかんじにはまるね

945 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 09:40:22 ]
コルーチン=呼び出すと区切りの部分まで実行してくれる関数オブジェクト
みたいな感じで理解してるな。
Luaの場合、coroutine.resumeで呼び出すと、次のcoroutine.yieldの部分まで実行してくれる。

946 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 12:51:46 ]
10回繰り返し、という処理を、途中でイベントを受け取ったりしながらでも、
for (i = 0; i < 10; ++i) ですらっと書けるのがコルーチン。

947 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 15:59:05 ]
cでcoroutineを自作しようと思ったら難しかったでござる。

948 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 16:26:47 ]
奇怪で制約の多いマクロを組むか
sjljでコンテキストを書き換えるかの二択だな

949 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 17:11:31 ]
その話題までいくともう組み込み言語まったく関係ないな。

950 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 20:01:13 ]
マルチスレッドで済む処理まで凝るーチン



951 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 13:54:54 ]
ルアってなんであんなテーブルマンセーなの?

952 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 14:17:35 ]
シンプルだからじゃない?
このテーブルひとつで普通の配列も連想配列も
オブジェクトまでも扱えるから...
でも無理やりオブジェクト指向マネるくらいなら
ほかのスクリプト言語を検討するよ

953 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 15:10:04 ]
Luaは初心者向けに見えて
実は玄人向け

954 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 17:48:04 ]
違うな
M向け
マニアとマゾ

955 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 18:37:58 ]
AngelScript|Д`)<呼ばれたので飛んできました 
GameMonkey|Д`)<俺もー
CRIScript|Д`)<俺もー

956 名前:デフォルトの名無しさん [2010/03/10(水) 18:51:20 ]
         \   l´⌒\⌒\ \\ \
           \ ヽ   )  )   \\ \\   
              (   \ \∩___∩ \\ 
           \   \  ⌒⌒| ノ      ヽ  \\      
              \ \   /  ●   ● ト、\ \\\ 
               \  Y |    ( _●_)  ミ\  \\\  
               \ / 彡、_  |∪| ノ   \  \\\
                 (____)―ヽノ' ヽ      ̄ ̄ ヽ\\
                                \,  j  l l .l }
                         Lua!   l (_ノノノノ



957 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 18:29:44 ]
過疎

958 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 18:55:01 ]
コルーチンのAAください

959 名前:デフォルトの名無しさん [2010/03/14(日) 19:23:00 ]
●)(●):::\ .\ ::::::::::::::::::::::::::::::::::::::::::::::::
(__人__)./ ̄ ̄ ̄\::::::::::::::::::::::  / ̄ ̄ ̄\ コルーチン
::` ⌒´./  ⌒  ⌒ ヽ:::::::::::::::  /  ⌒  ⌒ ヽ
:::::  ./   (●)(●) |::::::::::::  /  ( ●)(●) |
\  |    (__ / ̄ ̄ ̄\  |    (__人__) }  コルーチン
  \/、.     /  ⌒  ⌒ ヽ/、..    ` ⌒´  .ヽ
    \    /   (●)(●) |             |
  \  \  |     (__ / ̄ ̄ ̄\.      | /
   |\   \/、.     /  ⌒  ⌒ ヽ──┐ |丿 コルーチン 
  | .\  \    /   (●)(●) |──┤ | 
  |  |\  \   |    (__人__) }──┤ |
  |  |  \  \/、.    ` ⌒´ ヽ\



960 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 20:37:44 ]
   /ヽ /ヽ
  ':' ゙''"  `':,
  ミ   ・ω・ ;,
 :; . っ     ,つLua
  `:;      ,;'
   `( /'"`∪




961 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 20:50:30 ]
lldebugみたいな感じのデバッガって、他のスクリプト言語にあるんだろうか?
JavaやPythonとかだと余裕でありそうだけど、SquirrelとかAngelScriptとかにはなさそうだ…






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<247KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef