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

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

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

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

■前スレ
【Lua】組み込み系言語総合 その3【Squirrel】
http://hibari.2ch.net/test/read.cgi/tech/1272643397/

■過去スレ
その2 http://pc12.2ch.net/test/read.cgi/tech/1243210301/
その1 http://pc12.2ch.net/test/read.cgi/tech/1205208141/

プログラミング言語 Lua
その3 http://pc11.2ch.net/test/read.cgi/tech/1160799232/
その2 http://pc8.2ch.net/test/read.cgi/tech/1063711237/
その1 http://pc5.2ch.net/tech/kako/1034/10341/1034182349.html
0931デフォルトの名無しさん2011/11/02(水) 12:29:51.61
「相手の言ってる事の逆の事を言い続け、相手からの質問には答えない」
ってのは構ってちゃんの常套手段だ。覚えとけ。
0932デフォルトの名無しさん2011/11/02(水) 12:30:12.92
他人の理屈には「屁理屈」とラベリングして、自分はこれだからな
0933デフォルトの名無しさん2011/11/02(水) 12:32:34.22
>>930
話をずらそうとしてもだめ。
結局「僕チン(と多数のプログラマ)が慣れてるC++にあるから」
「短く書けるから」以外の積極的な理由はないんだろ?
そんでもってそれだけの理由があればLuaの中の人は糖衣構文を付けてくれると信じてるんだろ?
信じるかどうかはその人の自由だしそれでいいと思うよ。
09349062011/11/02(水) 12:36:40.48
>>931
すまん。ちょっと熱くなりすぎたな。これで終わりにするわ。スレの人も長々と申し訳ない。

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

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

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

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

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

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

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

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

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

プライベートなヘッダファイルとかは .c や .cpp と同じ場所において "" で参照、
パブリックなヘッダファイルは、フォルダを分けておいて、
オプションでパスを指定して <> で参照、といったかんじで使い分けるのが一般的
0969デフォルトの名無しさん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に流し込むにはどんな方法がありますか?
できればインラインアセンブラ以外のやり方が知りたいです
0970デフォルトの名無しさん2011/11/06(日) 02:44:31.87
誤爆った、すまん
0971デフォルトの名無しさん2011/11/06(日) 09:28:17.32
>>967-968
おーサンクス。
5〜6年ほど知らずにやってたけど、なんだそんな簡単なことだったのか。
0972デフォルトの名無しさん2011/11/06(日) 12:13:42.36
>>971
おいおいw
0973デフォルトの名無しさん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
0974デフォルトの名無しさん2011/11/06(日) 13:14:13.39
多分あんまり需要ないんだろうな。
0975デフォルトの名無しさん2011/11/06(日) 13:58:34.47
>>973
うちの環境だと見れないんだよ、そのJIS規格書……
0976デフォルトの名無しさん2011/11/06(日) 14:24:59.59
規格書云々以前の問題だろ…
0977デフォルトの名無しさん2011/11/06(日) 14:43:23.47
>>971
2ch数年やっててアンカーのやり方分かんないってレベルだぞそれw
普通入門書が3冊あれば内2冊位はページのどっかでそれについての記述があるw

まぁでも今回知れて良かったじゃないw
0978デフォルトの名無しさん2011/11/06(日) 22:54:40.64
せっくすしよっか(´・ω・`)
0979デフォルトの名無しさん2011/11/07(月) 09:02:23.73
    ∧__∧
    (´・ω・)   いやどす
    ハ∨/^ヽ
   ノ::[三ノ :.、
   i)、_;|*く;  ノ
     |!: ::.".T~
     ハ、___|
"""~""""""~"""~"""~"
0980デフォルトの名無しさん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キーワードを付けておけば
実装が一つのモジュールだけでコンパイルされるって事なのだろう 多分

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

shared class TestClass
{

}

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

shared class TestClass {}

って宣言つければ、TestClassが普通に使えたよ。
レス数が950を超えています。1000を超えると書き込みができなくなります。