X



【Lua】組み込み系言語総合 その7【Squirrel】 [無断転載禁止]©2ch.net
0001デフォルトの名無しさん
垢版 |
2016/09/22(木) 18:23:46.74ID:t8yALPnl
LuaやSquirrelやAngelScriptなどアプリケーションへの組み込み用途で
使われるプログラミング言語についてのスレッドです
Luaに限定してるわけではないのでレスする場合は言語を明記してください

まとめwiki(なにか質問する前に必ずみること!)
http://wikiwiki.jp/lua/

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

■前スレ
【Lua】組み込み系言語総合 その6【Squirrel】
http://echo.2ch.net/test/read.cgi/tech/1362895832/
■過去スレ
その5 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/
0184デフォルトの名無しさん
垢版 |
2017/06/04(日) 14:34:44.62ID:H8kb5qdv
昔はテキストとバイナリを区別しなかったが
型を区別できないと辛いから二つに分裂した
0186デフォルトの名無しさん
垢版 |
2017/06/04(日) 20:12:01.89ID:cmHLZ64w
そもそも、es6のexportとimportpは仕様が遅れに遅れてるから、当然。
エンジンで実装してるのも、所詮ベータらドラフト的位置付け。
0188デフォルトの名無しさん
垢版 |
2017/06/04(日) 20:22:07.93ID:EOhD2Aoc
んで、nodejsやらトランスパイラやらでrequirer使うハメになるわけだけど
グローバル変数領域を汚しまくりで、「何このクソ言語?」って感じ
0189デフォルトの名無しさん
垢版 |
2017/06/04(日) 20:32:33.94ID:EOhD2Aoc
あと typescript 。
あれはあれで確かにウチラ玄人プログラマからすれば悪くないんだけど
そもそもプログラム素人がターゲットのスクリプト言語なんて程度のものには
型なんて面倒なもののないお気楽さが求められてんじゃねーのかという気がしないでもない。
0190デフォルトの名無しさん
垢版 |
2017/06/04(日) 20:59:00.52ID:qVKeiDcr
やりたきゃお気楽にもできるでしょ。
Typescriptは特にそのへん、動的型付けと型ヒント・型推論の混ぜ具合が絶妙と思う。
0191デフォルトの名無しさん
垢版 |
2017/06/04(日) 22:12:48.81ID:meHczPjW
JSエンジンでES6対応で簡単にC++に組み込めるのってないですか。
V8は、まともにコンパイルできない。
0192デフォルトの名無しさん
垢版 |
2017/06/04(日) 22:46:58.81ID:qUWZGkRh
>>185
webpack使えぼけ
0193デフォルトの名無しさん
垢版 |
2017/06/04(日) 23:27:20.64ID:zptvcWS6
>>191
typescriptでtargetをes5指定して簡単にコンパイル出来るes5対応のエンジンを使うのはどうよ?
0195デフォルトの名無しさん
垢版 |
2017/06/05(月) 01:21:48.20ID:jutLW3Aq
>>193
ES6からクラス定義が使えるから、組み込み用途が広がるかなと思ったのです。
ES5なら、V7とかは簡単に組み込めるんだけど。

>>194
ChakraCoreはビルドできるけど、DLL、動的リンク?今のところWindows限定なのが。

V8のgnビルドの途中とか、pythonのエラーと格闘してると本質を忘れてしまいそうになります。

後、MoziraのSpiderMonkeyとか。

どれもこれもビルドするのに必要な情報がなさすぎる。
0196デフォルトの名無しさん
垢版 |
2017/06/05(月) 01:38:10.76ID:s9HDUBeH
>>195
え?Windows限定?
https://github.com/Microsoft/ChakraCore

あとtypescriptを組み込み用途として使えば良いんじゃねえのという話なんだけど。事前にjsにコンパイルしたくないというならtypescriptコンパイラも一緒に組み込んだら?
0198デフォルトの名無しさん
垢版 |
2017/06/05(月) 08:06:21.26ID:pTqNmGMN
>>191
もしかしてV8をCLIでコンパイルしようとしてない?俺もすげーハマったってーか無理
ビルドだけならオプションしっかりしとけばネイティブC++で静的ライブラリ化して使える
違ったらごめん

Win10のUWP限定で良ければ、.NETの名前空間とクラスとかの指定で
あっさりバインドできるんだけど、C++なんだよね・・・
IEの旧JSRTの理解は文献がなさすぎて難しい
0200デフォルトの名無しさん
垢版 |
2017/06/05(月) 08:39:17.33ID:pTqNmGMN
V8はなぁ、旧JSRTとほぼ同じ構造って言っていいんだけど、
効率求めすぎてスコープの定義がわかりづらすぎて、
ちょっとバインドして使うにしても敷居が高過ぎる
0203デフォルトの名無しさん
垢版 |
2017/06/05(月) 13:25:16.42ID:jutLW3Aq
>>198
V8のgnでsinファイル作って、それをVS2015で開いてコンパイルするところまで行くんですが、コンパイル中にエラー出まくりで。

ビルドしようとすると、環境を壊してしまいそうです。

gnとか、ninjaとか使わずにsinファイルを添付してほしいですね。
0204デフォルトの名無しさん
垢版 |
2017/06/05(月) 13:27:49.88ID:jutLW3Aq
>>202
duktapeのほうが良さそうですね。
ライセンス的にもV7は商用利用はライセンス購入しないとですし。
0205デフォルトの名無しさん
垢版 |
2017/06/05(月) 13:30:56.79ID:jutLW3Aq
>>200
V8は確かに効率重視というか、もはや病的。SpiderMonkyとか、Chakraとデッドヒートし過ぎて、この3つは色々と置いてきぼり感が。
0206デフォルトの名無しさん
垢版 |
2017/06/05(月) 15:40:41.42ID:VLAg5ezx
>>197
あのnode.dll は、node.js をソースからコンパイルするときに configure --sharedすればつくれるよ
win なら
$ vcbuild.bat dll
でいけるはず

組み込み方法はnode.h とelectronのソースとかC#だけどedge.js のソースとかみて考えるべし
0207デフォルトの名無しさん
垢版 |
2017/06/08(木) 09:37:54.76ID:uRhhAv9e
厳格な関数型プログラミングをすれば
共有メモリ(変数)の変更とかないわけだから
マルチスレッドプログラミングに向いてる気がするんだけど、幻想?
0209デフォルトの名無しさん
垢版 |
2017/06/08(木) 13:29:28.61ID:zUfH2DpL
>>207
厳格かどうかってより、理論的にきっちり変数類の排他が可能な設計かどうかだけじゃない?
「.NETで〇〇クラスへのアクセス全てについて排他制御する」って決めてCSで排他すれば動くけど
その実態は背後でGCまで動いてたり、そのメモリ管理の機構は他のスレッドからも
目まぐるしく利用されまくってて、アセンブラレベルで見たら
「排他領域をこんなとこにこんな方法で確保してて大丈夫なのかよ!?」って不安になる
・・・けど、ちゃんと動くんだなこれが
0210デフォルトの名無しさん
垢版 |
2017/06/08(木) 21:19:09.44ID:sxQfjcTV
厳格な関数型って式を簡約するだけが目的だろ
簡約するためにマルチスレッドプログラミングするのは可能
だがマルチスレッドプログラミングのために簡約するのは無理
厳格じゃなければ可能
0211デフォルトの名無しさん
垢版 |
2017/06/09(金) 08:00:36.03ID:eDPZbdQ0
厳格な関数型には状態がないから
完全独立型マルチスレッドは可能だが
ある程度同期が求められるようなマルチスレッドは無理ってこと?
0212デフォルトの名無しさん
垢版 |
2017/06/09(金) 18:52:56.60ID:YSykiNQK
独立型っていうかメモリ非共有型?
関数型は共有とコピーの見分けがつかない
ってことは共有するかコピーするかを自分でプログラムする権利もない
0213デフォルトの名無しさん
垢版 |
2017/06/11(日) 20:53:12.50ID:XzV+IpTS
cプログラムへの組み込みが楽で静的型サポートしてるやつ探してるんだけど、もしかしてtypescript+duktape > angelscriptな感じ?
0214デフォルトの名無しさん
垢版 |
2017/06/11(日) 20:55:22.01ID:XzV+IpTS
あと、yield/resume みたいな機能ってjavascriptというかduktapeでサポートされてるの?前は無理だった気がするけど
0216デフォルトの名無しさん
垢版 |
2017/06/11(日) 21:23:25.64ID:y28miZDE
静的型が欲しいならTypeScriptがベストだろうね
JSエンジンはChakraCoreが相性もいいし実績もあるのでは
Luaでいうyield/resumeは、Promiseを使うのが流儀かな
0217デフォルトの名無しさん
垢版 |
2017/06/11(日) 22:14:07.96ID:AskXGu9A
>>214
ES6にあるよ
Luaより個人的には好き
0218デフォルトの名無しさん
垢版 |
2017/06/11(日) 22:23:51.05ID:n1Ew9aQP
>>215
全然違う
unityのあれはjavascriptぽいだけの別言語で赤の他人

typescriptはjavascriptを機能拡張したもので、拡張した部分は全部事前にjavascriptに変換してから実行する仕組み
0219デフォルトの名無しさん
垢版 |
2017/06/11(日) 22:44:47.98ID:n1Ew9aQP
>>214
javascriptの仕様的にはES6からあるけどduktapeは未サポート

代わりにluaとよく似たcoroutine機能はある
0220デフォルトの名無しさん
垢版 |
2017/06/23(金) 09:23:34.50ID:LkqtiFTE
Cへの組み込みならJSよりLuaの方がよいよ。
JSが悪いLuaが良いていいたいわけでなく、
同じスクリプトでも前者はWeb出身、後者は最初から組込前提だから
相性がぜんぜん違う。
まずLuaで作ってみてJSで作り直してみるとよく分かる。
0221デフォルトの名無しさん
垢版 |
2017/06/23(金) 10:39:52.64ID:QyiRg5Ao
論点を絞るべきだね。「相性」では曖昧すぎる
構文? 標準ライブラリ? 同期/非同期?
0222デフォルトの名無しさん
垢版 |
2017/06/23(金) 12:04:48.78ID:oZi0rQnk
相性という言葉が曖昧であるという意見はエアプの戯言なので無視してOK
0225デフォルトの名無しさん
垢版 |
2017/06/23(金) 16:21:28.25ID:LJ/gyu22
LuaはCの組み込み用として作られたはずなのに中括弧じゃなくてendなのは本当謎
0226デフォルトの名無しさん
垢版 |
2017/06/23(金) 16:54:48.00ID:TtF2h1gU
Luaって、導入のお手軽さと、Cも知らない様な素人でも使えそうな言語体系だけが
ウリだと思ってたけど、どうなのかね?

実行速度だけを考えたら、AngelScriptみたいなコンパイル済みバイナリ突っ込める奴が無難だし
0227デフォルトの名無しさん
垢版 |
2017/06/23(金) 23:04:48.36ID:CpTcczqJ
luaはキーワードの直後にカンマが来たりするのにすごく違和感があるけどそれはcに慣れてるからであって例えばpascalの人なら全然抵抗ない。

むしろluaはカッコの代わりにend 使うから敷居が低そうに見える
デザイナーにちょっとだけスクリプト覚えてよっていう時に、jsよりもluaの方が頼む方としても抵抗がない

初心者にとっては記号満載なcよりも英単語のpascalでしょ。ソースはオレ
0229デフォルトの名無しさん
垢版 |
2017/06/25(日) 09:28:33.98ID:/3bHwdMz
JSはネームスペースに関する機能が貧弱すぎて
所詮web用言語だな〜という感じ。
好きだってだけですすむというならとめはしないが。
0231デフォルトの名無しさん
垢版 |
2017/06/25(日) 17:02:33.73ID:H3Pb5ajO
>>229
webpack使おう
0232デフォルトの名無しさん
垢版 |
2017/06/26(月) 20:22:56.38ID:qwwVsuZz
組み込む手間の簡単さならJavaだってそうとう楽だぞ

まあフットプリントの大きさを我慢できればの話だが
0235デフォルトの名無しさん
垢版 |
2017/07/03(月) 22:50:21.20ID:FvNp21wn
V8のコンパイルがやっとできました。
VS2015Update3とWindows10SDKを正しく選択すれば、普通にコンパイル出来た。
最新のVS2017ではダメだし、Windows10SDKもVS2015Update3に付属の一番古いの(バージョン忘れた)でないとダメでした。
Chromeのビルド方法の所に環境についての情報がありました。
甘えかもしれないけど、V8のところにも、書いておいてほしかった。
0236デフォルトの名無しさん
垢版 |
2017/07/05(水) 09:34:28.62ID:TMFukfM7
不思議なんだけど、どんなコードをかけばそこまで開発環境とライブラリとバージョンにそこまで依存したものになるの??
0238デフォルトの名無しさん
垢版 |
2017/07/24(月) 08:31:03.22ID:IMbb1Y8+
コンパイルはほぼ自動化されてて、環境さえ整えばなんの苦労もなくって感じです。
v8gen.pyは使い物になりませんでしたが。
0239デフォルトの名無しさん
垢版 |
2017/07/25(火) 06:08:17.91ID:s0AzPwAF
あ、今更だけど思い出した、cmakeとか使うんだっけ
めんどくさがらずに環境に合わせてきっちりmakeオプション設定しないとダメだよ
それに使わない機能は全部切れば小さく軽くなるよ
0240デフォルトの名無しさん
垢版 |
2017/08/11(金) 13:16:36.72ID:TitR5juA
http://d.hatena.ne.jp/saitodevel01/20101004/1286140929
こちらのvlc拡張機能のluaスクリプトを改造して、リモートのサーバーにあるチューナーから
テレビを視聴したいのですが「このスクリプトはクライアントマシンにチューナーが刺さっているのが前提です)

https://stackoverflow.com/questions/5965062/how-to-establish-an-ssh-connection-in-a-lua-script-to-execute-a-command-on-a-rem
How to establish an ssh connection in a Lua script to execute a command on a remote server? - Stack Overflow

こちらのサイトを参考に
os.execute ('ssh user@192.168.1.4 &'..recdvb --b25 --strip --udp --addr 192.168.1.3 --port 1234 %d - /dev/null &, channel)

などとやってもうまくいきません。luaに関しては素人(ほかにCをかじった程度ですが)何もわからないのですが、
(sshは公開鍵認証にしてパスワード入力無しにしました)どなたかお知恵をくださると嬉しいです。
0241240
垢版 |
2017/08/12(土) 15:56:39.62ID:m9ANN/9z
'ssh user@192.168.1.4 &'..
の..が悪いようでした。
なくしたらうまくいきました。スレ汚してすみません。
0243デフォルトの名無しさん
垢版 |
2017/08/22(火) 07:49:26.32ID:2KYzFZiz
LuaFileSystemのWindows用バイナリって公式では配布されていないのかな?
自分でビルドするよう?
0245デフォルトの名無しさん
垢版 |
2018/01/23(火) 21:29:19.44ID:eZ1ODWeZ
じゃあ語ろうぜ。俺的にはChakraCoreが熱い。

・バイナリ配布されている。dll入れるだけの手軽さ
・APIがC++じゃなくてC。しかもシンプル
・グローバルなコンテキストに依存しない。マルチスレッドでの利用が考慮されている
・ほぼES6
・速い

LuaとV8のいいとこどりみたいな感じ。
0246デフォルトの名無しさん
垢版 |
2018/01/24(水) 08:04:17.49ID:wPQrXQ1e
>>245
JSはグローバル変数汚染とかmodule関係とかが弱点の気がするんけどそのへんはどうっすか?
0247デフォルトの名無しさん
垢版 |
2018/01/24(水) 08:50:24.70ID:BFkGLEDk
グローバルはコンテキストごとに分離しているからその辺は問題ない。
モジュールはES6 import実装済みってことだけど試せてない。
GitHubのチケットに書いてあったAPIがリリース版じゃ見当たらないんだよなぁ。ドキュメントも見つからないし。
0248デフォルトの名無しさん
垢版 |
2018/02/16(金) 06:06:05.04ID:W1XJdyx1
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
0249デフォルトの名無しさん
垢版 |
2018/03/18(日) 17:35:38.46ID:y2Jah45T
number(ビット演算系の関数群を追加したい)とかfile(ファイルサイズを取得する関数を追加したい)にメソッドを
追加したいんだけどどうすればいいんだろ?
ググってもモンキーパッチ系の情報はほとんど引っかからないんだよなぁ
0250デフォルトの名無しさん
垢版 |
2018/04/11(水) 21:01:44.65ID:kZyid8rT
何故かPowerPCのアセンブラと格闘してる
こちとらZ80で止まってるので異次元すぎる
0255デフォルトの名無しさん
垢版 |
2018/04/18(水) 04:29:04.07ID:QMTS4xqE
V8のWindows用とAndroid用のライブラリがWindowsとWSLのDebianでビルド出来た!
これでビルド用置いといた仮想環境を削除出来る。
長かった。
0256デフォルトの名無しさん
垢版 |
2018/05/23(水) 20:38:37.34ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

23N48
0257デフォルトの名無しさん
垢版 |
2018/07/05(木) 01:14:20.30ID:RfoszcD2
LUF
0258デフォルトの名無しさん
垢版 |
2018/08/25(土) 17:44:57.37ID:9amKblQT
Atmel Studioのインストールは成功したけど起動しない
先にVisual Studio2017がインストールされてたのが悪影響してるのかな?
0259デフォルトの名無しさん
垢版 |
2018/09/03(月) 23:26:46.10ID:E2St7m4+
浮上
0260デフォルトの名無しさん
垢版 |
2018/09/15(土) 00:36:27.36ID:KdCLOk6a
あーなんで三連休の初日潰されなきゃいけねーんだよカスが
0263デフォルトの名無しさん
垢版 |
2018/11/29(木) 02:05:40.15ID:7MAx3EpB
LuaのT{}とかL{}とかってggってもキーワードで絞り込めんのだけんども、
これってどういう意味なん?
Lが専ら数値でインデックスされる事を前提としたテーブルで、Tが連想配列でいいのかな?
0265デフォルトの名無しさん
垢版 |
2018/12/02(日) 06:15:09.47ID:3ib8/uX9
duktape以外にも色々あるんだね。chakra coreね。今度調べてみよ
lowjsとかXS7(Moddable)とかもあったけどこれは?
0267デフォルトの名無しさん
垢版 |
2018/12/02(日) 06:48:35.40ID:3ib8/uX9
IOTJSつうのもあるな…

俺はフットプリントでかいけどlowjsに惹かれるわ。コアをv8からduktapeに置き換えた普通のnodejsでnpmパッケージ使えるみたいだし。
他の組み込みjavascriptは別にjsじゃなくていいじゃんていう…それこそLuaでいいかなと思いました○
0268デフォルトの名無しさん
垢版 |
2018/12/29(土) 03:43:02.31ID:P4ZBbqvc
luaで

openMsg( msgid )
waitMsg() // メッセージ終了まで待機

のような記述をしたいのですが可能でしょうか?
0269デフォルトの名無しさん
垢版 |
2018/12/29(土) 10:10:19.18ID:56ZnQ0Ma
コルーチンでできる
MinecraftのComputerCraftがCoroutine駆使した実装してるから見てくるといいぞ
0270デフォルトの名無しさん
垢版 |
2018/12/30(日) 15:40:45.53ID:ZcNQjwbG
有難う御座います。
0271デフォルトの名無しさん
垢版 |
2019/01/28(月) 17:00:04.71ID:GjcZOiPA
squirrelについて相談なのですが、
コンパイルしてバイナリ化したスクリプトデータを
sq_readclosure( vm, readf, data );
でスタックに積んだ後、
sq_pushroottable( vm ) ;
sq_call( vm, 1, SQFalse, SQTrue );
で、実行は出来るのですが、
スクリプトを頭から実行するのではなく、
Sqrat::RootTable().GetFunction(_SC("testFunc")).Execute();
のように、指定した関数を実行したいのですが、

Function GetFunction(const SQChar* name) {
    HSQOBJECT funcObj;
    sq_pushobject(vm, GetObject());
    sq_pushstring(vm, name, -1);
    if(SQ_FAILED(sq_get(vm, -2))) { // ここで失敗!
        sq_pop(vm, 1);
        return Function();
    }

}

という感じで上手くいきません。
お知恵を貸して頂けると幸いです。
0272デフォルトの名無しさん
垢版 |
2019/02/08(金) 20:07:48.14ID:NjrczfEf
もしかして、スクワールもスクラットも64ビット環境非対応?
0273デフォルトの名無しさん
垢版 |
2019/02/09(土) 00:04:43.44ID:EpBhfLEl
>>272
squirrel_3_1_stable
sqrat-0.9.2
なら64bit対応だよ。
0277デフォルトの名無しさん
垢版 |
2019/03/03(日) 08:35:04.17ID:oO/57lY2
Cの場合でもライブラリなりAPIの類を使うことになるんだろ。
Cで割り込みというとコールバックを登録するとかになるんだろうけど、
だとしたらそれでLuaの関数が呼ばれるように仕込めばいい。
0280デフォルトの名無しさん
垢版 |
2019/03/06(水) 16:24:39.26ID:pP8e2GTT
ルーターの動作変えるためにLuaで試すとき
何度も保存するとEEPROMとかの寿命縮む?
0281デフォルトの名無しさん
垢版 |
2019/03/18(月) 18:47:38.72ID:ZALyzRz3
分からンゴ
0282デフォルトの名無しさん
垢版 |
2019/03/30(土) 14:54:57.46ID:heVUtWKq
これからluaを再度学ぼうと考えているのですが、
cliインターフェイスのlua tutor的なものがあったような
そんな記憶がありまして、再度実行したいのですが
そういうのありませんでしたでしょうか?
ステップバイステップで学べるvimtutorみたいなやつです…
0284デフォルトの名無しさん
垢版 |
2019/04/24(水) 07:05:25.30ID:a9SVEzCT
AngelScriptのまともな.NETラッパーってないモノかね?
ggっても外人が「それならC#で動的にDLLにコンパイル&実行でいいんじゃね?」とか言われてるし

そうじゃないんだ、例外とかでホスト側を巻き込んで欲しくないんだ
なんちゃってコーダーに余計な事させたくないんだ
大量のコンパイル済みバイナリ複数を1つの圧縮ファイルにぶっこんでコロコロ入れ替えたいんだ
レスを投稿する


ニューススポーツなんでも実況