【Lua】組み込み系言語総合 その6【Squirrel】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/03/10(日) 15:10:32.28使われるプログラミング言語についてのスレッドです
まとめwiki(なにか質問する前に必ずみること!)
http://wikiwiki.jp/lua/
その他の参考URLは>2から
■前スレ
【Lua】組み込み系言語総合 その5【Squirrel】
http://toro.2ch.net/test/read.cgi/tech/1321063450/
■過去スレ
その4 http://hibari.2ch.net/test/read.cgi/tech/1301414458/
その3 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/
0548542
2014/10/12(日) 15:02:46.29ID:i7kDtML/に書き換えました
0549542
2014/10/12(日) 15:06:31.21ID:i7kDtML/0550デフォルトの名無しさん
2014/10/12(日) 20:01:27.77ID:e2Gzikyq俺が勝手に褒めておいてやるよ
ただ、プログラミング言語だけでなく日本語でも会話して欲しい
0551デフォルトの名無しさん
2014/10/13(月) 01:38:05.54ID:B15n5qdAmrubyを組み込んでみた
肝心のLuaとの比較だけどLuaもrubyも素人の俺には
よくわんないっていう
ただスクリプトでのゲーム開発ってのは楽しいな
0552デフォルトの名無しさん
2014/10/17(金) 23:51:55.26ID:9a/zPdtMプログラミング言語のくせになんでネットワークライブラリ必須なんだよ。
0553デフォルトの名無しさん
2014/10/18(土) 06:17:24.91ID:0zghehpUデフォルトでネットワーク処理を持っているのを期待するのはさすがに酷だ
0554デフォルトの名無しさん
2014/10/20(月) 02:20:43.02ID:9ZZuBDyz本家は5.3αまで進んだのに
0555デフォルトの名無しさん
2014/10/20(月) 07:51:24.76ID:887X5tQi/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Lua!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0556デフォルトの名無しさん
2014/10/20(月) 14:01:39.85ID:XKh/BlSi単に分散が売りの一つだからでは?
トラブってるなら環境明記するといいよ
0557デフォルトの名無しさん
2014/10/20(月) 14:28:44.63ID:YmKa11RJ0558デフォルトの名無しさん
2014/10/24(金) 22:05:25.23ID:LtvHolRf0559デフォルトの名無しさん
2014/10/31(金) 08:02:57.83ID:b+WwLJWx- Basic UTF-8 library
- Bitwise operators
- Integers
0560デフォルトの名無しさん
2014/10/31(金) 21:03:36.77ID:tMdLNX3k5.2以降からすでに文字列にバイナリデータが入るからUTF8を保持できる
stringのソース斜め読みした感じだとあんまし変化ない
Windows版とかにするにはかなり手を入れないといけないね
0561デフォルトの名無しさん
2014/11/02(日) 22:58:25.53ID:uPMt2D9i手が入ったのはutf8モジュール。 例えば string.len() はバイト数だが、utf8.len() は文字数になる。
「Windows版」がutf16を指すなら、適当にエンコード変換して、別の文字列かuserdataで保持するのは簡単。
もし、内部のcharをwchar_tに変更する改造する意味なら、確かに手間がかかる。
0562デフォルトの名無しさん
2014/11/02(日) 23:54:52.14ID:TF4Q/5Ab0563デフォルトの名無しさん
2014/11/03(月) 00:57:50.97ID:ZMCFj896という曖昧な前提で申し訳ないけど
1文字==1文字型の表現できず可変長になるから
結局sjis,utf8を扱うのと同じでメリットないんだよね
A/Wだけでなく8/DなどAPIレベルで対応しないとどうにもならないんじゃないかな
間違えてたらすまん
0564デフォルトの名無しさん
2014/11/03(月) 02:05:27.09ID:7uHWyuXV変換結果をGCの管理情報と関連付けてキャッシュすれば
最小限の回数になるので問題はない。
http://sourceforge.jp/projects/lua-naka/
あとはutf8というクラスやfile関係検討して
どの程度の手間が掛かるか検討だね
beta外れるまで待ったほうがいいかどうかとね。
0565デフォルトの名無しさん
2014/11/03(月) 03:29:16.31ID:ZMCFj8960566デフォルトの名無しさん
2014/11/03(月) 08:35:18.03ID:7uHWyuXVXP以降のWindowsのUNICODEは16bitの可変長。
1文字==1文字になってしまうのはそのライブラリが対応できてないだけ。
対応できてなければ、たとえばフォントの名前が文字化けするとか
変なところで不具合が発生する。
ダウンロードしたファイルの中身にどんな言語が使われているか
予想できない時代だしねえ。
0567デフォルトの名無しさん
2014/11/03(月) 09:03:59.77ID:gXKeHKY3あんまり使いどころがないんだよなぁ。
0568デフォルトの名無しさん
2014/11/03(月) 09:44:26.28ID:TIQQD+z7WCHARだからマルチバイト文字だし、ダウンロードしたファイルの中身はどうしようもないのは同じだけどな!
0569デフォルトの名無しさん
2014/11/03(月) 11:48:44.03ID:T6nh4Wfvマルチバイトのまま処理するのでだいたい事足りるけど、
絵文字ニーズがでてきてしまって困ってる
サロゲートペアとかをシンプルに処理できる手頃で小さめなライブラリどっかにないかな
0570デフォルトの名無しさん
2014/11/04(火) 09:05:41.39ID:bzlUuRTbサロゲートペアってUTF-8なら、単なる「バイト数が多いマルチバイト1文字」じゃなかった?
UTF-8を適切に扱えるライブラリを探せば良いのでは?
UTF-16ベースで、1文字=1wcharで処理するものはダメだね。
0571デフォルトの名無しさん
2014/11/04(火) 09:14:34.96ID:lCpWe+1kWINAPIまたはWINDOWSアプリに渡す場合だけ変換するってのが無難だろう。
0572デフォルトの名無しさん
2014/11/04(火) 12:26:39.85ID:JSkttuhxそれが正式な仕様なんだけど、
世の中にはUTF16をべたにUTF8展開しただけ、
というファイルがあふれてて、UTF-8的に二文字になってることのが多くていかんともしがたいのん
0573デフォルトの名無しさん
2014/11/04(火) 13:23:26.98ID:99dxtSJ/0574デフォルトの名無しさん
2014/11/04(火) 16:39:35.13ID:8lAd+EdW0575デフォルトの名無しさん
2014/11/04(火) 18:02:59.37ID:OadM+d9h0576デフォルトの名無しさん
2014/11/04(火) 18:40:40.27ID:lCpWe+1kWindowsのwstringと互換だからホストから見て扱いやすいという判断でないの?
Windows用のC++のランタイムがサロゲート対応できてないわけだし。
それはそれとして
自分的にはUTF16とUTF8の変換はコストが低いと考えている。
なんでかというと、マルチバイトのアプリケーションが末尾AのAPIを呼んだ時に
カーネル側での変換の対象になっていると考えるし、
それでいて今まで問題になっていないから。
0577デフォルトの名無しさん
2014/11/05(水) 07:35:22.74ID:9E/cXL42Windows氏ね
0578デフォルトの名無しさん
2014/11/05(水) 14:55:13.19ID:C/jbA3HR0579デフォルトの名無しさん
2014/11/05(水) 17:30:58.35ID:5alChkxaただ、既存のコマンドとかの整合性が問題。
0580デフォルトの名無しさん
2014/11/05(水) 17:32:35.49ID:9E/cXL42Windows氏ね
0581デフォルトの名無しさん
2014/11/05(水) 21:07:16.47ID:pM6wUNVX特定のプラットフォームに「氏ね」言う奴がマルチプラットフォーム語るか。
0582デフォルトの名無しさん
2014/11/05(水) 21:42:16.61ID:5alChkxaMacユーザーは宗教で使っている。
Linux/bsdユーザーはソースコードを蹂躙するために使っている。
0583デフォルトの名無しさん
2014/11/05(水) 23:18:38.50ID:hGDSCPPHよっぽど実際的な問題だと思うんだが
0584デフォルトの名無しさん
2014/11/05(水) 23:28:46.45ID:5iseFbl10585デフォルトの名無しさん
2014/11/06(木) 11:07:16.22ID:ElrQPnL20586デフォルトの名無しさん
2014/11/06(木) 11:37:03.69ID:5j6hC+wL0587デフォルトの名無しさん
2014/11/06(木) 12:48:03.08ID:QHCs9rG10588デフォルトの名無しさん
2014/11/06(木) 16:09:06.32ID:M2Yo7uIT0589デフォルトの名無しさん
2014/11/06(木) 16:14:45.84ID:pZw/zM7a0590デフォルトの名無しさん
2014/11/06(木) 22:56:57.44ID:Lo7NS+Dzここらへんは5.4とかからかなあ。
そうするとC++でコンパイルしつつ外付けで
boost_regex.matchというような関数を用意しろって感じかなあ。
↓これだもんね。
static int singlematch (MatchState *ms, const char *s, const char *p,
const char *ep) {
if (s >= ms->src_end)
return 0;
else {
int c = uchar(*s);
switch (*p) {
case '.': return 1; /* matches any char */
case L_ESC: return match_class(c, uchar(*(p+1)));
case '[': return matchbracketclass(c, p, ep-1);
default: return (uchar(*p) == c);
}
}
}
0591デフォルトの名無しさん
2014/11/07(金) 07:19:30.78ID:m1y+JxyjUTF-8だからこそsinglematchでもなんとか実用になるんじゃないかな?
utf8.charpattern も一応は用意はされているし。
もちろん、string.reverseとか使えないのもあるけど。
0592デフォルトの名無しさん
2014/11/07(金) 08:11:23.32ID:TOsxLUmk日本人は余計なことばかりしやがるよな、とかいわれてんだろうな
0593デフォルトの名無しさん
2014/11/07(金) 12:46:24.98ID:s2pGHogx0594デフォルトの名無しさん
2014/11/08(土) 17:07:11.07ID:OPiyaoeS0595デフォルトの名無しさん
2014/11/12(水) 00:46:15.46ID:0RjVbG4l他に画像を探す方法はないでしょうか?
0596デフォルトの名無しさん
2014/12/10(水) 00:35:14.86ID:If47AJ4g0597デフォルトの名無しさん
2014/12/10(水) 09:29:30.82ID:5IiOJn2a開発チームのルールの面で使わせないケースはありそうだ
0598デフォルトの名無しさん
2014/12/11(木) 12:44:17.85ID:vUqbLqkUboostが使えない環境じゃなくて、色々な都合でboost使っちゃダメな環境があるわけか…
0599デフォルトの名無しさん
2014/12/15(月) 08:18:50.09ID:njR4rCHR0600デフォルトの名無しさん
2014/12/19(金) 02:51:01.25ID:ouKpIS27c#のnamespaceやstaticなクラスをバインドするにはどうすればいいのでしょうか?
関数であれば以下のように登録できたのですが、
lua.Globals["Log"] = (Action<string>)UnityEngine.Debug.Log;
UnityEngineのようなnamespaceを渡し、
script内で UnityEngine.GameObject.Find("obj")
みたいに使いたいのですが
0601デフォルトの名無しさん
2014/12/22(月) 00:19:17.53ID:ZmRaQmm9ざっと眺めてみたけど
その程度の事は同じように出来る
ただ
foo()
foo(int)
foo(string)
などのオーバーロードはどうするのかが疑問
動的に型チェックして振り分けてとかだと正直使い物にならないと思う
0602デフォルトの名無しさん
2014/12/22(月) 01:19:08.37ID:D1rmXNgC使いながらマニュアル読んで使い方が分かってきました。
オーバーロードに対応してないクラスは扱うことができませんでした。
いくつか制約があるようです。
C#のオブジェクトを簡単にluaから使えるのかと思ったら、
そう簡単にはいかないのですかね。
そういうのはラッパークラスを用意して、
MoonSharpを意識した設計しないといけないようです。
つい新しいものに手を出したけど、他のC#系のluaはどんな感じなのかしら
0603デフォルトの名無しさん
2014/12/22(月) 01:19:52.78ID:D1rmXNgCオーバーロードに対応してませんでした。
0604デフォルトの名無しさん
2014/12/26(金) 08:14:14.37ID:aFXoC3vZ0605デフォルトの名無しさん
2015/01/03(土) 21:35:53.41ID:x6OMspk00606デフォルトの名無しさん
2015/01/03(土) 22:19:20.82ID:FqikSySO0607デフォルトの名無しさん
2015/01/03(土) 23:14:01.09ID:KF2R3l6fというかあったら困る
0608デフォルトの名無しさん
2015/01/04(日) 02:23:10.16ID:AdLaa9R20609デフォルトの名無しさん
2015/01/04(日) 06:44:30.95ID:FkvmMkr7新C-APIの lua_rotate() が地味に便利。
0610デフォルトの名無しさん
2015/01/04(日) 08:29:47.65ID:LjhOLja4>>559
0611デフォルトの名無しさん
2015/01/08(木) 07:02:44.50ID:HB0/eqgI0612デフォルトの名無しさん
2015/01/13(火) 08:21:09.63ID:rG5Z7jyu0613デフォルトの名無しさん
2015/01/14(水) 08:19:11.90ID:G/8s1bPT0614デフォルトの名無しさん
2015/01/19(月) 13:17:04.98ID:i0MAuzuq組み込みも js で十分な気がしてきた。
0615デフォルトの名無しさん
2015/01/19(月) 19:23:58.96ID:ax3bxEw/0616デフォルトの名無しさん
2015/01/19(月) 20:11:10.33ID:i0MAuzuq>>615
ハンドル (voidポインタ) 経由。 グローバル変数のテーブルもCから操作できる。
API は v8 と似ているけど、さらに簡略化されている感じ。
Luaとは違ってスタック操作を意識する必要は無い。 Cスタックを舐める系のGCっぽい。
C関数や、生データをファイナライザ付きでスクリプトに登録もできるし、
スクリプトの変数をCからキープしたいときの AddRef() もある。
後発なだけあって、いい感じに整理されているように見えるよ。
0617デフォルトの名無しさん
2015/01/19(月) 22:22:42.69ID:XVOLeUIAみんなLuaと比較した情報は出すけど何個もある代案同士で比較した情報がまだ出ない
だからまだ時期が悪いかなと思う
0618デフォルトの名無しさん
2015/01/20(火) 06:19:15.63ID:MIZOkYTq0619デフォルトの名無しさん
2015/01/20(火) 07:11:39.79ID:Qwim/1/Yの2つが大きいいんじゃないの? 止められるんなら止めたいでしょ。
もちろん、Luaはスタック操作が明示的だからこそ、移植性が高いんだけど。
>>617
参照カウントはあくまでCからのキープ用で、スクリプト内だけならマーク&スイープ系のGCのはず。
0620デフォルトの名無しさん
2015/01/20(火) 17:48:36.34ID:MIZOkYTqスクリプト側からは死んでるようにみえる値を
C側では使ってるから生きてるよ、ということにするには
参照カウントよりもLuaL_refの方が考え方として分かりやすいと思うけど。
0621デフォルトの名無しさん
2015/01/20(火) 18:44:09.44ID:GWZYH+JOLuaは知らないけど
V8ではC++関数のスコープから抜けた時点でJavaScriptのオブジェクトを解放出来るようになっている
だからV8ではC++関数内で使ったオブジェクトが中々解放されなくなるという事はない
関数を終えてもずっと保持したい場合はPersistentにコピーするようになっている
0622デフォルトの名無しさん
2015/01/20(火) 18:56:01.81ID:MIZOkYTq0623デフォルトの名無しさん
2015/01/20(火) 19:33:29.39ID:Qwim/1/Y自分はどうもオブジェクトそのものではなくCookieを保持している感に戸惑ったが、
気になるならラッパーを一枚噛ませば十分だしな。
0624デフォルトの名無しさん
2015/01/22(木) 18:40:30.34ID:dZXZ9W3g0625デフォルトの名無しさん
2015/01/22(木) 19:34:31.74ID:QfKlzsaMIDispatchをVARIANT経由でJavaScript側に公開できることがわかった。
COMの資産を手間無く使えるので、その手の再利用が必要な場合は便利かもしれない。
なお、WebBrowserコントロールが使っていると思われるスクリプト環境はさすがに取得できないようだ。
無理やり連携されるなら window.external を介してこれも IDispatch 経由でやり取りすることになる。
悪くない。 Microsoft も .NET とか捨てて、JsRTとTypeSciptで行けばいいんじゃないかな・・・?
0626デフォルトの名無しさん
2015/01/26(月) 19:41:40.28ID:+446CocfSquirrel 3.1 RC1
Released January 10, 2015
さっき気付いた。
0627デフォルトの名無しさん
2015/01/26(月) 20:46:44.47ID:5nfZyfP40628デフォルトの名無しさん
2015/01/26(月) 21:34:59.26ID:Sajs+zmm0629デフォルトの名無しさん
2015/01/28(水) 05:31:27.96ID:SR5teQWH0630デフォルトの名無しさん
2015/01/28(水) 23:18:45.09ID:arg2MK+/0631デフォルトの名無しさん
2015/01/29(木) 08:12:30.79ID:FQssNh0T0632デフォルトの名無しさん
2015/01/29(木) 08:16:42.32ID:vMBFyrLx0633デフォルトの名無しさん
2015/01/29(木) 08:43:48.85ID:FQssNh0T0634デフォルトの名無しさん
2015/02/01(日) 00:18:48.30ID:ARaZzTfJlua部分はともかく独自追加した所のデバッグやってるんだろうか
findimage使った瞬間に落ちる、サンプルのスクリプトを使っても落ちる…
0635デフォルトの名無しさん
2015/02/03(火) 08:45:44.97ID:AqPQb7sPObjectScript
https://github.com/unitpoint/objectscript
http://objectscript.org/
http://www.codeproject.com/Articles/466907/ObjectScript-A-new-programming-language
Luaっぽい作りで構文はC/JavaScript系で、Squirrelとキャラが被ってる。
単純な整数計算ベンチの速度だと Lua : Squirrel : ObjectScript = 3 : 2 : 1 (遅い) くらい。
実行バイナリのサイズは Lua : Squirrel : ObjectScript = 2 : 3 : 4 (でかい) くらい。
安定性や採用事例はよくわかんない。ちなみにCachéとは何の関係も無い。
0636デフォルトの名無しさん
2015/02/04(水) 06:17:03.56ID:Eqb0TJqD0637デフォルトの名無しさん
2015/02/07(土) 10:47:45.90ID:3mcYxCt20638デフォルトの名無しさん
2015/02/07(土) 11:10:55.67ID:kuZAKFeALuaの話? いちおう組み込み系全般のスレなので……
標準では用意されていない。 言語機能系の追加ライブラリを使えば良いんじゃない?
まぁ、自作しても for ループを廻せば済むけど。
- stdlib : http://lua-stdlib.github.io/lua-stdlib/modules/std.table.html#keys
- Underscore.lua : http://mirven.github.io/underscore.lua/#keys
0639デフォルトの名無しさん
2015/02/08(日) 11:46:47.96ID:8cE0HyuH0640デフォルトの名無しさん
2015/02/08(日) 12:28:55.31ID:5UGjVIn50641デフォルトの名無しさん
2015/02/08(日) 17:36:40.20ID:zqGmBD5H0642デフォルトの名無しさん
2015/02/16(月) 22:29:33.28ID:JBQ+Owrp0643デフォルトの名無しさん
2015/02/16(月) 22:40:47.19ID:yzFhOePDLuaからファイルを作っているなら os.date(書式) .. ".txt" でファイル名を生成すれば良いのでは
0644デフォルトの名無しさん
2015/02/16(月) 23:48:51.20ID:JBQ+Owrp0645デフォルトの名無しさん
2015/02/19(木) 19:51:04.59ID:Qw0v9eHu自作計算プログラム用のスクリプトとしてTclを組み込んで使ってきたけど、
Luaってもう仕様安定してるの?
浮動小数点の実装はちゃんとバイナリ?
0646デフォルトの名無しさん
2015/02/19(木) 20:22:48.55ID:YKDWyqEz本体の仕様は概ね安定している。 他の言語と比べてもそれほど差は無いと思う。
Lua 5.3 では、普通にビルドすると、浮動小数点は double、整数は int64 になる。
内部的な値の表現は タグ + union { double; int64; void* } という素直な実装だよ。
正規表現だけは注意がいるかもしれない。 文字の並びを ( ) で扱えない。
自分は C++ regex を使う別実装を自前で追加してる。
0647デフォルトの名無しさん
2015/02/21(土) 12:07:52.58ID:ftMcKIolありがとう。
awkみたいな実数=文字列みたいなダサ実装じゃないか、さすがに。
ちょっと活用を検討してみます。
■ このスレッドは過去ログ倉庫に格納されています