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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
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
2デフォルトの名無しさん:2011/03/30(水) 01:01:25.89
■関連してるかもしれないスレ
Io Language
http://pc11.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統合M31【Java/C++/Ruby/Python/Perl】
http://hibari.2ch.net/test/read.cgi/tech/1295886572/
「コンパイラ・スクリプトエンジン」相談室15
http://hibari.2ch.net/test/read.cgi/tech/1296214398/
Garbage Collection (GC)について語るスレ
http://pc11.2ch.net/test/read.cgi/tech/1141646850/
3デフォルトの名無しさん:2011/03/30(水) 01:01:46.40
■参考URL
□Lua
ttp://www.lua.org/ (本家)
ttp://lua-users.org/ (lua-users)
ttp://luaforge.net/ (LuaForge)
ttp://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html(5.1マニュアル和訳)
Lua言語の紹介
ttp://staff.aist.go.jp/yutaka.ueno/lua/docsjp.html
入門Luaプログラミング
ttp://www.amazon.co.jp/dp/4797342722/

□Lua as an Effect File Format for OpenGL
ttp://prideout.net/blog/?p=1

□Squirrel
ttp://www.squirrel-lang.org/ (本家)
ttp://sourceforge.net/projects/squirrel/
ttp://sourceforge.net/projects/sqplus/ (SqPlus)
ttp://sourceforge.net/projects/squirrelsh/ (Squirrel Shell)
ttp://wikiwiki.jp/lua/?Squirrel_Lang%2Ftoc(wiki内2.1マニュアル和訳)

□AngelScript
ttp://www.angelcode.com/angelscript/

□Xtal(ゲーム向け。スタックを意識しなくていい?)
ttp://d.hatena.ne.jp/xtalco/
ttp://code.google.com/p/xtal-language/
ttp://blog.livedoor.jp/dankogai/archives/50836939.html

□elastiC
ttp://www.elasticworld.org/
4デフォルトの名無しさん:2011/03/30(水) 20:57:01.71
5デフォルトの名無しさん:2011/03/30(水) 23:21:49.59
スレ立て乙
6デフォルトの名無しさん:2011/04/01(金) 22:15:31.63
前スレに、コルーチンの呼び出しは自分でやらないとダメって書いてあったけど
AngelScriptのcreateCoRoutineって、戻り値ないよね
どうやって実行タイミング合わせるの?
7デフォルトの名無しさん:2011/04/02(土) 23:18:22.11
AddOnのContextMgrを使ってる場合の事かな?
あれでコルーチンする場合は、呼び出し元のスクリプトが終了した後にスクリプト内で呼び出された関数を別Contextで呼び出すってやってたはずなので、
元スクリプトの処理終了後に内部で呼び出した関数を実行する感じになってたはず。

イメージ的には、元スクリプトを呼び出すと、同時にコルーチンの分も処理するって感じ?
Luaとかのコルーチンとはちょっと違うかな。
8デフォルトの名無しさん:2011/04/04(月) 13:07:52.13
Luaで

A = {X = 10}
B = {X = A.X + 10}

というテーブルが二つあって
A.X = A.X + 1とやれば
B.Xもポインタというか遅延評価みたいな形で
勝手に1増えるようにはできないでしょうか?
9デフォルトの名無しさん:2011/04/04(月) 18:15:26.81
>>8
A = {X = 10}
B = {}
setmetatable(B,{
__index = function(t,k)
if k=="X" then return A.X+10 end
end,
__newindex = function(t,k,v)
rawset(t,k,v)
if k=="X" then A.X = t[k] - 10 end
end})

print(A.X,B.X) -- 10 20
A.X = A.X + 1
print(A.X,B.X) -- 11 21
B.X = B.X + 1
print(A.X,B.X) -- 12 22
108:2011/04/04(月) 21:02:21.75
>>9
ありがとうございます。
CとかRubyとかオブジェクト指向も関数型も色々な言語触ったけど、
このメタテーブルっていうやつは難しいですね…
サイト見るとメソッドみたなものって書いてるけど使い勝手が違う感じですし。
関数の : と . の呼び出しの違いもなかなか理解できないし、
簡単な言語だと思ってたけど意外と難しいLua…orz
11デフォルトの名無しさん:2011/04/04(月) 23:20:23.21
Luaを作った人は宣言的な言語が嫌いなんだと思う。
だから、宣言が好きな人には難しい。
12デフォルトの名無しさん:2011/04/06(水) 11:20:39.58
親クラスから派生し、
小クラスの関数内から
親クラスの同名関数を呼ぶには
どうしたらいいでしょうか?

C++でいう、仮想関数内から、
親の関数を呼びたい感じです。
13デフォルトの名無しさん:2011/04/06(水) 11:45:31.80
squirrel の話なら 単純に親クラス名::メソッド名() でOK。コンテキストが bindenv() されてないメソッドはそのまま this で動作する
14デフォルトの名無しさん:2011/04/06(水) 11:54:01.30
>>12
言語が何かわからないとどうしようもないだが。
ここはLua専用スレじゃないからね。

しかし、かのアイマス2もLua採用してたのかー。
これはこれからもLua全盛が続きそうだなー。
15デフォルトの名無しさん:2011/04/06(水) 12:02:24.77
>>13
>>14
すみません、Luaです。
宜しくお願いします
16デフォルトの名無しさん:2011/04/06(水) 12:06:40.56
lua にはクラスは無いので問題が意味をなさないよ。疑似クラスとして使ってるならどういった構造で記述してるか書かないと誰も答えられない
17デフォルトの名無しさん:2011/04/06(水) 14:39:41.83
お勉強でゲームプログラミングやってんだけどCとLuaのバランスがわからん
Luaのほうが大分大きくなる(というかこれからなりそうな)んだけど普通こんなモンなのかな
18デフォルトの名無しさん:2011/04/06(水) 14:46:21.79
描画処理とかサウンド処理とかの基本機能>C
ゲームのロジックとか>とりあえずLuaで書いて作業。パフォーマンスが気になるところは仕様FIXしてから機能をCに置き換えていく

ってやりかたにおちつく人が多いんじゃないかな
196:2011/04/06(水) 22:37:54.89
>>7
やっぱり良く分からない・・・
作成したコルーチンが実行されるのは、作成元のスクリプトの呼び出しが終わって、
次にContextMgrのExecuteScriptsが呼ばれたときみたい
キャラクターごとにコルーチンを1個作ってアニメーションさせようと思ったんだけど、
こんな使い方はできない?
20デフォルトの名無しさん:2011/04/07(木) 01:03:38.89
Luaで配列の長さを求める # 演算子を使おうとすると
unexpected symbol near `#'
と怒られてしまいます。
もしかしてバージョンが古いのでしょうか?
Lua 5.0.3です。
21デフォルトの名無しさん:2011/04/07(木) 01:12:03.00
#演算子は5.1からだった気がする
22デフォルトの名無しさん:2011/04/07(木) 01:13:15.12
23デフォルトの名無しさん:2011/04/07(木) 01:33:35.81
なぜ長さで#なのだろう
24デフォルトの名無しさん:2011/04/07(木) 01:39:03.26
>>21,22
ありがとう、ありがとう、普通に#使ってる例が多かったのでまさかと思って
しまいました。
さて、5.1入れるかな。。。
25デフォルトの名無しさん:2011/04/07(木) 09:08:27.00
>>23
the number of ってことじゃね?
シェルスクリプトとかでも使ってるし

26デフォルトの名無しさん:2011/04/07(木) 09:25:34.94
>>23
http://www.weblio.jp/content/%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E3%83%9E%E3%83%BC%E3%82%AF

ハッシュマークとは、一般的に、番号を記す際に用いられる記号である。番号記号と呼ばれることが多い。
ハッシュマークは番号の前に置かれ、続く数字が番号であることを示す。

だってよ
27デフォルトの名無しさん:2011/04/07(木) 18:29:33.65
Lua5.1以降でMBC対応したのってありませんよね?
28デフォルトの名無しさん:2011/04/07(木) 23:19:07.27
>キャラクターごとにコルーチンを1個作ってアニメーションさせようと思ったんだけど、 
>こんな使い方はできない? 
できるよ。
ただ、AngelScriptのサンプルのCoroutineだとちょっと面倒かも。
あれはコルーチンというよりスレッドに近いし。
Luaみたいにコルーチンオブジェクトがあって、そいつをメソッド呼び出しとかできると楽なんだけどね。

Coroutine c;
c.SetFunc(〜);

c.Execute();

って感じで、一時停止したコルーチンの続きを実行させるときにメソッド呼び出すようにすれば楽。
29デフォルトの名無しさん:2011/04/08(金) 07:04:36.65
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

30デフォルトの名無しさん:2011/04/09(土) 22:50:49.63
>>28
うーむ
じゃあ、Luaみたいな使い方が出来るようにアドオンを改造してみるかな
回答ありがとう
31デフォルトの名無しさん:2011/04/13(水) 20:12:24.88
LuaでGifファイルの編集がしたいのでバイナリで読み込んで処理したいのすが
io.openのモードの後ろにbを付ければバイナリで開けることはわかったんですが、
戻り値が文字列なのでどうすれば『先頭の何ビットを取る』などのバイナリ操作ができるのかがわかりません。
解説しているサイトが見つからないのでそういったバイナリ操作がまとめられたサイトなどがあれば教えて欲しいです。
32デフォルトの名無しさん:2011/04/13(水) 21:04:45.40
そうか、苦手なのか
http://fallabs.com/mikio/tech/promenade.cgi?id=100
補うべく、pack、unpack、split、strstr、codecなどのユーティリティも搭載しているので、簡単なデータ処理なら一切他のライブラリに頼ることなく実現できる。

こういう機能のある、拡張ライブラリ使うなら
lpackというライブラリはどうかな。
http://d.hatena.ne.jp/eggman/touch/20080207/1202423141

使わないとこうなる。
http://d.hatena.ne.jp/eggman/touch/20080205/1202251800

ネット関連で使ってるひとが少ないから、細かいtips記事にしている人も少ないな。
33デフォルトの名無しさん:2011/04/13(水) 21:53:59.11
>>32
説明不足ですみません…。それも見たのでが配布ソフトのスクリプト言語で
Luaを使っているので、Cで書かれたライブラリは読み込めない状態です…。

バイナリ計算のand,or,notなどは自作できましたので、できなくて困っているのは
『文字列の何ビット目から何ビット目までを整数(ビット列)で切り出す』という操作です。
34デフォルトの名無しさん:2011/04/13(水) 22:32:59.26
>>33
一旦テーブルにつめちゃったほうが扱いやすいんじゃないの?

function Hoge(fname)
local t = {}
local f = io.open(fname,"rb")
if not f then return nil end
local data = f:read("*a")
for b in string.gmatch(data,".") do
table.insert(t,string.byte(b))
end
f:close()
return t
end

t = Hoge("hoge.bin")
35デフォルトの名無しさん:2011/04/14(木) 09:07:51.56
>>34
文字コードを取り出すのはstring.byteでしたか。
これに気づいていませんでした。ありがとうございます。
36デフォルトの名無しさん:2011/04/14(木) 09:51:35.56
ウラシマで申し訳ないが、そういやGIFのライセンス問題って決着ついたんだっけ?
37デフォルトの名無しさん:2011/04/14(木) 09:56:30.70
あの特許はもう期限切れのはず
38デフォルトの名無しさん:2011/04/14(木) 12:00:05.59
ですな http://www.itmedia.co.jp/news/articles/0406/21/news021.html
Unisys の 1985 年の LZW についての特許は失効
39デフォルトの名無しさん:2011/04/14(木) 14:22:04.13
luaでディレクトリのファイル一覧を取得したいのですが、
os.execute("dir") > Dir.txt
でプロンプトの内容をテキストファイルに保存してファイルを開く方法しか思いつきませんでした。
直接プログラムで読み込む方法はないでしょうか?
40デフォルトの名無しさん:2011/04/14(木) 14:41:38.59
プログラムで読みこむライブラリを C でつくって組み込めば良いだけでは

無い機能はさっくり作るって発想ができない人は lua は不幸になるだけなので使わないほうがいいですよ
41デフォルトの名無しさん:2011/04/14(木) 14:50:34.37
>>33じゃねえの
4239:2011/04/14(木) 15:08:49.74
33ですよ。スレタイからしてC開発者限定で場違いですねサーセン。

>>40
その不幸になる言語でスクリプト組まざるおえないユーザーですみません。
43デフォルトの名無しさん:2011/04/14(木) 15:26:14.08
自分が不幸になるのは完全にluaのせいだといわんばかりだなw


>>40 はちょっと頭の切り替えしたほうがいいんじゃない?
くらいのことを言ってると思うんだけど
44デフォルトの名無しさん:2011/04/14(木) 15:39:24.39
その配布ソフトとやらがC実装ライブラリのインポートを任意で禁止してるならご愁傷様としか...
本当にrequireやpackage.loadlibに該当するAPIを用意してないのか怪しいもんだけどねえ
45デフォルトの名無しさん:2011/04/15(金) 01:40:03.82
ROのホムンクルスAIとか?
46デフォルトの名無しさん:2011/04/15(金) 09:35:51.52
>>43
Cが使えない環境って言うんだから
しょうがないさ。
>>33
組み込まれた物を使う側じゃなくて、
組み込みを用意して使う側がおおいから
名前に、33付けてた方がイイかもね。
47デフォルトの名無しさん:2011/04/15(金) 11:53:58.80
その配布ソフトってなんなんだろう。実は拡張の口がある、とかあったりしないかね
48デフォルトの名無しさん:2011/04/15(金) 14:23:04.94
本気で助けが必要なら某ソフトとかかかないで、ちゃんと名前出すべきなのかもねぇ
49デフォルトの名無しさん:2011/04/15(金) 16:15:11.42
Linuxと同じ
カーネルしか作らない有能な怠け者は反感を買う
50デフォルトの名無しさん:2011/04/15(金) 19:12:56.70
ファイルの一覧をあらかじめテキストファイルにでも書いておくしかないねぇ。
51デフォルトの名無しさん:2011/04/16(土) 05:16:14.98
一般のツールで拡張の口が閉じられてるってのはちょっと考えにくいんだよなぁ。そんな腐ったツールは窓から投げ捨てろ

内製ツールなら、こんなところで聞くよりも組み込んだプログラマにまず文句を言いに言ったほうが早い

あとはゲームとかの類での制限つき環境……だけどその状況でファイル一覧とったり、GIFパースしたりをする理由が謎
52デフォルトの名無しさん:2011/04/16(土) 11:00:01.89
WindowsならDLLインジェクションとかで
横取りすればいけるんじゃね
ウィルス扱いされるかもしらんけど
53デフォルトの名無しさん:2011/04/17(日) 20:53:28.99
>>52
ウィルスと勘違いする対策ソフトはいくつかあるみたい。
DirectInputの初期化とかでも「ウィルスだ!」とか勘違いするし。
54デフォルトの名無しさん:2011/04/19(火) 23:16:39.95
lua_Stateをクラスのメンバにし、staticメンバ関数をlua_registerで登録しています。
この関数にthisを渡したい場合、どのように書くのが定石ですか?
55デフォルトの名無しさん:2011/04/19(火) 23:41:13.94
lua_setuserdataとか?
56デフォルトの名無しさん:2011/04/20(水) 05:10:49.47
>>54
それだけの情報だと状況次第としか言いようがないな
57デフォルトの名無しさん:2011/04/20(水) 23:29:46.82
>>39
io.popenとか
58デフォルトの名無しさん:2011/04/21(木) 00:10:52.42
AngelScript、デフォルト引数が実装されるのか
59デフォルトの名無しさん:2011/04/21(木) 02:49:01.91
デフォルト引数ってなんか使い道あるの?
60デフォルトの名無しさん:2011/04/21(木) 07:54:36.60
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

61デフォルトの名無しさん:2011/04/21(木) 21:59:26.06
>>59
普段はほとんど変更しないけど、時々異なるフラグを設定するような関数とかに使うと便利、ってぐらいじゃないかね。
必須ってわけじゃないけど。
62デフォルトの名無しさん:2011/04/21(木) 22:26:50.81
>>59
C++にだってデフォルト引数はあるだろ。
改めて質問するようなことなのかねえ。
63デフォルトの名無しさん:2011/04/22(金) 00:06:46.93
C++の場合はデフォルト引数よりもオーバーロードの方がお勧め。
本当はより汎用的なパターンマッチングが良いんだけど、C++だと面倒だからなあ。
64デフォルトの名無しさん:2011/04/22(金) 00:08:09.01
関数をラップすればいいだけだから要らないと思ったんだよ
65デフォルトの名無しさん:2011/04/22(金) 00:44:39.45
デフォルト引数は使う必要がない人も多いかと。
DirectXとか使ってると、特殊な場合以外はフラグはデフォでOKなのが多いから便利だよ。
66デフォルトの名無しさん:2011/04/24(日) 20:59:44.12
Tclと比べたメリット・デメリットは何ですか?
組み入れではなく単体で使うならGUIの構築が楽なTclに軍配があがりそうですが、
それ以外にはどんなことがありますでしょうか?
67デフォルトの名無しさん:2011/04/24(日) 22:27:02.59
>>66
何と比べてるの?
主語が抜けてる。
68デフォルトの名無しさん:2011/04/24(日) 22:41:21.52
>>67
失礼しました。
主語はLuaです。
Luaスレと勘違いしてたんです。
69デフォルトの名無しさん:2011/04/25(月) 00:22:41.13
>>68
オレ自身はLuaユーザーじゃないので大雑把な話しかできないけど、
C関数をスクリプト中で使いやすいのはどちらも同じ。

Tclは原則文字列ベースでしか処理できないけど
Luaは数値、文字列、リスト、テーブルが使える。

Tclはスクリプトエンジンでもかなり遅いほうだけど、
LuaはブラウザのJavascriptに迫る速度。

Tclは言語構文としてはオブジェクト指向対応で
止まってるようなものだけど、
LuaはJIT対応やコルーチン対応など、
流行の技術もある程度押さえられている。

こんなところかな。
70デフォルトの名無しさん:2011/04/25(月) 01:45:57.13
>>66
Tclはウィジェット形式のアプリには向くがゲームには向かない。GTKとかWindowsAPI(DirectX不使用)とかでゲームを作ってるのと同じ。
71デフォルトの名無しさん:2011/04/25(月) 01:49:32.65
あと、メインがどっちかっていう問題もあるな。組み込みスクリプトは簡単に組み込める。Tclを組み込みスクリプトとして使えるようにすれば物好きが使うんでないかな
72デフォルトの名無しさん:2011/04/25(月) 01:59:22.82
tcl は最初から組み込み用だべ
半導体関係のツールまわりでは事実上の標準
73デフォルトの名無しさん:2011/04/25(月) 07:31:00.03
組み込みはTclも簡単にできる
言語として構文の拡張性が高いのもTcl
構文の拡張性が高けりゃ良いってもんじゃないと教えてくれるのもTcl
74デフォルトの名無しさん:2011/04/25(月) 22:05:57.35
現在では、Tclがその本来の使い方から離れて、組み込み言語ではなく
Tkとセットで独立した汎用言語として利用されることが普通になっています。
将来的にはそれと同じことがLuaにも起こらないのでしょうか?
75デフォルトの名無しさん:2011/04/25(月) 22:17:58.91
Lua始めようと思ってます
blue = Color.new(0, 0, 255)


screen:print(200, 130, "Hello World!", blue)
screen.flip()

while true do
screen.waitVblankStart()

end
がPSPで動作しますが
while true do
screen.waitVblankStart()
の部分は何を表していますか?
76デフォルトの名無しさん:2011/04/25(月) 22:23:44.70
言語と何ら関係ない組み込み先の話だからそっちのスレ行け
77デフォルトの名無しさん:2011/04/26(火) 00:02:33.07
みんなLuaのバインダは何を使ってる?それとも使ってない?
78デフォルトの名無しさん:2011/04/26(火) 00:40:13.32
コンセプトさんとバインダさんは都市伝説だよね
79デフォルトの名無しさん:2011/04/26(火) 00:54:38.36
>>74
むしろ tk とセットに使うのは tcl 以外の言語で
純粋な tcl 用途以外は壊滅気味じゃね?
80デフォルトの名無しさん:2011/04/26(火) 08:15:36.66
>>79
EDAでは普通に使われてるけど。
tkも含めて。
小物ツール作るだけなら異常に生産性高いから
もう少し見直されても良い気がするんだがなぁ。
81デフォルトの名無しさん:2011/04/26(火) 10:30:17.19
proc megaaa {} {
.l configure -text {目があぁぁぁ!}
}

pack [label .l -text {Tclは滅びん。何度でも蘇るさ。}]
pack [button .b -text {バルス} -command megaaa}
82デフォルトの名無しさん:2011/04/26(火) 18:56:55.89
>>81
最後の閉じ括弧が}じゃなくて]でないの?
じゃないと動かん。
83デフォルトの名無しさん:2011/04/26(火) 22:51:02.91
>>80
C++で開発を依頼したら、とんでもなく高額の見積りを出されたことがある。
理由を尋ねたら、優秀なC++プログラマは少ないうえ、開発にもそれなりの期間を要するのでその程度になるとのこと。
あきれて物も言えなかった。
それで、仕方なくTcl/Tkで内製したよ。

簡易言語でチャチャッと開発・・っていうのは良くないという意見もあるけど、
昨今のphpの勢いなどを見ると、コストダウンのためならTcl/Tk的な安易言語の積極活用もありだと思う。
84デフォルトの名無しさん:2011/04/26(火) 23:12:45.53
何を依頼したのかにもよるとは思うけど、GUI伴うアプリだとどうしてもかなり高くなると思われ > C++
85デフォルトの名無しさん:2011/04/27(水) 01:38:31.06
C++でGUIは無いわな
見積もりは正しい
86デフォルトの名無しさん:2011/04/27(水) 05:13:35.43
小物ツールにC++はコンビニにレース用の車で行くような印象
87デフォルトの名無しさん:2011/04/27(水) 06:58:34.99
>>83
言語指定しなきゃいいジャン
88デフォルトの名無しさん:2011/04/27(水) 12:23:46.17
>優秀なC++プログラマは少ないうえ、開発にもそれなりの期間を要するのでその程度になるとのこと。
間違ったこと言ってないと思うが、C++を指定したのが間違ってるんじゃ。
89デフォルトの名無しさん:2011/04/28(木) 07:02:19.90
言語指定ということはソースさせくれれば後は用無しだよってことを意味する。
高くせざるを得ない。
90デフォルトの名無しさん:2011/04/28(木) 19:12:13.54
テーブル同士の連結はどのように書けばいいのでしょうか?
連結とは例えば、
t1 = {"aaa", "bbb"}
t2 = {"ccc", "ddd", "eee"} から
{"aaa", "bbb", "ccc", "ddd", "eee"} を作る場合です。
91デフォルトの名無しさん:2011/04/28(木) 22:52:55.70
coronaってフレームワークでLua使ってるんだけど、スマホ固有の話もここでいいのかな、板違いかな?
92デフォルトの名無しさん:2011/04/29(金) 08:13:48.86
>>90
t1 = {"aaa", "bbb"}
t2 = {"ccc", "ddd", "eee"}
t3 = {unpack(t1)} --shallow copy
table.foreach(t2, function(k,v) table.insert(t3, v) end)
93デフォルトの名無しさん:2011/04/29(金) 10:30:02.86
ひたちなか市のルネサステクノロジは震災の影響により大幅に減産か・・・
当座は少々高くてもARMを使ってしのぐしかないのか
94デフォルトの名無しさん:2011/04/29(金) 13:57:38.81
>>91
内容次第だね
http://hibari.2ch.net/test/read.cgi/tech/1302963535/
↑のスレなどで誘導してもらうといいよ
95デフォルトの名無しさん:2011/04/30(土) 02:53:42.27
luabind使ったらビルド時間が長くなった。
どのバインダも一長一短だな
96デフォルトの名無しさん:2011/05/01(日) 02:00:31.59
luaJITさんが、 ARM(ARMv5+, ARM9E+, soft-float)にやってきた
97デフォルトの名無しさん:2011/05/01(日) 12:31:36.26
Luaでエラーが発生したり、
coroutine.yield したりしてスクリプトが中断状態にあるときに、
その時点で実行中のスクリプトファイル名(または関数名)と行番号
を得るにはどうすればいいんですか?
98デフォルトの名無しさん:2011/05/01(日) 12:38:54.26
>>97
lua_Debug
99デフォルトの名無しさん:2011/05/01(日) 22:19:09.86
>>92
返信遅くなって申し訳ないです。
参考になりました。ありがとうございました。
100デフォルトの名無しさん:2011/05/01(日) 23:16:56.19
>>96
露骨にAndroidを狙ってくる・・・いやらしい・・・
ん?スマフォはARMv5TEとv7か
101デフォルトの名無しさん:2011/05/01(日) 23:52:10.31
LuaJITのCPU移植は、スポンサー(=商業的に有益な会社)がいたらやるスタンスなので、
今回も、スマートフォン的に中途半端なので、組み込み目的だと思う。

QUALCOMM Inc. has sponsored an ARM port of LuaJIT 2.0 in January 2011.
http://luajit.org/sponsors.html
102デフォルトの名無しさん:2011/05/01(日) 23:55:46.89
汎用性の全くないPPC e500v2への移植と違って、今回は、Androidでも動くから有難いけどね。
103デフォルトの名無しさん:2011/05/02(月) 00:06:56.38
まだJIT無しなのか。
JIT無しで、x1-4
JIT付けると算術系などさらに一部が、x4-16
http://luajit.org/performance_arm.html
104デフォルトの名無しさん:2011/05/02(月) 03:21:20.06
wxlua、更新されへんねー。
http://wxlua.sourceforge.net/
105デフォルトの名無しさん:2011/05/05(木) 12:22:52.16
AngelScriptで、スクリプト側で #define が使えるようにしたいんだけど、
手軽に組み込めるCプリプロセッサある?
それともScriptBuilderアドオンを改造するほうが楽?
106デフォルトの名無しさん:2011/05/05(木) 22:30:17.67
boost使っていい環境なら、boost::wave使うのもいいかも。
#include使った時にエラーの場所がきちっと出せないって難点があるけど。
107デフォルトの名無しさん:2011/05/06(金) 21:26:46.31
LuaとC/C++の連携ってbindツール使うのが一般的なのですか
スタックガリガリやるとか自分でツールつくっちゃうとかでも行けちゃうような気がするのですが
初心者の僕にアドバイスください
108デフォルトの名無しさん:2011/05/06(金) 21:29:12.13
車輪の再発明でググってください
109デフォルトの名無しさん:2011/05/06(金) 22:52:00.09
手動で2〜3個クラス登録してみればなぜツールが必要かは理解できるかと思います。
あとは自分で作るか、誰か作ったのを使うか、の話でしかないです
110デフォルトの名無しさん:2011/05/06(金) 23:07:10.26
どうぞどうぞ
111デフォルトの名無しさん:2011/05/06(金) 23:16:21.06
C++のバインディングこんなにあったのか。
http://lua-users.org/wiki/BindingCodeToLua
112デフォルトの名無しさん:2011/05/06(金) 23:54:56.84
JavaならクラスとGCがあるのに、なぜクラスのないLuaとGCのないC/C++を使うのか
理解できないと思う。
少なくとも再利用という観点では絶対に理解できない。
113デフォルトの名無しさん:2011/05/07(土) 00:13:18.60
Javaみたいなリッチな環境が必要なものはお呼びでないのでお引き取り下さい
114デフォルトの名無しさん:2011/05/07(土) 00:15:37.08
クラスがあれば再利用性が高いとか未だに信じてるひとは
お呼びでないのでお引き取りください
115デフォルトの名無しさん:2011/05/07(土) 00:18:59.49
AngelScript|Д`)ジー
116デフォルトの名無しさん:2011/05/07(土) 00:27:32.93
Javaなんて一番中途半端でいらない子じゃないか
117デフォルトの名無しさん:2011/05/07(土) 00:35:42.54
確か世界で一番使われているプログラミング言語がJavaだったはず。
2位3位がC、C++だった。
118デフォルトの名無しさん:2011/05/07(土) 00:41:30.27
そりゃ一山いくらのIT土方専用言語だし・・・
119デフォルトの名無しさん:2011/05/07(土) 07:51:27.06
バインダって細かい所に手が届かなくてもどかしくなりませんか?
120デフォルトの名無しさん:2011/05/07(土) 08:18:54.41
「確か世界で一番使われているプログラミング言語がJavaだったはず。
2位3位がC、C++だった。」
キリッ

121デフォルトの名無しさん:2011/05/07(土) 12:28:37.11
なんで煽ってるのかわからん。
122デフォルトの名無しさん:2011/05/07(土) 14:06:44.88
煽ってるんじゃなくて、大雑把な事しか喋れないのだ
例えば、Cは別としてC++はJavaに似てるよね、みたいな細かい話になったら困るわけだ
123デフォルトの名無しさん:2011/05/07(土) 14:31:07.66
>>119
ソースが公開されてないバインダなんてないんだぜ
124デフォルトの名無しさん:2011/05/07(土) 22:32:15.82
>>119
手書きと似ても似つかないようなのは駄目だよな
CGIみたいに、手書きに近い手続きで出力すればいいかもしれない
125デフォルトの名無しさん:2011/05/08(日) 11:37:22.48
VBAからLua使えますか?
126デフォルトの名無しさん:2011/05/08(日) 14:10:52.79
DynaWrapでDLLを呼び出す方法
var Lua = new ActiveXObject("DynamicWrapper");
Lua.Register("lua5.1.dll", "luaL_newstate", "f=s", "r=h");
Lua.Register("lua5.1.dll", "lua_close", "f=s", "i=h");
Lua.Register("lua5.1.dll", "luaL_openlibs", "f=s", "i=h");
Lua.Register("lua5.1.dll", "luaL_loadstring", "f=s", "i=hs", "r=l");
Lua.Register("lua5.1.dll", "lua_pcall", "f=s", "i=hlll", "r=l");
var L = Lua.luaL_newstate();
Lua.luaL_openlibs(L);
Lua.luaL_loadstring(L,
"f=io.open('out.txt','w')" + "\n" +
"f:write('Hello World!')" + "\n" +
"f:close()" + "\n");
Lua.lua_pcall(L,0,-1,0);
Lua.lua_close(L);

あとはCOMで包んであげる方法があるね
127デフォルトの名無しさん:2011/05/11(水) 01:21:57.29
LuaとSquirrelどっちが良いんだよ?
128デフォルトの名無しさん:2011/05/11(水) 01:28:45.54
実行速度と普及度はLua
言語仕様はSquirrel
129デフォルトの名無しさん:2011/05/11(水) 03:16:44.94
だれか Lua VM で動く squirrel つくってくれ
130デフォルトの名無しさん:2011/05/12(木) 09:49:02.13
Javascript(V8)でRubyを実装した
ColdRubyなんて処理系があるそうな。
131デフォルトの名無しさん:2011/05/12(木) 21:45:45.01
LuaJIT 2.0.0-beta7 has been released

キタ━━━━(゚∀゚)━━━━ッ!!

って思ったらコンパイル通せねぇ('A`)
132デフォルトの名無しさん:2011/05/12(木) 21:48:56.08
なんでLuaJIT2はこんなに速いんだ?
LuaJIT1から比較しても圧倒的じゃないか
133デフォルトの名無しさん:2011/05/13(金) 00:19:18.74
これで文法にへんな癖が無ければいうことないんだが…
134デフォルトの名無しさん:2011/05/14(土) 14:45:01.99
スクリプトななくてもGCCコンパイラをアプリに組み込んだ方が速い動的コードを生成出来るんじゃないですか?
135デフォルトの名無しさん:2011/05/14(土) 15:32:01.58
したければどうぞ。誰も止めたりはしないよ!
136デフォルトの名無しさん:2011/05/14(土) 17:45:57.29
GPLに感染するんじゃね?
137デフォルトの名無しさん:2011/05/14(土) 20:29:58.37
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua JIT2!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
138デフォルトの名無しさん:2011/05/14(土) 20:38:07.67
弟がGPLに感染してしまった
何とかして救ってやりたい
139デフォルトの名無しさん:2011/05/14(土) 22:25:29.54
救えないから諦めろ
140デフォルトの名無しさん:2011/05/15(日) 12:06:39.90
AngelScriptJIT|Д`)ジー
141デフォルトの名無しさん:2011/05/15(日) 12:56:36.41
jitよりjetのほうがかっこいいし速そう
142デフォルトの名無しさん:2011/05/15(日) 13:08:28.27
java のJETは、商用AOTですた。
143デフォルトの名無しさん:2011/05/16(月) 22:18:08.26
AngelScriptが地味にバージョンアップしてた
144デフォルトの名無しさん:2011/05/16(月) 22:21:46.50
LuaでサクっとGUIる為のフレームってありましたっけ?
145デフォルトの名無しさん:2011/05/18(水) 00:11:48.88
>>144
iupluaとかwxlua?
146デフォルトの名無しさん:2011/05/25(水) 08:38:14.37
質問です。どなたかお答えいただけると助かります。

Lua側からC言語の関数を呼んでいるときに、
関数内でブレークポイント貼ると、
パソコンがフリーズすることあります。
(luaL_newstate() 〜 lua_close()の間)
どこか想定されるミスはありますでしょうか…。

特に他特殊なことはしてないですが、
スレッド作って回しています。

(Windows7でVisualStudio2005使用です←だからかな…?)
147デフォルトの名無しさん:2011/05/25(水) 12:21:20.88
>>146
直接関係があるか分からんが、
デバッグ実行を開始するとフリーズする



のかと思えるくらいDLL読み込みで待たされることはよくあるな。
148デフォルトの名無しさん:2011/05/25(水) 20:34:38.61
>>147
ぐーぬぬ。
なんかもう完全にフリーズしてしまうんですよね…。
2010とか試してみますわ〜
149デフォルトの名無しさん:2011/05/25(水) 22:09:36.57
2010Express試したけどステップオーバーしてるとやっぱりフリーズ。
まいりました…
150デフォルトの名無しさん:2011/05/25(水) 22:51:52.31
Lua使わなくてもスレッド2つ以上動かしながらデバッグしてると
結構な頻度でフリーズしたよ
151デフォルトの名無しさん:2011/05/25(水) 23:41:50.53
>>150
マジっすか…。
もうしょうがないんですかね〜。

「詳細なテキストサービス」をオフにすると改善する可能性がある。
っていう情報を得たので試してみたんですけど、結果は同じでした。

Lua関係ないとしたらスレチですね。
調べてみます…。
ありがとうございました。
152デフォルトの名無しさん:2011/05/26(木) 09:55:23.27
>>151
古い話だけどマルチスレッドでデバッグしたときにフリーズする話が色々書いてある
ttp://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200307/03070010.txt

VS2010でも直ってないんだなぁ
153デフォルトの名無しさん:2011/05/26(木) 18:50:13.77
luaで文字列の状態テーブルがあって、それをテーブルに直すのに最も早い方法は?
s="{1,2,3}"
t= {1,2,3}
sからtに変換する感じで
154デフォルトの名無しさん:2011/05/26(木) 19:28:28.48
>>153
s="{1,2,3}"
t={}
asert(loadstring("t="..s))()
155デフォルトの名無しさん:2011/05/26(木) 19:34:01.75
typoった
> asert(loadstring("t="..s))()
assert(loadstring("t="..s))()
156デフォルトの名無しさん:2011/05/26(木) 20:26:40.54
スコープとか考えると
t = loadstring('return '..s)()
の方が個人的には好みかな
assertはお好みで
157デフォルトの名無しさん:2011/05/27(金) 00:39:01.71
Luaで配列をループ処理させるときに、

tbl = { 1, 2, 3}
for i, v in tbl do
doSomeThing(v)
end

みたいなfor文を書いて、使いもしないインデックス'i'を書くことが非常に美しくないと感じているのだが、貴兄はどのように処理しているのだろうか?
158デフォルトの名無しさん:2011/05/27(金) 01:49:19.17
for _, v in ... do とかで捨てる
159デフォルトの名無しさん:2011/05/27(金) 06:46:58.59
使わないダミー変数なんてよくある話でさ
160デフォルトの名無しさん:2011/05/27(金) 07:13:23.47
luaの配列って
x = {}
x[100000]=0
x[100000]=nil
ってしたら今後xがなくなるまでずっとメモリ上のサイズは100000要素分のまま?
161デフォルトの名無しさん:2011/05/27(金) 11:45:34.81
>>158
その書き方がインデクスを使わないことを明示していて良さそうですね。
162デフォルトの名無しさん:2011/05/27(金) 12:18:08.02
くだらねぇー
163デフォルトの名無しさん:2011/05/27(金) 13:35:12.76
いちいちくだらねえとか書くなよと思って念のために読み返したら確かにくだらなかった
164デフォルトの名無しさん:2011/05/27(金) 16:17:32.08
お前らの書き込みの方が下らない
165デフォルトの名無しさん:2011/05/27(金) 16:29:13.74
なんというブーメラン
166デフォルトの名無しさん:2011/05/27(金) 23:12:39.16
luaってまともなリファレンス無いよね
なんかどのドキュメントも筆者の書くのだりぃって気持ちが伝わってくる
167デフォルトの名無しさん:2011/05/28(土) 03:23:56.48
>>166
web
168デフォルトの名無しさん:2011/05/28(土) 05:38:27.11
>>166
具体的にどういった部分がまともではないのかを提起しないと話にならん
169デフォルトの名無しさん:2011/05/28(土) 18:49:08.28
VC2008でC++を使っています。
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"}
でLuaのヘッダのインクルードまでは動作しましたが
lua_State* L;でLuaステートの作成を行ってから
lua_open()やlua_newstate()等どのLua関数を呼び出しても
「1>○○○.obj : error LNK2001: 外部シンボル "_luaL_newstate" は未解決です。」
のエラーが表示されます。
何を行えば解決するでしょうか
170デフォルトの名無しさん:2011/05/28(土) 18:50:47.59
libファイルをリンクしましょう
171デフォルトの名無しさん:2011/05/28(土) 19:05:15.01
解決しました、ありがとうございます
ものすごくテンションあがってきました
172デフォルトの名無しさん:2011/05/28(土) 19:14:45.58
lua_pushstringなどで内部でメモリ確保に失敗した場合にできる悪あがきはありますか?
173デフォルトの名無しさん:2011/05/28(土) 20:27:52.42
メモリを増設する
174デフォルトの名無しさん:2011/05/28(土) 20:52:20.05
>>172
スタックが足りなくなる可能性があるならlua_checkstackで確認
メモリが足りなくなる可能性があるならlua_newstateでアロケータ指定
175デフォルトの名無しさん:2011/05/28(土) 21:12:21.58
メモリが足りなくなってるなら、自前のアロケータ使ってるならそいつに追加メモリを
割り当てられないか検討
もしデフォルトのmallocなら割と詰んでる。キャッシュ処理とか実装してるなら掃除するとか
176デフォルトの名無しさん:2011/05/29(日) 00:09:29.70
luaでprintの出力先変えるのってどうするのが正しいの?
177デフォルトの名無しさん:2011/05/29(日) 00:16:27.58
print = myprint
178デフォルトの名無しさん:2011/05/30(月) 17:34:20.92
luaとc++でオブジェクトを共有したいときはどうすればいいんだ?
ルアのガベコレとCPPの参照カウントで二重管理になってもったいない気がするんだが……
今はCPPの参照カウントをルアのガベコレでデクリメントさせてるけど
179デフォルトの名無しさん:2011/05/30(月) 17:36:49.75
C++側で管理するならluaにポインタだけ渡すとか。
逆もできる。
180デフォルトの名無しさん:2011/05/30(月) 17:37:46.17
あー

>CPPの参照カウントをルアのガベコレでデクリメントさせてる

ならほぼ最適解じゃない?
181デフォルトの名無しさん:2011/05/31(火) 21:36:48.46
>>179
Cで管理してluaにポインタだけ渡してたら型チェックめんどくさくね?
luaL_checkudataが使えないと自分で型チェック書かないといけない
182デフォルトの名無しさん:2011/06/01(水) 09:28:40.47
Lua の assert を全無視するような(リリース版コンパイルみたいな)
オプションってある?
183デフォルトの名無しさん:2011/06/01(水) 09:39:41.55
int main(void) {
lua_State *L = lua_open();
#ifdef NDEBUG
if(luaL_loadstring(L, "assert = function(...) return ... end") || lua_pcall(L, 0, 0, 0))
{
puts("err"); return 1;
}
#endif
//いつもの処理
lua_close(L);
return 0;
}
Cに合わせてデバッグ切り替えるならこんな感じかな
184デフォルトの名無しさん:2011/06/01(水) 09:50:00.87
なるほど、上書きしてしまうのか。

assert("ほげほげ")
コンパイル済みソースに "ほげほげ" の部分が現れないようにしたかったんだけど、
プリプロセッサでもつくらないと無理ぽいね

#define assert(x) true

みたいなのが一発でできればいいのに...
185デフォルトの名無しさん:2011/06/01(水) 21:44:06.76
AngelScript|Д`)ジー 
AngelScript|Д`)つboost::wave
AngelScript|`)      boost::wave
186デフォルトの名無しさん:2011/06/02(木) 02:42:57.43
>>184
assert(...)
assert(...)()
a,b,..=assert(...)
用法マチマチだから厳しいと思うよ
187デフォルトの名無しさん:2011/06/04(土) 17:01:23.98
lightuserdataの型を調べるにはどうすれば?
188デフォルトの名無しさん:2011/06/04(土) 18:50:35.21
そういう関数を自分でつくる

lighuserdata はよーするに lua はいっさい関与しませんよ、ってデータなので、
その管理の全責任は作った人にある
189デフォルトの名無しさん:2011/06/04(土) 20:55:35.61
struct MyData {
 int type;
 void *ptr;
};

てのをつくって、必ずこれを渡すようにすれば。

MyData data;
data.type = MyObject;
data.ptr = (void *)myObject;
lua_pushlightuserdata(ls, &data);


MyData *arg = (MyData*)lua_tolightuserdata(ls, -1);
switch (arg->type) {
case ...
};
190デフォルトの名無しさん:2011/06/04(土) 21:14:38.66
グローバルか、Luaレジストリに型定数をおいておけばいい
191デフォルトの名無しさん:2011/06/05(日) 10:37:54.80
LuaとC++一緒に使ってるとプログラミングの仕方に迷うわぁ。
Luaのほうにオブジェクト指向を意識してインスタンスのsetter/getterメソッド作ってるのがなんか馬鹿らしい。
192デフォルトの名無しさん:2011/06/05(日) 16:00:05.88
Luaで例外ってどうやって使うのか
インクルードヘッダみろって言われて見てもよくわからないし
193デフォルトの名無しさん:2011/06/05(日) 18:08:06.75
>>191
setgetのないクラス設計にすればいいよ
194デフォルトの名無しさん:2011/06/05(日) 21:04:53.23
AngelScript|Д`)ノ<OOPと聞いて飛んできました
195デフォルトの名無しさん:2011/06/05(日) 21:09:07.40
自分はluabindで
.property("x", &A::GetX, &A::SetX)
ってやって、C++からはget/setで、Luaからはpublic変数みたいにして
アクセスしちゃう感じで統一してる
196デフォルトの名無しさん:2011/06/05(日) 22:35:27.70
メソッドを作るのが馬鹿らしいっていうのは
(多重)継承しないでコンポジションをするのが馬鹿らしいっていうのと同じに見える
だからたぶん(多重)継承の問題と同じ結論になる
197デフォルトの名無しさん:2011/06/05(日) 22:41:55.59
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
198デフォルトの名無しさん:2011/06/06(月) 20:51:57.39
最初からC++に最適化されたLuaのような言語が在ればなぁ・・・
199デフォルトの名無しさん:2011/06/06(月) 22:05:52.90
メタテーブル使いまくるからswitch文とかパターンマッチ欲しいなぁ。
Rubyみたメソッド名に?使えると戻り値が真偽ってわかりやすいんだが。
とここで言ってもなんの意味もない!
200デフォルトの名無しさん:2011/06/06(月) 22:44:53.34
AngelScript|Д`)ジー
201デフォルトの名無しさん:2011/06/07(火) 14:21:59.35
スクリプト言語による効率的ゲーム開発のclass.luaで
attempt to index local 'self' (a number value)エラーが出るんだけど。。。
何が原因かわからん、、、
202デフォルトの名無しさん:2011/06/07(火) 19:14:43.09
>>201
t:func(...) と t.func(...) の違いが分かってないんじゃない?
203デフォルトの名無しさん:2011/06/07(火) 19:16:20.15
>>202
ありがとうございます。
なんかしらないけど動きました。。。失礼しました。
204デフォルトの名無しさん:2011/06/07(火) 19:18:19.39
ここをなんか知らないけどで済ませると死ぬよ
205デフォルトの名無しさん:2011/06/07(火) 20:01:02.49
>>204
ありがとうございます。もっと基礎を勉強します。
しかし読みにくいソースだなぁ。。。こんなもんなのかな
206デフォルトの名無しさん:2011/06/07(火) 23:45:57.72
AngelScript|Д`)ジー
207デフォルトの名無しさん:2011/06/08(水) 03:58:06.26
t:func()とt.func()の違いはC++分かってれば分かると思うぞ
C++が暗黙的にやってくれてるのをLuaはやってくれないだけで
どっちもthis(luaはself)を関数に渡してクラスという仕組みをやってる
208デフォルトの名無しさん:2011/06/08(水) 08:09:09.86
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

209デフォルトの名無しさん:2011/06/08(水) 13:19:37.47
June Headline: Lua enters the top 10 for the first time in history
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

うほっ
210デフォルトの名無しさん:2011/06/08(水) 20:45:30.63
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
211デフォルトの名無しさん:2011/06/09(木) 08:24:57.93
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
212デフォルトの名無しさん:2011/06/09(木) 21:40:59.90
すみません、luaスクリプトからc++のシングルトンクラスのメンバをコールしたいときはどうすれば良いですか?
Hoge::GetInstance()->load()こんなのを呼びたいです。

グローバル関数でラップして公開すればよいですか?
213デフォルトの名無しさん:2011/06/09(木) 21:50:20.71
あ、すみませんなんでもないです。。。スレ汚してしまい申しわけございません
214デフォルトの名無しさん:2011/06/10(金) 00:41:57.63
squirrel解説本
http://tatsu-zine.com/books/squirrel/pages/interview1
超オヌヌメ!!
215デフォルトの名無しさん:2011/06/10(金) 00:57:13.72
組み込み用途について書いてないのか
216デフォルトの名無しさん:2011/06/10(金) 01:52:48.68
3.0には対応してるの?
217デフォルトの名無しさん:2011/06/10(金) 19:54:15.85
すみません、Lua初心者なのですが、cからスクリプト関数を実行したくて、loadfileしたあと、getglobalしてpcallするとpcallでエラーになる。
loadfileしたあとにpcallしてからgetglobalしてpcallすると大丈夫。
なんでpcallを2回呼ぶ必要があるの?
218デフォルトの名無しさん:2011/06/10(金) 21:05:28.13
引数の数とかちゃんと指定した?
219デフォルトの名無しさん:2011/06/10(金) 21:49:46.65
>>217
loadfileしただけじゃLuaに書いた関数が
その名前でgetglobalできるわけじゃねーよ

function hoge() ... end

はhogeという大域変数に関数オブジェクトを突っ込むと解釈されるので
まずはこのコードをloadするだけじゃなくてpcallで実行する必要がある
220デフォルトの名無しさん:2011/06/10(金) 22:26:02.75
トン。
でもhoge()は例えば引数が2個なんだけど、1回目のpcallの時は引数0個で
で呼んでいいみたい(それか、引数0個で呼ばないとだめなのかも)。
それはいいのかな?
221デフォルトの名無しさん:2011/06/10(金) 22:44:18.90
222デフォルトの名無しさん:2011/06/10(金) 23:10:58.54
このリファレンスはもちろん真っ先に読んでたんだけど、
pcallを2回呼ぶ解説とかは見つけられなかった。
どの辺りを読んだらいいか教えて欲しいです。
223デフォルトの名無しさん:2011/06/10(金) 23:13:31.19
224デフォルトの名無しさん:2011/06/10(金) 23:15:45.49
>>219がすべてに見えるけど違うのか?
225デフォルトの名無しさん:2011/06/10(金) 23:44:33.71
いや、リファレンス読むことを薦められたので、>>219の書いていることが
どこかで説明されてるのかなと思って。
>>223によると、1回目のpcallでチャンクをコンパイルしてるってことなのかな?
しかしloadfile後に必ず1回目のpcallが必要なんだったら、loadfileの中で
やってくれればいいのに。
226デフォルトの名無しさん:2011/06/11(土) 00:08:04.84
dofile使えばいいじゃん
227デフォルトの名無しさん:2011/06/11(土) 00:08:25.04
>>225
無名関数ってものが分かってないでしょ?
228デフォルトの名無しさん:2011/06/11(土) 00:29:31.85
>>215
対象読者
Squrrelに興味のある方(初心者、または初心者に教える方)。組み込み言語に興味のある方。

>>216
現在β版であり、正式公開版では対応しているといいなあ〜
229デフォルトの名無しさん:2011/06/11(土) 18:54:20.95
lua_topointerで関数を取得できても
呼び出したりすることは出来ないのですか?
230デフォルトの名無しさん:2011/06/11(土) 19:15:11.15
ドキュメントにこれはデバッグ用の情報専用ですと書かれてる
むしろなんでそういうことができるのかもと思ったのかに興味があるw
231デフォルトの名無しさん:2011/06/11(土) 19:18:18.40
>>230
いや、関数型を受け取りたいなと思いまして
232デフォルトの名無しさん:2011/06/11(土) 21:10:20.97
>>229
>>231
出来るよ。

int call_lua_function(lua_State *L) {
if( lua_gettop(L)>=1 && lua_type(L,-1) == LUA_TFUNCTION ) {
lua_pcall(L, 0, LUA_MULTRET, 0);
}
return 0;
}
int call_c_function(lua_State *L) {
void (*pCFunction)();
if( lua_gettop(L)>=1 && lua_type(L,-1) == LUA_TLIGHTUSERDATA ) {
pCFunction = (void(*)()) lua_topointer(L,-1);
pCFunction();
}
return 0;
}
void HelloWorld() { printf("Hello C Function!\n"); }
int get_c_function(lua_State *L) {
lua_pushlightuserdata(L, (void*)&HelloWorld);
return 1;
}

-- test.lua
call_lua_function( function() print("Hello Lua Function") end )
call_c_function(get_c_function())
233デフォルトの名無しさん:2011/06/11(土) 22:56:20.56
ちょっと興味を持って見てるんだけど、呼び出しとか引数渡しとかすんげーめんどくさいね。
普通に引数で呼び出すにはラップ関数書かないといけないのかな。

UWSCみたいなスクリプトの関数を呼び出す方法とかもちょっとまだ分からないし。
234デフォルトの名無しさん:2011/06/12(日) 00:03:33.30
AngelScript|Д`)ジー 

あー、でもC++側からスクリプトの関数呼び出す時はそんなに手間変わらんか。
235デフォルトの名無しさん:2011/06/12(日) 00:15:46.88
Easy things should be easy and hard things should be possible
という言葉があるが
可能であることの評価が低すぎる
効率が良いことしか評価されなくなってるのかな
236デフォルトの名無しさん:2011/06/12(日) 00:33:28.55
>>233
luabindというものがあってだな・・・
  lua_State *L = luaL_newstate();
  luaL_openlibs(L);
  open(L);
  {
    luaL_dostring(L,"function func1() print('hello') end" "\n");
    call_function<void>(L, "func1");

    luaL_dostring(L,"function func2(a,b) return a + b end" "\n");
    int a = 10, b = 20;
    cout << "a + b = " << call_function<int>(L, "func2", a, b) << endl;

    luaL_dostring(L,"function func3() return {1,2,3,['X']='XXX'} end" "\n");
    object tbl = call_function<object>(L, "func3");
    for( luabind::iterator i(tbl),end; i!=end; ++i ) {
      cout << i.key() << " is " << *i << endl;
    }
    luaL_dostring(L, "function dump_table(t) for k,v in pairs(t) do print(k .. ' is ' .. v) end end" "\n");
    call_function<void>(L, "dump_table", tbl);
  }
  lua_close(L);
237デフォルトの名無しさん:2011/06/12(日) 00:47:55.33
>>232
ありがとうございます
luaの関数を取っておいて後でpushfunctionみたいなことってできますでしょうか
238デフォルトの名無しさん:2011/06/12(日) 02:47:35.68
273です
topointerで取得したアドレスをlua_pushlightuserdataでスタックに積んで
LUA_TFUNCTIONに書き換えれば呼べたけど、たぶんまずいんだろうな
239デフォルトの名無しさん:2011/06/12(日) 02:55:39.46
それはスタックから消えてたらおだぶつやね

lua の場合はそういうときは関数をレジストリになげこんでおいて、
C側ではそれのキーを保持しておくのが定石

ただし、整数値のキーは lua が内部的に使っていて衝突の可能性が
あるので、普通は C側のポインタ値を lightuserdata としてキーにする。

静的変数のポインタか、lua の値を C側でとっておくための動的オブジェクトの
ポインタとかをキーにするのが一般的やね。



240デフォルトの名無しさん:2011/06/12(日) 03:21:18.85
>>239
LUA_REGISTRYINDEXですね!ありがとうございました
241デフォルトの名無しさん:2011/06/12(日) 17:49:02.77
Luaでクラスのインスタンスが連想テーブルだから変数名をtableってしたら
結構作ってから標準のtable関数が消えてることに気づいた…
なんでLuaの関数こんな簡単に死んでしまうん?…orz
242デフォルトの名無しさん:2011/06/12(日) 19:51:15.00
標準識別子の書き換えはLuaの便利なところでもありアホなところでもあるな
243デフォルトの名無しさん:2011/06/12(日) 21:43:09.59
pythonでも起こる、というか動的言語だとよくある
関数が変数に突っ込める以上仕方ないのかもしれん
244デフォルトの名無しさん:2011/06/12(日) 21:59:36.69
いや、予約語とすればいい

だけど、自由を制限しないためにチェックしてないんだろう。
245デフォルトの名無しさん:2011/06/12(日) 22:30:52.66
高級言語なのに単項、二項計算とかテーブル操作とかの演算子が少ないのがなぁ。

リスト操作をもっと簡単にしたいんだけど、metatableを全てのテーブルに強制的に束縛させる方法とかないかな?
246デフォルトの名無しさん:2011/06/12(日) 22:32:28.78
それつきつめていくとだいたい squirrel になるよw
247デフォルトの名無しさん:2011/06/13(月) 00:03:37.06
Luaからシェア奪えそうな組み込みスクリプト出てこないかな
248デフォルトの名無しさん:2011/06/13(月) 00:42:56.86
実績が大事よ
249デフォルトの名無しさん:2011/06/13(月) 02:16:42.39
squirrel最強!!
オヌヌメ解説本
http://tatsu-zine.com/books/squirrel/pages/interview1
squirrel関連の資料がほぼ皆無な現状で1,000円(税込)は安いと思いました
著者は5年くらい、都内のゲームデベロッパーにいてずっとゲームを作っておられた凄腕
わずか4、5歳の頃よりファミコンのマリオやドラクエを嗜んでおられたそうな
250デフォルトの名無しさん:2011/06/13(月) 02:28:21.51
目次みるとマニュアル以上のことがかかれてるように見えない件
251デフォルトの名無しさん:2011/06/13(月) 03:16:57.39
マニュアル読めない人向けなんだろ
252デフォルトの名無しさん:2011/06/13(月) 05:09:27.82
ページサンプルに「公式ドキュメントの翻訳ベースでわかりやすくした内容です」って書いてある
3.0非対応だし、確かに安いけど、ぶっちゃけいま買う理由はないんでないの
253デフォルトの名無しさん:2011/06/13(月) 07:08:32.27
>>247
LuaもSquirrelも数千行の短いプログラムでできてんだろ?
なら俺達でも作れるんじゃね?
254デフォルトの名無しさん:2011/06/13(月) 07:24:09.21
採用実績と速度を超えるのが至難
255デフォルトの名無しさん:2011/06/13(月) 07:25:55.86
このレベルか・・・
256見習い中:2011/06/13(月) 12:15:07.57
Luaの注意点

数値はDouble型。型指定は基本的にできない。ポインタ型を32ビット変数として使う方法がある。
Doubleのせいで計算速度が遅くなるだけでなく、キャストで化けることあり。
SciTEの読みはサイト(らしい)。ゼロの使い魔か?
エラーの際のlua_atpanicにはお世話になりそう。
日本語未対応。対応バージョンもなくもない。

C言語と相互運用が可能だが、なんかしょっぱなからめんどくさい。
Lua側はシンプルなので、間違ってはいないのかも。

squirrel との比較
クラスがなく、冗長な記述になる。
C++との親和性が低い
continue がない。やっぱり必要?
ビット演算 が弱い。あれ?ライブラリは・・

>>214
> Squirrelの前にはLuaとかもあって、海外とかだとわりと積極的に使われていたのではないでしょうか。
> 汎用的なものと組み込み言語というのはメジャーになってきた、というような雰囲気ですね。
>
> Squirrelの場合、クラスベースの考え方が通用する分、僕はやさしいなと感じます。
> Luaとかはわりとかけ離れているというか、かけ離れているとまでは言わないですが、単純に見た目としての問題って言うんですかね、
> ある程度プログラミングのたしなみのある人が見えればやってることは理解できるんですけども、
> ほんとにSquirrelの方が分かりやすいなっていう感じがします。
> PythonやRubyも文法とか文化が違う感じが若干しますね。

なるほど
257デフォルトの名無しさん:2011/06/13(月) 14:14:43.26
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

258デフォルトの名無しさん:2011/06/13(月) 16:59:30.65
最低でもCの組み込み型位は標準対応してほしいよね
259デフォルトの名無しさん:2011/06/13(月) 18:18:08.35
グルーコード作りたいだけなのにtolua++とか覚えて時間とられるのは本末転倒だな・・・
260デフォルトの名無しさん:2011/06/13(月) 22:31:47.51
ビット演算ならbitopで
http://bitop.luajit.org/

PerlのMoose(Coat)ぽいOOなら、lua-Coatで
http://lua-coat.luaforge.net/
lua-Coatは、MOP使ってて重いので
LuaJIT使える環境ならそっちがいいかも
261デフォルトの名無しさん:2011/06/13(月) 22:48:06.58
>>256

>数値はDouble型。型指定は基本的にできない。ポインタ型を32ビット変数として使う方法がある。
数値型はdouble以外にも割り当てられなかったっけ?

>Doubleのせいで計算速度が遅くなるだけでなく
そもそも計算速度が問題になるほど大量の四則演算を行う処理を
luaで書くの?そういう所はアルゴリズムを固定小数点化やSSEで
対応等するべきであってスクリプト言語でどうこうする所じゃないような。
262デフォルトの名無しさん:2011/06/13(月) 23:02:15.51
今時Doubleなんて、x86ならバカっ速いぞ。
下手にテーブル引いてキャッシュミスしてもたもたするより速い。
263デフォルトの名無しさん:2011/06/13(月) 23:02:38.60
数値型は、コンパイル時に選択だね。
http://www.lua.org/source/5.1/luaconf.h.html#LUA_NUMBER
@@ LUA_NUMBER is the type of numbers in Lua.
264デフォルトの名無しさん:2011/06/13(月) 23:12:55.06
x86ならdouble使った整数演算も速いね
http://attractivechaos.github.com/plb/
これ以上速度求めるなら、逆に型推論がある静的型評価の言語を組み込んだ方がいいかも?
265デフォルトの名無しさん:2011/06/13(月) 23:23:38.60
っていうか整数持ってるSquirrelさんより速いしなあ
266デフォルトの名無しさん:2011/06/13(月) 23:32:15.38
つーかIEEE754っていって?ってやつは浮動小数禁止
267デフォルトの名無しさん:2011/06/14(火) 09:11:12.44
         \   l´⌒\⌒\ \\ \
           \ ヽ   )  )   \\ \\   
              (   \ \∩___∩ \\ 
           \   \  ⌒⌒| ノ      ヽ  \\      
              \ \   /  ●   ● ト、\ \\\ 
               \  Y |    ( _●_)  ミ\  \\\  
               \ / 彡、_  |∪| ノ   \  \\\
                 (____)―ヽノ' ヽ      ̄ ̄ ヽ\\
                                \,  j  l l .l }
                         Lua!   l (_ノノノノ

268デフォルトの名無しさん:2011/06/14(火) 22:38:55.38
AngelScript|Д`)ノ<きたわよ
269デフォルトの名無しさん:2011/06/15(水) 07:51:02.77
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
270見習い中:2011/06/15(水) 10:38:14.65
普段UWSC使ってるんだけどバイナリデータが弱かったからつなぎ言語もかねて探してたんです。
だから日本語扱えないのと整数値型がそろってないのはかなり痛い。

Luaも日本語化パッチがあったりするけど・・・
ビット演算があったりするけど・・・
セットアップがめんどくさいと配布がしにくいし

squirrel もいいなと思ったけどC++解説サイト見たら「なんか出来そうだな」と思ってみたり。
そうするとAngelScriptってC++にかなり近いから無駄にならないかも?

AngelScriptってGNUでソース配布?まさかプロジェクト全部に感染?


squirrel で日本語
ttp://monsho.blog63.fc2.com/blog-entry-49.html
squirrel はASCIIなので、日本語対応はUNICODE宣言が必要。
#define _UNICODE

それだけではwprintf() や vwprintf() で文字化けするので、ロケールを指定する。2007/05/19(土)
setlocale( LC_ALL, "Japanese" ); // 日本語にする
setlocale( LC_ALL, "" ); // 環境に合わせる


@__john_ 悟
Luaはダメだ。 AngelScriptを試してみよう…   これでダメだったら、機能を絞るしかないわな…
4月30日 webから

@__john_ 悟
AngelScriptではとりあえず実装可能っぽいけど… 呼び出しコストとかどうなんだろ? GC処理がLuaより管理しやすい分早いかな? 
試すしかないかなぁ… はぁ… 資料少ないなぁ。
5月1日 webから
271デフォルトの名無しさん:2011/06/15(水) 12:22:38.06
AS1.7.0以降はzlib互換ライセンスにchange!したyow
272デフォルトの名無しさん:2011/06/15(水) 14:43:23.05
   /ヽ /ヽ
  ':' ゙''"  `':,
  ミ   ・ω・ ;,
 :; . っ Lua!, つ
  `:;      ,;'
   `( /'"`∪
273デフォルトの名無しさん:2011/06/15(水) 22:32:32.50
AngelScriptはデフォでASCII、UTF8に対応。
有志のShiftJIS版も一応ある。
ただし、UTF16には対応してないので注意。
274デフォルトの名無しさん:2011/06/15(水) 23:02:22.61
Luaのメタテーブルの__callが微妙だなぁ…。
第一引数がテーブル自身で第二引数以降が呼び出しの時の引数だけど、
テーブル(引数)だけじゃなくてテーブル.メソッド(引数)で呼び出したときにも使えるようにならないものか…。
メソッドまでメタテーブル指定するのは面倒くさい。
275デフォルトの名無しさん:2011/06/16(木) 00:34:27.57
__indexに関数入れて仕事を振ればいいだけのように読めるけど
276デフォルトの名無しさん:2011/06/16(木) 07:04:19.72
まぁそれでいいんだけど__callの使い方が(テーブル,メソッド名,引数1...n)
だと勘違いしてプログラミングしてたからメソッド名が無いって気づいてげんなりして
メソッド名なかったから、使い道あるのかなこれと思って。
277デフォルトの名無しさん:2011/06/16(木) 10:41:59.96
__callはほぼユーザーデータ用と割り切った方がいいんじゃない?
関数がファーストクラスでクロージャやコルーチンがあるLuaの範囲じゃ
確かに使いどころが思いつかない
278デフォルトの名無しさん:2011/06/16(木) 11:24:53.98
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

279デフォルトの名無しさん:2011/06/16(木) 19:21:04.60
__callはC++でいうところの()演算子だと思ってる。
280デフォルトの名無しさん:2011/06/18(土) 19:37:04.89
Lua、自由度が高いからいろいろやろうと思うけど、ちょっと進めて後戻りばかりだなぁ…。
他の言語みたいにこういう関数や記法でやれって堅苦しく決まってる奴は面倒くさくてもしぶしぶ従うけど、
標準モジュールが何もないLuaだとテーブル操作も関数にしようか、メタテーブルにしようか、
変数名はどうしようか、クラスは使うか使わないかとかそんなことばかり考えて
修正ばかりで全然先進まない…orz
自分の開発設計技術が無さ過ぎるのが問題っていうのはわかってるけど。
281デフォルトの名無しさん:2011/06/18(土) 21:49:44.42
Luaとオブジェクト指向
http://www.hakkaku.net/articles/20081118-286
> このように、Lua のオブジェクト指向は、その実現方法が様々です。
> Lua のユーザーズ Wiki を確認すると、オブジェクト指向の実現方法がいくつか列挙されています。
> 好きな方法を利用してオブジェクト指向を実践すると良いでしょう。

重いしC++と互換性がないけどLua-CoatかわいいよLua-Coat
http://perldoc.perlassociation.org/pod/Moose-Doc-JA/index.html
ManualとCookbook
282デフォルトの名無しさん:2011/06/19(日) 00:15:39.15
オブジェクト指向 = GCを使うがクロージャを使わない、
と考えると結局どう見てもユーザーデータ用としか思えない
283デフォルトの名無しさん:2011/06/19(日) 09:35:43.66
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

284デフォルトの名無しさん:2011/06/19(日) 10:16:53.06
Luaみたいにオブジェクトの要素のpublic,private指定ができないと不安になる
継承されて整合性が破壊されないかとかメソッドをnilにされたらどうしようとか気になってしょうがない
285デフォルトの名無しさん:2011/06/19(日) 10:39:13.08
そもそもLuaは重厚長大なライブラリを作るための言語じゃないんじゃね。
そういうもの作るんならprivateも必要になるんだろうけど。

その上に乗っかりそれの動作をカスタマイズ(設定orコールバックで)
するための言語だと思う。
286デフォルトの名無しさん:2011/06/19(日) 11:51:17.36
lua_Stateってシングルトン的に使うもんなの?
287デフォルトの名無しさん:2011/06/19(日) 15:46:01.40
複数作れば同時に動かせたとおもったけど
288デフォルトの名無しさん:2011/06/19(日) 17:46:32.65
難しそうでスルーしてたけど環境ってめがっさ便利っぽいな
オブジェクトのメンバ関数のようにLuaコードを呼びたい時とかに重宝しそう
289デフォルトの名無しさん:2011/06/19(日) 17:56:47.42
そう、知れば知るほど味があるのがLua。
その他のは・・・・
自分の得意な言語に似せようとするだけのオナニー型といわざるをえない。
290デフォルトの名無しさん:2011/06/19(日) 19:47:59.72
Lua、混乱させられる機能ばかりだから、
単一代入の組み込み言語が欲しくなってきた。
そのほうがデバッグもしやすいし。
291デフォルトの名無しさん:2011/06/19(日) 21:26:55.87
こうしてまたひとつひとつ
泡沫のようにオナニー言語が生まれては消えてゆくのであった
ああ無常・・・
292デフォルトの名無しさん:2011/06/19(日) 22:46:25.86
でも宣言されてない変数はnilを返すってねぇー。
リテラルがあっちゃデバッグしづらくてしょうがねぇよ。普通エラーでしょ。
293デフォルトの名無しさん:2011/06/19(日) 22:56:42.49
Luaはそれをエラーに出来るできるのがいいところだよね
294デフォルトの名無しさん:2011/06/19(日) 23:04:31.44
機能拡張は他のとこで作業するときに困るけど、機能制限の方向なら悩むことなくさくさくやってしまえばいいよね
295デフォルトの名無しさん:2011/06/20(月) 00:50:07.12
>>293
それってどうやるの?
296デフォルトの名無しさん:2011/06/20(月) 01:32:54.16
strict.lua
297デフォルトの名無しさん:2011/06/20(月) 09:20:51.28
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
298デフォルトの名無しさん:2011/06/20(月) 16:33:43.20
LuaSJIS対応版以外の本家のって、リテラルでSJIS使えませんよね?
いちいちWideCharToMultiByteをラップしたのを経由してユーザー変数に入るとか
しないといけないのはメンドイ。
299デフォルトの名無しさん:2011/06/20(月) 16:36:29.38

[[文字列]]
と書けばSJISリテラルも使えるのか。
ごめん
300デフォルトの名無しさん:2011/06/20(月) 17:52:46.75
スタックの指定した位置にあるオブジェクトが
getfieldでアクセスできる要素がnilを含めて存在するオブジェクト
であるかどうかを調べるスマートな方法はある?
再帰的にテーブルかどうか、__indexを持ってるかどうかを繰り返し調べるしかないかな
301デフォルトの名無しさん:2011/06/20(月) 17:58:27.94
用途を書いた方が良いかも
その方がスマートな解答がでそう
302デフォルトの名無しさん:2011/06/20(月) 21:41:56.73
Lua、テーブルがしょぼ過ぎるから拡張したくてオブジェクトにして色々な操作メソッドつけ足したら
メソッド作らないとipairsとかでテーブルの中身が呼び出されないことに気がついた。
何この使えん言語。
303デフォルトの名無しさん:2011/06/20(月) 21:53:14.11
Luaは必要最低限のグルー関数を用意して、あとはなるべくスクリプト内で完結させるような用途に向いてると思う。
304デフォルトの名無しさん:2011/06/20(月) 23:24:50.41
>>296
ありがとう。
古いバージョン使ってるから、そういうのあるの知らなかった。
305デフォルトの名無しさん:2011/06/21(火) 06:05:04.30
>>300
エスパーするとpcall

>>302
内包したんでしょ?
言語の問題ではない
306デフォルトの名無しさん:2011/06/21(火) 08:11:00.31
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

307デフォルトの名無しさん:2011/06/21(火) 10:46:26.14
lua_State *p1 = lua_open();
lua_State *p2 = lua_open();

p1のスタックからテーブルを取り出してp2のスタックに積むにはどうすれば?
数値や文字列は一回Cを経由すればできるんだけどテーブルは…
308デフォルトの名無しさん:2011/06/21(火) 11:13:13.10
>>307
フィールドが数値型や文字列型なら列挙していけば良いだろうけど
関数型あたりは無理だよね

そもそもlua_Stateを分離する必要があるのかってところから見直した方が良いんじゃない?
スクリプト毎にサンドボックス作りたいってだけならそれぞれ独自の環境を割り当てて
共有したいLuaオブジェクトはグローバル環境やレジストリに押し込めるってので過不足ないと思うけど
309デフォルトの名無しさん:2011/06/21(火) 12:28:40.23
>>307
数値や文字列でもLuaの値はメタテーブルを持てるので
Lua側のデータを共有したいなら
lua_State *p = lua_open();
lua_State *p1 = lua_newthread(p);
lua_State *p2 = lua_newthread(p);
でやるしかないよ
310 忍法帖【Lv=8,xxxP】 :2011/06/21(火) 13:15:51.75
なぜポインタを共有するんですか
コピーコンストラクタのようなものは何か根本的に駄目なんですか
311デフォルトの名無しさん:2011/06/21(火) 18:47:24.32
lua_Stateをひとつ、lua_newthread()を複数で最初に設計して
loadstring()がグローバル変数見に行くんで詰んだ経験ががが。
312デフォルトの名無しさん:2011/06/21(火) 20:02:15.49
結局のところシングルトンでおkってことね
313デフォルトの名無しさん:2011/06/21(火) 20:10:25.76
lua_State(threadは除く)を複数使うなんて、スクリプトの並列処理が必要で
かつスクリプト間でLuaオブジェクトのやり取りが必要無いって状況くらしか思いつかないな
314デフォルトの名無しさん:2011/06/21(火) 20:52:19.74
相互に参照したいオブジェクトだけホストに管理させてMutexで保護すればいんじゃないの
315デフォルトの名無しさん:2011/06/21(火) 21:59:27.82
>>313
ゲーム作る時に、敵1匹ごとに仮想マシン1個って感じでやるときかなぁ…
Luaだとそういう場合どうするんだろう。
316デフォルトの名無しさん:2011/06/21(火) 22:20:12.07
ねえよww
317デフォルトの名無しさん:2011/06/21(火) 22:53:31.64
ボードゲームみたいなのでAIごとにスクリプト使う場合とかあるだろ
318デフォルトの名無しさん:2011/06/21(火) 23:06:15.77
マルチスレッドに対応させるとかか。具体的に方法思いつかんけど
319デフォルトの名無しさん:2011/06/22(水) 01:10:29.57
>315
さすがにオーバーキル過ぎるだろ。
ロボットの並列制御やってるんじゃないんだから。
320デフォルトの名無しさん:2011/06/22(水) 01:51:00.20
>>312
なんか違和感がある
lua_Stateは複数作れるからシングルトンじゃないと思うけど
どういう意味でシングルトンと言ってるの?
321デフォルトの名無しさん:2011/06/22(水) 07:31:24.17
>>311
使い方間違ってるんじゃない?
lua_newthreadはコルーチンなので
問題の起きようがないと思うのだが。
322デフォルトの名無しさん:2011/06/22(水) 07:36:23.92
>>315
いくつかの動的確保とopenlibsやゲームAPIなどの各種初期化、解放時にはガベコレ
生成破棄が多いゲームでオブジェクトと1対1はどうかとおもう
lua_Stateは共有して環境テーブルをオブジェクトにもたせるのがいいと思うよ
323デフォルトの名無しさん:2011/06/22(水) 09:37:58.69
敵=すぐ死ぬMOBみたいに決め付けてないかい
4人格闘ゲーのCPUとかかもよ
324デフォルトの名無しさん:2011/06/22(水) 11:08:27.41
ところでDLLじゃなくてEXEからモジュールを提供したい場合ってどうするの?
loadedとかいろいろあるけど全部自前でやらんとだめなのかな
325デフォルトの名無しさん:2011/06/22(水) 12:19:05.47
DLLでやれ
異論は認めるが自前の意見がないなら異論もなにもない
326デフォルトの名無しさん:2011/06/22(水) 12:24:12.50
>>324
hogeというモジュールなら
LUALIB_API int luaopen_hoge(luaState *L) {...}
という形で提供するのがお約束なので
単純にluaopen_hoge(L);すればいいよ
プリプロセスでLUALIB_APIがどのように置き換わるかは
ご自分で確認しましょう
327デフォルトの名無しさん:2011/06/22(水) 12:52:33.09
>>324
>require calls the loader with a single argument, modname.
とあるから
lua_pushcfunction lua_pushstring lua_pcallするべき
328デフォルトの名無しさん:2011/06/22(水) 13:22:22.73
そのほうが行儀いいね
329デフォルトの名無しさん:2011/06/23(木) 07:47:19.78
         \   l´⌒\⌒\ \\ \
           \ ヽ   )  )   \\ \\   
              (   \ \∩___∩ \\ 
           \   \  ⌒⌒| ノ      ヽ  \\      
              \ \   /  ●   ● ト、\ \\\ 
               \  Y |    ( _●_)  ミ\  \\\  
               \ / 彡、_  |∪| ノ   \  \\\
                 (____)―ヽノ' ヽ      ̄ ̄ ヽ\\
                                \,  j  l l .l }
                         Lua!   l (_ノノノノ

330デフォルトの名無しさん:2011/06/25(土) 08:39:57.67
Yコンビネーションって何者なんですか?
331デフォルトの名無しさん:2011/06/25(土) 08:51:11.14
Yコンビネータ?

このスレより関数型言語スレの話題だと思うけど、

fact(x) = ... fact(x - 1) ...

みたいな感じで、再帰がある関数は、自分自身の定義の中に自分自身を使うわけだよね?
で、数学的に厳密な「定義」が必要な場合とか、循環定義は困るので、

fact_norec(f)(x) = ... f(x - 1) ...

みたいにして、

Y(fun) = fun(Y(fun))
(↑この定義ではここで循環定義を使っちゃってるけど、λ計算という理論では
循環定義のないものを定義できる。)
という「Yコンビネータ」を使って、

fact(x) = Y(fact_norec)

みたいに定義できる、という仕掛け。
332デフォルトの名無しさん:2011/06/25(土) 08:52:46.54
333デフォルトの名無しさん:2011/06/25(土) 15:41:33.28
循環なんて難しい言葉を使わなくても
まだ無いものは使えない、既に有るものは使える、でいいんだが
数学厨は (宗教的な理由で) 時間の概念を認めないんだよね
334デフォルトの名無しさん:2011/06/25(土) 19:29:39.23
時間も(半)順序の一種。
認めるも認めないも無いだろ。
335デフォルトの名無しさん:2011/06/25(土) 21:57:57.69
>>331
どうもありがとう
なんだかよくわからなかった
336デフォルトの名無しさん:2011/06/25(土) 23:13:16.65
>>333 には偏見のために何かよく分からないものが見えているようなのだが、
何がどう見えているのかよく分からない。
337デフォルトの名無しさん:2011/06/26(日) 01:10:15.69
そういやLuaのスクリプト内のローカル変数とかってどこに保存されてる?
338デフォルトの名無しさん:2011/06/26(日) 01:32:57.00
宣言された関数の専用スロット
339デフォルトの名無しさん:2011/06/26(日) 13:08:39.45
Luaでクラスの継承で
Object1にindex,newindex,addなど複数のメタテーブルをセットして
Object2はObject1を継承してさらに複数のメタテーブルをセットしたいのですが、
setmetatableやオブジェクトをオーバーライドなど色々やってみましたが、
Object2はセットしたメタテーブルしか呼び出せません。
どうすればObject1も継承できるでしょうか?

340デフォルトの名無しさん:2011/06/26(日) 13:31:25.50
new_hoge = function(base)
local b_ = base
local t_ = {}

setmetatable(t_ , { __index = base } )

local o_ = {}

setmetatable(o_, { __index = setmetatable() } )
341デフォルトの名無しさん:2011/06/26(日) 13:34:24.14
変なとこで送信しちゃった
例えば__indexだけだったら↓みたいな感じでいいとおもう

new_hoge = function(base)
local o_ = {}
setmetatable(o_, { __index = setmetatable({ }, { __index = base }) } )
return o_
end


342デフォルトの名無しさん:2011/06/26(日) 14:31:31.14
>>339
メタテーブルを入れ子にすればいいだけじゃない?
mt = { oldmt = getmetatable(Object1) or {} }
for k,_ in pairs(mt.oldmt) do
mt[k] = mt.oldmt[k]
end
setmetatable(Object1,mt)

破棄するなら
mt.__index = function(self,k) ... end
super呼ぶなら
mt.index = function(self,k)
...
return mt.oldmt.__index and mt.oldmt.__index(self,k) or nil
end
とかで適当に上書き
343デフォルトの名無しさん:2011/06/26(日) 14:34:23.12
__metatable = falseの入ってるクラスを継承するにはどうすれば
344デフォルトの名無しさん:2011/06/26(日) 14:38:06.18
>>343
debug.getmetatableやC関数を介せばいけるけど普通はやらない
345デフォルトの名無しさん:2011/06/26(日) 15:58:37.11
>>341-342
テーブルの値にメタテーブルを指定すればいいんですね。
メタテーブルのことあまり理解していませんでした。
ありがとうございます。
346デフォルトの名無しさん:2011/06/27(月) 07:54:43.92
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

347デフォルトの名無しさん:2011/06/27(月) 20:30:12.75
create = function()
local x = 0
local get = function()
return x
end
local inc = function()
x = x + 1
end
return { get = get, inc = inc }
end

obj = create()

obj.inc()
print(obj.get())

こういうふうに書いたほうが安全でよくね?
なんでみんな本やWebで推奨されてる方法を使うのか解らない
348デフォルトの名無しさん:2011/06/27(月) 22:11:58.91
安全に拘るならそもそもスクリプトを使うべきじゃないってことなんじゃないかな
349デフォルトの名無しさん:2011/06/27(月) 22:31:54.81
>>347
それだと、インスタンスごとに関数を作ることになる
350デフォルトの名無しさん:2011/06/27(月) 22:33:46.95
そもそも結論を急ぐ必要がないから
どの方法が普及するかは自然の成り行きに任せればいいんじゃないの
351デフォルトの名無しさん:2011/06/27(月) 22:58:35.96
AngelScript|Д`)ノ<グローバルプロパティ?が何か面白いぞ

_this.Hoge();

とかできる
352デフォルトの名無しさん:2011/06/28(火) 00:06:51.29
ASは3倍早くなってから出直してきてください
353デフォルトの名無しさん:2011/06/28(火) 07:16:08.75
ぼくのASSも3倍出るのがはやくなりたいです><
354デフォルトの名無しさん:2011/06/28(火) 08:21:47.97
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

355デフォルトの名無しさん:2011/06/28(火) 22:37:19.10
死ね下らんAA貼るカス。
356デフォルトの名無しさん:2011/06/28(火) 23:02:21.92
Lua 5.2.0 (beta-rc3)
いつのまにかgoto文が追加されてた
357デフォルトの名無しさん:2011/06/28(火) 23:07:27.40
gotoなんて要らんがな
358デフォルトの名無しさん:2011/06/29(水) 00:01:05.22
>>355
ツンデレ乙
359デフォルトの名無しさん:2011/06/29(水) 00:17:07.12
continue文を追加してちやほやされるよりも賢い
360デフォルトの名無しさん:2011/07/02(土) 17:30:32.80
goto文とか誰得…
と思ったけどコルーチンを並列化せずに使えるようになるのかな?
面倒くさい宣言書かなくて良くなるなら便利なんだが。
361デフォルトの名無しさん:2011/07/02(土) 17:33:00.45
C++のコードをそのまま使えるスクリプトがあったら便利だと思う
調整ビルドではスクリプト、リリースビルドではコンパイルしてくれるの
362デフォルトの名無しさん:2011/07/02(土) 17:34:02.85
ふつうにDLLでいい気がするけど。
363デフォルトの名無しさん:2011/07/02(土) 17:44:04.56
コンパイルが時間食うから開発中はなるべくしたくないって話じゃね?

C++インタプリタとしては、CINTってのが有名だけど俺は使ったことはない
364デフォルトの名無しさん:2011/07/02(土) 17:45:52.16
メタテーブルっていらなくね?メソッドで十分じゃん。
365デフォルトの名無しさん:2011/07/02(土) 17:46:04.83
DLLレベルなら動作チェックに比べれば時間なんてほとんど食わないだろ
366デフォルトの名無しさん:2011/07/02(土) 17:58:50.13
index,newindex,metatable,gc
よく考えるとこれ以外使ったこと無いわ
動的型はただでさえバグリやすいのにオペレーターまで用意したら訳が分からなくなる
367デフォルトの名無しさん:2011/07/02(土) 18:05:59.16
いちいちDLL作ってられるかよ
368デフォルトの名無しさん:2011/07/02(土) 18:07:02.65
その感覚がわからん。F5かmakeかするだけだろ。
シンタックスチェックもするしむしろビルドしたほうが安心じゃん。
369デフォルトの名無しさん:2011/07/02(土) 18:35:07.47
DLLだと修正してリロードすんのがめんどくさいとおもう
一回アンロードしないといけないじゃん
完全にコールバックな関数だけならいいかもしれんけど
データの引き継ぎとかが起こるとめんどくさくなる
370デフォルトの名無しさん:2011/07/02(土) 20:01:25.28
AngelScript|Д`)ジー
371デフォルトの名無しさん:2011/07/02(土) 21:42:45.91
Boo....
372デフォルトの名無しさん:2011/07/03(日) 07:48:31.25
Lazarusでいいやん
373デフォルトの名無しさん:2011/07/03(日) 11:24:06.78
Luaでメタテーブルを参照して値がなければ
メタテーブルに束縛したメタテーブルを参照するってできない?

table = {}

Ex1 = Extend1.new()
Ex2 = Extend2.new()

setmetatable(table,
 setmetatable(
  {__index = Ex1},{__index = Ex2}))

こんな感じでやってもうまくいかないんだが。
374デフォルトの名無しさん:2011/07/03(日) 11:48:11.95

t = setmetatable( { } , { __index = setmetatable( { EX1 } , { __index = { EX2 } } ) )
375デフォルトの名無しさん:2011/07/03(日) 13:25:20.95
>>374
レスサンクス。ごめん書き方間違えた…。
tableの中にインスタンスが入ってた場合どうすればいいかな?

obj = {X = 1}
t = setmetatable( obj , { __index = setmetatable( { EX1 } , { __index = { EX2 } } ) )

って感じになってた場合、Ex2のメソッドが実行されたとき、
Ex2の第一引数がEx1になってしまってobjの値を参照できないんだが。
376デフォルトの名無しさん:2011/07/03(日) 14:09:50.56
t = setmetatable( obj , { __index = function( _ , k ) return EX1[k] or EX2[k] end } )
377デフォルトの名無しさん:2011/07/03(日) 14:15:50.44
>>375
EX2={X=3,ex2=function(self) print("EX2:" .. self.X) end}
EX1={X=2,ex1=function(self) print("EX1:" .. self.X) end}
obj={X=1,obj=function(self) print("obj:" .. self.X) end}
setmetatable(obj , { __index = setmetatable( EX1, { __index=EX2 } ) } )
obj:obj() --> obj:1
obj:ex1() --> obj:1
obj:ex2() --> obj:1

EX2={X=3,ex2=function(self) print("EX2:" .. self.X) end}
EX1={X=2,ex1=function(self) print("EX1:" .. self.X) end}
obj={obj=function(self) print("obj:" .. self.X) end}
setmetatable(obj , { __index = setmetatable( EX1, { __index=EX2 } ) } )
obj:obj() --> obj:2
obj:ex1() --> obj:2
obj:ex2() --> obj:2

特に問題ないようだけど?
378デフォルトの名無しさん:2011/07/03(日) 15:13:16.84
>>376>>377どっちがはやいの?
379デフォルトの名無しさん:2011/07/03(日) 15:21:24.66
測ればわかる
380デフォルトの名無しさん:2011/07/03(日) 19:03:20.36
bit、pairs系のmt、公開APIでのdtor、gotoなど
色々更新されてるね
空文が地味に嬉しい
381デフォルトの名無しさん:2011/07/03(日) 20:56:05.97
>dtor
RAII/Disposeキタコレと思ったら、tableにメタメソッド
__gcがつかえますよか・・。残念。
382デフォルトの名無しさん:2011/07/03(日) 22:48:15.59
>>376-377
サンクス。
>>376の方法でできたわ。意外にor文って便利なんだな。
>>377でできたみたいなら自分のやつどこか間違ってんのかな。
まぁ>>376のやつがわかりやすいからこっちでやるよ。
383デフォルトの名無しさん:2011/07/03(日) 22:50:05.58
metatableはなんか初めて触れると素敵感あふれるけどぶっちゃけ多用するのは害悪だと思う
384デフォルトの名無しさん:2011/07/03(日) 23:45:02.89
metaって名前がかっこよすぎるな
もっと恥ずかしい名前にするべきだった
385デフォルトの名無しさん:2011/07/04(月) 00:02:39.73
必死だなテーブル
386デフォルトの名無しさん:2011/07/04(月) 07:51:53.75
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
387デフォルトの名無しさん:2011/07/04(月) 18:34:45.39
>>382
いちおう言っとくけどその変数がブーリアンの場合はorだけじゃできないよ
388デフォルトの名無しさん:2011/07/04(月) 18:44:17.79
lua_tointeger()だとtrueが0になる仕様をどうにかしてほしい...
389デフォルトの名無しさん:2011/07/04(月) 20:58:42.52
>>388
つ luaL_checkint
390デフォルトの名無しさん:2011/07/04(月) 21:23:28.56
メタテーブルってテーブルを形そのままに拡張できるのがうれしいけど、
もともとリストとかセットとか操作演算子とか用意しといてくれよ。
重複排除がしにくくてしゃーない。
391デフォルトの名無しさん:2011/07/04(月) 22:46:14.52
重複排除とか
どこの一神教だよ
392デフォルトの名無しさん:2011/07/04(月) 22:49:06.79
Cに組み込むのってどんなメリットが有るの?
393デフォルトの名無しさん:2011/07/04(月) 22:51:21.12
コンパイルだりーときとか、リリース後に拡張したい時とか
394天使 ◆uL5esZLBSE :2011/07/06(水) 13:42:06.10
>>388
∨∨∨∨∨∨∨∨∨∨
「「「「「「「「「「「 lua_tointeger()だとtrueが0になる仕様をどうにかしてほしい... 」」」」」」」」」」」(キリ!!!ッッ!!!
∧∧∧∧∧∧∧∧∧(キリッッ!キリッッ!!!きリッッッッ!キリッッ!!!!きリッッ!!!
きも
395デフォルトの名無しさん:2011/07/07(木) 13:26:45.42
ゲ製から誘導されてきた。

できるだけ単純に書けて、単純な出力をするスクリプト言語を作った。
定義ファイル代わり+シーケンスも多少は書けるってとこ。
興味があったらどうぞ。
ttp://kushi.lv9.org/teco/index.html

元々は2Dゲームのエフェクトアニメ記述用で、スプライトの設定とか、アニメパターンの制御に使ってたもの。
多少は汎用性が欲しいなと思ってたらこんな感じになった。
396見習いちょっと休憩中:2011/07/07(木) 19:00:28.98
>>395
実体はアセンブラに組み込むP-codeに近いですか?よく知らないですけど。
VMのソース付きだからコンパイル言語で使うには自由がききそうですね。
397デフォルトの名無しさん:2011/07/07(木) 19:12:01.51
「データは作ってやるからあとはてめーでやれ」
398デフォルトの名無しさん:2011/07/07(木) 21:09:36.40
>>395
何処から本体DL出来るのかと探し回った挙句
ソースからやっとURL見つけた
なんでこんなところにと思ったが
どうやらIEなら普通に表示されてるようだ
399デフォルトの名無しさん:2011/07/07(木) 22:52:44.86
Luaでクラス作りで質問です。
obj.keyでインスタンスの値を返してobj.key(Arg)でメソッドを実行するという風にしたいのですが、
setmetatable({key1 = function(Arg) … end, -- メソッド
       key2 = function(Arg) … end,
       ……          ……},
       {__index = function(self,key) -- インスタンス
         if key == key1 then
           ……
           return result
         elseif key == key2 then
           ……
           return result
         …………
         end})

今は上のようにメソッドのテーブルにメタテーブルでインスタンスを返す関数をくっつけて実装しているのですが、
メタテーブルをなくしてメソッドとインスタンスを一つのテーブルにまとめて
すっきりさせたいと思ったのですがそういうことはできないでしょうか?
obj.keyで帰ってきた関数を()で評価するところを、obj.keyで関数を評価して値を返すところまでやりたいということです。
400デフォルトの名無しさん:2011/07/07(木) 23:17:24.42
メタテーブルなしだと無理じゃねーかな
つーかそんなコストかけて分かりにくくするなんてことしないほうがいい
スクリプトは簡潔に小さくが基本
401デフォルトの名無しさん:2011/07/08(金) 00:05:16.09
>>399
get_a(){return a++;}
みたいのか
嫌過ぎるw
402デフォルトの名無しさん:2011/07/08(金) 06:49:39.21
>>400-401
get()ってメソッド書くより直接インスタンス受け取ったほうが
使う側でわかりやすいと思ったんですが、やっぱり複雑すぎますね。
やめておきます。
403395:2011/07/09(土) 02:10:52.48
レスありがとう。

>>396
P-code って初めて聞いたけど、似たようなものだと思うよ。独自のVM用命令って意味で。
出力バイナリを簡単に、詳細を明確にしておけば、いじりやすいかと思った。
コンパイラのソースも公開予定だけど、これはもうちょい先になる。プライベートな事情で。

>>398
HTMLのチェックしたらひどいことになってたわ。
修正しておいた。報告ありがとう。
404デフォルトの名無しさん:2011/07/09(土) 08:08:17.87
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

405デフォルトの名無しさん:2011/07/09(土) 10:35:52.59
406デフォルトの名無しさん:2011/07/09(土) 12:25:15.95
日本製は歓迎したいところだけど、使うとなるとちゃんと何年も継続してくれるかが不安だ。
407399:2011/07/09(土) 17:48:58.34
すみません。まだちょっと諦めきれないところがあるので
メタテーブルの設定をする関数を作ろうと思っているのですが、

setmetatable({},{__index = setmetatable({},{__index = setmetatable({} …

とメタテーブルの__indexの値がテーブルなら、さらにメタテーブルを付けて入れ子にできますが、

setmetatable({},{__index = function …

と__indexの値を関数にした場合はそのメタテーブルにさらにメタテーブルを付けたりして
入れ子にすることはできないのでしょうか?
408デフォルトの名無しさん:2011/07/09(土) 18:22:50.30
local mt = getmetatable(t) or {}
setmetatable(t, {
__index = function(self,k)
return mt.__index and mt.__index(self,k) or nil
end})
409デフォルトの名無しさん:2011/07/09(土) 18:31:11.10
__index以外の要素もあったらめんどくさいよね、それって
410デフォルトの名無しさん: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] )
411407:2011/07/09(土) 23:10:07.52
>>408
ありがとうございます。
論理演算で関数つなげれるって便利ですね。
412デフォルトの名無しさん:2011/07/10(日) 00:04:46.61
>>409
基底に垂れ流すだけなら
inherit_mt[k] = base_mt[k]
で参照してあげるだけなので
rideして何をするか次第じゃないかな
413デフォルトの名無しさん:2011/07/10(日) 00:44:27.70
クラスとか継承に向いてないよねLuaって
414デフォルトの名無しさん:2011/07/10(日) 01:58:26.32
プロトタイプベースの継承は、苦手ですか?
クラスベースの継承を使いたいなら、クロージャでクラス実装したライブラリ探すとか?
415デフォルトの名無しさん:2011/07/10(日) 02:01:47.22
416395:2011/07/10(日) 02:17:52.79
>>406
それを保証するのは難しいね。好きで続けられる分にはいいんだけど。
もし飽きたら重荷を背負い続けることになるし、放棄したら無責任と思われそう。
俺自身がこれを使い続けるのが、動機的にもモチベ的にも一番いい手だろうなぁ。

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

コーディング規約で縛るとかで対策してる?
431デフォルトの名無しさん: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())

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

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

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

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

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

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

SJISを使いたい場合は [[ ]] で
くくるとエスケープシーケンス無効リテラルになるので、ダメ文字問題もおきない。
""でもSJISが使いたい場合はソースにパッチが必要になるが。
454デフォルトの名無しさん:2011/07/15(金) 14:47:47.23
それは対応「させてる」って話であって「してる」じゃないんでね?
455デフォルトの名無しさん:2011/07/15(金) 19:41:29.44
語りえないことについて、対応が対応がと呪文を唱えるのは
かっこわるい
456デフォルトの名無しさん:2011/07/15(金) 19:43:09.05
IronLuaってないの?
457デフォルトの名無しさん:2011/07/15(金) 19:43:51.81
どのみちLuaが文字コード対応なんて贅肉を取り入れることはないから安心しなょ
458デフォルトの名無しさん:2011/07/15(金) 22:09:31.08
>>456
LuaInterfaceとNuaってのがある
459デフォルトの名無しさん: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対応のライブラリばかりでいて欲しい。
460デフォルトの名無しさん:2011/07/16(土) 07:24:24.54
>>455
どこの翻訳機使ってるんだよ
461デフォルトの名無しさん:2011/07/16(土) 08:01:14.49
要するに

print([[ハロワ]])

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

print("ハロワ")

でSJISに代表されるような文字コードでも化けずに表示できるようにならんかなって事だろ?
462デフォルトの名無しさん:2011/07/16(土) 08:56:50.75
Lua側で文字を弄らず出力せず、組み込んだアプリ側でやればいいってお話?
463デフォルトの名無しさん:2011/07/16(土) 11:47:49.69
対応対応いってるやつは素人
464デフォルトの名無しさん:2011/07/16(土) 11:54:32.46
まあソースにわざわざSJIS埋め込むメリットないし。
465デフォルトの名無しさん:2011/07/16(土) 18:01:32.28
そーっすね
466デフォルトの名無しさん:2011/07/16(土) 19:10:58.12
しょーゆーこと
467デフォルトの名無しさん:2011/07/16(土) 23:02:38.71
ここ参考にしてやっとこさ__index〜__callまでキー全部入りのメタテーブル設定したクラスを継承する関数作れた。
サンクスコ。
468デフォルトの名無しさん:2011/07/16(土) 23:05:44.86
では次はオーバーロードとオーバーライドを指定して継承できるように改良して下さい
469デフォルトの名無しさん: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)

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

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

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

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

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

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

海外のコードみてても普通にcreateして変数上書きしてたりしますね。
速度関係無いなら別にこれでいいかな。
何か簡単ならやっとこうと思ったんですけどね。
496デフォルトの名無しさん:2011/07/20(水) 10:38:12.38
使い回すコード書いてベンチとったけどあんまり速くならんかった記憶があるが、実装適当だったせいかも
「スクリプト言語による〜」でもわざわざ言及されてたし、差が出るかどうか計った人いたら教えて欲しい
497デフォルトの名無しさん:2011/07/20(水) 10:43:11.13
ゲームとかシビアな要求がある場合だけでいいんじゃん?所詮スクリプトだし
498デフォルトの名無しさん:2011/07/20(水) 11:50:48.25
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
499デフォルトの名無しさん: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、  \  \| \   \ヽ   / ノ
500デフォルトの名無しさん:2011/07/20(水) 20:10:21.26
全くLua厨のキモさは天性だな。( ´,_ゝ`)プッ
501デフォルトの名無しさん:2011/07/20(水) 20:18:14.49
アンヘルスクリプト最強
502デフォルトの名無しさん:2011/07/20(水) 20:35:30.86
シナリオのあるゲームならLUAの有用性も分かるんだけど、組み込み家電で活用できる用途ってあるかな?
503デフォルトの名無しさん:2011/07/20(水) 21:19:29.14
>組み込み家電
そんな餌で(ry
504デフォルトの名無しさん:2011/07/20(水) 21:32:43.91
Pornってやつが組み込み家電でも使えなかったっけ?
505デフォルトの名無しさん:2011/07/20(水) 22:07:03.41
確かAcceedが組み込み家電向けの言語だったと思う。
506デフォルトの名無しさん:2011/07/21(木) 00:27:27.81
>>503
いや、すまん。組み込み家電っつーか、組み込み機器でも良いんだけど。
今のところヤマハのルーターぐらいしか応用例知らなくて。
507デフォルトの名無しさん:2011/07/21(木) 08:52:59.70
         \   l´⌒\⌒\ \\ \
           \ ヽ   )  )   \\ \\   
              (   \ \∩___∩ \\ 
           \   \  ⌒⌒| ノ      ヽ  \\      
              \ \   /  ●   ● ト、\ \\\ 
               \  Y |    ( _●_)  ミ\  \\\  
               \ / 彡、_  |∪| ノ   \  \\\
                 (____)―ヽノ' ヽ      ̄ ̄ ヽ\\
                                \,  j  l l .l }
                         Lua!   l (_ノノノノ

508デフォルトの名無しさん:2011/07/21(木) 20:39:48.55
Acceedいいな。まさにLuaとAngelScriptの良いとこ取りだね。
509デフォルトの名無しさん:2011/07/21(木) 20:52:30.12
参考リンクくれ、Acceed
510デフォルトの名無しさん:2011/07/21(木) 21:14:47.47
ぐぐれ。
511デフォルトの名無しさん:2011/07/21(木) 21:21:11.85
無いのか。
512デフォルトの名無しさん:2011/07/21(木) 21:35:15.98
Acceed、何かアダルトビデオのメーカーばっかり引っかかるな
513デフォルトの名無しさん:2011/07/21(木) 21:39:58.68
Acceedすごすぎwこういうの待ってたんだよw
514デフォルトの名無しさん:2011/07/21(木) 21:54:01.01
AcceedのURL貼ってくれ。ゲイビデオしかヒットしない。
515デフォルトの名無しさん:2011/07/22(金) 00:02:37.93
なにかに名前つけるときは検索されたときのこと考えて慎重に付けないとだめだな
仮にAcceedがどんなに良い言語だったとしても検索してゲイビデオが出てきたら普及する前に潰れるわ
516デフォルトの名無しさん:2011/07/22(金) 00:27:44.84
おまいら釣られすぎw
517デフォルトの名無しさん:2011/07/22(金) 00:28:28.81
いや、釣られたのは俺かorz
518デフォルトの名無しさん:2011/07/22(金) 09:19:34.56
オナニー言語イラネ
519デフォルトの名無しさん:2011/07/22(金) 10:32:05.92
やたーオレオレスクリプトできたよー
520デフォルトの名無しさん:2011/07/22(金) 12:28:16.27
>>519
GitHubかBitBucketで公開して
521デフォルトの名無しさん:2011/07/22(金) 15:40:15.33
debug.debug() ってコンソール用なんですかね?
522デフォルトの名無しさん:2011/07/22(金) 15:44:17.66
yes, you can.
523デフォルトの名無しさん:2011/07/22(金) 18:23:03.47
>>522
ありがとうございます。

じゃあ組み込み用途には使えないって事ですね…
524デフォルトの名無しさん:2011/07/22(金) 21:15:38.67
あー、要するに struct lua_Debug を中心としたデバッグインターフェイスを利用して、
アプリでデバッガ用意してねって話なんですね。
これはLuaに限らず、Squirrelでも同じと。
525デフォルトの名無しさん:2011/07/23(土) 08:56:21.91
         \   l´⌒\⌒\ \\ \
           \ ヽ   )  )   \\ \\   
              (   \ \∩___∩ \\ 
           \   \  ⌒⌒| ノ      ヽ  \\      
              \ \   /  ●   ● ト、\ \\\ 
               \  Y |    ( _●_)  ミ\  \\\  
               \ / 彡、_  |∪| ノ   \  \\\
                 (____)―ヽノ' ヽ      ̄ ̄ ヽ\\
                                \,  j  l l .l }
                         Lua!   l (_ノノノノ

526>>524:2011/07/23(土) 09:00:18.66
コンソールベースのデバッガがあれば十分なんで lua.c パクってきて、
アプリが管理してる lua_State* 渡してコンソール画面だしてやる感じにします。

いや〜しかし面白いですねコレ。
527デフォルトの名無しさん:2011/07/23(土) 09:03:26.36
yes, we can.
528デフォルトの名無しさん:2011/07/24(日) 01:04:03.98
> アプリが管理してる lua_State* 渡してコンソール画面だしてやる感じにします。
それが出来る状況ならdebug.debugも可能だと思うw
529デフォルトの名無しさん:2011/07/24(日) 09:13:48.04
ゲームだとゲーム画面内にコンソール描いてるよな。
そんな感じじゃないのかな。
530デフォルトの名無しさん:2011/08/05(金) 06:10:07.59
Luaがスレッドセーフなことを確認しました
531デフォルトの名無しさん:2011/08/05(金) 06:44:55.58
× Luaがスレッドセーフなことを確認しました
○ Luaのリファレンスを一読しました
532デフォルトの名無しさん:2011/08/05(金) 10:15:40.19
lua も squirrel も全然スレッドセーフじゃないぞ
533デフォルトの名無しさん:2011/08/05(金) 10:45:28.69
>>532
だから確認したって。
スレッド毎にステート作ってやればぜんぜんOK。
534デフォルトの名無しさん:2011/08/05(金) 11:01:35.90
それはスレッドセーフとは言わない
535デフォルトの名無しさん:2011/08/05(金) 11:05:32.78
<lua.h>の関数がreentrantだっていうのを翻訳したんだろうな
訳を見て原文を見抜けない人には猫に小判
536デフォルトの名無しさん:2011/08/05(金) 11:14:16.75
>>534
はあ?
537デフォルトの名無しさん:2011/08/05(金) 11:16:17.78
http://lua-users.org/lists/lua-l/2011-07/msg00072.html

Lua states, created with lua_newstate or luaL_newstate are completely
separate and thread safe.
538デフォルトの名無しさん:2011/08/05(金) 11:17:13.87
それぞれの関数そのものは再入可能でスレッドセーフってことで、スレッド毎に完全に独立して動作させることができるCライブラリという意味ではスレッドセーフだな

でもステートと付随するVMの操作を複数のスレッドにまたがって行うことはできないからスクリプト言語としてはスレッドセーフじゃない
539デフォルトの名無しさん:2011/08/05(金) 11:18:45.08
>>538
「ステートと付随するVMの操作」ってなによ
540デフォルトの名無しさん:2011/08/05(金) 11:20:21.50
スレッド毎VMとか管理地獄になるからやめとけ……

メインスレッドだけで動かしてそこに別機構でメッセージパッシングするのが安全安心
541デフォルトの名無しさん:2011/08/05(金) 11:23:34.71
>>540
もう作ったんで。
Luaがスレッド毎VMに耐えることを確認しました。
ちなみにそれほど面倒じゃないです(言語によるのでしょうが)。
542デフォルトの名無しさん:2011/08/05(金) 11:26:59.34
それぞれのスクリプト中から相互にグローバル変数/関数を直接見れないのってすごく面倒じゃね?
543デフォルトの名無しさん:2011/08/05(金) 11:29:18.99
>>542
別に面倒じゃないです。
544デフォルトの名無しさん:2011/08/05(金) 11:31:38.69
うむ、それならいい。がんばれ。
545デフォルトの名無しさん:2011/08/05(金) 22:38:38.78
Lua使ってたらIDEが構文チェックしてくれないからエラー出まくりで
普通にC++使ってるほうがいいって気付いた。
スクリプト言語ってやっぱりCGI以外で存在意義ってないな。
546デフォルトの名無しさん:2011/08/05(金) 22:47:20.08
そうですね。
547デフォルトの名無しさん:2011/08/05(金) 22:51:48.65
普通使う時にIDE側に定義足すだろ
548デフォルトの名無しさん:2011/08/05(金) 22:53:01.73
>>60
そんな時は鉛筆削りで代用してる
549デフォルトの名無しさん:2011/08/05(金) 22:54:05.29
すまん誤爆
550デフォルトの名無しさん:2011/08/05(金) 23:39:00.60
>>533
それは Lua がスレッドセーフなのではなく、
君のプログラムがスレッドセーフなのである。

業界標準に従った用語法を使わないと、書籍や
論文を読むときに自分が困ることになるので、
勝手なオレ用語は改めた方がいい。
551デフォルトの名無しさん:2011/08/06(土) 00:11:44.16
print([[ ]])
print(" ")
print(' ')
print ' '
print " "
いろいろあってどれ使うか迷う
552デフォルトの名無しさん:2011/08/06(土) 01:00:20.80
これといった標準がないときには、自分勝手に決めてしまう性格の方が迷いがないね
553デフォルトの名無しさん:2011/08/06(土) 09:08:54.34
>>550
はいはい。業界君乙。
554デフォルトの名無しさん:2011/08/06(土) 09:10:50.78
Luaはスレッドセーフな運用ができる。これで満足か?
555デフォルトの名無しさん:2011/08/06(土) 09:11:43.39
業界君ってめんどくさい
556デフォルトの名無しさん:2011/08/06(土) 09:14:47.50
>>550
つまりお前のプログラムのバグでスレッドアウトってだけだろ?
Luaのせいにすんなよ
557デフォルトの名無しさん:2011/08/06(土) 09:54:20.58
業界に限らずオレオレ用語君は実際困るんだが
558デフォルトの名無しさん:2011/08/06(土) 09:54:52.31
鉛筆削りで代用できる言語。それがLua
559デフォルトの名無しさん:2011/08/06(土) 10:01:43.94
荒れてるようなのでまとめると
スレッドごとにlua_stateを独立して保持してやれば、スレッド毎に独立して動きます。
こういう意味でLua(のDLL)はスレッドセーフです。
なお、各lua_state間(各スレッド間)で情報共有(グローバルj変数などの共有)が
できるかどうかまでは確認していません。
560デフォルトの名無しさん:2011/08/06(土) 11:28:47.23
スレッドセーフって意味は、複数のスレッドからアクセスして大丈夫かっていう意味だろ。
561デフォルトの名無しさん:2011/08/06(土) 11:49:24.27
>>560
はい
562デフォルトの名無しさん:2011/08/06(土) 11:53:31.69
スレッドセーフにするには、ロックするか
書き込み可の共有変数を無くすか
Luaは後者
563デフォルトの名無しさん:2011/08/06(土) 11:58:08.53
>>562
はい
564デフォルトの名無しさん:2011/08/06(土) 12:00:59.78
共有変数のないライブラリなんかも
「スレッドセーフなライブラリだ」とか普通に使うよなぁ。
業界君の業界ってどこなんだろ?
四次元の世界のプログラマとかか?
565デフォルトの名無しさん:2011/08/06(土) 12:15:10.67
四次元の世界から書き込みご苦労です
566デフォルトの名無しさん:2011/08/06(土) 12:33:46.57
スクリプト言語の実装だと、スレッドセーフかどうか、ってのは同一VMに対する操作に対してを指すのが一般的じゃね?
ruby しかり python しかり。
lua とか squirrel はそもそもスタック操作が atomic じゃないわけで、最初からそういう点でのスレッドセーフを確保するつもりが全く無い実装だよね

VM わけてスレッドセーフなのはあたりまえすぎるというか、そうなってない言語実装とかはずかしくて表にだせないような
567デフォルトの名無しさん:2011/08/06(土) 12:43:36.75
SafeLua
http://sourceforge.net/p/safelua/wiki/Home/
SandBox? TryLuaみたいなサイトでも作るんかな
568デフォルトの名無しさん:2011/08/06(土) 12:45:18.95
何が一般的かはよくわかりませんが、とにかく
Luaはlua_sate毎に別スレッドで動かせることを確認した次第です。
それ以外のことは知りません。
569デフォルトの名無しさん:2011/08/06(土) 13:11:29.76
スレッドセーフでないことの確認はともかく
スレッドセーフであることの確認って
ソースコードチェックする以外にどうやるの?
570デフォルトの名無しさん:2011/08/06(土) 13:21:50.16
>>569
実際に使ってみるとか。
571デフォルトの名無しさん:2011/08/06(土) 13:23:14.44
>>566
RubyやPythonってひとつのプロセスに複数VM持てたっけ?
572デフォルトの名無しさん:2011/08/06(土) 13:39:14.58
例えばCの関数 strtok_r は strtok のリエントラント版でな、
こいつは本質的にはLuaと同じ方法でスレッドセーフを実現してる
573デフォルトの名無しさん:2011/08/06(土) 13:56:53.74
>>569
ストレステストです。
574デフォルトの名無しさん:2011/08/06(土) 14:09:01.86
>>571
グローバルに一つやね。スレッドセーフは GIL で確保する実装

ruby はマルチVMの研究はやってたと思うけど詳しいことは知らない
マルチVMでシームレスに使うには結局メッセージパッシングの機構を
つくりこむ必要があってそこで難航してたんじゃなかったっけか

lua や squirrel はその点は総スルーしてるから、使う側はあきらめるか独自に頭をひねる必要がある
575デフォルトの名無しさん:2011/08/06(土) 14:16:15.19
そろそろ erlang 使いが乱入してこないかしら
576デフォルトの名無しさん:2011/08/06(土) 14:20:57.31
レースコンディションを自身で解消できるものしか
スレッドセーフと呼ばない、というのが業界標準なのか?www
それどこ業界よ?
577デフォルトの名無しさん:2011/08/06(土) 16:59:20.24
>>574
lua_stateが別でも相互に参照し合いたいってことか?
イラネ
そんなマイナーな議論よそでやってくれよ
578デフォルトの名無しさん:2011/08/06(土) 17:02:54.39
Lua鹿使えないSEなんていないんだから、
Luaをコントロールする言語側でロックなり何なりして情報を共有すればいいだけ。
Lua言語ですべてやろうとする馬鹿は消えてほしい
579デフォルトの名無しさん:2011/08/06(土) 17:09:56.18
まとめ
Luaはlua_state毎に別スレッドで動作させることができます。
そういう意味でLuaはスレッドセーフです。
異なるlua_satateで情報を共有できるか否か、というのはまた別の話になりますです。
普通は母体となるC言語なり何なりでロックしてから情報を書き換えるなどすればよいだけなので、
一般的な意味でも、Luaはスレッドセーフであるといえると思います。
580デフォルトの名無しさん:2011/08/06(土) 17:15:36.47
なお、スレッドセーフに関しの Lua Programming Gemsの著者である
Luiz Henrique de Figueiredoのコメント。

http://lua-users.org/lists/lua-l/2011-07/msg00072.html

Lua states, created with lua_newstate or luaL_newstate are completely
separate and thread safe.
581デフォルトの名無しさん:2011/08/06(土) 17:19:02.57
なお、レースコンディションを自身で解消できる言語しか
スレッドセーフと呼ばない、という業界が存在するらしく
話がかみ合わない場合があるので注意。
582デフォルトの名無しさん:2011/08/06(土) 17:54:26.45
wikipediaのスレッドセーフの実現手法の中の
スレッドローカルデータってのにあたるのかな?

この方法でLuaはスレッドセーフといえるのであれば、
広域変数もスレッドセーフであると言えるってこと?
583デフォルトの名無しさん:2011/08/06(土) 17:58:03.76
Luaはリエントラントだっつーとろーが
584デフォルトの名無しさん:2011/08/06(土) 18:13:08.71
>>583
ああスマソ。理解した。
lua APIはスレッドセーフだけど、lua_stateはスレッドセーフじゃないよってことか
585デフォルトの名無しさん:2011/08/06(土) 18:23:43.54
なんだよlua_Stateがスレッドセーフじゃないって
スレッドセーフってのはAPIとかコードの性質であって変数のじゃない
お前は全然分かってない
586デフォルトの名無しさん:2011/08/06(土) 19:06:40.86
いずれにせよLuaはCorei7対応だね
587デフォルトの名無しさん:2011/08/06(土) 19:07:50.79
>>574
Do not confuse Lua threads with OS threads.
www
588デフォルトの名無しさん:2011/08/06(土) 20:46:00.83
>>545
AngelScript|Д`)ジー
589デフォルトの名無しさん:2011/08/06(土) 23:21:08.88
StackTraceないのLuaって?
590デフォルトの名無しさん:2011/08/06(土) 23:28:43.00
組み込み言語って主にどういう場面で使うの?
591デフォルトの名無しさん:2011/08/07(日) 01:39:17.21
592デフォルトの名無しさん:2011/08/07(日) 08:42:26.79
Android OSで動くLuaはまだないんだよね?
593デフォルトの名無しさん:2011/08/07(日) 08:53:57.78
>>591
スタックトレースっちゅうよりユニットテストじゃん。
594デフォルトの名無しさん:2011/08/07(日) 10:45:31.82
>>593
また業界用語は厳密に使うべき君か?
595デフォルトの名無しさん:2011/08/07(日) 12:16:40.81
>>594
スタックトレースとユニットテストは別物だよね?
596デフォルトの名無しさん:2011/08/07(日) 14:11:40.03
>>592
javaの皮だけ用意すれば
ふつうにコンパイルしてc/c++とLua使えるんじゃないの?
ndk?
http://www.google.com/search?q=lua+ndk&hl=ja
597デフォルトの名無しさん:2011/08/07(日) 20:34:11.99
スタックトレース → エラーがおきたらスタックの中身表示するVMの機能。
ユニットテスト → クラスが正常に動作するかチェックするためのクラス?
598デフォルトの名無しさん:2011/08/07(日) 23:01:53.34
なんでluaのbreakって最後にしか置けないの?
なんかメリットあるの?
599デフォルトの名無しさん:2011/08/08(月) 06:24:28.05
5.2betaならblock途中にも置けるよ
gotoのないバージョンで置けて
なんかメリットあるの?
600デフォルトの名無しさん:2011/08/08(月) 17:00:26.36
インクリメントとか複合代入演算子とか実装してほしい
601デフォルトの名無しさん:2011/08/08(月) 17:58:56.66
luaのリファレンスで stat ::= 〜 って書いてあるけど
::= の部分ってなにを意味しているの?
602デフォルトの名無しさん:2011/08/08(月) 18:17:12.41
>>600
イラネ
603デフォルトの名無しさん:2011/08/08(月) 18:59:39.21
>>601
BN記法でぐぐれ
604デフォルトの名無しさん:2011/08/08(月) 19:58:01.99
>>603
ありがとうございます
いままで知らなかったのが嘘の様なほどの基本なんですね
605デフォルトの名無しさん:2011/08/08(月) 20:38:51.81
>>602
なんで?サイズが大きくなるから?
606デフォルトの名無しさん:2011/08/08(月) 21:27:29.26
>>600
AngelScript|Д`)ジー
607デフォルトの名無しさん:2011/08/08(月) 21:29:24.91
>>601
BNF記法でイコールみたいな感じらしい
608デフォルトの名無しさん:2011/08/08(月) 22:37:40.90
定義だろ。
609デフォルトの名無しさん:2011/08/09(火) 07:59:00.89
>>605
コーディング時間が長くなるとかより、コード解析速度ダウンのほうが痛いから。
610デフォルトの名無しさん:2011/08/09(火) 17:50:24.15
複合代入はともかくインクリメントは流石に要らんな
611デフォルトの名無しさん:2011/08/09(火) 18:55:10.81
612デフォルトの名無しさん:2011/08/09(火) 22:10:48.62
Luaはスクリプト言語なんだから全部の式に戻り値付けてほしい。
X = if Y < 0 then -1 else 1 end みたいに。
あとメタテーブルがあるんだから演算子は必ず代入しないといけないのもやめてほしい
Table + {1,2,3} とか
613デフォルトの名無しさん:2011/08/09(火) 22:13:14.72
スクリプト言語 → 全部の式に戻り値

この論理がどう繋がってるのかわからんのだが 
614デフォルトの名無しさん:2011/08/09(火) 22:28:57.95
確かにw

要は3項演算子が欲しいんだろ?
615デフォルトの名無しさん:2011/08/09(火) 23:01:07.79
好きなように改造してしまえばいいじゃない
616デフォルトの名無しさん:2011/08/09(火) 23:14:02.07
X = Y < 0 and -1 or 1
でいいんじゃなかったっけ
617デフォルトの名無しさん:2011/08/10(水) 00:10:49.21
>>613
Ruby脳なんだよ
618デフォルトの名無しさん:2011/08/10(水) 00:17:16.81
AngelScript|Д`)<インクリメント演算子欲しい子よっといで
619デフォルトの名無しさん:2011/08/10(水) 00:21:33.23
マイナーすぎるからやだ(´・д・`)
620デフォルトの名無しさん:2011/08/10(水) 00:26:46.59
んで、luaの三項演算子もどきのソレだけど、確か何か欠点が無かったっけ
621デフォルトの名無しさん:2011/08/10(水) 01:10:41.77
素直にand/orとして解釈すれば欠点はないが、もどきとしての解釈は自己責任
f(x and g(y) or z)
自己責任で適当な f, g を選ぶ
622デフォルトの名無しさん:2011/08/10(水) 01:27:08.33
天使さん不憫すぐるw
623デフォルトの名無しさん:2011/08/10(水) 02:03:13.96
>>620
true and false or true
624デフォルトの名無しさん:2011/08/10(水) 02:14:37.63
>>623
ソレダ
真のときの返値が偽値のときにおかしくなるんだな
625デフォルトの名無しさん:2011/08/10(水) 08:53:45.48
Pythonでは (x and [y] or [z])[0] とする
626デフォルトの名無しさん:2011/08/10(水) 11:40:58.81
Prologではカットを使う
Schemeでは(call/cc (lambda (k) (or (and x (k y)) z)))
627デフォルトの名無しさん:2011/08/10(水) 19:26:22.15
>>625
今のPythonには、そもそも三項演算子がある
ちょっと珍しい書法だが

条件が真の際の返値 if 条件式 else 条件が偽の際の返値
628デフォルトの名無しさん:2011/08/10(水) 20:59:09.92
なんでそこまで1行にこだわるのかね何回も使うなら関数定義すりゃいいのに。
F(条件、真、偽)とかじゃ駄目なの?
629デフォルトの名無しさん:2011/08/10(水) 21:24:49.30
そりゃ遅延評価の言語ならIFだって関数にできるけどさ
630デフォルトの名無しさん:2011/08/10(水) 21:28:05.19
>>628
それだと返値に関数が指定されたとき
関数に全く副作用が無く、かつ
呼ばれることによるオーバーヘッドが気にならない程度の小さい関数ならば良いが

呼ばれることによって何らかの状態が変わってしまうものや
呼ぶことによって大量の処理が動く場合はマズいことになる
631デフォルトの名無しさん:2011/08/10(水) 22:03:12.74
スピード求めるならCにでもやらせればいいと思うんだが・・・
今さら気がついたんだけど1行でも動くんだな。関数なんか書かなくていいっすね
もっとリファレンスきちんと読み直してくるわ



632デフォルトの名無しさん:2011/08/10(水) 22:39:02.20
>>631
スピードって、複合代入やインクリメントの話?
633628:2011/08/10(水) 22:48:23.43
話の内容勘違いしてるの気がついて逃げようとしただけだから
もうほっといてくれー(ノ_・。)
634デフォルトの名無しさん:2011/08/13(土) 06:59:24.23
結局luaってゲームぐらいしか活用できるとこないの?
635デフォルトの名無しさん:2011/08/13(土) 07:55:39.27
ゲーム用なら値を倍精度じゃなくて単精度にして欲しいんだが。

結局、Basicにチン毛が生えた程度の誰得言語だなLua。
636デフォルトの名無しさん:2011/08/13(土) 07:58:33.32
>>635
??
637デフォルトの名無しさん:2011/08/13(土) 08:38:05.84
別にゲーム専用じゃないし、ゲーム開発者のLua紹介だと数値表現変更できるって書いてあるよ。
http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html#2.2
> 数値 は実数 (double) を表現する。 (しかし数値の内部表現としてfloatやlongなど他の型を使うよう
> Luaインタプリタをビルドし直すのは簡単である。ファイル luaconf.h を参照。)
638デフォルトの名無しさん:2011/08/13(土) 08:46:12.16
ゲーム作らないからよくわからないけど、x86基準にしたら単精度ってメモリがない環境向けじゃないかな。
http://boinc.oocp.org/benchmark.php
> Intel x86 プロセサでは、単精度でも倍精度でも速度の差はあまりありません。
http://lua-users.org/wiki/FloatingPoint

(単精度で用意したAngelScriptとかSquirrelのプログラムと比較しないと意味ないだろうけど)
数値計算ループ自体は他のスクリプト言語より速いしLuaJITならかなり速い。
http://shootout.alioth.debian.org/u32/benchmark.php?test=mandelbrot&lang=all
http://luajit.org/performance_x86.html

ゲームみたいなフレーム単位のリアルタイム処理やってると固定小数点演算とかライブラリ使うみたいだし、
シビアでいろいろ大変ですね。
http://www2.muroran-it.ac.jp/circle/mpc/front/old1/program/algorithm/fixedpoint/index.html
639デフォルトの名無しさん:2011/08/13(土) 08:55:52.88
>256-266
ループしてるよ!
640デフォルトの名無しさん:2011/08/13(土) 11:08:49.02
PSPだと double 使うと悲惨なことになるよ
641デフォルトの名無しさん:2011/08/13(土) 14:10:24.86
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

642デフォルトの名無しさん:2011/08/13(土) 20:44:27.38
doubleで頂点データなんか用意したら、そんな精度要らないのにメモリやキャッシュを無駄にするし、x86でもSSEを前提に設計するだろうに。
643デフォルトの名無しさん:2011/08/13(土) 21:08:55.04
LuaJITだと、JITがSSE2向けに作ってある
644デフォルトの名無しさん:2011/08/17(水) 00:13:26.24
組み込みだとdoubleはまだまだきついね
かといってLuaは整数、少数で変数分けてないからfloatにすると精度がきついので
固定少数を検討することになる

ところで蒸し返すようで悪いんだが、Luaはスレッドセーフではないよね?
リエントラントに作ってあって、アプリ実装者がやりやすいように作ってあるだけで
LuaGemsの人はState分離したらスレッドセーフにできるよって言ってるだけだし、

いや、規制で書き込めなくて、過去スレで何回かスレッドセーフではないって言われてるのに
なんか理不尽な流れだなーと思って眺めてたんだ。オレオレ君が間違った認識持って帰る分には
いいんだけどね
645デフォルトの名無しさん:2011/08/17(水) 00:15:17.22
てめえの垢で呟いてろオッサン
646デフォルトの名無しさん:2011/08/17(水) 00:33:01.21
なんでだれも実際のコードで試さないの?
647デフォルトの名無しさん:2011/08/17(水) 00:35:37.68
とっくに試して自明だからだろ

同一のstateとそれから派生した state は別スレッドからは扱えない。スレッド毎に作る分には問題ない

事実は単にこれだけ。
648デフォルトの名無しさん:2011/08/17(水) 05:04:41.03
そう。
それに対して「僕はこうだとおもいまーす」はブログに書いといてください
649デフォルトの名無しさん:2011/08/17(水) 08:38:38.61
>>644
Luaはstate単位でスレッドセーフ。
それをもってスレッドセーフでないというのは単なる言葉遊び。好きにしろ。
650デフォルトの名無しさん:2011/08/17(水) 08:41:27.32
>>644
Do not confuse Lua threads with OS threads.

By Luiz Henrique de Figueiredo
651デフォルトの名無しさん:2011/08/17(水) 08:50:19.38
>>650
そんな間違いをしてる人はこの話の流れで一人もいないぞ
652デフォルトの名無しさん:2011/08/17(水) 13:33:36.16
スレッドセーフについては、複数走らせたい場合はStateを複数作れば
いいわけで、大した問題ではない。
一つのStateを複数のスレッドから使う場合も、Mutexでアクセス権を付与すれば
いいだけだし、そもそもそんな使い方をする状況もあるのか怪しい。

複数走らせてるLuaStateから同じC変数にアクセスする必要性ならわかるが、
それはLuaがスレッドセーフになってるかは関係ないケースだし。
スレッドセーフ厨の人は、どういう状況を想定してるんだろ?
653デフォルトの名無しさん:2011/08/17(水) 15:01:51.00
「C++のこのクラスはスレッドセーフですか?」って聞かれて
「インスタンスを分ければスレッドセーフです」って言ってるようなもんだよな。スレッドセーフ君
654デフォルトの名無しさん:2011/08/17(水) 15:26:57.48
>>652
「スレッドごとにスクリプトを走らせたい」ってのが第一義の目的として、
単純には state 複数で実現できるのはわかった上で、それだとグローバル変数を
簡単に共有できないから「一つのState を使いたい」って要望がでてくるんだと思われ。

その要望自体は皆理解はできると思う

で、一つのStateを複数のスレッドから使おうとした場合、確かにスクリプトの呼び出しとか
の部分だけを整理して Mutex で固めてしまうのは簡単なんだけど、
「スクリプトが複数スレッドで動いてる」って状況だと、そのスクリプト自体が lua/squirrel の
内部処理を自分のAPIつかっていろいろ呼び出してしまってるので、その操作も
全部精査した上で適切にロックする処理を全部の箇所に足す必要があります。
「付与すればいいだけ」なんだけど、その場所がかなり多くて調べるのもうまく動くかチェックするのも大変。
lua も squirrel もスタック操作がステートフルなので、APIをロックするだけではダメだからね。

俺はそんな作業頼まれても絶対やりたくないので、聞かれたら
「lua も squirrel も単一State の操作はスレッドセーフにできないからやめとけ」って説明します。
655デフォルトの名無しさん:2011/08/17(水) 15:35:57.26
単一State の操作をスレッドセーフにするバカっているの?
656デフォルトの名無しさん:2011/08/17(水) 15:46:11.04
>>653
それはLuaの実態がStateであると捉えるか、VM関数群であると捉えるかで
変わるんじゃない。

C標準関数みたいに内部変数が使いまわされてるのが混ざってないのだから、
マルチスレッドでの使用は一応考慮されて設計してるのでしょ。
657デフォルトの名無しさん:2011/08/17(水) 15:48:59.44
python とか ruby は実際そういうことをやってるよね。もっとも逆に「複数ステート」相当が無いんだけど。

lua や squirrel でやる物好きは、なかなかいないと思うけど、誰かが作ったら使う人はいるんじゃね?
658デフォルトの名無しさん:2011/08/17(水) 15:52:20.26
>適切にロックする処理を全部の箇所に足す必要

そんなことしなくてもコルーチンと併用して、VMが一時停止したときだけ
ロック解除すれば良いかと。
それ以前にグローバル変数はLua上で管理しない方がてっとり早いだろうけど。
659デフォルトの名無しさん:2011/08/17(水) 15:54:16.80
>>657
lua_newthreadがまさにそれじゃね
660デフォルトの名無しさん:2011/08/17(水) 16:03:24.61
>>658
コルーチンベースでのVMまるごとロックならそもそもスレッド全くわける必要がないような……

>>659
あれはコルーチン用のステート生成なので、親stateともども別スレッドから同時にはさわれません
661デフォルトの名無しさん:2011/08/17(水) 16:04:19.31
>>660
PythonやRubyはいけるの?
初耳
662デフォルトの名無しさん:2011/08/17(水) 16:11:47.34
>コルーチンベースでのVMまるごとロックならそもそもスレッド全くわける必要がないような

そうだよね。
だからなおさら1Stateを複数スレッドで〜という状況がありえないと思う。
663デフォルトの名無しさん:2011/08/17(水) 18:30:49.46
>>654
その要望自体理解できないが。
単に設計ミスじゃね。何でもかんでもLuaに頼る必要なかんべ。
664デフォルトの名無しさん:2011/08/17(水) 18:33:13.35
>>653
それの何が問題かをいってくれないと。
インスタンス単位でスレッド単位で十分なクラスなんだからそれでいいじゃん。
LuaもState単位でスレッドセーフが保障されていれば十分。
それ以上を望むのは馬鹿とマニアだけ。
665デフォルトの名無しさん:2011/08/17(水) 18:34:24.23
>>659
Do not confuse Lua threads with OS threads.

By Luiz Henrique de Figueiredo
666デフォルトの名無しさん:2011/08/17(水) 18:36:47.79
>>654
「グローバル変数を共有とかお馬鹿な設計はやめとけ」の間違いだろ?
Lua様のせいにしてんじゃねぞ、こら
667デフォルトの名無しさん:2011/08/17(水) 18:47:37.03
まとめ
Luaはlua_state毎に別スレッドで動作させることができます。
そういう意味でLuaはスレッドセーフです。
異なるlua_satateで情報を共有できるか否か、というのはまた別の話になりますです。
普通は母体となるC言語なり何なりでロックしてから情報を書き換えるなどすればよいだけなので、
一般的な意味でも、Luaはスレッドセーフであるといえると思います。
668デフォルトの名無しさん:2011/08/17(水) 18:58:47.61
>>664
言い方の問題じゃね?
「vectorはスレッドセーフである」とか普通は言わないでしょ
669デフォルトの名無しさん:2011/08/17(水) 19:11:08.78
まぁ完全なスレッドセーフではないよな。
スレッド運用可能程度で。
670デフォルトの名無しさん:2011/08/17(水) 19:15:17.29
関数がリエントラントでもスレッドセーフと呼ばないのは自由だが
馬鹿だと思われるから気をつけた方が良いよ
671デフォルトの名無しさん:2011/08/17(水) 19:18:32.78
>>661
CPython と CRuby は GIL で実現してるので実質同時に動くスクリプトは一つだけど、まあ、実現はしてる。
他の実装だと、MacRuby は既に GIL 無しになってて、実際に複数スレッドで同時にスクリプトが走る。
あとは Rubinius もたしか開発ブランチでは GIL 排除してる。
CPython は GIL 排除は目標にあがってたけどまだ実現はしてなかったはず
Jython と JRuby はJava上の実装だけど完全に複数スレッド対応ずみ

>>663
「スクリプトだけでなんでもやる」的なスクリプト言語では、現実に求められてる要望だよ。
マルチコア時の性能がかなり上がるからね。

もっとも、俺も Lua でする必要はさっぱり無いと思う。適材適所やね
672デフォルトの名無しさん:2011/08/17(水) 20:01:03.74
AngelScript|Д`)<AngelScriptは一応マルチスレッド環境対応って書いてるけど大丈夫なのかな?
AngelScript|Д`)<boost::threadと組み合わせて複数のスクリプト動かした時は問題なかったけど。
673644:2011/08/18(木) 00:37:04.54
まずごめん。予感はしてたんだがやっぱり荒れ気味にしてしまった
とりあえず >>647 の認識で合ってるか気になったんだ。
前の流れのときは(今もいるっぽいが)悪口雑多撒き散らしてまで
「一般的にスレッドセーフ」でまとめたい人がいたから。
これに関しては定義を決めないと結論出ないし、これでまとめるには
誤解を招くと思ったんで、 >>647 でおkなのを確認したかった

>>670
関数はそれでいいと思うんだけどvectorもLuaも状態を持ってるから、
ちょっと前提が違う。関数もstatic変数で状態持ってたら崩れる

でなんか面白い議論になってるLuaStateを単一でマルチスレッド化に
需要あんの?って話だけど、ちょっとずれてるかもしれんがGameProgrammingGemsの
7か8にそういう話が載ってたような。確か、変数、関数をスレッド数分
コピーしたくないから、一箇所に集めてアクセスさせる話だったと思う。
State自体はスレッド数あったかもしれんからずれてるかもしんない。
本は会社においてるから確認できなくてすまん。
ただ、最近は8コアとかざらだから無視できないのかもしれないね

あとほんと、なんか自分の自身が無いのに巻き込んだようですまない。
674デフォルトの名無しさん:2011/08/18(木) 02:08:07.86
>>671
> >>661
> CPython と CRuby は GIL で実現してるので実質同時に動くスクリプトは一つだけど、まあ、実現はしてる。
それで良しとするならLuaでも同じじゃないの?
countフックしてスイッチングするだけじゃん
675デフォルトの名無しさん:2011/08/18(木) 10:20:35.12
Lua Programming Gems http://www.lua.org/gems/
という本の
Enhanced Coroutines in Lua
という記事で、Lua のコルーチンをネイティブスレッドに対応させる拡張が紹介されてます。
ソースコードだけダウンロードできます。
使った事ないけど。
676デフォルトの名無しさん:2011/08/18(木) 15:18:24.60
>>668
多分この中でお前だけ話を理解できてない。
677デフォルトの名無しさん:2011/08/22(月) 22:05:23.49
AngelScript2.21.1リリース記念火気庫ヽ( ´∀`)ノ ボッ
http://www.gamedev.net/topic/609014-angelscript-2211-released/

asOBJ_ASHANDLEを使えばvalue typeをハンドルのように扱えるらしい
CScriptHandleは・・・どんな型の変数でもreference typeのように扱えるアドオンか?
Win64とMinGWでのnative calling conversionか・・・、うちには関係ないな
CSerializerというアドオンはモジュールの変数を、スクリプトを再コンパイルした後も内容を維持するためのものっぽい
678デフォルトの名無しさん:2011/08/22(月) 22:11:06.82
Lua 5.2リリース記念火気庫ボッはまだですか
679デフォルトの名無しさん:2011/08/22(月) 22:28:51.39
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
680デフォルトの名無しさん:2011/08/23(火) 14:24:57.18
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

681デフォルトの名無しさん:2011/08/23(火) 20:53:31.84
>CSerializerというアドオンはモジュールの変数を、スクリプトを再コンパイルした後も内容を維持するためのものっぽい 
これがsuspendで一時停止させたスクリプトの状態まで保存してくれるとなるとすげぇ便利なんだけどなぁ…
今度調べてみよう。
682デフォルトの名無しさん:2011/08/26(金) 14:17:09.17
ログ復活
683デフォルトの名無しさん:2011/08/26(金) 18:59:01.22
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
               /     /
               (_ ⌒丶..
                | /ヽ }.
                  し  ))
                    ソ  トントン
684デフォルトの名無しさん:2011/08/31(水) 21:00:58.75
Luaのメタテーブルの__addメソッドでテーブルとテーブルの足し算をしたいのですが、
同じメタテーブルを設定したテーブルのXとYがあって、
X = X + Y と X = Y + X を区別するために、
今、呼び出されているメタテーブルがXとY、どちらのメタテーブルか、
判定する方法はないでしょうか?
同じメタテーブルを設定しているので、getmetatableでも判定できないので困ってます。
685デフォルトの名無しさん:2011/09/01(木) 00:41:00.58
__addに指定したメソッドの中で判別できるでしょ
686デフォルトの名無しさん:2011/09/04(日) 11:49:09.40
こういう答え方するオタクの事
前からキモイと思っていたけど病気だったんだな
ttp://livedoor.blogimg.jp/hamusoku/imgs/1/c/1cd6fc3e.jpg

「俺ごときが知ってる事を答えれない奴はどんなに見下してもいい」
とか顔を真っ赤にして反論してくれよw
687デフォルトの名無しさん:2011/09/04(日) 12:50:40.32
Firefox 9、「型推論エンジン」をついに統合 -JavaScriptさらに高速化
http://s.journal.mycom.co.jp/news/2011/09/01/079/

効果は言語によって違うのだろうけど、LuaJITなどに移植し易い機能だったら、
patch対応出来るのだろうか
688デフォルトの名無しさん:2011/09/04(日) 13:20:09.35
http://www.extremetech.com/computing/94532-firefox-9-javascript-performance-improved-by-20-30-with-type-inference
詳細項目みると単純ループや数値計算まわりで、LuaJITの最適化済みの得意分野になるので、あんまり期待できないかも。
689デフォルトの名無しさん:2011/09/04(日) 16:12:14.33
>>686

482 :名無しさん@初回限定:2007/09/10(月) 02:39:05 ID:+7lLhCDw0

2chで調べ物をしたい時は「教えてください」って書いても
なかなか教えてもらえない。

そういう時は、知ったかぶり風に間違ったことを自信満々に書く。
そうすると、ものすごい勢いでツッコミを入れてもらえる。
690デフォルトの名無しさん:2011/09/04(日) 21:07:22.31
アスペ診断か
この板でもっと流行らせるべき
691デフォルトの名無しさん:2011/09/06(火) 00:38:09.21
Javascriptかー。最近Node.jsが熱いらしいね
webGLもあるしどうなるかな
692デフォルトの名無しさん:2011/09/07(水) 20:36:46.82
LuaでLuacのバイトコードコンパイルでもJITコンパイルでもなくて
普通にバイナリにコンパイルしてDLLかなんかにするっていう
そんな魔法のようなことできませんか?
693デフォルトの名無しさん:2011/09/07(水) 21:28:07.12
普通に C とかで書くかプログラマ辞めろ
694デフォルトの名無しさん:2011/09/08(木) 09:02:27.07
>>692
ネイティブバイナリにするのが重要なのか、DLLにするのが重要なのか、
どちらなのかでアプローチが変わると思う。
695デフォルトの名無しさん:2011/09/08(木) 20:57:31.40
>>693
ひどい…そんな風に言わなくたっていいじゃない!

>>694
配布形式は全部バイナリで、
開発中はVMにDLL読み込ませて呼び出し〜みたいにできたらいいなぁ。
ということで両方知ってたら教えてください。
696デフォルトの名無しさん:2011/09/08(木) 21:04:45.62
llvm-luaとかで、バイナリコード吐けるのかな?
697デフォルトの名無しさん:2011/09/08(木) 21:40:20.80
周辺のモジュールも含めて全体をコンパイルするのはJITでないと難しい気がする。
単体でコンパイルして意味があるのかよくわからん。
698デフォルトの名無しさん:2011/09/08(木) 22:48:17.38
>>695
DLLにLuaを埋め込めばいいのでは?
699デフォルトの名無しさん:2011/09/09(金) 09:50:27.31
>>695
ネイティブの速度が必須とかじゃなきゃ、698の言うとおり
Luaを丸ごとDLLにすれば良いだけじゃ。
配布形式は全部バイナリでというのは、スクリプトが別ファイルになってるのが
嫌なのだろうか?
もしそうならスクリプトのソースをバイナリに埋め込めばいい。
700695:2011/09/09(金) 22:00:26.22
>ネイティブの速度
…現状で遅いんで、ちょっとでも早くならないかなと思って聞きました…。

701デフォルトの名無しさん:2011/09/09(金) 22:57:30.61
>>700
どの部分が遅いのかテストしてみたら?
なんかよう分からんけどLuaは遅いという理由だと
全部Cで書けとしか言えない
702デフォルトの名無しさん:2011/09/10(土) 00:10:13.57
LuaJIT使ってるかい?
703デフォルトの名無しさん:2011/09/10(土) 06:44:17.73
スクリプトは所詮スクリプト。
適材適所。
704695:2011/09/10(土) 07:21:42.29
JITより早くしたいから最適化コンパイラでもないかなぁと思って聞いたんですが、
ムリポ ナイポですかね。理解した。
705デフォルトの名無しさん:2011/09/10(土) 10:19:46.79
全部Cで書くのは無理じゃないが、コスパを考えると人間は怠惰になる。
706デフォルトの名無しさん:2011/09/10(土) 10:48:28.84
Basic並にメジャーになればそのうちコンパイラを作ろうとかいう奇特な人が現れるかもね。
707デフォルトの名無しさん:2011/09/10(土) 13:01:35.78
コンパイラ作るよりコード変換機作るほうが楽だし早いよ
708デフォルトの名無しさん:2011/09/10(土) 14:18:37.55
JITより速くしたいとか夢見てるんだから、コード変換機じゃまだ足りないなんじゃね?
709684:2011/09/14(水) 22:00:02.88
あの>>684の質問に誰か答えてくださる方いないでしょうか?
>>685で言われてる通りの質問なのでそのメソッドの中で判別する方法を聞きたいのですが。
710デフォルトの名無しさん:2011/09/14(水) 22:48:38.64
>>709
もし__addがXのものでもYのものでもない普通の関数だったら、
「__addは誰のものか」という質問は存在しない。
だから質問が無視されているのだと思います。
711684:2011/09/14(水) 23:39:19.08
>>710
普通の関数というのがよくわかりませんが、
__add=function(operand1,operand2) … end
という要素が入ったメタテーブルを使ってます。
このメタテーブルをXとY両方にsetmetatableしているので、
XのものでもYのものでも無く共用、というか、
XとYは同じクラスのオブジェクトです。
712デフォルトの名無しさん:2011/09/14(水) 23:57:20.68
>>711
一例として
X = { 1,2,3,4,tonumber=function(self) ret=1; for i,v in ipairs(self) do ret = ret * v end; return ret end}
Y = { 1,2,3,4,tonumber=function(self) ret=0; for i,v in ipairs(self) do ret = ret + v end; return ret end}
mt = {__add=function(op1,op2) return op1:tonumber() + op2:tonumber() end}
setmetatable(X,mt); setmetatable(Y,mt)
print(X+Y); print(Y+X)
713デフォルトの名無しさん:2011/09/15(木) 15:40:50.46
>>711
X+YとY+Xをなぜ区別したいのかわからないので
適切な回答が思いつかない。

ひょっとしてX=X+YのときXの束縛を変更するんじゃないくて、
Xに束縛されているオブジェクトに副作用を起こしたいとかか?
714684:2011/09/15(木) 22:03:12.20
>>712
これはX+YもY+Xも値が一緒だから判定は無理ってことでしょうか・・・?

>>713
順番を保持した値が重複の無いリストを作りたいのですが、
X = {1,2,3},Y = {2,4} とあって両方に__addメソッドがついた同じメタテーブルが設定されているとき
X = X + Y なら Y が後ろなので X = {1,3,2,4} に、
X = Y + X なら Y が前なので X = {2,4,1,3} になるといった形で
足されるリストの並びを優先するようにソートしたいのです。
715デフォルトの名無しさん:2011/09/15(木) 22:47:00.74
>>714
一例として
X = {1,2,3}
Y = {2,4}
mt = {__add = function (op1,op2)
local t = {}
local s = {}
for i,v in ipairs(op1) do
table.insert(t,v)
s[v] = true
end
for i,v in ipairs(op2) do
if not s[v] then
table.insert(t,v)
end
end
return setmetatable(t,getmetatable(op1))
end}
setmetatable(X,mt)
setmetatable(Y,mt)
print(unpack(X+Y))
print(unpack(Y+X))
716デフォルトの名無しさん:2011/09/15(木) 23:17:55.02
>>714
普通だったら
X + Y => {1,3,2,4}, Y + X => {4,1,2,3}
もしくは
X + Y => {1,2,3,4}, Y + X => {2,4,1,3}
ってすると思うんだけど、
なんで
X + Y => {1,3,2,4}, Y + X => {2,4,1,3}
になるの?
ただの誤記なら>715でいいけど
717デフォルトの名無しさん:2011/09/16(金) 14:48:55.75
>>696
可能なはずでは?無理ならCやアセンブリコードへ変換して
手作業で最適化すればいいと思う。

>>704
言語の速度に文句を言う前にプロファイラ使って
遅い部分を見つけて最適化しては?マシン買い換えるのも手。
718デフォルトの名無しさん:2011/09/16(金) 16:42:46.02
単に全部Luaでやりたい変態ってだけだろ。
たぶんプログラマに向いてない。
719684:2011/09/16(金) 20:41:28.97
>>715-716
X = X + Y なら代入されるのは X なので重複される値を
X から消して Y を後ろから足すという風にしたかったのです。
X = Y + X でも同様に X に代入されるので
重複される値を X から消してから Y を前から足す、といった形です。
代入されるのを Y に変えれば
Y = X + Y → Y = {1,2,3,4}   Y = Y + X → Y = {4,1,2,3}
と言う風に計算したかったのですが、自分で書いてて気づきましたが、
どちらのoperandのmetatableが呼ばれたかを判定するだけじゃなくて
代入先の変数が何かも判定しないといけないから無理っぽいですね…。
すみません。お騒がせしました。
720デフォルトの名無しさん:2011/09/16(金) 20:52:46.08
こういうのはスズキ菌キャリアではなくライトデベロッパであればありがちな話だな。

まあLua 遅くて不満なら、Cコードの吐ける Euphoria 4.0.3 でも使えば?
LL言語の癖に嫌でも低級メモリ操作とC言語と向き合わなくては Win32 API すら
叩けないから脱童貞にはいいんじゃない? 必要ならスレ立てておいで。
721デフォルトの名無しさん:2011/09/16(金) 21:22:33.94
そういうことなら、拙作だけど Teco(>>395) が吐くバイトコードはかなり単純なので、アセンブラへの変換も楽じゃないかな。
722デフォルトの名無しさん:2011/09/16(金) 22:20:28.28
「Javaより遅い言語なんて耐えられん」by Webプログラマ
723デフォルトの名無しさん:2011/09/16(金) 22:54:08.67
>>719
X+Yの場合 {1,2,3}+{2,4} -> {1,2,3}+{4} -> {1,2,3,4}
Y+Xの場合 {2,4}+{1,2,3} -> {4}+{1,2,3} -> {4,1,2,3}
という事なら
X = unq.new({1,2,3})
Y = unq.new({2,4})
function unq.concat(op1,op2,[,base])...end
というような関数で操作した方がいいんじゃない?
メタメソッドでやるとすると
どちらを基準とするのかという情報をX,Yに埋め込んだり
他から参照したりする必要があるから汚くなる
724684:2011/09/17(土) 16:33:14.72
>>723
確かにクラスやメソッドでやったほうがいいですね…。
テーブルをテーブルのままに処理を加えられるメタテーブルっていいなと思いましたが、
制限多すぎるのでやっぱりやめておきます。
725デフォルトの名無しさん:2011/09/26(月) 18:31:24.78
AngelScript 2.21.2 released - GameDev.net
http://www.gamedev.net/topic/611415-angelscript-2212-released/
726デフォルトの名無しさん:2011/09/26(月) 18:48:04.05
・スクリプトエンジンがvakye typeで値を返すときに、
 ヒープではなくスタックに確保するようにして高速化
・64bit LinuxとMac OS Xでnative calling conventionsに対応するための変更
 3次元ベクトルのようなPODの構造体ではコピーコンストラクタやデストラクタが実装されず、
 この機能がうまく働かないことがあるらしい
 全てのメンバーがint,float,doubleの場合、asOBJ_APP_CLASS_ALLINTSやasOBJ_APP_CLASS_ALLFLOATSのフラグをつけることで解決した
 全ての組み合わせをカバーできるわけではないが、ほとんどのものはこれでカバーできる
・サンプルゲーム
・クラスメンバーにもメタデータを付けられる

ABIってなんだろ?64bit LinuxとMac OS XのABIは複雑で、
メンバーの型によっては違うレジスタに渡される事があると書いてあるが
727デフォルトの名無しさん:2011/09/26(月) 19:20:42.04
この場合コーリングコンベンションのことかな

ABIという言葉にはもっと他のものも含まれるけども
728デフォルトの名無しさん:2011/09/26(月) 23:00:45.10
Application binary interface
729デフォルトの名無しさん:2011/09/27(火) 08:14:54.52
> 全てのメンバーがint,float,doubleの場合、asOBJ_APP_CLASS_ALLINTSやasOBJ_APP_CLASS_ALLFLOATSのフラグをつけることで解決した
なんだかグダグダだな
730デフォルトの名無しさん:2011/09/27(火) 08:20:21.82
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

731デフォルトの名無しさん:2011/09/27(火) 09:09:08.59
規則を単純明解にしようと思ったら、全部スタック(CPUスタック)渡しになって重くてかなわん、
というわけで性能を稼ごうとレジスタ渡しを頑張ると規則が複雑怪奇になる。というトレードオフ。
732デフォルトの名無しさん:2011/09/27(火) 09:40:13.82
トレードオフではないだろ
クロスコンパイルと同じで
ターゲットごとに処理を振り分けりゃいいだけなんらからw
733デフォルトの名無しさん:2011/09/28(水) 01:10:06.20
大体組み合わせと例外でバリエーションがやたら増えて泥沼になるよ
734デフォルトの名無しさん:2011/09/28(水) 07:07:59.80
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

735デフォルトの名無しさん:2011/09/29(木) 00:27:13.65
Windows環境でUnicodeビルドして普通に使えるのって今のところSquirrelだけ?
736デフォルトの名無しさん:2011/09/29(木) 07:29:47.36
Luaでも普通にUnicode使えるよ
737デフォルトの名無しさん:2011/09/30(金) 22:57:03.23
AngelScriptだって大丈夫
ファイルを読み込みをライブラリに頼らず
自分でやればいいだけ
738デフォルトの名無しさん:2011/10/01(土) 00:50:39.29
Xtalも少し初期化あたりいじる必要あるけどできるよ
739デフォルトの名無しさん:2011/10/01(土) 01:07:11.13
す、Squirrelだってっっ……!
740デフォルトの名無しさん:2011/10/01(土) 02:37:23.52
>>739
それ最初に出とるわw
741デフォルトの名無しさん:2011/10/01(土) 02:41:46.32
Squirrelのstring型ってutf16leでいけんの?
他の言語の同じようにvm内(とファイルエンコーディング)はutf8でやって
変換かませてたわ。
742デフォルトの名無しさん:2011/10/01(土) 08:33:44.98
ゲーム系ってLua多くねえか
743デフォルトの名無しさん:2011/10/01(土) 08:41:17.42
WoWがluaだから?
他にも何か理由あるのかな
744デフォルトの名無しさん:2011/10/01(土) 08:53:42.52
浮動小数点をfloatに指定して再コンパイルしてやるとDirectXとの相性ばっちりになるからとか?
745デフォルトの名無しさん:2011/10/01(土) 12:36:38.69
そ、そんなマニアックな理由なの?
もっと単純に小さくて速い組み込みやすいスクリプト言語で、
開発者がよく知っている言語をゲーム内のスクリプトに使いたかっただけじゃないの

ゲームとは関係ないが、unix系ツールの組込みスクリプトが
lua,python,tclあたりでデファクト争ってて、ただのユーザーとしては面倒きわまりない
746デフォルトの名無しさん:2011/10/01(土) 13:27:05.52
速度と採用実績だろうね>Lua多い
ゲームは特に速度気にする傾向が強いような気がする。
747デフォルトの名無しさん:2011/10/01(土) 15:15:08.08
pythonとluaは別の道具な感じがするが
748デフォルトの名無しさん:2011/10/01(土) 22:32:28.93
LuaでCからモジュール内の変数を設定することは出来るのでしょうか?

例えば
static luaL_Reg l_foo);[] = {
{ "bar", lua_bar },
{ NULL, NULL }
};
luaL_register(L, "foo", l_foo);
で設定した後にC側で
foo.varに3を設定し

Lua側で
a = foo.var
などのように利用したいのですが
749デフォルトの名無しさん:2011/10/02(日) 00:01:23.77
lua_pushnumber(L, 3);
lua_setfield(L, -2, "bar");
lua_pop(L,1);

luaL_dostring(L,"foo.bar=3");
lua_pop(L,1);

luabind::globals(L)["foo"]["bar"] = 3;
lua_pop(L,1);
750デフォルトの名無しさん:2011/10/02(日) 00:06:59.72
あぁ、varか。
barの部分をvarに読み替えてちょーだい
751デフォルトの名無しさん:2011/10/02(日) 02:14:44.52
>>746
ユーザー(ゲームだから、プレイヤーか)も速度を求める人が多いからね
そりゃ開発側も速度に気を使うだろうと思うよ
752デフォルトの名無しさん:2011/10/02(日) 11:35:03.09
>>749
lua_getglobal(L, "foo");
lua_pushinteger(L, g_"3");
lua_setfield(L, -2, "var");
lua_pop(L,1);

これで登録できました

モジュール名でテーブルが作成され、そこにモジュール内部の関数等が登録されるのですね
753デフォルトの名無しさん:2011/10/02(日) 11:52:41.94
>>752
ちょっとゴミが残ってた、正しくは以下です

lua_getglobal(L, "foo");
lua_pushinteger(L, "3");
lua_setfield(L, -2, "var");
lua_pop(L,1);
754デフォルトの名無しさん:2011/10/02(日) 14:31:39.30
>>751
日本語よめる?
755デフォルトの名無しさん:2011/10/06(木) 00:51:42.50
microSDにメジャーなOSでほぼ動くエディタと自前ツールとLuaJIT一式入れとくと簡単で便利だ。
756デフォルトの名無しさん:2011/10/06(木) 21:04:40.10
LuaJIT 安定してますか?
757デフォルトの名無しさん:2011/10/06(木) 23:59:45.35
ちょっぱやだからオヌヌメ
758デフォルトの名無しさん:2011/10/07(金) 02:21:46.97
LuaJITのAAください
759デフォルトの名無しさん:2011/10/07(金) 05:39:15.60
    ∧__∧
    (´・ω・)   いやどす
    ハ∨/^ヽ
   ノ::[三ノ :.、
   i)、_;|*く;  ノ
     |!: ::.".T~
     ハ、___|
"""~""""""~"""~"""~"
760デフォルトの名無しさん:2011/10/08(土) 13:47:41.25
LuaJIT2.0そろそろRCにならんかなぁ
761デフォルトの名無しさん:2011/10/08(土) 14:28:58.23
if 〜 then 〜 end
英語が母国語の国の幼稚園児でも意味が分かる。これがLuaのいいところ。
if (〜) {〜}
これを幼稚園児が理解することはおそらくない。
なのに後者がいいという奴は、単に自分が好きな言葉で書かせろって
わがままいってるだけ。つまり、ぴゅーた日本語ベーシックを作った奴と同じ発想。
762デフォルトの名無しさん:2011/10/08(土) 14:39:18.33
お前の脳内幼稚園児の話なんてどうでもいいわ
763デフォルトの名無しさん:2011/10/08(土) 14:58:29.15
764デフォルトの名無しさん:2011/10/08(土) 16:34:14.65
Lua はアプリケーションへの組み込みを意図し,
高速な動作,ポータビリティ,拡張の容易さなどを
重視して設計されたコンパクトな汎用スクリプト言語.
今月の TIOBE Programming Community Index では
Ruby の一つ下の12位にランキングされている*1.
これは,iPhone アプリの開発者による利用が増えている
というのが大きい*2と思うが,プログラム言語の設計者た
ちへのインタビューを纏めた Masterminds of Programming
(邦訳: 言語設計者たちが考えること)に Lua の設計者の
インタビューが取り上げられたり,その設計者の一人
Roberto Ierusalimschy による Programming in Lua や
入門書(入門Luaプログラミング)など日本語の書籍も出版さ
れたりしているので,ここ数年で日本でも認知/普及が進ん
でいるのは間違いなさそうだ.
765デフォルトの名無しさん:2011/10/08(土) 18:15:09.60
速さを極めるならイフゼンより括弧の方がすこしだけいいでしょ
766デフォルトの名無しさん:2011/10/08(土) 19:38:04.68
{}のほうがパッと見たときに全体を把握しやすいな。
if〜then〜endだとVBのようにゴチャッとした印象になるし、タイプミスが発生する可能性も高くなる。

分かりやすいことが必ずしも優れているとは限らないしな。
それにスクリプトを使うのは幼稚園児ではないのだし。
767デフォルトの名無しさん:2011/10/08(土) 19:40:30.24
初見で意味が分かるかどうかは重要じゃない罠
768デフォルトの名無しさん:2011/10/08(土) 20:48:23.03
if〜thenはLingoで見飽きた
769デフォルトの名無しさん:2011/10/08(土) 21:22:57.77
スクリプトにLuaを選択する人は速度を求めるようなコアな層なんだし
記述的にももう少しスマートにして欲しいと考えるのはある種当然の成り行きとも言えるなぁ

Luaの記述は分かりやすい!Lua最高!な人ほどむしろ別のスクリプト言語選ぶべきと思う
770デフォルトの名無しさん:2011/10/08(土) 21:43:55.16
英単語に弱い日本人らしい意見が続出
771デフォルトの名無しさん:2011/10/08(土) 21:47:07.00
{}はコメントだろ?Pascalだと。
772デフォルトの名無しさん:2011/10/08(土) 22:45:26.86
視覚的にカーリーブレースのほうが見やすい気がしなくもない
773デフォルトの名無しさん:2011/10/08(土) 23:03:19.84
カーリーブレイスはすでにテーブルリテラルで使っちゃってるからかな。同じ記号を複数の意味で使いたくなかったとか?
774デフォルトの名無しさん:2011/10/09(日) 00:28:45.10
>>770
AppleScript書きまくってから言えー
775デフォルトの名無しさん:2011/10/09(日) 00:32:47.05
>>774
何かと思ってググってみたが、日本語で記述できるんだな…
776デフォルトの名無しさん:2011/10/09(日) 01:33:22.07
LuaとWSHとひまわりを足して2で割ったような感じか
777デフォルトの名無しさん:2011/10/09(日) 07:14:00.57
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

778デフォルトの名無しさん:2011/10/09(日) 07:56:02.97
おっぱい言語が最強
779デフォルトの名無しさん:2011/10/09(日) 13:37:17.00
PyPy!!
780デフォルトの名無しさん:2011/10/09(日) 13:39:55.98
man man
781デフォルトの名無しさん:2011/10/11(火) 12:03:55.72
ttp://www.dartlang.org/

ぐぐるの Javascript 狙いうち?な新言語

やっぱみんなクラス欲しいのなw
782デフォルトの名無しさん:2011/10/11(火) 12:17:54.43
Lua
アーカイバ作ってて、拡張子のテーブルにコマンド入れといてos.executeとか
local FileExtTable={lua={SrcExt="lua",DstExt="lbc",Cmd="luajit.exe -b $FileName.$SrcExt $FileName.$DstExt"},...}
テーブルとstring.gsub "%$(%w+)"が便利でにやけちゃう
783デフォルトの名無しさん:2011/10/13(木) 12:46:17.22
         \   l´⌒\⌒\ \\ \
           \ ヽ   )  )   \\ \\   
              (   \ \∩___∩ \\ 
           \   \  ⌒⌒| ノ      ヽ  \\      
              \ \   /  ●   ● ト、\ \\\ 
               \  Y |    ( _●_)  ミ\  \\\  
               \ / 彡、_  |∪| ノ   \  \\\
                 (____)―ヽノ' ヽ      ̄ ̄ ヽ\\
                                \,  j  l l .l }
                         Lua!   l (_ノノノノ

784デフォルトの名無しさん:2011/10/17(月) 23:00:09.22
http://angelscript.svn.sourceforge.net/viewvc/angelscript?revision=998&view=revision

- Implemented the shared class feature
- Fixed bug in CSerializer add-on

他のモジュールで書いたクラスも使えるようになったということか
785デフォルトの名無しさん:2011/10/18(火) 05:29:04.41
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
786デフォルトの名無しさん:2011/10/18(火) 08:34:48.45
入門Luaプログラミング買ったら糞本だった
787デフォルトの名無しさん:2011/10/18(火) 11:03:06.07
プログラミングインルアで必要十分
788デフォルトの名無しさん:2011/10/20(木) 00:19:11.36
>>786
同意してしまう。
Dijkstraのところなんて、あれは糞だ。
789デフォルトの名無しさん:2011/10/20(木) 00:42:29.26
>>786
同意w ある程度囓ってから本買いにいったお蔭で変なの掴まないですんだわw
790デフォルトの名無しさん:2011/10/20(木) 08:46:09.20
結局、本屋では何も買わなかったというオチ?
791デフォルトの名無しさん:2011/10/20(木) 14:19:01.46
>>721
それ、いいとは思うが日本国内に置いてあっても発展は望めないような。
ドキュメントなどを英訳して海外に出したほうがいいような。
792デフォルトの名無しさん:2011/10/20(木) 19:18:24.98
海外に向けてオープンソースで公開したら勝手に拡張してもらえるっていうのは
海外の人達はそれだけ、物好きで技術高い人が多いってこと?
793デフォルトの名無しさん:2011/10/20(木) 19:25:01.55
単純に
人が多いってこと
かと。
794デフォルトの名無しさん:2011/10/20(木) 19:36:57.73
日本人は社畜だからただでできるほど余裕ない
795デフォルトの名無しさん:2011/10/20(木) 22:09:02.34
わかんないところはソース読むorトライ&エラーで十分
796デフォルトの名無しさん:2011/10/23(日) 02:10:32.05
>>791
英語かー。読むのも満足にできないしなあ。
知り合いに、使ってもらうための努力もしろとは言われたけれど。

いざ完成すると大したもの作った気がしなくて、宣伝なんて恥をかくだけじゃ?って思ってしまうのは、日本人だからか。
797デフォルトの名無しさん:2011/10/23(日) 22:21:36.38
新しいソフトウェアを開発することが恥なものか
むしろ反響が全く無いほうが萎える
798デフォルトの名無しさん:2011/10/23(日) 22:31:22.49
>>796
> いざ完成すると大したもの作った気がしなくて、宣伝なんて恥をかくだけじゃ?って思ってしまうのは、日本人だからか。
現時点で
個人サイトに公開し2chに貼り付けて宣伝してると思うw
799デフォルトの名無しさん:2011/10/23(日) 22:51:09.29
>>797
だよね。レスもらえるだけでうれしいもの。
励まされたよ。ありがと。

>>798
その通りw
自己顕示欲とのせめぎあいだわ。
苦労した分だけ、けなされるのが怖い。
800デフォルトの名無しさん:2011/10/25(火) 01:02:09.68
みんなに聞きたいんだけどluaの言語仕様でこれは納得できない!とかってのある?
配列が1から始まるとかnilとfalse以外は0でも真扱いされる部分とかは賛否両論ありそうだけど
801デフォルトの名無しさん:2011/10/25(火) 01:12:50.15
賛成意見なんてあるのか?
802デフォルトの名無しさん:2011/10/25(火) 01:16:47.41
>>800
1オリジンはBASIC出身だから「おっ、久し振りだな1オリジン」ってしか思わなかったし
nilとfalse以外真ってのもRubyは私用でよく使うから「Rubyと同じだな」としか思わなかったな
配列を連想配列で擬似的に実現してるってのも何かの言語でやったような…
803デフォルトの名無しさん:2011/10/25(火) 01:52:29.18
PHPとLuaとJavascriptは言語仕様がいまいちなのに
流行ってしまったな
804デフォルトの名無しさん:2011/10/25(火) 02:18:40.48
>>800
breakはあるのにcontinueが無いのはなぜ?と2日前に思ったよ
805デフォルトの名無しさん:2011/10/25(火) 02:48:13.87
>>800
~=だけじゃなく!=も使いたい。他は特に気にならん。
806デフォルトの名無しさん:2011/10/25(火) 03:23:32.44
>>800
やっぱ数値型がdoubleしかない点だろう。
807デフォルトの名無しさん:2011/10/25(火) 05:50:39.18
>>800
英語の文法は日本語と違うから嫌い!といっても無駄なのと一緒だよ
808デフォルトの名無しさん:2011/10/25(火) 06:23:32.42
>>804
え、continueないの!?個人的にはこれが一番衝撃的だわ。
じゃあcontinue的な事したい場合ってさ、if文で後続処理を囲うとかしないといけないわけか。
809デフォルトの名無しさん:2011/10/25(火) 08:16:25.28
c++/clrでlua使うと動いてけど
warning LNK4248: 未解決の typeref トークン (0100001A) ('lua_State') です。イメージを実行できません。
とでる、このwarningどうしたら解決できるのだろうか?

#include "stdafx.h"
#include <lua.hpp>
using namespace System;

int main(array<System::String ^> ^args)
{
lua_State *L;
return 0;
810デフォルトの名無しさん:2011/10/25(火) 09:23:00.98
>>809
#include <lstate.h>
811デフォルトの名無しさん:2011/10/26(水) 01:36:17.41
LuaってC++とかで言うところのenumあったっけ?
812デフォルトの名無しさん:2011/10/26(水) 01:55:37.87
ないよ。標準APIだとそのへんは単純に文字列だぬ
813デフォルトの名無しさん:2011/10/26(水) 01:58:43.66
>>811
ない。
enum相当ならば
http://lua-users.org/wiki/ReadOnlyTables
などで実現できる。
814デフォルトの名無しさん:2011/10/26(水) 16:41:55.17
luaって学んでいく内に他の言語にはあるような機能が無かったり変な縛りがあったりして
少し残念に思ったりする。まぁ代わりの手段はあるとはいえ。
815デフォルトの名無しさん:2011/10/26(水) 19:42:30.06
そこら辺は速度優先するためのトレードオフになってる面が大きいから仕方ないだろ。
気に入らなかったら自分で拡張すれば良いんだし。
816デフォルトの名無しさん:2011/10/27(木) 20:16:43.70
>>815
それもそうか。速さは大事だし。
あんま気にしてなかったけどluaってインタープリター系の言語なんだっけ?
817デフォルトの名無しさん:2011/10/27(木) 21:53:16.36
AngelScript|Д`)<分かりやすい文法と聞いて飛んできました
818デフォルトの名無しさん:2011/10/27(木) 23:16:29.31
>>816
中間言語にコンパイルして、その中間言語をインタプリタ(VM)が実行するスタイルなので、
分類としては「中間言語コンパイラ(バイトコードコンパイラ)」かな。

JIT機能があるので、実際の動作はさらに複雑
819デフォルトの名無しさん:2011/10/28(金) 04:56:52.45
自分がLuaの仕様で最も嫌なところは、ローカル変数を宣言する時、キーワード: local を付けないといけないところ。
つけ忘れると、グローバルになってしまう。
スクリプトはプログラマ未満が書くことも多いため、結果グローバル変数が散見されることもある。
Pythonみたいにデフォルトでローカル、キーワード明示宣言でグローバル出あるべきだと思う。
820デフォルトの名無しさん:2011/10/28(金) 06:05:49.67
>>819
あー、考えてみたらその通りだね。
PHPやPythonみたいにグローバル宣言の時はglobal指定子必須とかにしておくべきだったと思う。
まぁlocal指定子も語感がカッコよくて割りと好きなんだけどねw
821デフォルトの名無しさん:2011/10/28(金) 07:24:52.97
初めてリファレンスみながらいぢってるのだけど
for i=1,10 do
のi ってlocal扱いしてくれるのかな?
822デフォルトの名無しさん:2011/10/28(金) 07:36:35.69
というかグローバルかローカルかなんてどっちでもいい。
823デフォルトの名無しさん:2011/10/28(金) 07:45:56.61
>>821
for文で用いられる変数はローカル変数になると言語仕様に明記されている。

>>821
こんなシロウトがいて開き直るから困る。
824デフォルトの名無しさん:2011/10/28(金) 07:47:39.29
シロウトは>>822だった。
825デフォルトの名無しさん:2011/10/28(金) 08:00:41.25
俺は「変数宣言はlocalで行う」と考えることにした
グローバル変数なんてだいたい無くても何とかなるし
826デフォルトの名無しさん:2011/10/28(金) 08:10:50.50
どう困るかシロウトでも分かるように説明してくれよ。
i と l を見間違えるからとかあほっぽいこといいださないだろうな。
827デフォルトの名無しさん:2011/10/28(金) 08:30:17.05
Luaは配列が1開始なのがやっぱ一番気になるなぁ。
連携先の言語は基本的に0開始だから妙なバグ埋め込まないか不安になる。
まあ今更変更なんて効かない部分だろうけど。
828デフォルトの名無しさん:2011/10/28(金) 10:26:40.29
そういえばC++とかだと
for ( int i=0; test != 10; i++ )
とか条件節に任意の式書けるけど
luaのfor文って条件節に相当する部分には繰り返す数しか書けないよね

while文あるから別に困らないけど少し驚いた
829デフォルトの名無しさん:2011/10/28(金) 10:59:19.34
>>819
whileでもifでもブロック内でlocalにしようと思えばできるところがいいんじゃないか
localをつけ忘れる言語より、つけようと思ったのにできなかった言語の方が不安だ

配列も、ずらそうと思えばずらせる
830デフォルトの名無しさん:2011/10/28(金) 11:29:17.48
英語の文法は日本語と違うとこがいやだといくらいっても無駄だって。
マイナーで流行らないオナニー言語の増加を招くだけ。
831デフォルトの名無しさん:2011/10/28(金) 11:55:32.02
http://moonscript.org/
http://moonscript.org/reference/
これとか中々良いんじゃないか
832デフォルトの名無しさん:2011/10/28(金) 13:01:35.57
グローバル変数はまず単純に処理が重い。

もっと深刻なことは、そのグローバル変数がどの環境で束縛されているか分からなくなるから、クロージャやコルーチンを安全に使うことが難しくなる。

いや、普通に関数呼び出しを行うのも怖くなるか…。
833デフォルトの名無しさん:2011/10/28(金) 17:30:35.91
プログラム初心者のためにlua乗せようと思ったけど
グローバルやらローカルやら教えて使わせるのってつらくないか?

起動に時間かかるプログラムを再起なしで変更くわえられるので
スプリクトとして使えるのがうれしいけど
中級者以上限定って感じ?

皆どんな感じで使ってるの?
834デフォルトの名無しさん:2011/10/28(金) 17:37:49.62
いやもう、なにがなんだかw
835デフォルトの名無しさん:2011/10/28(金) 19:06:02.22
スプリクト! スプリクト!
836デフォルトの名無しさん:2011/10/28(金) 19:41:00.53
習得は容易で初心者でもすぐ扱えるようになるけど
その使途や目的の都合上、実用する際はそれなりにスキルのある人間がやる事が多いんだよね。
だから割と不満が出るんだろうな。
837デフォルトの名無しさん:2011/10/28(金) 21:20:58.72
http://jspp.javascript.am/
luaにcoffeescriptやこういうのみたいに、コンパイラや静的型チェッカーを作ってるプロジェクトはあるのかな?
838デフォルトの名無しさん:2011/10/28(金) 21:33:08.74
839デフォルトの名無しさん:2011/10/28(金) 21:57:31.51
840デフォルトの名無しさん:2011/10/29(土) 06:30:45.13
>>835
池袋の西部百貨店の本屋行ってみ。あるから。スプリクトコーナー。マジで。
841デフォルトの名無しさん:2011/10/29(土) 07:53:37.42
>>840
まじかww
842デフォルトの名無しさん:2011/10/29(土) 09:12:44.46
>>827
気になるなら、配列先頭にマッチする正規表現を作ってgrepした結果を比較したら良いだけの話では?
その程度の作業なら3分もかからないだろ。
843デフォルトの名無しさん:2011/10/30(日) 00:55:20.21
12分ぐらいで知るLuaVM
http://www.slideshare.net/Isoparametric/12-luavm
へ〜
844デフォルトの名無しさん:2011/10/30(日) 01:00:39.62
>>839
あざーす
845デフォルトの名無しさん:2011/10/30(日) 03:45:12.60
linux向け?のluaで拡張するブラウザー
lua組込フリークってオオイナー
http://www.linuxjournal.com/content/luakit-extensible-micro-browser
846デフォルトの名無しさん:2011/10/30(日) 06:27:16.17
コマンドラインシェルのNyaosもLuaで拡張できるみたいだね

http://www.nyaos.org/
847デフォルトの名無しさん:2011/10/30(日) 06:55:52.10
>>842
それ比較しても配列の添字が変数だとどうしようもないと思うけど
848デフォルトの名無しさん:2011/10/30(日) 08:40:20.49
というか0開始がおかしいとは考えないの?
849デフォルトの名無しさん:2011/10/30(日) 09:18:02.24
>>847
その変数も追えば良いんじゃね?
850デフォルトの名無しさん:2011/10/30(日) 21:08:55.99
面倒なら配列が0から始まるスクリプト言語使えばいいじゃない。
851デフォルトの名無しさん:2011/10/30(日) 22:31:41.67
ソースからライブラリまで置換してzerolua作ればいいと思う。
全部変える必要があるか分からないけど。
zeroforとかキーワード追加するのもありかもね。
852デフォルトの名無しさん:2011/10/30(日) 22:38:47.11
853デフォルトの名無しさん:2011/10/31(月) 01:46:29.25
>>848
自分は最初C学んだ時に0開始になれるのに結構時間かかった。
1開始のが初学者には絶対直感的だけど慣れてくると0開始のが確かに楽できるね。

自分はluaのダメだと思うところはやっぱグローバルがデフォルトなところ。
あとi++とかi += 1とかいう書き方ないのもちょっと面倒くさい

あとさ、luaってCやC++みたいな関数のプロトタイプ宣言なくて
PHPやJavaScriptみたいにファイルの下の方にある関数を自動的に先読みもしてくれないよね。
同一ファイル内でなら自作関数呼び出す前に関数を先に書いておくしかないから
そこがちょっとなーって思う。

まあlua超早いからそういう欠点は大したことないんだけどねw
854デフォルトの名無しさん:2011/10/31(月) 02:46:17.94
デフォルトlocalは無理なので、とりあえず、strict.luaを使えという状況なのか。
http://www.rtpro.yamaha.co.jp/RT/docs/lua/tutorial/strict_lua.html

http://lua-users.org/wiki/DetectingUndefinedVariables
855デフォルトの名無しさん:2011/10/31(月) 03:09:59.10
> 1開始のが初学者には絶対直感的だけど慣れてくると0開始のが確かに楽できるね。
混在してるのは困るが、オリジンは慣れりゃ大差ない
>
> 自分はluaのダメだと思うところはやっぱグローバルがデフォルトなところ。
今更後方互換捨てて変えられてもまいるけどね
ま、省略時グローバルになる言語ならstrictモードがあるし。

> あとi++とかi += 1とかいう書き方ないのもちょっと面倒くさい
代入が文はメリットでもある

> あとさ、luaってCやC++みたいな関数のプロトタイプ宣言なくて
> PHPやJavaScriptみたいにファイルの下の方にある関数を自動的に先読みもしてくれないよね。
> 同一ファイル内でなら自作関数呼び出す前に関数を先に書いておくしかないから
> そこがちょっとなーって思う。
function f(){}ではなくf=function(){}のつもりで。
856デフォルトの名無しさん:2011/10/31(月) 06:02:13.68
>>808
MetaLuaにcontinueがあった、
制御文も関数型言語みたいに関数なのかとおもったら、ASTでプログラム構造をいじってた。
http://metalua.luaforge.net/src/index.html
857デフォルトの名無しさん:2011/10/31(月) 07:51:21.08
>>853
主観的なことを並べて日本語のほうが英語より優れてるとかいっても無駄だよ。
858デフォルトの名無しさん:2011/10/31(月) 12:52:49.11
よく日本語と英語で例えられるけど
luaはハングルみたいなものだと思う
859デフォルトの名無しさん:2011/10/31(月) 13:52:02.29
???
860デフォルトの名無しさん:2011/10/31(月) 15:14:48.87
「I am a girl.」 (i = i + 1)
と書かなくても
「女です」(i++)
と書ける日本語のほうが優秀ーとかいっても無意味ってこと。
861デフォルトの名無しさん:2011/10/31(月) 15:31:09.68
短く書くことが出来るならその点に於いては優秀である、と言うことが出来ると思うがね。
書式を簡略化するメリットというのは確かにあるわけだし。
862デフォルトの名無しさん:2011/10/31(月) 16:09:18.10
cだと、++i, i++があって、i++の動作が分かりづらい。
863デフォルトの名無しさん:2011/10/31(月) 16:14:29.87
http://www.kouno.jp/home/c_faq/c3.html
いまでも、未定義なの?
864デフォルトの名無しさん:2011/10/31(月) 16:19:32.42
未定義
i++はあまり必要じゃないけど
++iはよく使うからあったら嬉しい
865デフォルトの名無しさん:2011/10/31(月) 16:27:01.87
>>861
だったら i+ とか i~ とかでもいいやん。i++は長いだろ。
別に短いのがいいのか悪いなんて議論するつもりはないよ。
自分がよく使う言語にあるという主観的理由で言語仕様を批判しても無駄といってるだけで。
866デフォルトの名無しさん:2011/10/31(月) 16:31:30.57
C の != は変。何でびっくりマークやねん。not は ~ が普通だろ。
867デフォルトの名無しさん:2011/10/31(月) 16:32:54.66
どうすると何が未定義なのか、ちゃんとわかって「未定義」と言ってるのか?

++i は i += 1 と同じだから、C言語では特にいらん気がするけど、i++ は i を
インクリメントしたうえで、式の値はインクリメント前の値だから、たまに
うまく使えることがある。
868デフォルトの名無しさん:2011/10/31(月) 16:39:06.65
ソースが分かりづらくなるだけやん
869デフォルトの名無しさん:2011/10/31(月) 16:41:03.76
冗長であればわかりやすいと錯覚する人向けではないね
870デフォルトの名無しさん:2011/10/31(月) 16:47:56.23
>>866
~はCでもNOTだよ。ただしビット演算の方だけど
871デフォルトの名無しさん:2011/10/31(月) 17:46:59.37
i++はCが作られたCPUかま
ポストインクリメントが出来たからだよな
ポインタなんかでは合理的
872デフォルトの名無しさん:2011/10/31(月) 17:47:55.16
日本語typoわり
873デフォルトの名無しさん:2011/10/31(月) 17:51:56.06
ポインタの指してるオブジェクトのサイズに応じたインクリメント、とか
PDPで出来たのかな?
874デフォルトの名無しさん:2011/10/31(月) 18:43:47.55
>>865
自分が良く使う、というレベルではなく
過半数のプログラミング言語にある仕様であればそれはもう主観的とは言いがたい。
既存のプログラミング言語とどこが違うか考えることは
言語の深い習得にとても重要なことだよ
875デフォルトの名無しさん:2011/10/31(月) 18:57:09.53
++が必要だったらソースあるんだから改造したり、コンバータ作ればいいだけじゃないの?
876デフォルトの名無しさん:2011/10/31(月) 19:33:19.73
JITを作ったのも本家じゃないんだろ?
構文糖も外の人に任せて本家はVM的なものだけ作ってればいいんじゃないの
877デフォルトの名無しさん:2011/10/31(月) 21:34:46.51
よしお前らAngelScriptを使うんだ。
878デフォルトの名無しさん:2011/10/31(月) 22:18:37.55
>>873
68kの元になったアーキテクチャだしな
ちょっとみた限りアクセスサイズ分はいけんじゃないかな
任意のサイズは無理だが
879デフォルトの名無しさん:2011/11/01(火) 01:09:51.02
> 過半数のプログラミング言語にある仕様であればそれはもう主観的とは言いがたい。

「過半数のプログラミング言語にある」だなんて、プログラミング言語を少々知ってれば、
決して言えない台詞だと思うがどうか。

あと ++ の存在、だなんていう表層にとらわれたらダメで、意味論を考えないと。
880デフォルトの名無しさん:2011/11/01(火) 04:00:23.69
てか誰もluaを貶したりしてるわけじゃないと思うんだけどな。
現状不満は無いけどもう少し使いやすくなればいいのにな、って言ってるだけで。
どうもこのスレは理屈っぽいというか偏執的というか、そんな人が多いね。
881デフォルトの名無しさん:2011/11/01(火) 04:13:38.15
まあこれだけだと荒らしみたいなんで、建設的な話題をば。

luaをjavaで使うライブラリでluaJってのがあるみたいだけど、これ速度面は大丈夫なのかな。
見たところ全部javaで書かれてるっぽいから、持ち味の速度が殺されてしまいそうで不安なんだけども。
やっぱJNIで自前実装すべきなんだろうか?
882デフォルトの名無しさん:2011/11/01(火) 04:58:55.99
>>879
言い方が悪かった。過半数というのは古今東西の言語全てではなく、
今主流になっている実務で使われるような言語の中で、という意味ね。
例えば書店で参考書籍が普通に買える様なプログラミング言語には
まず++か+=の仕様が存在すると思う。
まぁ、これは別に++や+=に限らず、他の部分にも言える。

人が使う言語にある仕様ってのは少なからず人が求めているっていうそういうこと。
君だって別に無いならないでもいいけど、あればあった方がいいとは思わない?
883デフォルトの名無しさん:2011/11/01(火) 07:02:38.52
>>882
字面さえ真似ればよくて、もともとそう書かれた理由というのを無視してでもいいじゃない、
便利なんだから。ってこと?
884デフォルトの名無しさん:2011/11/01(火) 07:28:55.34
>>882
Luaは、自分でも作れそうな気がするところに魅力を感じるので
求める人と作る人に分かれて話し合うのは違和感がある。
そういう別々の立場に立つという発想自体が、無い方がいい。
885デフォルトの名無しさん:2011/11/01(火) 07:58:35.23
>>882
何度もいうけど
英語的な文法が世の主流だから英語が客観的に優れてる日本語もそうすべきとかいっても無駄だよ。
886デフォルトの名無しさん:2011/11/01(火) 08:22:16.31
出たマジックワード「実務」w

>>885
いいたとえだ。

文の最初に動詞があれば命令、という規則は単純でわかりやすいから、
日本語もそうしろ、って理屈が暴論なのはわかるよね。それと同じだから。
887デフォルトの名無しさん:2011/11/01(火) 08:34:45.05
つーかお前等そこまで意地になって反論するようなことかぁ?

「○○あったら便利じゃね?」「せやな」

これで済む話だろ。いい加減この話は終われ。邪魔。
>>882もいくら言っても多分平行線で終わるから諦めたほうがいい。
888デフォルトの名無しさん:2011/11/01(火) 08:40:15.98
そもそも全くダメな発想であることを当人が納得しないと、
結局何度も何度も蒸し返しやがるからウザいんだよこのネタは。
889デフォルトの名無しさん:2011/11/01(火) 08:50:42.04
+= はあった方が、テーブルの中のテーブルの中のテーブルの中の要素…辺りを弄るときには楽だと思う
890デフォルトの名無しさん:2011/11/01(火) 09:05:23.99
何度もいうけど、ソースが分かりにくくなるだけジャン
891887:2011/11/01(火) 09:06:49.97
>>888
ダメな発想ねぇ・・・
蒸し返すも何もLua自体の開発はまだやってるんだから
言語仕様についての話題出すのは別に構わないと思うんだがな。

そういやLua5.2ってまだリリースはされてないんだったっけ?
892デフォルトの名無しさん:2011/11/01(火) 09:07:32.13
>>887
間違ったことは正さないと。オナニー仕様のオナニー言語が増えるだけジャン。
893デフォルトの名無しさん:2011/11/01(火) 09:11:27.31
そうだよ。世界は892様の為にあるんだから
894デフォルトの名無しさん:2011/11/01(火) 09:37:36.83
仕様仕様うるせーんだよ。いやなら違うスクリプト使えやボケが。
895デフォルトの名無しさん:2011/11/01(火) 09:47:37.97
>>894
いいこと言うな。オナニー仕様がいい奴はオナニー言語でも使ってればいいんだよw
896デフォルトの名無しさん:2011/11/01(火) 09:55:36.58
そうそう。世界は895様が導くんだから
897デフォルトの名無しさん:2011/11/01(火) 10:27:04.39
ソース公開されてるんだから、c-like に変更して配って、賛同者あつめればいいのにね。

一番下にダイクストラの説明が
http://c2.com/cgi/wiki?ZeroAndOneBasedIndexes
898デフォルトの名無しさん:2011/11/01(火) 10:42:56.32
++ は短く書けて便利だけど、式中の項になりえるのが混乱の原因だね。
自作の Teco では ++ のみの文(ステートメント)として定義したよ。
でもC言語で += の動作が未定義になる時ってどんな時だ?
899デフォルトの名無しさん:2011/11/01(火) 15:15:04.92
foo(i++, i++)
が未定義とかって意味ではなくて?
900デフォルトの名無しさん:2011/11/01(火) 15:15:43.45
それよりも、AngelScript で可変個引数が使えるようになるのはいつなんだぜ?
901デフォルトの名無しさん:2011/11/01(火) 22:04:19.34
>>900
ストリームみたいに何かの演算子で渡して、自身の参照を返すようなオブジェクトではダメかい?

int a=100;
ASSteam s;
s<<"とりあえず "<<a<<"を表示";

みたいな感じで。
902デフォルトの名無しさん:2011/11/01(火) 23:38:19.42
>897
それってSquirrelじゃね?
903デフォルトの名無しさん:2011/11/02(水) 00:05:27.75
>>898
初歩的な質問をする時は名無しを装ったほうがいい
904デフォルトの名無しさん:2011/11/02(水) 07:49:09.41
>>903
ありがと。深く考えてなかったw

++ や += みたいな省略記法が便利かどうかは主観的なのかね?
905デフォルトの名無しさん:2011/11/02(水) 08:19:33.68
客観性を口実に何かを義務付けられると不便
義務よりオプションが便利
906デフォルトの名無しさん:2011/11/02(水) 08:59:20.14
>>904
ここは最近やたら屁理屈こねまわす奴が常駐してるからその問いに関するまともな答えは返ってこないと思うよ。
ID出ない板だからいくらでも自演できるしな。

自分の意見としてはこの程度の事で主観だの義務だの議論する事自体ナンセンスだと思うね。
糖衣構文なんて元々オプションみたいなもんだし、いやなら使わなければいいだけ。
他人のソースを解析とかしない限りそれを見ることは決して無いんだから、ソースが分かりにくくなることも無い。
907デフォルトの名無しさん:2011/11/02(水) 09:06:52.93
そもそもC言語の規格で、なにがどう未定義なのかまともな説明すら出ないレベルで、
屁理屈もへったくれもないわw
908デフォルトの名無しさん:2011/11/02(水) 09:17:01.67
>>907
じゃあその話が結論付いたら主観だの義務だ言ってる事の答えになるのか?
そうやってすぐ話をそらす所がへそ曲がりだって言ってるんだよ。
909デフォルトの名無しさん:2011/11/02(水) 09:20:30.46
おっとちなみに俺は906=908な。言わなくても分かると思うけど。
910デフォルトの名無しさん:2011/11/02(水) 09:33:28.56
わざわざ言うくらいならコテハン付ければ?
911デフォルトの名無しさん:2011/11/02(水) 09:35:47.56
C vs. C++と全く同じ議論だ

もしC++にデメリットがあるなら使わなければいい
ゆえにC++にはメリットしかない
という理屈
912906:2011/11/02(水) 09:42:24.96
>>910
これでいい?

>>911
俺はさ、

「糖衣構文は自分で使わなければ自分のソースには現れない。でも他人のソースを見た場合はそうではない場合がある。
そしてそれは言語の基本機能であっても外部の誰かの拡張であっても大差ない。故にこの議論はナンセンスである。」

ってことを言いたいんだ。そんだけ。
913906:2011/11/02(水) 09:50:32.69
あと主観的とか利便性がどうこうとかに対する意見も述べておくよ。

これは結局その言語使う人間の大多数が便利と思うかどうか、に帰結するんじゃないかな。
一般のプログラム言語で最初から実装されてるってことはそれが便利だと思う人が多い、ってだけの話なんだろう。
Luaでは諸処の要因で実装されてないけど、あれば使うって人は割といるんじゃね?
914デフォルトの名無しさん:2011/11/02(水) 10:47:19.63
++とかは見た目簡潔なのはもちろんだが
luaには関係無いと思うが
左辺値の評価が一回というのが利点
915デフォルトの名無しさん:2011/11/02(水) 10:53:35.74
>>913
>一般のプログラム言語で最初から実装されてるってことはそれが便利だと思う人が多い

これが間違いの元。客観性と民主主義は違う。
916906:2011/11/02(水) 11:05:13.08
>>915
その違いがイマイチ分からないから、そこをちょっと俺でも分かるように述べてくれないかな。
できればその結果何故間違いなのか、という部分も一緒に。
917デフォルトの名無しさん:2011/11/02(水) 11:06:25.82
>>914
それはポインタか参照の利点なので演算子とは直接は関係ない。
関係ないが、ポインタを移動しないという意味でp[0]と書くのも
ポインタに由来する仕様だな。
918デフォルトの名無しさん:2011/11/02(水) 11:12:32.80
>>916
まず、C系が流行っているのは別に「++」が使えるからではない。
つまりC系が流行っていることは理由にならない。
もし、別の時空でPascal系が流行っているとしたら
おまえは「僕チンも含めたみんなが好きなパスカルちゃんには Inc(i) でインクリメントできる。
だからLuaにもIncをつけろ!」と主張するのだろう。
しかし、賢いLuaの中の人がそれに賛同することはないだろう。
919906:2011/11/02(水) 11:22:43.99
>>918
その賛同しないって理由が分からんな。
その時空では流行ってるんだから当然そういう要望は出てくるだろうし、その場合追加することによるデメリットが無さそうに思える。
ユーザーから本当にいらないと思われてるなら単に実装されても死に機能で終わるだけだしさ。
そのコストが無駄ってことかな?
920デフォルトの名無しさん:2011/11/02(水) 11:29:29.88
>919
>その賛同しないって理由が分からんな。デメリットが無さそう
マジでそう思ってる?もしかしてプログラマじゃない?
客の要望にただこたえたらへんてこなプログラムができたという経験ない?
「多数決が正しい結論を導くとは限らない」ぐらいは理系の大学でも教えるだろ?

話は戻って、「++だと短く書ける」、この理由付けには客観性があるが
「Luaは短さよりも文法の分かりやすさを重視した」といわれたらどうする?
価値観の違いでしかないので結局反論できず、オナニー言語開発の夢が膨らみはじめる。
しかし、10年後ぐらいに初老を迎えると「何で俺はたかがあんなことで向きになったんだろう」と
思い始める。歴史は繰り返す。
921デフォルトの名無しさん:2011/11/02(水) 11:38:59.88
>>920
バランスを考えろ
オナニーは義務ではないが権利としては認められる
922906:2011/11/02(水) 11:39:28.20
>>920
つまり多数決を無視してでも実装しないことのメリットがある、ということだよな?
そのメリットというのをはぐらかさずに簡潔に教えてくれないか?糖衣構文に限っての話でさ。
923デフォルトの名無しさん:2011/11/02(水) 11:41:32.89
そもそもLuaの文法がわかりやすいかと言われると…
924デフォルトの名無しさん:2011/11/02(水) 11:46:25.00
>>922
>つまり多数決を無視してでも実装しないことのメリットがある、ということだよな?
立証責任の所在をごまかそうとしてもだめだよ。
主張する側がメリットを説明しないと。
そして上で述べたように今までの主張は成功していないよ。
925デフォルトの名無しさん:2011/11/02(水) 11:54:51.09
つーか、ソースあんだから、好きに改造しろよ・・・
作者は俺様の思うとおりに作れ!だが俺様はやらん!ってのはびみょーすぎ
926デフォルトの名無しさん:2011/11/02(水) 12:00:21.08
明治天皇が「万機公論に決すべし」といってたぞ。
糖衣構文つけなきゃならんだろこれは。
927906:2011/11/02(水) 12:01:28.96
>>924
とりあえず実装することのメリットとしては、コードが短くなって入力ミスが減る、という所だろうか。
というか糖衣構文のメリットってほぼそれだけだよね。
一応その記述が主流の言語で使われていればすんなり受け入れられるという利点か。

まあ使われなければ勝手に淘汰されるだけだし、それは外部の拡張であっても同じ事が言える。
ことさらデフォルト機能としての実装を拒絶する理由としてはどうにも弱いかな、と思う。

そもそも俺の意見としては、別に「糖衣構文を実装しろ!」と言ってるわけじゃなくて、外部拡張も基本機能でも大差ないのに
基本機能に含めることを間違いだのダメな発想だの断じる理由が分からないって事だから。
928デフォルトの名無しさん:2011/11/02(水) 12:13:42.09
>>927
>ことさらデフォルト機能としての実装を拒絶する理由としてはどうにも弱いかな、と思う。
ことさらデフォルト機能としての実装を要求する理由としてはどうにも弱い、の間違いだろw
だんだん分かってきてるくせにw
929デフォルトの名無しさん:2011/11/02(水) 12:21:58.25
>>927
「俺に金をくれ」と主張するなら
その理由をきちんと説明しないと。
断ったやつに対して「おまえが拒絶する理由は弱い」とか
「おまえが断る理由が分からない」とかいってもだめでちゅ。
930906:2011/11/02(水) 12:24:38.50
>>928
それと「多数派の言ってることが正しいとは限らない」って言ってるけど
これはまさにその通りで、逆に正しい場合もあるってことだよな。
そちらの弁だとどうも「少数派は絶対に正しい」みたいな論調だけども。

結局何が正しいかなんて誰にも分からないことだし、その指標の一つとして「多数決」があるんだから
それを越える正しさを決める方法論をそちらで示してくれないことには到底賛同しかねるな。

もちろん「現Luaユーザーの多数が糖衣構文が不要だと思っている」というような明確なデータがあれば
当然話は違ってくるし、こちらも前述の意見を即刻撤回するぞ。一つの考えに縛られるのはナンセンスだからな。
931デフォルトの名無しさん:2011/11/02(水) 12:29:51.61
「相手の言ってる事の逆の事を言い続け、相手からの質問には答えない」
ってのは構ってちゃんの常套手段だ。覚えとけ。
932デフォルトの名無しさん:2011/11/02(水) 12:30:12.92
他人の理屈には「屁理屈」とラベリングして、自分はこれだからな
933デフォルトの名無しさん:2011/11/02(水) 12:32:34.22
>>930
話をずらそうとしてもだめ。
結局「僕チン(と多数のプログラマ)が慣れてるC++にあるから」
「短く書けるから」以外の積極的な理由はないんだろ?
そんでもってそれだけの理由があればLuaの中の人は糖衣構文を付けてくれると信じてるんだろ?
信じるかどうかはその人の自由だしそれでいいと思うよ。
934906:2011/11/02(水) 12:36:40.48
>>931
すまん。ちょっと熱くなりすぎたな。これで終わりにするわ。スレの人も長々と申し訳ない。

とりあえず糖衣構文に関する自分の考えとしては、
「あれば便利だしあれば使う。しかし無いなら我慢するし、わざわざ自前で実装する程のものではない」ってとこか。
だから欲しいという意見が出るのは共感するし、そこに反論する理由も自分には無いかな。

>>933
という事で一旦よろしいかな?
スレ番も900番台になっちまってるし、これで終わりということで。ディベートみたいでなかなか面白かったよ。
935デフォルトの名無しさん:2011/11/02(水) 12:38:14.70
オフィシャルのメーリングリストで、
なぜ追加しないの議論が過去にあっただろうから、
それを追って、まだ議論する余地があると思ったらメーリスにリプライすればいい。
936デフォルトの名無しさん:2011/11/02(水) 12:39:57.99
ちなみにCで未定義なのは、a[i]=i++
937デフォルトの名無しさん:2011/11/02(水) 12:40:47.45
>>917
左辺値の評価が一回と書いた
ポインタも参照も直接は関係無い
後、昔のCISC CPUでは
効率の良いコードが吐けたというのもある
938デフォルトの名無しさん:2011/11/02(水) 12:40:56.20
i++ができるならi**やi//も付けるべき。否定する理由がない。
939デフォルトの名無しさん:2011/11/02(水) 12:41:36.77
>>935
やっぱそういう議論って過去にあったりするんだな。
まあLuaでやらないのは何となくコメントの書式のせいのような気がするが…。邪推かな。
940935=936:2011/11/02(水) 12:42:58.78
リロードしたら、空気読んでなかった。
さーせん
941デフォルトの名無しさん:2011/11/02(水) 13:10:01.61
>>938
それ、値変わらなくね?
942デフォルトの名無しさん:2011/11/02(水) 19:17:41.88
欲しい機能/構文があれば自分で組み込めばいいだけだろ
943デフォルトの名無しさん:2011/11/02(水) 19:52:32.29
作ること自体が楽しいならそれでいいけど
作るのが苦痛な人は、需要の大きさを確認しないとコストパフォーマンスが不安だ。
944デフォルトの名無しさん:2011/11/02(水) 23:17:58.60
お前ら落ち着いてAngelScriptを使うんだ。
945デフォルトの名無しさん:2011/11/03(木) 01:47:46.31
失うものが多すぎる
946デフォルトの名無しさん:2011/11/03(木) 03:04:15.94
MetaLuaをLuaJITで動かないのかなと思って
make.shでやってるluacコマンドの変わりにcat input1.lua ... |luajit -b - output.luaでバイトコード吐いてみたけど
コンパイルエラーがあって足踏み状態。
その先のmetaluaコマンドでoutputができないのかーってところ確認したかったのに、残念。
947デフォルトの名無しさん:2011/11/03(木) 06:59:12.61
>>943
需要も何も自分が必要だったら作るしかないだろ

948デフォルトの名無しさん:2011/11/03(木) 08:37:26.74
>>946
そのへんは公式でないバリアント版のつらいとこだな
949デフォルトの名無しさん:2011/11/03(木) 09:29:45.66
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

950デフォルトの名無しさん:2011/11/03(木) 21:14:45.66
Luaってもっさりしてるよね
ユーザーが「もっさり」って言ったら大体Luaが絡んでる
951デフォルトの名無しさん:2011/11/04(金) 00:01:16.17
逆に、もっさりにならない組み込み系言語って何だ?
952デフォルトの名無しさん:2011/11/04(金) 00:07:32.50
VM言語で一番もっさりしないレベルのLuaJITでJITをON/OFFどちらでももっさりするようだったら、
C/C++か他の静的タイピングなバイナリ生成できる言語に置き換えるしかない。
953デフォルトの名無しさん:2011/11/04(金) 00:26:57.18
もっさりするとこを調べてC++に順次おきかえていくのが lua とか squirrel の適切な使い方だよな
954デフォルトの名無しさん:2011/11/04(金) 00:27:42.40
もっさりしてるのってスクリプトで記述する部分が多すぎるんじゃないの?
955デフォルトの名無しさん:2011/11/04(金) 00:42:18.74
本当に組み込みで低遅延が必要ならtccなど使ってdynamic code generation
ただ、luaでループ・文字演算と初期化時間入れても20-100倍ぐらい
luajitなら10倍ぐらいで収まるのでは
956デフォルトの名無しさん:2011/11/04(金) 01:48:50.55
流石に1秒間に60回luaスクリプトファイルを読み込みに行ってるなんてオチだったりはしないよね
957デフォルトの名無しさん:2011/11/04(金) 11:31:30.67
luaファイル長すぎてファンクションを分けたいんだ
メインのluaの中でサブのluaファイルって
どうやって呼び出すの?
958デフォルトの名無しさん:2011/11/04(金) 12:10:49.72
requireでよいと思う。
959デフォルトの名無しさん:2011/11/04(金) 12:12:29.69
dofile/loadfileなど
960デフォルトの名無しさん:2011/11/04(金) 12:13:05.24
961デフォルトの名無しさん:2011/11/05(土) 00:39:24.74
次スレそろそろいるかな。980辺りまで行ったら建てようか?
962デフォルトの名無しさん:2011/11/05(土) 15:03:13.61
ごめん質問なんだけどさ、luaってデフォルトでrequireできるファイルと
ユーザーが配置してrequireできるファイルのrequire時の記述の書き分けとかできる?

Cで言えば
#include <stdio.h>

#include "myHeader.h"
みたいな。
ユーザー定義のものもデフォルトで扱えるものも多分どっちもrequire( "" )
の形式だから人が書いたコード読むとき少し迷うこと多くてさ
963デフォルトの名無しさん:2011/11/05(土) 15:55:13.14
>>962
コメントを添えて、空行で区切っておけば、そのうち標準ライブラリを覚えるだろ。
964デフォルトの名無しさん:2011/11/05(土) 16:06:48.18
>>962

package.preloadの__indexにフック仕掛けて

モジュール名が'hoge'なら通常の検索パス
モジュール名が'@hoge'なら専用の検索パス

みたいなことも可能っちゃ可能だけどさ
C言語のアレは、スクリプトなら尚更真似するもんじゃないと思うけどねー
965デフォルトの名無しさん:2011/11/05(土) 16:15:31.60
>>962
むしろC/C++が割と特殊かと
ほとんどの言語では区別ないと思う
966デフォルトの名無しさん:2011/11/05(土) 17:11:52.75
ところでC言語のincludeで" "と< >で囲ってあるヘッダーファイルの違いってなんなの?
967デフォルトの名無しさん:2011/11/05(土) 17:37:14.41
探す場所の順番の違いとか、自分で用意したヘッダかコンパイラ側のヘッダかとか
968デフォルトの名無しさん:2011/11/05(土) 17:49:17.73
"" だとそのファイルのある場所から探す。<> は規定のパスから探す

プライベートなヘッダファイルとかは .c や .cpp と同じ場所において "" で参照、
パブリックなヘッダファイルは、フォルダを分けておいて、
オプションでパスを指定して <> で参照、といったかんじで使い分けるのが一般的
969デフォルトの名無しさん:2011/11/06(日) 02:42:35.51
typedef struct AnyVec {
struct AnyVec *next;
struct AnyVec *prev;
int type;
void *data;
} AnyVec;
こんなvector<boost::any>相当の構造体を引数として受ける
void myprintf(AnyVec* v) {}
な関数があったとして
そのままprintfに流し込むにはどんな方法がありますか?
できればインラインアセンブラ以外のやり方が知りたいです
970デフォルトの名無しさん:2011/11/06(日) 02:44:31.87
誤爆った、すまん
971デフォルトの名無しさん:2011/11/06(日) 09:28:17.32
>>967-968
おーサンクス。
5〜6年ほど知らずにやってたけど、なんだそんな簡単なことだったのか。
972デフォルトの名無しさん:2011/11/06(日) 12:13:42.36
>>971
おいおいw
973デフォルトの名無しさん:2011/11/06(日) 12:54:54.56
c/c++の規格書なんてみる機会ないからなー

日本語だとJIS検索のページから規格番号検索でJISX30で検索して
C(3010)とC++(3014)のpdfを見れるぐらい。
http://www.jisc.go.jp/app/JPS/JPSO0020.html

かなり頑張ってるmsdnも規格説明パートは日本語に翻訳されてない。
http://msdn.microsoft.com/ja-jp/library/36k2cdd4.aspx
974デフォルトの名無しさん:2011/11/06(日) 13:14:13.39
多分あんまり需要ないんだろうな。
975デフォルトの名無しさん:2011/11/06(日) 13:58:34.47
>>973
うちの環境だと見れないんだよ、そのJIS規格書……
976デフォルトの名無しさん:2011/11/06(日) 14:24:59.59
規格書云々以前の問題だろ…
977デフォルトの名無しさん:2011/11/06(日) 14:43:23.47
>>971
2ch数年やっててアンカーのやり方分かんないってレベルだぞそれw
普通入門書が3冊あれば内2冊位はページのどっかでそれについての記述があるw

まぁでも今回知れて良かったじゃないw
978デフォルトの名無しさん:2011/11/06(日) 22:54:40.64
せっくすしよっか(´・ω・`)
979デフォルトの名無しさん:2011/11/07(月) 09:02:23.73
    ∧__∧
    (´・ω・)   いやどす
    ハ∨/^ヽ
   ノ::[三ノ :.、
   i)、_;|*く;  ノ
     |!: ::.".T~
     ハ、___|
"""~""""""~"""~"""~"
980デフォルトの名無しさん:2011/11/07(月) 16:35:08.77
AngelScript 2.22.0 is released - GameDev.net
http://www.gamedev.net/topic/614471-angelscript-2220-is-released/

shared script classって、
classにsharedキーワードを付けておけば
実装が一つのモジュールだけでコンパイルされるって事なのだろう 多分

今は面倒だから一つのモジュールで全部やっているんだが
これで便利になるか?
981デフォルトの名無しさん
>980
今試してきたけど、クラス用のモジュールに読み込むスクリプトで、

shared class TestClass
{

}

って感じでsharedをくっつけてクラスを定義しておいて、別のモジュールに読み込むスクリプトに

shared class TestClass {}

って宣言つければ、TestClassが普通に使えたよ。