TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
文字コードの種類は何故複数あるのでしょうか?
クロージャって何がいいの?
☆★Java質問・相談スレッド182★★
「OS自作入門」
くだすれDelphi(超初心者用)その55
【node.js】サーバサイドjavascript 5【Nashorn】
初心者の作ったプログラムにありがちなこと
Subversion r15
Javaはもう死んだの?
pythonista総合スレ【IOSで勉強できる】

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


1 :2016/09/22 〜 最終レス :2020/05/07
LuaやSquirrelやAngelScriptなどアプリケーションへの組み込み用途で
使われるプログラミング言語についてのスレッドです
Luaに限定してるわけではないのでレスする場合は言語を明記してください

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

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

■前スレ
【Lua】組み込み系言語総合 その6【Squirrel】
http://echo.2ch.sc/test/read.cgi/tech/1362895832/
■過去スレ
その5 http://toro.2ch.sc/test/read.cgi/tech/1321063450/
その4 http://hibari.2ch.sc/test/read.cgi/tech/1301414458/
その3 http://hibari.2ch.sc/test/read.cgi/tech/1272643397/
その2 http://pc12.2ch.sc/test/read.cgi/tech/1243210301/
その1 http://pc12.2ch.sc/test/read.cgi/tech/1205208141/
プログラミング言語 Lua
その3 http://pc11.2ch.sc/test/read.cgi/tech/1160799232/

2 :
Lua: http://www.lua.org/
Squirrel: http://www.squirrel-lang.org/
ECMAScript (JavaScript): https://en.wikipedia.org/wiki/List_of_ECMAScript_engines
AngelScript: http://www.angelcode.com/angelscript/
elastiC: http://www.elasticworld.org/

3 :
NGワードでテンプレが張れないのでざっくり削ってしまった
必要なら補完をお願い

4 :
>前スレ999
リファレンスはあくまで言語リファレンスだから、踏み込んだ機能は Programing in Lua 読まないと駄目だよ

該当機能は13.4に解説されてる

5 :
__index と __newindex の話ならリファレンスにもある
https://www.lua.org/manual/5.3/manual.html#2.4

6 :
>>4
ありがとうございます
ttps://www.lua.org/pil/13.4.5.html
これですね。__indexは関数の節約や継承に相当する機能を実現するために
使いますけど[]の定義とこれらは両立は出来ない・・・?
__indexに[]にさせたい関数を入れてしまうとキーを参照しに行くテーブルを設定できませんし
__indexにテーブルを入れてしまうと[]にさせたい関数を書く場所がないような

>>5
すみません。気がつきませんでした。>>4を見た後に探し直したら見つかりました

7 :
__indexメタメソッドに設定した関数の中から目的のテーブル参照すりゃ良いだけだと思うが

8 :
ノンプリエンプティブなマルチタスクしか実現できないLuaでファイルアクセルの
オーバーヘッドを掩蔽することは不可能ですか?
IO待ち中にタスクを切り替えられないと思いますけど何か方法があるのでしょうか

9 :
>>8
別スレッドで自動でファイル読み込みして、メモリへの読み込み終わったら通知が来るような仕組みを別途作ればいい

10 :
Luaだけだと無理だね ホスト側で仕組みを作るしかない

11 :
タスクの定義がなんだかよーわからへんけど、1つのスレッドで読み込み要求を発行した後、
そのままそのスレッドで円周率ん万桁とか計算したりした後、
読み込みが終わったかどうかを確認した上で読み込んだ内容をほげほげしたい、と仮定しよう

Win32だったら::ReadFile(::ReadFileEx)はプログラマがマルチスレッドを意識する事なく非同期読み書きが可能
キーワードはReadFile、GetOverlappedResult、
あとCancelIo(一度に沢山読み込むのを例外とかでキャンセルしたりする時に重要、
キャンセルしたら即全部止まる訳じゃないからGetOverlappedResultで待ち合わせないとダメよ)
Linuxの類ならスレッドなりプロセスのフォークなりして最初に読み込んで
単純にLuaスクリプトが追いついたらWait何とかみたいな関数バインドして待たせたらどうだろうか

で、どうしてもLuaが主導で要求を発行した上で自前の他のスレッドでやりたいってんなら
Luaにクリティカルセクションか非同期読み込みに使ったイベントへのアクセス手段を
ホスト(Luaスクリプトを使う側から見た内部)で存続から何から何まで管理して
ロック待ち、ロック開放、イベントシグナル変更、シグナル待ち まで提供しとけば手っ取り早くできなくはない
ただしマルチスレッドプログラミングの注意点をLuaでも守らなきゃならなくなる

最後は>>9の手段についてだけど、これが無難と言えば無難だけど、
通知を待つ手段をコルーチンの類にすると、ちょいと突っ込んだ事を始めるとすぐに限界にぶちあたる筈
どうせ読み込みを開始して必要な処理が終わったらコルーチンか終了フラグをポーリングするんだろうから
いっその事ブロッキングしちゃった方がいいんじゃないかと思わなくもない
この時の注意点はホストからの終了要求も取りこぼさない様に2つ(複数)のハンドルをウェイトする事

12 :
Luaに足りない機能が欲しいときはJavaScriptを参考にするといい
この2つはスクリプトエンジン部分が非常によく似ている

非同期処理が欲しいなら、Promiseのように処理完了でコールバックする形式が良い
実装は、非同期I/Oなりスレッドプールなりでご自由に

また、Lua自体を並列実行したい場合は Web Worker が参考になる
新しいStateで独立したグローバル環境を用意し、引数/返値のみマーシャリングする
ホスト側のマルチスレッドを公開する >>11 の方法は間違いで、GCが破綻する

13 :
マルチスレッドを公開する方法はluaのスタックが壊れるよな

14 :
もちろんlua_newstate lua_newthreadは必須

15 :
luaもes6みたいにクラス構文追加すればいいのに
typescriptを改造してtypelua作れないだろうか

16 :
てかggればQiita辺りがすぐ引っかかる筈

それと外部からの正常な中断(中断ボタンとか)はデバッグ命令かなんかで1000命令に
1回フラグ見てフラグが立ってたらスレッドの終了シーケンスに移行みたいな乱暴な事をしてる
フラグ立ててイベントをシグナル化、Luaのスクリプトから何かをウェイトする時は
そのイベントとその資源の両方をWaitForMultipleObjectsで待ってシグナル化原因を必ず判定

17 :
typescriptというよりbabelか
型があると組み込みとかで面倒な事になりそうだし

18 :
メシ前で言葉足らずだったすまぬ

何から何まで直接APIを生で渡してそのままstate切り替えずにマルチスレッドでGoって話じゃない
lua内の変数の直接の共有はもちろんできないからグローバルでホストのユーザデータ持たせて
そこに固定で配列の排他領域持つなりstd::deque<適当>でメッセージポンプなりしなきゃダメ

で、何故WaitForMultipleObjectsかってーと、極端な話最初に実行し始めたluaのスレッドが
別スレッド用のスクリプトを起動してスレッドが動的に生成されて全部無限ループに陥ったりしたのを
止められるように〜とWin32でスレッドをabortしたりすると、実は無限ループじゃなかった時に
使ってたり待ってたりした資源次第でレアなLastErrorや例外になったりして異常なのか正常なのかわからない
luaは俺の知る限り外部からのスレッドセーフな強制中断のメソッドは持ち合わせてないし
google v8なんかも2〜3年位前?のI/Fががらりと変わった時に追加された中断メソッドで
ようやく対応ってくらいだからluaにそれを求めるのは酷かも知れない
だから自分で強制中断の手段をlua_sethookでも何でも使って準備しておくのが吉(異論は認める)

19 :
>>15
https://github.com/andremm/typedlua
LuaJITのffi宣言は型があるけどLuaへは伝搬しないんだっけか

>>18
もう少し空気を読めるようになろうね

20 :
CAsyncFile::~CAsyncFile( void )
{
m_bCancel = true;
if( ( !( m_ctxlist.empty() ) ) || ( 0 < m_uPendingCount ) )
{
m_file.AsyncCancelIo();
}
bool bEnd = false;
while( ( !bEnd ) && ( !( m_ctxlist.empty() ) ) )
{
_SAsyncFileHeapContext & ctx = m_ctxlist.front();
if( !( ctx.heap.bPending ) )
{
m_pfilelist->_SubUsingSize( ctx.heap.uHeapSize );
m_ctxlist.pop_front();
}
else
{
bEnd = true;
}
}
}

身バレしそうだからデストラクタしか晒さないけど丁度こういうの作ってたからさ
FILE_FLAG_OVERLAPPEDはマルチスレッドの正常終了シーケンス辿れるくらいじゃないと使いこなせない
その辺管理できないと要求発行したままスクリプト終了やどっかでエラーが起きた時に
更に追い討ちでアクセス違反の類のエラー起こす

21 :
「スレッドではありません。コルーチンです」とか
「オブジェクトではありません。連想配列です」とかはっきり言うべきなんよ
そうしないと「スレッドのくせにこんなこともできないのか」
「オブジェクトのくせに以下同文」ってなる

22 :
>>21
コルーチンはあくまで言語の遷移の構造を指す用語(サブルーチンと対になる用語)だから、実行の主体を示すのは「スレッド」で正しいぞ

23 :
>>22
それはつまり正しい用語を使った作者は正しくて誤読した読者が悪いってことか

でも正しい奴も悪い奴も全員にメリットのある方法ってないのかな

24 :
そもそも誤読するやついるのか?

25 :
「オブジェクト」については流石に見解が一致しないだろうから
違う用語 or 意図の説明が欲しいな

26 :
ん?Javascriptのオブジェクトも許せない人?

27 :
この流れは俺が悪いのかな?
目的はある意味投機実行ならぬ投機読み込みだよね?
でもって読み込みが終わったらコルーチン遷移だろうと完了待ちブロッキングの関数バインドだろうと
他のWin32のスレッドか完全な別ステート(コンテキスト)のLuaスクリプトでReadFileだろうと
ReadFileExのコールバックルーチンを使おうと必ず全く別のWin32スレッドが必要になる筈なんだけど
いやむしろコルーチンで全部済む方法があったら是非教えてくだちい(皮肉じゃないよ、結構必死)

ちな俺が作ってたのはシナリオインタープリタに例えると、今実行中のステートとは
完全に独立した複数のステートで選択肢の1つ先の全選択肢を入出力ダミーにして投機実行して
全部DISCARDABLEなグローバルヒープに持っとく為に複数ファイルをグローバルなユーザデータの
m_ctxlistに放り込んでFILE_FLAG_OVERLAPPEDで勝手に全部読み込みにいくって感じの代物
デストラクタでGetOverlappedResultできないのは選択肢決定が早かった時にそこで待っちゃうと
本来の読み込み要求(これも排他を待たなきゃいけない)と重なって更に待たされる可能性があるから
でもってどんなエラーが起きてもおいそれとOVERLAPPED構造体は破棄しちゃいけない
最悪メモリリークを選んで他のヒープの開放にいかなきゃいけない
だって、開放したらしたでアクセス違反で他の後始末する前に即ぶっ飛ぶのが目に見えてんだから
単純な決め打ちの非同期入出力なら何とか簡単にできるかも知れんけど、
突っ込んだ事しようとすると頭うにる

28 :
>>26
いや、連想配列とオブジェクトは何が異なるのか?という意味
おそらくオブジェクトは連想配列+αなんだろうけど
説明しろと言われたら、自分はハッキリ説明できる自信が無い

29 :
OSレベルのスレッド
言語レベルのスレッド
区別してもらえると助かります

30 :
>>27はWin32スレッド以外は”コルーチン””別ステートのLuaスクリプト”としか言ってないんだけど
これでわからないなら非同期は諦めた方がいいかも知れない
ReadFileExのイベントハンドラでやれば良さそうとか考えそうだけど、
スレッドID取得するとシステムの別スレッドだからそこからLuaの何かいじりにいくとスタックぶっ壊すよ

31 :
>>27
管理主体はシステム側がもって、
他からは読み込んだものをメモリー経由でのみアクセスするようにして、
luaからは弱参照する仕組み作って参照する形で全く問題無いような

Luaで扱えるレベルのシステムを必要以上に難しく作る意味は無い

32 :
JSなら、メインスレッド以外はサーバーにあってメモリーすらアクセスできない事も多い

スタックが壊れるとかいうならスタックにアクセスしなければいいだけなんだよな

33 :
>>32
GC中だと何も触れないからLuaスタック以外へのアクセスでも怖いよ
lua_lock / lua_unlock までカスタマイズする気なら、その限りではないが

34 :
Luaスタック以外って
C++の変数かな
まあそうだねC++は怖いね

35 :
>>31
そうだよ、結局はシステム側が管理しなきゃならないと思う、それで全部解決する

OVERLAPPEDなReadFileとGetOverlappedResultの発行をバインドするだけという
最も単純で最も無駄な方法であってもそれが必要になるという話
リモートのファイルにReadFile発行した後LANケーブル引っこ抜いて
スクリプト中断なりエラーなり発生させるとわかる

36 :
バインドという単語は公式なマニュアルでは見たことがないので意味が曖昧だが
LuaがC++を呼び出すことしか想定していない気がする
逆にC++がLuaを呼び出す必要がある場合に色々破綻する気がする

37 :
無難に済ますなら呼び出されたC++側のコード(ホストからluaのステートにバインドされた関数)で
C++側から通知か何かがあるかどうかを調べたりするのかな
どうしようもなければlua_sethookで登録したハンドラで一定行実行される度にフラグを見て
最低限の処理をして離脱した後、改めてlua側で何かをするとかしかない

38 :
メッセージキュー作ってlua側から呼んでコールバック実行すればいい

39 :
結局は原則としてlua側の方から結果が存在するかどうか調べにいかなきゃならないね

40 :
>>39
それJavaScriptで同じこと言えるの?

41 :
>>40
>>11みたいに全ステート共通のユーザデータに排他管理されたデータ積んで
イベント発生毎にスレッドプールからスレッド取ってきて独立したハンドラ専用のステートで
そのイベント専用のスクリプトの実行まですればイベントドリブンは可能
そこまで作りこむとスレッドプールの空きに合わせて投機実行してシナリオデータが間接参照してる
他の細々としたファイルの先読みもそんなに大変なことでもなくなる

どっちのレベルに合わせればいいのかわかんね

42 :
>>41
色々知識足りてないね。勉強したら?

43 :
ttp://fast-uploader.com/file/7030844243482/
ChakraCoreのソースコードを参考にC++/CLIでJSRTを使用
バインドした関数の中でクロージャを確保しても消えない
ある関数の中で作業用の変数をアロケートしてそこでGCしても変数消えない、
スコープ抜けた後のGCできっちり消える
もちろんIEと同じJavaScriptだからMathとかもIEとかと全く同じ、バインドしてるのは・・・
解析した時のテストコードだからちょっと待ってね(バインダは絶対晒さないよ)

それとも何かバインドして同時に16スレッド動く様にしようか?

44 :
myValue += 2;
var a = new TestUnman( 10 );
a.Method( 10 );
var b = new TestUnman( 1 );
b.Method( 100 );
var result = a.Value + myValue;
Msg( a.Value + "+" + myValue );
Msg( b.Value + "+" + myValue );
result;

TestUmanのValueはただの変数のget/setしかない、Msg()でメッセージボックス

google v8 と spidermonkey との速度差、循環参照でのGCの挙動の違いとかをテストしてた
使うDLL見れば怪しい事してないのはわかる筈、紛れも無くJSRT、珍しいでしょ、解析がんばった
Mathとかで比較しても挙動は間違いなくIE

45 :
Mathてビルトインのクラスね。
Window DOM以外は一通り使えるんだな。
しかもIE入ってればいいのか・・・検索しても例は少ない。
これはバインダー欲しいぞ。

46 :
だから絶対やらんて、3時間に設定したからもうすぐロダから消える

何故煽られるのか考えてみた
lua_sethookでcountフックして終了フラグ見たらthrowみたいな強制的なWin32スレッドの終了ではなく
メモリリークしないluaスクリプトの中断とかですらマイナーな手法なのかな?
俺は行と行の間で止まってる事が約束されてるんだから何かの要求があったらyieldの流れに
干渉するような変更とか平気でやってたんだけど、その辺の温度差なのかな?

47 :
煽ってるやつはどうせ何も分かってないんだからスルー上等…
なところだが奮起していろいろやってくれるのは面白いから応援しよう

48 :
>>46
外の人がブレーキかけない限り停止しないスクリプトって面倒臭くない?
なぜ自律的に停止しないのか

49 :
>>47ひでぇ; いや、俺が釣り針に食いついた自爆かな?
いつもはあちこちROMだけど、非同期周りで頭がうにってるとこに同じネタが来てたからつい・・・

>>48使うの自分だけならいいけど「無限ループ解除できないの?」の対応めんどくさい
それにasもv8もJSRTも外部からの停止メソッド当然の様に積んでるし
luaでも出来るってわかっちゃったら俺の中では当然実装しちゃう

置き土産、非同期でReadFileしてもキャッシュにあると即リザルト確定、そこそこ頭いいのかと思いきゃ
ヘッドの位置とか取得できないらしくて単純な判定しかしてない、ようするに自分でスレッド作って
そっちでブロッキングReadFileしてるのと殆ど変わらない、だから>>11みたいになる
しかもReadFileはハイブリッドカーネル内部ではなくkernel32.dllがユーザ空間にWin32スレッドを生成、
だから時間が掛かるでかい読み込みが終わる前にプロセス(デバッグ含む)毎終了すると何食わぬ顔で終了
しかしReadFile直後にLANケーブル引っこ抜いてCancelIoしたりしてもReadFileはウェイトのまま
ここでCancelIoしてもGetOverlappedResultしなきゃとかスクリプト終了で全ての待ち合わせが終わる前に
「今のエラーどこだっけ?」とか即再実行したりすると稀に起きる再現性のない原因不明のメモリ破壊
原因わかって「もうこれ全部自分で管理した方がトラブル少なそう」で今に至る、もう手の内は出さない

50 :
無限ループしたから解除したい
バグったからデバッグしたい
これは非同期でもマルチタスクでもなくデバッグの話だよね

51 :
>>50
一番簡単な例として挙げただけでcountフックで止まってる間は再開までに辻褄があってれば
変数の変更から状態遷移の誘発まで色々できるよ

52 :
>>51
「面倒臭くない?」に対して「色々できるよ」は答えになってない

53 :
たしかにボタン1発で終了は意味ないっちゃー意味ないね、忘れてくれていいよ

とりあえず、フックのハンドラに突入したら離脱するまでの間にスタックがluaスクリプトの実行で
動くことはないからAPI全部呼び出し放題だから知らなかった人は遊んでみると面白いかも

54 :
連投すまん、なんかわかった、俺じゃなくてスクリプト作成者が、なのね
俺は中身知ってるからスクリプトで苦労なんて殆どしないし
VSのデバッグで動かすから無限ループしようと暴れだそうとShift+F5だから何の事だろって思った
別に俺はめんどくさくない、スクリプト作成者が後で強制終了しまくってイラついて
俺んとこに来ようと知ったこっちゃあああああいや、ごめんなさい、来ないで下ちい

開始時に
lua_sethook( pluastate, luahookCallback, LUA_MASKCOUNT, APP_LUA_SETHOOK_MASKCOUNT );
どっかに
static void luahookCallback( lua_State * const pluastate, lua_Debug * const pluadebug )
{
 if( s_bRequestedTerminating )
 {
  luaL_error( pluastate, CStringA( "ほげえええええええええええええ" ) );
 }
}
UIのスレッドや他のスレッドが止まれー云うたらvolatileなs_bRequestedTerminatingいぢる、たったこれだけ

で、面倒な事言われたり聞かれたりしそうだから言わなかったけど
lua_call動いてもカウント継続するから値やホストやスクリプトや状況によってはスタック溢れる
goto onならぬ割り込み起動みたいな直接的な真似は流石にやめといた方がいいと思う

55 :
デバッグ用機能を普通に使ってる時点で…

56 :
だが面白いことは面白いw
これも実用例も少なくて同人マが少し案として呟いてるだけか。良く見つけるなw
Chakraをあれだけ動かす位だからlua程度なら隅々まで把握しててもおかしくないか。

57 :
なきゃないで自分で追加してたとこだけどね

読んで参考にしたのはChakraCoreだけどあれが使ってたのは最初から窓に入ってるjsrt.dll
あのexeがめっちゃ小さかったのはexeにエンジンくっつける必要がないから
JSRTをv8猿と比べた感想は使い手にとっては微妙、作り手(ChakraCoreの読み手?)にとっては
わかるまでが大変、わかるとめっちゃ使いやすいけど無駄に感じるとこが多すぎ
そりゃv8に勝てずにオプソにしてブン投げてエッジモードJSRT開発にいくわぁなぁ
思想がわかって作りやすいから個人的には好きだけど

58 :
>>46
yeild でメインループの呼び出し元に安全に戻ってきてるんだから、そこで全部必要な他スレッド処理した上で後始末もして、
必要ならそれぞれ駆動させてるluaスレッドにluaの例外返して、それをスクリプト側で自発的に処理するだけじゃん?

lua側にスレッドではまるコードを入れる必要性が全く無いのにそれを考えるのはナンセンス

59 :
>>58
それな。
間違った方法と気付かず突き進む無能な働き者臭がプンプンする。

60 :
スクリプターがみんな優秀とは限らない
UWSCもスクリプトが固まったらいちいちCtrl+Alt+DELだったらくっそめんどくさいと思うよ

61 :
コマンドラインだったらアプリが固まってもターミナルは固まらないから楽
でも見た目が文字ばっかりだからダメという面倒臭い価値観を許容できない者は絶滅した

62 :
ゲームかどうか問わずマクロもシナリオインタープリタも
行政の廃棄物処理のサイトの裏のパラーメータ決定もコマンドラインとか無理

63 :
2行目ですらちょっとマズかったかも知れない・・・あいつらの知識レベルは想像絶するからね
話聞いたらいじってたのは研究の支援受けた大学の学生とか公的もブラックかよと
JSやasだと行末にはとにかく「;」と思い込んでスコープ生成する様な組み込み構文にも付けて
長時間ハマって問い合わせてくるからね!それじゃif文全く機能しないから!→lua(ry
C++/CLI使ってたのはそゆ事
インタープリタに限らず使えそうな物はASP.NETからも使える様に一通りラッピングしてある

64 :
重箱の隅突ついてる面々もどうでもいいとこけなしてないで具体的にどうすればいいか物を出さんとな
↑のは仮想PCのロールバックと共に即消え去ったがまぁ普通に作れる物ではなかった

65 :
Boost.AsioのようなAPIにすればいいだけ

66 :
だけ で済むなら晒してやりゃいいのに
まー単純に1ファイル非同期読み出しできてもメモリいっぱい読む時間なんてたかが知れる
煩雑さのわりに効果なくてすぐ棄てそうだが

67 :
それ以前にFILE_FLAG_SEQUENTIAL_SCAN立てて開いてればいきなりReadFileでえっらい容量を
読もうとしない限り大抵先読みされる筈だから意味ないとおも

68 :
コマンドラインをけなして進化したものもあるんじゃないかな
けなすのを止めろと言われて馬鹿正直に止まった者は進化しなかった

69 :
>>67
恐らく読み書きでファイルポインタ動かないのはそゆ事
1ファイルを頭から単純に読み込みに行く事は想定してない
シナリオデータがパックされたでかいファイルでジャンプとか複数のファイルとかじゃないと効果薄いとおも

70 :
ミスった、>>66

>>68
コマンドラインをけなしてる訳じゃないんだ
むしろFreeBSD11.0(フライング)で盆栽ならぬ現実逃避しながら土方グラマしてるくらい慣れてるし否定はしない
ただ、現実問題ゲームのツールにしても少なくとも俺の知る限りGUIでないと通用しないしサポートも大変
けなしてると思われたなら謝罪する、申し訳なかった

71 :
これまでにない最も適切な回答が出た希ガス
そして当然の発想を発想するとは思わない理由もわかった希ガス

72 :
もしかして、1つのファイルを頭から非同期で良かったん…?
1つのファイルを頭から順の先読みなんてのをユーザが実装する意味ないです、
どう実装するとかインターフェース云々構造云々言うまでもなくフラグ立てれば
キャッシュを見れる位偉い人が下で勝手にやってくれます;
CreateFile直後のReadFileとかよっぽど早い読み込みとかでもなければ
ERROR_IO_PENDING返ってきません、スレ汚し失礼しました;

73 :
>>66
PCだと誤差の範囲ですむけど、VITAとかだとひっかかるのがわかるので、非同期&先行読みこみ重要だったり

74 :
ググったがMSがフラグ使えって書いてたのはワラタw勉強になった
それを学習した上で簡単な先読みならそういうのはiostreamみたいなので吸収した方が良さそう
スクリプト内にまで持ち込む利点がおもいうかばない

75 :
ホストの変更が困難でネイティブなスレッドも非同期の機能も提供してないのかね?
もしそうならコルーチンで少し読んで主処理に戻ってを繰り返すしかないんじゃないかな
スレッドか非同期が使えるならそれに従えばいいしホスト変更できるなら>>74に一票

76 :
LuaにもGUIツールキットってあるみたいだけど実用になるのかな?
非同期処理が出来ないとファイルやネットワークへアクセスするたびに
GUIの描画が止まっちゃうと思うんだけど

77 :
非同期IOをネイティブコードで実装すりゃいいだろと何度言ったら…

78 :
整理してみようか
・ネットワークアクセスというからにはWindowsで非同期読み込み? > yes:>>67
・何を非同期で処理させたい? > ファイルやディスク類:>>75
・WindowsでGUIを非同期で処理させたい? > GdiFlushを参照(元々非同期)
Vitaだとしたら・・・ちょっと検索したけどVitaのLuaってどこかわかりやすい解説サイトない?
ないならVitaでLuaしてない人は軒並みお手上げ
ホストがどんな機能をどんな形でどれだけ提供するかで大分フローは様変わりする

79 :
整理といいつつ明後日の方向に持って行こうとする奴…

80 :
なんかネイティブコードをコンパイルできない環境を正当化してるみたいで嫌な感じだ

81 :
ほんとそれ
Luaは汎用言語ではなく組込用なんだから
ホスト次第でやりたいことは何でもできるし、そういうホストを作るだけだろ

82 :
組み込み以外のLua使用は認めんといわんばかりの流れだな

83 :
デフォルトでCやC++で書いたライブラリロード出来るけど?

84 :
Lua言語のみでやるんだ!という朝鮮は無意味ということだろ

85 :
非同期君がプラットフォームをはっきりさせれば大部分は解決する気がする
又は解決できないことがはっきりする

86 :
組み込みじゃなかったらLua使うメリットなくない?
Pythonとかでいい

87 :
>>86
JITによるJava顔負けの圧倒的な実行速度。しかもJavaより起動が速い
Pythonなんて雑魚

88 :
環境晒さずにサンプル出させようって魂胆かね
ホストどころか動作環境も晒さないようなら以降非同期は無視でいっかね?

89 :
非同期処理ができないと困るという認識は正しいよ
でもLuaの自助努力とか自己責任でやる必要は全くない
JavaScriptの真似をしたりC++に丸投げしたりすればいい

90 :
>>87
よくJITで比べるひとがいるけど、ホントにLuaJITを使ってる?
本家への追従も遅くて、開発体制が不安なんだけど

91 :
動作環境て非同期で実行する処理書くだけならCでもC++でも標準で書けるじゃん
あとは通信したいならソケットでも使えばいい

92 :
>>90
低機能でも良いから速度が欲しい場合に使ってみている

93 :
Pythonのインデントも一長一短なんだよな
PHPもRubyも変数に一癖も二癖もあるし
言葉は悪いが単純な挙動の変更だけを許して余計なことさせたくない時はLuaは不自由だからうってつけ

94 :
Perlはソースの長さを減らした方が自由という考え方でLuaもそれに近い
でも言語を一個二個と数えたら言語が増えてるじゃないか一個にしろという勢力もある

95 :
Luaは別にソースは短くならないぞ。function も self も省略できないし
Perlも最近主流の書き方なら、他と比べても短くはない

96 :
C++にたとえるとtemplate <typename T> classを省略できなくてもいいんだよ
新しいclassを作らず既存のtemplateを実体化することで短くするから

97 :
JSとLuaって似てるからTypeScriptのコンパイラ弄ってLuaスクリプトにコンパイルとか出来ないだろうか

98 :
>>93
selfは省略できるでしょ:

99 :
多分それは運が良かっただけで実力じゃないんだがそれがいい

100 :
>>97
Haxe(ヘックス)はOSSで、JSに型チェックを付けたような言語で(altJS)、
JS(ES5), Flash, PHP, C++, Java, C#, Python に書き出せる。
大規模開発に強く、Windows8.1対応。IDEは、FlashDevelop

このサイトで、ブラウザでプログラミングして、実行できる
Try Haxe !
try.haxe.org/

Haxeプログラミング入門、尾野政樹、2015

Lua 向けも、ひょっとして誰かが作っているかも知れない


100〜のスレッドの続きを読む
Visual Studio 2010 Part21
Javaはもう死んだの?
いまだにVC6から離れられない奴の数→
プログラミングのお題スレ Part14
Pythonのお勉強 Part61
【普通のやつらの】 Arc Language 0 【上を行け】
設計思想/ソフトウェア工学(UML, デザパタetc)
【DI】Java Spring Frameworkを語るスレ 5.0
クライアント「神々たる仕変!後悔など遅い!」
プログラムに詳しくなりたい
--------------------
◆ヤフーBB漏洩被害者のためのFAQと自己防衛策
セイロンティー統合スレpart1
【美声】超新星娘役を応援するスレ【美貌】7
日本では2分間に120秒経ってる内にイタリアではコロナでひとり死亡しています✽✽
バードウォツチングに使っている車
【決済】ファミマで40倍、ローソンで20倍――「dポイント」をコンビニ大手で大量付与する新キャンペーン
【赤っ恥】長澤まさみ主演のコンフィデンスマンJP 真田丸が大コケした原因を考察しよう【大根演技】2
【韓国】 日本輸出に向け開発された韓国の「放射能除染」技術、使われず放置されている理由は?〜データ操作[08/11]
【経済】新型ウイルス、日本のGDP直撃も−SARSの影響上回る恐れ
関東リハってどうよ?
【ムンジェノミクス】工事現場や宅配に追いやられる韓国の青年たち…単純労務職25万人で過去最大★2
三戦的速報headline 3
CD・配信チャート速報/売り上げ議論・予想スレッド 2018/09/18〜【オリコンチャート】
【愛国】産経新聞総合【中道】
SCANDAL part120
大村愛知県知事「あいちトリカエナハーレ」を主催した在特会に法的措置へ「展示は明確にヘイトに当たる」
【MTG】マジックネットウォッチング 151【ヲチ】
【Vtuber】ひととせ探偵団スレ Part1
ベビメタって最初はPerfumeとももクロを足して割ったような感じだったけど今は別物になったや
【女性限定】復縁スレ 17日目【男性禁止】
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼