【Lua】組み込み系言語総合 その7【Squirrel】 [無断転載禁止]©2ch.net
昔はテキストとバイナリを区別しなかったが
型を区別できないと辛いから二つに分裂した >>169
ES6 の import, export をサポートしたブラウザが実在しないという時点で糞だよ そもそも、es6のexportとimportpは仕様が遅れに遅れてるから、当然。
エンジンで実装してるのも、所詮ベータらドラフト的位置付け。 んで、nodejsやらトランスパイラやらでrequirer使うハメになるわけだけど
グローバル変数領域を汚しまくりで、「何このクソ言語?」って感じ あと typescript 。
あれはあれで確かにウチラ玄人プログラマからすれば悪くないんだけど
そもそもプログラム素人がターゲットのスクリプト言語なんて程度のものには
型なんて面倒なもののないお気楽さが求められてんじゃねーのかという気がしないでもない。 やりたきゃお気楽にもできるでしょ。
Typescriptは特にそのへん、動的型付けと型ヒント・型推論の混ぜ具合が絶妙と思う。 JSエンジンでES6対応で簡単にC++に組み込めるのってないですか。
V8は、まともにコンパイルできない。 >>191
typescriptでtargetをes5指定して簡単にコンパイル出来るes5対応のエンジンを使うのはどうよ? ES6対応状況がどんなもんか忘れたがChakraCoreはビルドで楽ちんぽじゃろ >>193
ES6からクラス定義が使えるから、組み込み用途が広がるかなと思ったのです。
ES5なら、V7とかは簡単に組み込めるんだけど。
>>194
ChakraCoreはビルドできるけど、DLL、動的リンク?今のところWindows限定なのが。
V8のgnビルドの途中とか、pythonのエラーと格闘してると本質を忘れてしまいそうになります。
後、MoziraのSpiderMonkeyとか。
どれもこれもビルドするのに必要な情報がなさすぎる。 >>195
え?Windows限定?
https://github.com/Microsoft/ChakraCore
あとtypescriptを組み込み用途として使えば良いんじゃねえのという話なんだけど。事前にjsにコンパイルしたくないというならtypescriptコンパイラも一緒に組み込んだら? >>191
electron についてる node.dll が使えそうな気がするんだけど
情報が殆どないよね >>191
もしかしてV8をCLIでコンパイルしようとしてない?俺もすげーハマったってーか無理
ビルドだけならオプションしっかりしとけばネイティブC++で静的ライブラリ化して使える
違ったらごめん
Win10のUWP限定で良ければ、.NETの名前空間とクラスとかの指定で
あっさりバインドできるんだけど、C++なんだよね・・・
IEの旧JSRTの理解は文献がなさすぎて難しい Luaはソースコード自体を文献といってもいい
V8とかもう文献じゃない V8はなぁ、旧JSRTとほぼ同じ構造って言っていいんだけど、
効率求めすぎてスコープの定義がわかりづらすぎて、
ちょっとバインドして使うにしても敷居が高過ぎる すまん、構造って言ってもスコープの生成/離脱と変数定数類の生成の話 あと duktape がある程度は ES2015 対応してきてるけど >>198
V8のgnでsinファイル作って、それをVS2015で開いてコンパイルするところまで行くんですが、コンパイル中にエラー出まくりで。
ビルドしようとすると、環境を壊してしまいそうです。
gnとか、ninjaとか使わずにsinファイルを添付してほしいですね。 >>202
duktapeのほうが良さそうですね。
ライセンス的にもV7は商用利用はライセンス購入しないとですし。 >>200
V8は確かに効率重視というか、もはや病的。SpiderMonkyとか、Chakraとデッドヒートし過ぎて、この3つは色々と置いてきぼり感が。 >>197
あのnode.dll は、node.js をソースからコンパイルするときに configure --sharedすればつくれるよ
win なら
$ vcbuild.bat dll
でいけるはず
組み込み方法はnode.h とelectronのソースとかC#だけどedge.js のソースとかみて考えるべし 厳格な関数型プログラミングをすれば
共有メモリ(変数)の変更とかないわけだから
マルチスレッドプログラミングに向いてる気がするんだけど、幻想? scalaやHaskellはまさにその目的で使われてるよ >>207
厳格かどうかってより、理論的にきっちり変数類の排他が可能な設計かどうかだけじゃない?
「.NETで〇〇クラスへのアクセス全てについて排他制御する」って決めてCSで排他すれば動くけど
その実態は背後でGCまで動いてたり、そのメモリ管理の機構は他のスレッドからも
目まぐるしく利用されまくってて、アセンブラレベルで見たら
「排他領域をこんなとこにこんな方法で確保してて大丈夫なのかよ!?」って不安になる
・・・けど、ちゃんと動くんだなこれが 厳格な関数型って式を簡約するだけが目的だろ
簡約するためにマルチスレッドプログラミングするのは可能
だがマルチスレッドプログラミングのために簡約するのは無理
厳格じゃなければ可能 厳格な関数型には状態がないから
完全独立型マルチスレッドは可能だが
ある程度同期が求められるようなマルチスレッドは無理ってこと? 独立型っていうかメモリ非共有型?
関数型は共有とコピーの見分けがつかない
ってことは共有するかコピーするかを自分でプログラムする権利もない cプログラムへの組み込みが楽で静的型サポートしてるやつ探してるんだけど、もしかしてtypescript+duktape > angelscriptな感じ? あと、yield/resume みたいな機能ってjavascriptというかduktapeでサポートされてるの?前は無理だった気がするけど というかもしかしてもしかしてtypescriptってUnity版のjavascriptみたいなもん? 静的型が欲しいならTypeScriptがベストだろうね
JSエンジンはChakraCoreが相性もいいし実績もあるのでは
Luaでいうyield/resumeは、Promiseを使うのが流儀かな >>214
ES6にあるよ
Luaより個人的には好き >>215
全然違う
unityのあれはjavascriptぽいだけの別言語で赤の他人
typescriptはjavascriptを機能拡張したもので、拡張した部分は全部事前にjavascriptに変換してから実行する仕組み >>214
javascriptの仕様的にはES6からあるけどduktapeは未サポート
代わりにluaとよく似たcoroutine機能はある Cへの組み込みならJSよりLuaの方がよいよ。
JSが悪いLuaが良いていいたいわけでなく、
同じスクリプトでも前者はWeb出身、後者は最初から組込前提だから
相性がぜんぜん違う。
まずLuaで作ってみてJSで作り直してみるとよく分かる。 論点を絞るべきだね。「相性」では曖昧すぎる
構文? 標準ライブラリ? 同期/非同期? 相性という言葉が曖昧であるという意見はエアプの戯言なので無視してOK 論点を絞るべきだね。「エアプの戯言」では曖昧すぎる >>220
Luaでもいいのかもだけど、JSは使い慣れてるから。
Luaは構文がCとは全然違うから。 LuaはCの組み込み用として作られたはずなのに中括弧じゃなくてendなのは本当謎 Luaって、導入のお手軽さと、Cも知らない様な素人でも使えそうな言語体系だけが
ウリだと思ってたけど、どうなのかね?
実行速度だけを考えたら、AngelScriptみたいなコンパイル済みバイナリ突っ込める奴が無難だし luaはキーワードの直後にカンマが来たりするのにすごく違和感があるけどそれはcに慣れてるからであって例えばpascalの人なら全然抵抗ない。
むしろluaはカッコの代わりにend 使うから敷居が低そうに見える
デザイナーにちょっとだけスクリプト覚えてよっていう時に、jsよりもluaの方が頼む方としても抵抗がない
初心者にとっては記号満載なcよりも英単語のpascalでしょ。ソースはオレ JSはネームスペースに関する機能が貧弱すぎて
所詮web用言語だな〜という感じ。
好きだってだけですすむというならとめはしないが。 組み込む手間の簡単さならJavaだってそうとう楽だぞ
まあフットプリントの大きさを我慢できればの話だが 別プロセスでjvm立ち上げるんじゃなくて組み込みって簡単にできたっけ? ttp://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/invocation.html
これじゃろ V8のコンパイルがやっとできました。
VS2015Update3とWindows10SDKを正しく選択すれば、普通にコンパイル出来た。
最新のVS2017ではダメだし、Windows10SDKもVS2015Update3に付属の一番古いの(バージョン忘れた)でないとダメでした。
Chromeのビルド方法の所に環境についての情報がありました。
甘えかもしれないけど、V8のところにも、書いておいてほしかった。 不思議なんだけど、どんなコードをかけばそこまで開発環境とライブラリとバージョンにそこまで依存したものになるの?? コンパイルはほぼ自動化されてて、環境さえ整えばなんの苦労もなくって感じです。
v8gen.pyは使い物になりませんでしたが。 あ、今更だけど思い出した、cmakeとか使うんだっけ
めんどくさがらずに環境に合わせてきっちりmakeオプション設定しないとダメだよ
それに使わない機能は全部切れば小さく軽くなるよ 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は公開鍵認証にしてパスワード入力無しにしました)どなたかお知恵をくださると嬉しいです。 'ssh user@192.168.1.4 &'..
の..が悪いようでした。
なくしたらうまくいきました。スレ汚してすみません。 LuaはDSLが非常に作りやすい。
玩具としては最高の言語。 LuaFileSystemのWindows用バイナリって公式では配布されていないのかな?
自分でビルドするよう? じゃあ語ろうぜ。俺的にはChakraCoreが熱い。
・バイナリ配布されている。dll入れるだけの手軽さ
・APIがC++じゃなくてC。しかもシンプル
・グローバルなコンテキストに依存しない。マルチスレッドでの利用が考慮されている
・ほぼES6
・速い
LuaとV8のいいとこどりみたいな感じ。 >>245
JSはグローバル変数汚染とかmodule関係とかが弱点の気がするんけどそのへんはどうっすか? グローバルはコンテキストごとに分離しているからその辺は問題ない。
モジュールはES6 import実装済みってことだけど試せてない。
GitHubのチケットに書いてあったAPIがリリース版じゃ見当たらないんだよなぁ。ドキュメントも見つからないし。 ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ number(ビット演算系の関数群を追加したい)とかfile(ファイルサイズを取得する関数を追加したい)にメソッドを
追加したいんだけどどうすればいいんだろ?
ググってもモンキーパッチ系の情報はほとんど引っかからないんだよなぁ 何故かPowerPCのアセンブラと格闘してる
こちとらZ80で止まってるので異次元すぎる まだ電源とかのコンデンサ乾いてないPPC機とか生きてんのかw >>252
開発はエミュレータかもしれんが、本番はリアルじゃないの? V8をVisualStudio2017でビルド出来るようになってますね。 V8のWindows用とAndroid用のライブラリがWindowsとWSLのDebianでビルド出来た!
これでビルド用置いといた仮想環境を削除出来る。
長かった。 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
23N48 Atmel Studioのインストールは成功したけど起動しない
先にVisual Studio2017がインストールされてたのが悪影響してるのかな? あーなんで三連休の初日潰されなきゃいけねーんだよカスが LuaのT{}とかL{}とかってggってもキーワードで絞り込めんのだけんども、
これってどういう意味なん?
Lが専ら数値でインデックスされる事を前提としたテーブルで、Tが連想配列でいいのかな? せっかく日本語化してくれてるんだからマニュアルを嫁 duktape以外にも色々あるんだね。chakra coreね。今度調べてみよ
lowjsとかXS7(Moddable)とかもあったけどこれは? IOTJSつうのもあるな…
俺はフットプリントでかいけどlowjsに惹かれるわ。コアをv8からduktapeに置き換えた普通のnodejsでnpmパッケージ使えるみたいだし。
他の組み込みjavascriptは別にjsじゃなくていいじゃんていう…それこそLuaでいいかなと思いました○ luaで
openMsg( msgid )
waitMsg() // メッセージ終了まで待機
のような記述をしたいのですが可能でしょうか? コルーチンでできる
MinecraftのComputerCraftがCoroutine駆使した実装してるから見てくるといいぞ 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();
}
}
という感じで上手くいきません。
お知恵を貸して頂けると幸いです。 もしかして、スクワールもスクラットも64ビット環境非対応? >>272
squirrel_3_1_stable
sqrat-0.9.2
なら64bit対応だよ。 Luaはcの割り込みに対応させるのは出来ないのかな?
ポーリングしかないか あーすまんおかしいね
組み込み環境のハードウェア割り込みの事 Cの場合でもライブラリなりAPIの類を使うことになるんだろ。
Cで割り込みというとコールバックを登録するとかになるんだろうけど、
だとしたらそれでLuaの関数が呼ばれるように仕込めばいい。 ルーターの動作変えるためにLuaで試すとき
何度も保存するとEEPROMとかの寿命縮む? これからluaを再度学ぼうと考えているのですが、
cliインターフェイスのlua tutor的なものがあったような
そんな記憶がありまして、再度実行したいのですが
そういうのありませんでしたでしょうか?
ステップバイステップで学べるvimtutorみたいなやつです… Dont study, just feeling.
May the force be with us. AngelScriptのまともな.NETラッパーってないモノかね?
ggっても外人が「それならC#で動的にDLLにコンパイル&実行でいいんじゃね?」とか言われてるし
そうじゃないんだ、例外とかでホスト側を巻き込んで欲しくないんだ
なんちゃってコーダーに余計な事させたくないんだ
大量のコンパイル済みバイナリ複数を1つの圧縮ファイルにぶっこんでコロコロ入れ替えたいんだ