【Lua】組み込み系言語総合 その7【Squirrel】 [無断転載禁止]©2ch.net

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/
2016/10/15(土) 11:39:37.03ID:4d5CGaAG
理系にとって最強のアルゴリズムは微分だから
booleanを返す関数とか興味なさそうだよな
2016/10/20(木) 22:50:26.41ID:yOW97v2T
30分たったら別の動作をするというマクロを組みたいのですがどうしたらいいでしょうか?
2016/10/20(木) 23:17:53.03ID:qfvHlq80
プラットホームとなるハードとOSと、
その”マクロ”を実現する為に使うインタープリタのライブラリと、
ホスト及びスクリプトの変更の可否と作成/変更するのは誰なのかをはっきりさせよう
109デフォルトの名無しさん
垢版 |
2016/10/20(木) 23:35:02.03ID:CADipw6U
>>107
cron
2016/10/21(金) 08:41:00.29ID:ZLbHPX6c
iPhoneのautotouchです
例えば
::repeat::
touchDown(11, 728.44, 1325.47);
usleep(66621.17);
touchMove(11, 714.09, 1318.31);
usleep(8072.75);
goto repeat
↑を30分繰り返し実行させたあと
別の動作
という感じのマクロを組みたくて、できますか?
111デフォルトの名無しさん
垢版 |
2016/10/21(金) 09:06:48.82ID:spSptSrt
>>110
30分たったら繰り返し抜ける条件入れて”別の動作”するだけじゃん?
2016/10/21(金) 09:20:44.75ID:pdGvRJMA
現在時刻を見て30分の経過を判定したいなら os.time() が使える

ただスキルレベルから推察するに
「30分間の動作」を個別に作成して、30分(以上)間隔での自動起動を登録するのが楽な気がする
2016/10/21(金) 10:51:50.70ID:ZLbHPX6c
>>112
30分間の動作を個別に作成ということは1回1分の動作を30回行うということでしょう?回数で指定してしまうと、画像認識などを組み込んでいると、固まってしまった時などに対応出来ないので分数で指定したいなと思ったのです。os.timeというのを少し勉強してみます。
2016/10/21(金) 11:00:26.81ID:ZLbHPX6c
>>111
30分たった、というのをどう書き込めばしたらいいのでしょうか?
2016/10/21(金) 11:51:09.35ID:99qJcPaT
こう言っちゃ何だけど、ここで聞く以前のレベルだとおも
2016/10/24(月) 08:10:28.19ID:S9sd0iNh
luaの#で要素数が取れるのは配列の時だけ?
連想配列の時はとれない?
0となりました
2016/10/24(月) 09:28:56.92ID:uL8us8KR
>>116
とれない。どうしても要素数が欲しければ next() を繰り返して自分で数える。
正確には、配列と連想配列の区別はなく、オブジェクトに対する#演算子は
「nilでない要素を1,2,3..と数えてその最大値を返す」という意味。
内部的にはバイナリサーチを使ったりと最適化はされてはいる
118116
垢版 |
2016/10/24(月) 10:38:12.37ID:XgnbxHK6
>>117
取り方まで教えていただきありがとうございます
nextで数えます
2016/12/11(日) 07:53:54.30ID:RsXQTiEs
Duktape と node.js の組み合わせというのも面白そう。
120デフォルトの名無しさん
垢版 |
2016/12/18(日) 18:08:35.21ID:vfXpGXVv
luaに興味持ってこのスレきたんですが
どこから勉強すればいいですか
ほんとに経験0です
そらこのサイト漁ってみたけど全く理解できなかったんでなんかいいサイト教えていただきたいです
2016/12/19(月) 00:54:09.55ID:cmGH62+n
とりあえず、ちみはC言語でどのくらいのプログラムが組めるのかな?
2016/12/19(月) 09:49:24.63ID:7vRJ7kJt
最初なら動くものを触ったほうが興味が続くだろうから
既存のアプリなりゲームに付属のLua環境で慣れるのが良いだろうね
日英のWikipediaにLuaを採用している製品の一覧がある
2016/12/20(火) 08:01:28.19ID:kdK8nOSL
>>120
個人的には、コマンドラインでどうこうするよりも
DLLなどを扱える自分の得意言語にLUAを組み込んで
色々やってみるのがおすすめ
2016/12/20(火) 08:22:49.39ID:LqbSCARG
経験0なのがluaの経験なのか、プログラミングの経験なのか
luaを使うのが目的なのか、目的の為にluaを使おうとしてるのか
それで大分事情は変わってくる

lua簡単そう=Python並にGUIまでやろうと思えばできる と思ってるなら期待はずれ
2016/12/22(木) 11:41:07.55ID:8NoWo5zW
lua言語だけで全部やろうとするやつなんていないよ。
Cなどで作った外部関数をコールしたりDLLで拡張したりでGUI作るのが一般的かと。
2017/01/02(月) 14:24:52.29ID:Z2Rzarkn
遊んでるゲームがLua内蔵してるからそれを使って
カスタマイズしてみたいけどプログラミング経験無し
というケースだとほぼ間違いなく挫折する
2017/01/31(火) 21:25:07.85ID:l9i4M/G6
Lua 5.3.4 released.
2017/02/01(水) 08:43:33.03ID:VgN1at3T
Lua安定力半端ねえ
129デフォルトの名無しさん
垢版 |
2017/02/01(水) 09:43:49.71ID:nwC60mRJ
安定しすぎてて話すことが無いくらいだよな
2017/02/01(水) 20:24:42.65ID:L9Dup9x5
新機能とか使わなきゃ、多少どころか結構古くても殆ど何も変わらんしな
2017/02/01(水) 22:01:05.85ID:/Tbv2NCs
luaにもクラス構文くれ
2017/02/02(木) 01:54:26.06ID:+Uwa3xtw
クラスの類は肥大化に加えて速度低下を招くんじゃないかね
JavaScriptみたいなプロトタイプに逃げるとややこしくなるし
素人のコードが実行時に変なとこに読み書きしにいって
とばっちり食う人が出てきたりするかもだし

クラス使うならPHPかAngelScriptおぬぬめ
2017/02/02(木) 02:05:08.03ID:SQuns8F5
Haxe で lua ターゲットにすればいいんじゃね
134デフォルトの名無しさん
垢版 |
2017/02/02(木) 02:57:06.42ID:ExAPXdhA
Luaはプロトタイプベースのオブジェクト指向言語じゃん
2017/02/02(木) 03:00:25.24ID:jZJ6Fjye
132はlua使ったこと無いんでしょ
2017/02/02(木) 03:29:19.53ID:+Uwa3xtw
そうだったんだ、素で知らなかったスマン
プロトタイプベースみたいに実行時にコスト払うの嫌いなんよ
137デフォルトの名無しさん
垢版 |
2017/02/02(木) 05:37:01.12ID:ExAPXdhA
スクリプト言語ならクラスベースだろうが実行時にコストかかんの一緒だろ何言ってんだ
2017/02/02(木) 05:59:25.88ID:+Uwa3xtw
PHPやAngelScriptは先にコンパイルするよ
それとクラスの宣言自体は何の処理も実行しない
139デフォルトの名無しさん
垢版 |
2017/02/02(木) 06:19:52.32ID:ExAPXdhA
>>138
へぇ、何も実行せずクラスが出来上がるのか。お前の使ってるPHPとASは凄いなー(棒)
2017/02/02(木) 06:27:58.39ID:+Uwa3xtw
クラス宣言しただけのソースをPHPが暗黙的にコンパイルしたり
AngelScriptにコンパイルさせたりして、それを実行して何か処理が行われるとでも?

プロトタイプベースのスクリプトなら実体作る時に代入とかで変数の中身が変わるから、
それで処理が実行される、というなら話はわかる
インスタンス生成した後、プロトタイプの中身変えて再度インスタンス生成とかできちゃうから
プロトタイプベースの嫌いなんだ
2017/02/02(木) 09:20:30.60ID:OnfcMI/e
プログラミング言語は偏差値40の人にも理解できるものじゃなきゃダメ。
世間には大量のバカがいる。と先輩から教わった
2017/02/02(木) 14:20:50.39ID:jH7tx66P
>>141
禿同
2017/02/02(木) 14:35:52.16ID:Ty4k3X74
でも pcallから例外機構作って スコープ脱出時のフック(Haskellのbracket)作って try catch finally作って デストラクタ呼び出し機構作って クラス機構作って 俺スゲーしたいんだよ……
(案の定 黒魔術過ぎて誰にも見せられないものになった)
2017/02/02(木) 16:10:30.94ID:u5OOo/+t
俺が言ってるのはLuaにシンタックスシュガーとしてクラス構文を作るって事ね
ES6みたいに

>>133
HaxeってLuaタゲも出来たのか
2017/02/02(木) 17:22:15.83ID:t5eA0mNb
>>144
Haxe 3.3 からターゲットに入った模様
2017/02/02(木) 17:26:03.65ID:u5OOo/+t
>>145
3.3が最新だったのか
2017/02/02(木) 19:06:38.61ID:DsqPoeB2
>>146
最新は3.4でPHP7ターゲット対応らしい
2017/02/02(木) 19:13:07.99ID:u5OOo/+t
wikipediaの情報が古いだけだったか
wikipediaって芸能とかは反映一瞬だけど技術系はクソ遅いよな
それにしてもHaxe凄い
2017/02/03(金) 08:54:44.46ID:Z/TrYC07
>>143
finallyはgotoで十分やん的なスタンスみたいよ
2017/02/03(金) 10:20:50.39ID:ppyFFvug
Luaで扱いたい領域だと、例外処理なんかの複雑なことをさせたくはないな
・「ファイルを開く」「読む」「閉じる」 / 失敗で例外発生
・「ファイルを全部読んだ文字列を返す」 / 失敗ならnilを返す
後者のような、緩い頭で使えるAPIが揃っていたほうが嬉しい
2017/02/04(土) 02:14:00.58ID:f+CR9CVX
Sublime Text 3の70ドルって700円なんでしょ?
http://www.sublimetext.com/3
https://www.sublimetext.com/buy
2017/02/04(土) 03:06:13.04ID:pHtZvk4V
sublimeはキーボードマクロ系がいまいち
2017/02/04(土) 11:10:30.26ID:ZvHVse3h
sublimeの70ドルが700円になる技は知らないが
買う気もないしスレ違いだからまあいいか
2017/02/12(日) 23:42:27.03ID:9E7ES6fF
Squirrelの拡張子はnut
リスだからか orz
2017/02/15(水) 09:24:27.53ID:w0SHr4I6
windowsでファイルを開きたいんだけど、
ファイル名の文字コードはS-JIS以外受け付けないんですか?
もしそうなら海外のソフトはファイルを開くのにutf8以外受け付けないんで、
海外のソフトでファイルを開くとsjis文字はutf8に勝手に変換されて
そのファイル名を使ってファイルを開くにはutf8をsjisに
変換するしかないですね。
2017/02/15(水) 09:29:08.83ID:djpTZ+ZE
wide版のapiならUTF16だよ>Windows
157デフォルトの名無しさん
垢版 |
2017/02/15(水) 10:17:36.65ID:nJh54DV/
>>155
まず何の話をしてるのかから説明すること。
あなたの質問がどうすれたの話題に関係するのか解らないよ
2017/02/15(水) 11:06:56.17ID:uqX1U/Hr
>>155
「Luaの話」かつ「Lua側の文字コードはUTF-8」として進めるけど
・Luaはfopenにstringの生バイト列を渡すだけ
  https://github.com/lua/lua/blob/master/liolib.c#L257
・日本語版Windowsのfoepnはファイル名にSJISを要求する
ことを踏まえて対処するしかない

スクリプト層で対処するなら、ファイル名をSJIS変換した文字列を作って渡す
ホスト側 (C言語) で対処するなら、UTF-16変換して _wfopen を使うよう liolib.c を改造する

もちろん、ファイルの中身については別対応する必要がある
2017/02/15(水) 15:13:56.13ID:w0SHr4I6
変換しようとしてlua-iconvっていうのをmsys2でコンパイルしてmp
vと同じフォルダーに置いたけどクラッシュしました。
2017/02/15(水) 16:33:33.42ID:nr9SjX6f
下の層で文字コードの問題が起きてもLuaは下から上に受け流すだけ
まるで例外処理だな
2017/02/19(日) 21:18:00.13ID:5UFX9Lbh
mruby/cってmrubyと違うのか?
なんかmbedの日本語フォーラムに動かしたっぽいのが出てるわww
マイコンでmrubyはIoT的には理想なんだろうけど、キツイんじゃないか。
2017/02/20(月) 08:03:49.27ID:wCsxvy5W
141 名前:デフォルトの名無しさん[sage] 投稿日:2017/02/02(木) 09:20:30.60 ID:OnfcMI/e
プログラミング言語は偏差値40の人にも理解できるものじゃなきゃダメ。
世間には大量のバカがいる。と先輩から教わった
2017/02/27(月) 07:02:53.95ID:fO2hz1Bl
とあるゲームのluaなんですが、関数の後ろで初期化した変数が定義されてないって言われるんですが
local AAA = "AAA"
local function FUNC() print(AAA,BBB) end
local BBB = "BBB"
FUNC()
この辺りって実装に依存するんですか?言語仕様に寄るところなんですか?
2017/02/27(月) 08:52:15.69ID:+JCIcCN9
>>163
言語仕様に寄るものだね。Luaを名乗る実装であれば同じ挙動だと思うよ。

Luaはソースの後ろ(下方)で定義された変数を探してくれない。
FUNC() 定義時にまだ local BBB が無いから、グローバルな BBB を見に行く。
2017/02/27(月) 09:42:32.87ID:fO2hz1Bl
ありがとうございます。
仕様なら頭に入れておこうと思います。
2017/04/17(月) 19:00:43.83ID:8+oEZ/zD
nuttxって何て読んでる?
2017/06/02(金) 08:00:15.31ID:908dTl/b
JavaScript やると Lua の良さがつくづく分かるな
2017/06/03(土) 21:35:59.87ID:2Xsb8/qG
TypeScriptやるとLuaのクソさがつくづく分かるけどな
2017/06/03(土) 21:55:09.23ID:ByaclAQR
jsでもES6ならLuaより使いやすい
ES7・ES8なら圧倒的JS
2017/06/03(土) 22:49:59.57ID:PWCBRHZL
JSは何だかんだでメジャーなだけあって、
色んな団体がしのぎを削り合ったり一部の仕様を淘汰したりで、
良くはなってきたからなぁ
171デフォルトの名無しさん
垢版 |
2017/06/03(土) 23:40:38.35ID:ez6eSYjJ
>>168
それはLuaに限らず動的型付け言語全てに当てはまる部分だと思うけどね。
2017/06/04(日) 01:04:14.41ID:M0TdsG7q
>>171
何故Pythonとかいうゴミが流行ってるのか理解出来ない
機械学習のライブラリ充実しているから嫌でも使うしかないのが最高にクソ
2017/06/04(日) 01:19:06.80ID:7UKSA8V5
しかしES7とか8を使うための環境整備がクソなのは解消の可能性はあるんでしょうか
2017/06/04(日) 02:10:45.35ID:gw/bMgjh
>>172
個人的には同感、PHPかRubyでいいじゃんって思わなくもない
けど、あちこちで使われてる以上、技術的な理由か、政治的な理由かはともかく、
流されるしかないんだよな
2017/06/04(日) 06:04:30.60ID:kT/SS3j0
> PHPかRubyでいいじゃん

( ゚д゚)
2017/06/04(日) 10:53:16.13ID:HBrB8z41
両方とも嫌われてる言語だね
177デフォルトの名無しさん
垢版 |
2017/06/04(日) 11:03:36.59ID:qUWZGkRh
>>174
まだPHP/Rubyよりはマシだと思うけど、機械学習は静的言語がいいよね
実行時エラー多すぎて辛い
178デフォルトの名無しさん
垢版 |
2017/06/04(日) 11:25:32.80ID:QtczELPi
>>174
無いわ
2017/06/04(日) 13:45:30.72ID:H8kb5qdv
・何故Pythonか理解できない (Pythonは偶然成功しただけと理解している)
・(偶然だったら) PHPかRubyでいいじゃん
・(偶然が苦手な人には) 実行時エラーが辛い
2017/06/04(日) 13:48:25.03ID:WmyRhHa0
>>179
なんだその気が狂ったようなレスは。
2017/06/04(日) 13:51:43.74ID:Thsr1gL6
PHP: web以外だと使いづらい
Ruby: RoR以外殆どつかわれていない

だからじゃないの?
2017/06/04(日) 13:56:22.12ID:dRfGFLdk
PHPなんて何だかんだでApacheで使われてるのに、そこまで嫌われてたんだw
知らなかったわ、すまなんだ

個人的には静的型付けならC#とかC++でいいじゃんって気がするけど
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/101compileinvoke/compileinvoke.html

組み込みならAngelScript?ソースじゃなくてコンパイル済みのバイナリぶっこめるし
2017/06/04(日) 13:57:10.40ID:dRfGFLdk
>>181
確かに文字列じゃなくてバイナリとか使い出すと、別のノウハウ必要になるからねぇ
2017/06/04(日) 14:34:44.62ID:H8kb5qdv
昔はテキストとバイナリを区別しなかったが
型を区別できないと辛いから二つに分裂した
2017/06/04(日) 19:49:32.03ID:EOhD2Aoc
>>169
ES6 の import, export をサポートしたブラウザが実在しないという時点で糞だよ
2017/06/04(日) 20:12:01.89ID:cmHLZ64w
そもそも、es6のexportとimportpは仕様が遅れに遅れてるから、当然。
エンジンで実装してるのも、所詮ベータらドラフト的位置付け。
2017/06/04(日) 20:16:01.65ID:EOhD2Aoc
うん。だから糞だと言ってる。
2017/06/04(日) 20:22:07.93ID:EOhD2Aoc
んで、nodejsやらトランスパイラやらでrequirer使うハメになるわけだけど
グローバル変数領域を汚しまくりで、「何このクソ言語?」って感じ
2017/06/04(日) 20:32:33.94ID:EOhD2Aoc
あと typescript 。
あれはあれで確かにウチラ玄人プログラマからすれば悪くないんだけど
そもそもプログラム素人がターゲットのスクリプト言語なんて程度のものには
型なんて面倒なもののないお気楽さが求められてんじゃねーのかという気がしないでもない。
2017/06/04(日) 20:59:00.52ID:qVKeiDcr
やりたきゃお気楽にもできるでしょ。
Typescriptは特にそのへん、動的型付けと型ヒント・型推論の混ぜ具合が絶妙と思う。
2017/06/04(日) 22:12:48.81ID:meHczPjW
JSエンジンでES6対応で簡単にC++に組み込めるのってないですか。
V8は、まともにコンパイルできない。
192デフォルトの名無しさん
垢版 |
2017/06/04(日) 22:46:58.81ID:qUWZGkRh
>>185
webpack使えぼけ
193デフォルトの名無しさん
垢版 |
2017/06/04(日) 23:27:20.64ID:zptvcWS6
>>191
typescriptでtargetをes5指定して簡単にコンパイル出来るes5対応のエンジンを使うのはどうよ?
2017/06/05(月) 00:02:35.39ID:VDbK/n2F
ES6対応状況がどんなもんか忘れたがChakraCoreはビルドで楽ちんぽじゃろ
2017/06/05(月) 01:21:48.20ID:jutLW3Aq
>>193
ES6からクラス定義が使えるから、組み込み用途が広がるかなと思ったのです。
ES5なら、V7とかは簡単に組み込めるんだけど。

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

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

後、MoziraのSpiderMonkeyとか。

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

あとtypescriptを組み込み用途として使えば良いんじゃねえのという話なんだけど。事前にjsにコンパイルしたくないというならtypescriptコンパイラも一緒に組み込んだら?
2017/06/05(月) 07:16:52.61ID:aF+NXNxZ
>>191
electron についてる node.dll が使えそうな気がするんだけど
情報が殆どないよね
2017/06/05(月) 08:06:21.26ID:pTqNmGMN
>>191
もしかしてV8をCLIでコンパイルしようとしてない?俺もすげーハマったってーか無理
ビルドだけならオプションしっかりしとけばネイティブC++で静的ライブラリ化して使える
違ったらごめん

Win10のUWP限定で良ければ、.NETの名前空間とクラスとかの指定で
あっさりバインドできるんだけど、C++なんだよね・・・
IEの旧JSRTの理解は文献がなさすぎて難しい
2017/06/05(月) 08:36:12.51ID:0Zxw/Icp
Luaはソースコード自体を文献といってもいい
V8とかもう文献じゃない
2017/06/05(月) 08:39:17.33ID:pTqNmGMN
V8はなぁ、旧JSRTとほぼ同じ構造って言っていいんだけど、
効率求めすぎてスコープの定義がわかりづらすぎて、
ちょっとバインドして使うにしても敷居が高過ぎる
2017/06/05(月) 08:40:48.45ID:pTqNmGMN
すまん、構造って言ってもスコープの生成/離脱と変数定数類の生成の話
2017/06/05(月) 08:46:41.03ID:aF+NXNxZ
あと duktape がある程度は ES2015 対応してきてるけど
2017/06/05(月) 13:25:16.42ID:jutLW3Aq
>>198
V8のgnでsinファイル作って、それをVS2015で開いてコンパイルするところまで行くんですが、コンパイル中にエラー出まくりで。

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

gnとか、ninjaとか使わずにsinファイルを添付してほしいですね。
2017/06/05(月) 13:27:49.88ID:jutLW3Aq
>>202
duktapeのほうが良さそうですね。
ライセンス的にもV7は商用利用はライセンス購入しないとですし。
2017/06/05(月) 13:30:56.79ID:jutLW3Aq
>>200
V8は確かに効率重視というか、もはや病的。SpiderMonkyとか、Chakraとデッドヒートし過ぎて、この3つは色々と置いてきぼり感が。
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 のソースとかみて考えるべし
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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