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


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

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



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

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

■過去スレ
その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

937 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 23:11:47 ]
へーそれいいね

938 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 03:14:16 ]
それって、取説に載せずにゲーム中に表示してしまうってこと?
そんなんでもいいのか

939 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 12:14:35 ]
ゲーム起動時のデモで、Luaのサイトにある、青い丸に「Lua」って書かれた画像を出すのはOKなんだろうか。

940 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 12:27:51 ]
ライセンスのページには必須じゃないけどいれてくれるとうれしいな的なかんじでかかれてるね>ロゴ

941 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 17:08:17 ]
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >



942 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 11:17:04 ]
今組み込み言語を制作中で、Cから言語へのインターフェイスを考えてるところなんだけど、
どういうのがいいのか悩んでる。
二つ案があって、ひとつはLuaと同じくスタックを介する方法。
もうひとつは、オブジェクトハンドルを経由してアクセスする方法で、

Handle globalhash, funcobj, symbol;
globalhash = getglobal( state );
symbol = intern( state, "globalfunc" );
funcobj = getfield( globalhash, symbol );

arg_pushinteger( funcobj, 10 );
call( funcobj );

handle_drop( funcobj );
handle_drop( symbol );
handle_drop( globalhash );

という感じになる。ちょっと長いけど、グローバルハッシュから特定シンボ
ルの値を得るというのはありそうな処理なので、実際には専用のAPIを用意する。
ただこちらのほうはスタックに比べて、
・ハンドル開放処理を忘れるとメモリリーク
・遅い
という問題がある。

前者はスタック操作でも同じ(スタックトップを戻し忘れるのがそれにあたる)だけど、
後者は頻繁に行う処理な分、結構致命的。

ただ後者の方法のほうがスタックの状態を覚えなくてよい分、直感的といえば直感的
なんだよな。
両方用意したほうがいいかな?


943 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 11:31:29 ]
とおもったけど関数呼び出しをハンドルに対して行うのは非常に無駄が多いな…
やっぱりスタック操作かOTL

944 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 22:13:00 ]
ごめん、何がいいたいかサッパリだわw

自前で実装するんだった、luabindとかxtalみたいにバインダがあると直感的で楽だと思うけど。
C++じゃなくて純粋なC言語でインターフェース作りたいの?

945 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 22:47:39 ]
>>942
LuaではluaL_refとluaL_unrefでハンドルを使えるよ



946 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 14:25:22 ]
>>945
ああ、そういやそうだった。やっぱり両方用意するのが得策か。
Pythonではハンドルしか扱えないようだったから、どうかなーと思ったんだけど。
ありがd

947 名前:デフォルトの名無しさん [2009/05/06(水) 17:02:58 ]
Luaって非OOの動的型付言語ですけど、
AWKやBASICと何が違うんですか?

なんか、単なる先祖帰りのような・・・

Cとの連携が楽とか、
そういう違いは分かるんですけど。
AWKやBASICを拡張しただけでも代わり映えしないんじゃないですか?

948 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 17:11:36 ]
>>947
ttp://www.lua.org/about.html

ここに全部書いてあるから読んでこい。納得しなければそれはそれで

949 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 21:01:08 ]
>>947
>Luaって非OOの動的型付言語ですけど、
Luaはオブジェクト指向言語として十分な機能は備えてる。

言語のパワーなんて口で説明するよりも実際に触ったほうが理解がはやいと思う。
もし触った上での疑問なら、もうちょっと詳細に違和感を説明したほうがいいんじゃないかな。

自分がLuaを使ってるのは単純明快、

Luaでドメインを書くコスト+C++でその他を書くコスト < C++ですべて書くコスト

という不等式が(自分の場合)成り立つから。
お前さんもAWKやBASICがC++より生産性が高いと思ってて、かつそれが組み込み可能
ならば、それを使えばいいんじゃないの?

950 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 23:26:00 ]
|Д゚)ジー
|Д゚)ノ<AngelScriptもよろしく!
|ミサッ

951 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 23:46:11 ]
単なる先祖返りなわけないだろ

ちゃんと計算されてる。アングルとか

952 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 00:47:42 ]
最近、Squirrelはポロポロと新しいバインダが出回るな。

953 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 01:49:18 ]
>>952
そうなん?みてみたいからポインタよろ

954 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 02:11:32 ]
>>953
事件は2ちゃんねるで起こってるんじゃない。公式フォーラムで起こってるんだ!

955 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 03:14:51 ]
ttp://squirrel-lang.org/forums/thread/3198.aspx

これか。コードが整理されてて sqplus よりはるかにわかりやすいですな
getter/setter の実装がちょっとトリッキーなのが要注意なかんじ。



956 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 03:17:58 ]
ttp://squirrel-lang.org/forums/thread/3129.aspx

すぐ下にもう一つあった^^; なるほどぽろぽろだな

957 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 23:57:59 ]
scratイイ!luaから乗り換えようかな

958 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 09:14:24 ]

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


959 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 12:32:10 ]
lua_tointeger の unsgined int バージョンが欲しいんだけど、
strtoul(lua_tostring(L, -1), NULL, 0) みたいにするしかないの?

960 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 12:36:11 ]
(unsigned int)lua_tonumber(L,-1) じゃだめなん?


961 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 17:20:34 ]
C/C++とバインドするときの話なら別の論となるが、
スクリプト上のプログラミングならunsigned整数など考えないで済むコードを書いた方が楽だぞ。

962 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 21:01:47 ]
色コードが書いてあるテキストファイルを読み込みたいんだけど、
"0xAARRGGBB" の形式で書いてあるから lua_tointeger だと読めないんだよね

そうか lua_tonumber は double だから 32ビット符号なしでもちゃんと変換できるのかな?
試してみます

963 名前:962 mailto:sage [2009/05/20(水) 21:34:17 ]
テキストファイルというか lua でかいた設定ファイルという感じね


964 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 07:26:38 ]
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ



965 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 07:42:45 ]
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Luaまピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ




966 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 13:39:45 ]
Luaのコメントが//か#だったら最高だったんだが...
-- だと構文ハイライトされないエディタで見たときにコードに埋もれてよく見えん。

967 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 14:21:38 ]
そういう人は squirrel にうつると精神衛生的には楽になるよ!

968 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 15:29:42 ]
Luaの向上心のなさは最低レベルだから
宗教論争の火種になりそうな「改良」は、いくら提案してもむだだと思う。

969 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 22:07:43 ]
-- は伝統的な構文だからもっと賢いエディタを使えばよろし

970 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:01:14 ]
>>968
向上心のなさ、というか後方互換性が最大限に考慮されている気がする。
だから、商用プロダクトにも安心して採用できるんだろうけど。

最近、web周りでRubyとかRailsとかも使っているんだが
バージョン上がると全然違う挙動とか、書き方換わったりするのがザラだったりするんだが、これが結構キツイ
書籍が出ても、すぐ陳腐化しちゃったり…書籍の日本語訳が出たころには、次のかなり変わったバージョンがなんて
(Ruby 1.8はいいんだけど、Railsは本当にヒドイw
しかも次期バージョンで他のフレームワークと統合されるのが決定しててちょオマ…)

971 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:49:52 ]
//でコメントか。
AngelScriptの出番だな!

972 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:57:55 ]
いやさ、エディタにあわせてライブラリ諸々変更なんて
誰も本気で言わないから

973 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 00:29:20 ]
つーかそんな程度もカスタマイズできないエディタを持っていることと
そんな程度も我慢できない根性でLuaを選んだ自分の浅はかさを呪うがいい

974 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 09:56:26 ]
我慢しないで、カスタマイズができる「普通の」テキストエディタを使ってください

975 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 12:52:22 ]
自分は普通にエディタ使うけど、客が使ってくれるとは限らないじゃない。
メモ帳で開けないから、設定ファイルの拡張子は xml じゃなくて txt にしてくれと言われたのに。



976 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 12:58:22 ]
メモ帳で開くような設定ファイルを XML にする時点で仕様バグといってもいい。まじで。

977 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 13:02:46 ]
それは拡張子xmlをメモ帳に関連付けるだけで良かったんじゃないか

978 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 13:33:11 ]
細かく設定したいから、可能な限り設定項目多くしてくれといわれたので、
ini形式よりもxmlのほうが楽だったんだよね。

メモ帳に関連付けるだけで終わりだし、そもそもxmlエディタいれればそれで終わりなのに。

979 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 14:35:22 ]
xmlなんかは1行目に文字コードセットが定義されているから、
下手にメモ帳で開いて保存すると、文字コード変わっちゃうしメンドクサイことになりますよね
あと、xmlはMSからエディタ出てるけど微妙に使いづらいのが難点

個人的に、スクリプト言語で使うオススメの設定フォーマットはJSONだと思う

980 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 14:37:08 ]
素人さんにさわらせる場合は CSV 以上のものは使っちゃダメだってのが経験則

981 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 14:41:20 ]
>>980
同感ですな
xmlは素人には無理
フォーマット決めうちなtxtか、ini程度でokな気がする

982 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 16:29:30 ]
質問。
C からlua の関数を呼ぶ -> 呼ばれた関数は、lua 内の別の関数 A そのものを返す -> C 側でそれを保持して、必要なときに A を呼びだす

てことをやりたいんだけど、どうすればいいですか?
lua の関数オブジェクトやみたいなのをスタックから取得する関数が見当たらないのですが。

lua_getglobal(L, "getfunc");
lua_call(L, 0, 1);
myfunc = スタック[-1]からlua関数を取得

... しばらくたってから ...

myfunc をスタックにpush
lua_call(...)

ということがやりたいです。



983 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 17:09:08 ]
>>982
Lua はオブジェクトを直接C側で参照する機構を持たない。よって単純には出来ない。

一般的には luaL_ref を使ってオブジェクトのリファレンス(絶対重ならないint値)をとって、
それをつかってレジストリテーブルにつっこんでおいて、必要になったらそのリファレンスを
つかってレジストリテーブルから引っ張り出してくる、という手法がとられる。

そんなややこしいのはいやじゃって人は、リファレンスを C側で保持できる squirrel オススメ

984 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 17:58:18 ]
いまのプロジェクトにはC縛りがあるのでC++なsqurrelはダメなんです。
luaL_ref が一番素直そうなのでそれでやってみます。どうもありがとう。

985 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 00:58:12 ]
SquirrelってC++だっけ?
bindは確かにC++だが、直叩きだったらCの範疇でいけたような・・・



986 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 01:07:48 ]
squirrel のソース自体は c++ だよ。
class でなくて struct なのは趣味かね。

ただ、インターフェース的には全部C合わせなので、普通にリンクして使える。
例外とかも全く使ってないから問題になるところはどこにもない。
プロジェクトが C縛りってのがいまどきだと意味不明だねぇ






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

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

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