【Lua】組み込み系言語総合 その5【Squirrel】
4 :
デフォルトの名無しさん :2011/11/12(土) 12:49:25.37
おひさー
5 :
デフォルトの名無しさん :2011/11/12(土) 13:38:56.41
AngelScript|Д`)<新スレ乙
>>6 前スレもそうだったけどAngelScriptの話題がなぜ定期的に挙がるんだww
あ、スマンLuaとSquirrelだけのスレかと思ったら組み込み系全般のスレだったか。 ネタで書き込んでたのかと思ってたw勘違いスマン
\ l´⌒\⌒\ \\ \ \ ヽ ) ) \\ \\ ( \ \∩___∩ \\ \ \ ⌒⌒| ノ ヽ \\ \ \ / ● ● ト、\ \\\ \ Y | ( _●_) ミ\ \\\ \ / 彡、_ |∪| ノ \ \\\ (____)―ヽノ' ヽ  ̄ ̄ ヽ\\ \, j l l .l } Lua! l (_ノノノノ
>>9 JIT実装ってJust in timeの略語だよね?
よく分からないんだけど必要最小限の構成にしたluaって認識でいいのかな。
余計な機能がない分早い、みたいな
>>12 本家の実装だとスクリプトをアーキテクチャに依存しないバイトコードに翻訳して実行するけど、LuaJITはネイティブマシンコードに翻訳実行するのが違い。
14 :
デフォルトの名無しさん :2011/11/20(日) 11:00:04.58
違いねえ
>>13 なるほど。つまり通常のLuaがJavaScriptだとするなら
JIT実装とはC言語みたいなもの、って認識でいいのかな。
LuaとかAngelScriptとかって何に使うの? これらを用いるとどんな利点があるの?
一見してメリットが思い付かなきゃ どのみちアンタにゃ必要ねえよ
心閉ざすなよww
アルゴリズムを外部に置けるってだけでもずいぶん便利だと思うけどね。 あとはスクリプトの処理を一時中断して実行ファイルの方へ処理を戻せるのとか。
コードを外部化するメリットもあるし、ちょっとした設定をXMLの代替のようにも活用できるし便利だよ。
// / / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ Lua!! / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
iLuaBoxなんてのがあるんだな
LuaでRPGつくる書籍立ち読みしてやってきた新参だが 今から勉強するなら LuaとSquirrelどっちやれば報われるんだ?
質問です。 luaで 011 012 013 というようなゼロパディングされた連番を生成するためにはどうしたらよいでしょうか。
string.format
すまんスレ間違えた
リリースビルドした実行ファイルから文字列変換(..とtostring)を実行すると テーブルがぶっ壊れるという現象に遭遇した
javascriptをCに組み込んで使いたいんだけど、そういうライブラリ知りませんか? 商用利用だとライセンス的に問題があるのかな
SpiderMonkeyぐらいしか知らないなぁ ただでさえ面倒なJSなのにCという縛りは辛いからお勧めはしない
Win環境ならJScriptもあるな さらに面倒だけど
そうですか… デザイナーに習得させるためのコストがゼロなのでJavascriptが良かったんだけど 別の言語探してみます
念のため聞くけど、C縛り?C++は駄目?
>>37 条件が曖昧でしたね、C縛りではありません
CまたはC++で、Visual C++ でビルドします
>>39 それなら既に
>>38 が出してくれてるけど、
・V8(修正BSDライセンス) chrome のJSエンジン
・SpiderMonkey(MPL/GPL/LGPL) Firefox のJSエンジン
・JavaScriptCore(修正BSDライセンス) SafariのJSエンジン (WebKitの一部)
とかお好きなものを使えばいいんじゃないかと
v8 が実装が独立してたライブラリになっててわりとお手頃。ためしに組んでみたことあるけど、
PC用のアプリなら全然問題なく組み込めるよ。ライセンスもBSD系なので商用でも気軽に使える。
SpiderMonkey は Mozilla (firefox) の一部として公開されてる関係で、どう切り出してきて
どう作業したらいいかぱっと見わかりづらくて大変だと思われる
SpiderMonkey を本当に「組み込み向け」に移植調整した Jsmn ってのもあって、
小さくまとまってるけどライセンスはMPLなのでちょっと使いづらい
JavascriptCore は良く知らない
luaでC++のSTLやBoostみたいなサブルーチン集みたいなのないの?
そういうこと言う人はC++を普通に使っといたほうが幸せだぞ
まあJavascript組み込むならV8が無難だろうね。 組み込むの簡単だし。
44 :
41 :2011/11/26(土) 22:58:10.48
javascriptにもprototype.jsとかよく使うものまとめてものあるから luaにもあるのかと思ったけどまだないってこと?
いろいろ自分で整備してる人はいるかもだけどメジャーなものは記憶にないな lua だと、そういうのが必要になりそうな場合は直接 C/C++ でライブラリ書いた上で 呼び出しの口だけ作る、といった形にするのが一般的なのでニーズが無い。 誰かが良いものつくれば広まる可能性はあるかもね 単にバランスの問題でね。スクリプトレベルで高度なライブラリほしければ python や ruby とか全部入りの高級なのを組み込んだほうがてっとりばやい。 lua はそういうのはいらないって分野でこそ使われてる
ファイルシステム ネットワーク プロセス スレッド ウィンドウシステム クオリティを担保するのは言語ではなくOSだ 強いて言うならばスレッドは言語の影響を受けやすい
とりあえずluaをスクリプティングに使いたいなら luarocksでposixなりstdlibなりをインストールすればいいな
Luaは抽象度が高いし、アプリドメインの一番上で活用されるから、汎用ライブラリの出番は少ない。
stdlibってのがutility関数っぽい。 見た感じwebアプリケーション向けのライブラリが沢山あるのは、他のスクリプト言語みたいに単独で使うつもりなのかな。
stdlibってやつを軽く調べてみたけど、実用はなさそう。
bytecode をうめこんだネイティブなオブジェクトファイルを生成して、それを直接アプリとリンクしたり、 共有ライブラリのなかに入れたりできるようにする、とあるなかな lua で書いたものが、JIT処理つきで Cベースのプログラムと直接リンク可能になるってことではないかと
探してもなかったので自分で便利関数書いてみた 公開してみようかと思ったらluaforgeが新規受付してないっぽい 今はどこに集積されてるんだ
codepadやここでいいんじゃね
>>59 cron.luaでダメな理由は何だったの?
>>60 こんなものあったのですね。探し方がたりなかった。
ちなみにcron.luaだとcron job同士が遅延時間で絡む状態が作れなかったので、どっちにしても自分で作ってたかもしれないです。
>>53-54 ほんとだ、単にバイトコードをCの文字列にするだけみたい。
を、リスト処理関数まとめたんだ。
// / / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ Lua!! / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
luaってGCが頻繁に起こるようなプログラムすると遅くなるものですか?
そりゃそうだ
GCが頻繁に起こる状況だったら、Luaに限らずどんな言語でも重くなるんじゃないの?
そりゃそうだ
そらそうよ
∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
何で頻繁にクマーのAA貼られるの?
∧_∧ / ̄ ̄ ̄ ̄ ( ・∀・) < Lua!! ⊂/ 9) \____ q( / > >
73 :
59 :2011/12/02(金) 21:20:48.71
なんかlist処理の部分しか興味もたれてないみたいなので list処理を少し充実させました ambもできたらいいんだけど無理っぽい
あんぶってコルーチンで綺麗に実装できたりするかな?
Lua5.1.libとLua51.libの違いってなんですか?
ambって何だ?と思ってググッたら、Schemeって言語の非決定性云々って出てきたけどこれの事?
>>75 たぶん、linuxなどのディストリビューションでは、パッケージのディレクトリだどに合わせたものが出来ている。
luaの公式配布物からmakeすると共有ライブラリを用意してなかったり結構違いがある。
ので、名前の命名規則の違いかも。
>>77 なるほど。違いがわかって納得しました。
ありがとうございます。
\ l´⌒\⌒\ \\ \ \ ヽ ) ) \\ \\ ( \ \∩___∩ \\ \ \ ⌒⌒| ノ ヽ \\ \ \ / ● ● ト、\ \\\ \ Y | ( _●_) ミ\ \\\ \ / 彡、_ |∪| ノ \ \\\ (____)―ヽノ' ヽ  ̄ ̄ ヽ\\ \, j l l .l } Lua! l (_ノノノノ
-- Cから呼ばれる関数 function a() for i=1, LOOP do b() end end -- lua内部から呼ばれる関数 function c() for i=1, LOOP do do_something() coroutine.yield() end end みたいなことをやっている時に、C側からこのスレッドを終了させたいとき どうしればいいんだろう? lua_resume でCからLuaへ適当な値 CANCEL を返して function a() for i=1, LOOP do if b() == CANCEL then return CANCEL end end end fucntion c() for i=1, LOOP do do_something() if coroutine.yield() == CANCEL then return CANCEL end end end
再投稿スマソ -- Cから呼ばれる関数 function a() for i=1, LOOP do b() end end -- lua内部から呼ばれる関数 function c() for i=1, LOOP do do_something() coroutine.yield() end end みたいなことをやっている時に、C側からこのスレッドを終了させたいとき どうしればいいんだろう? lua_resume でCからLuaへ適当な値 CANCEL を返して function a() for i=1, LOOP do if b() == CANCEL then return CANCEL end end end fucntion c() for i=1, LOOP do do_something() if coroutine.yield() == CANCEL then return CANCEL end end end ってやるしかないのかな?
スレッドの残りの処理をやる必要は全く無いので、Cから強制終了できるならそうしたい。
Cから lua_resume で呼び出してるのなら、単にその呼び出しにつかってる lua_State を2度と呼び出さずに破棄するだけかと
lua_sethookでフック関数を登録しその関数の中でエラーを呼んであげればいいよ lua.cを読むといい
Lua内でFinalizeが必要な処理(メモリの開放とか、ファイルのクローズとか)を 使われてない保証はあるの?
なぜ使う人が責任を持たない? 使わせない責任はないと思う。
使わせない責任…
(´\r-、 ┼ + /`/`) + ┼ (\. \! * // ,/) * + * (ヽ、 \ + * / /) + ⊂ニ ) * + ( ニ⊃ * + ⊂、 ( ∩___∩ ノ ⊃ + * (/(/ ヽ | ノ ヽ / 、)ヽ) ┼ + (/ ∨ ● ●レ /⌒) 、)ヽ) * (/' | ( _●_) ミ' /、)、)´ + + (/'ヽ 彡、 |∪| ノ / AngelScript!! + / __ヽノ / * + ┼ (___) / + / / (_ ⌒丶.. | /ヽ }. し )) ソ トントン
逆に php を組み込みスクリプトとしてコールできるような cライブラリはそんざいするの?
phpならnginxつかっとけ。捗るぞ
ごめん…。誤爆しました……。 もし、PHPをバインディングしたいのなら、fasrCGIとか参考になるかもしれぬわ。
原理的にはできるだろうけど、組み込みが簡単にできるように調整されてるって話はきかないね > php 一応 php_embed.h / php_embed.c という解説皆無の組み込み用インターフェースなファイルはあるらしいよw
lua server pages使っとけよ
96 :
デフォルトの名無しさん :2011/12/17(土) 10:53:41.27
ひゃっほー!
Language Changes Only Lua functions have environments. C functions no longer have environments. To manipulate the "environment" of a userdata (which is now called user value), use the new functions lua_getuservalue and lua_setuservalue. Lua identifiers cannot use locale-dependent letters. Doing a step or a full collection in the garbage collector does not restart the collector if it has been stopped. Weak tables with weak keys now perform like ephemeron tables. The tail return debug event was removed. Tail calls generate a special new event, tail call instead of return. Equality between function values has changed. Modules are not expected to set global variables anymore.
Library Changes Function module is deprecated. It's easy to just do it in Lua anyway. Functions setfenv and getfenv were removed, because of the changes in environments. Function math.log10 is deprecated. Use math.log with 10 as its second argument, instead. Function loadstring is deprecated. Use load instead; it now accepts string arguments. Function table.maxn is deprecated. Write it in Lua if you really need it. Function os.execute now returns true when command terminates successfully and nil plus error information otherwise. Function unpack was moved into the table library and therefore must be called as table.unpack. Character class %z in patterns is deprecated, as now patterns may contain '\0' as a regular character. The table package.loaders was renamed package.searchers. Lua does not have bytecode verification anymore. So, all functions that load code (load and loadfile) are potentially insecure when loading untrusted binary data. (Actually, those functions were already insecure because of flaws in the verification algorithm.) When in doubt, use the mode argument of those functions to restrict them to loading textual chunks. The standard paths in the official distribution may change between versions.
API Changes Pseudoindex LUA_GLOBALSINDEX was removed. Pseudoindex LUA_ENVIRONINDEX and functions lua_getfenv/lua_setfenv were removed. Function luaL_register is deprecated. Use luaL_setfuncs so that your module does not create globals. The osize argument to the allocation function may not be zero when creating a new block. Finalizers (__gc metamethods) for userdata are called in the reverse order that they were marked for finalization. Moreover, if the metatable does not have a __gc field when set, the finalizer will not be called, even if it is set later. luaL_typerror was removed. Write your own version if you need it. Function lua_cpcall is deprecated. You can simply push the function with lua_pushcfunction and call it with lua_pcall. Functions lua_equal and lua_lessthan are deprecated. Use the new lua_compare with appropriate options instead. Function lua_objlen was renamed lua_rawlen. Function lua_load has an extra parameter, mode. Pass NULL to simulate the old behavior. Function lua_resume has an extra parameter, from. Pass NULL or the thread doing the call.
corona製なら全部lua製
あのチョコが入っている食べ物なんだっけ
トッポ
パイの実を差し置いてトッポとかないわ
おっぱい今年も揉めなかった・・・
>>107 そうか
もしかしてLua使ってないか?
>>108 AngelScript使ったらおっぱい揉めますか?
というかAngelScriptのおっぱい揉みたい。
おっぱい揉めそうな最強の言語決めようぜ!
COBOLだな。間違いない
コボルは巨乳の40代お局様のおっぱいが揉めそうな言語だな。 安定志向の人向け。
そのオッパイはしぼんでいないか? しぼんでいないか?
Adaを忘れちゃいないか?
116 :
デフォルトの名無しさん :2011/12/26(月) 17:27:01.41
え?
LuaのKahluaみたいな JVM上で動作するSquirrel実装ってあるかな?
きいたことない
そっかー。ありがとう
luaやってみようとおもったけどプログラミング以前に
基本的なことが出来ません
http://luabinaries.sourceforge.net/download.html ここから「lua-5.2_Win64_bin.zip」落として解凍したら
「lua52」というアプリケーション出来たので起動して同じフォルダーに
-- hello.lua
print("Hello, World!")
というluaスクリプトファイルを作って保存したんだけど
コマンドラインから
>lua52 hello.lua や >lua hello.lua
ってやっても
stdin:1: '=' expected near 'hello'
とかでて実行できないのは何故でしょう。疲れた。。
ちなみにコマンドラインから直接 print("Hellow,World") と打てば実行できます。
>>120 dofile("hello.lua")
おお いけました。 ありがとうございます
もうすぐ年明けだからお前さん達のこの1年にあったことが聞きたい
LuaってUTF-16に対応してないの?
GMってネイティブスレッド扱えるのね。
ワオ、こんなゲーム屋しかいなさそうなクソスレでambの名が出るとは
スクリプトをデザイナーに任せることを考えると、 非プログラマでもわりと知っていると思われる Javascript か PHP、Java をそのまま組み込み言語としてつかいたいところだけど、 結構面倒そうだね。
いいえ。
JavaScript→組み込むならSpiderMonkeyやV8が鉄板じゃないかな Java→むしろJava+JNIで書けばいいじゃない。OpenJDKがあるから組み込むのが不可能だとは言わないが PHP→不可能じゃないだろうけど、ちょっとそれは考えてもいなかった
V8は組み込むの簡単だしな。
ゲームエンジンでJavascript使えるやつがあるな
CriScriptは残念だった
PHPは楽に汚く書けるスクリプト言語だから、確かに組み込みにいいかもしれないね。
お正月にはlua書いてー
はーらを壊して寝てましょうー
>>131 Unityとか?
あれのはJavascript風UnityScriptとか言われてるけど。
138 :
デフォルトの名無しさん :2012/01/05(木) 23:16:03.12
tolua++をVC++(2008)で利用している人に質問。 MFCを用いるWin32コンソールアプリで、いくつかの参考書などを元にグルーコードの作成とビルドは通るようになったのだけども、 プリコンパイル済みヘッダの使用オプション(/Yu)だけ、いろいろ試したのだけども外さないと通らない状態です。 (使用するとfatal error C1853となる) とくに参考書でも触れられてなく、エラーの内容に沿って修正を試みているのだけども、どうにもうまくいかなくて、困ってます。 今後予定してる本番環境での組み込み時に、プリコンパイル済みヘッダが使えないのはやや困ることもあって、解決したい箇所です。 tolua++側のソースをいじる必要があるようにも見えるのだけど、出来ればそれは避けたいです(後のフォローが大変になる)。 同様の環境で作業されている方、どういう風に処理解決していますか?
英語わからんしなあ
>>138 tolua使ってないので適当だけど
生成されたコードを直接ビルドするのではなく
//gen_wrap.cpp
#include "stdafx.h"
#include "gen.cpp"
とかする方法もあるけど
プロジェクト内にgen.cppがないのも不自然なので
/FIオプションでstdafx.hをしてあげるのがいいんじゃないかな
// / / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ Lua!! / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
あけましておめでtolua
AngelScriptの2.22.1では様々な高速化も行われているみたいだけど どうなん?体感速度向上した?
144 :
138 :2012/01/06(金) 23:37:08.01
>>140 アドバイスありがとうございます。
/FIオプション、試してみましたがうまくいきませんでした。自動生成されるグルーコードとケンカする感じ。
Luaの組み込みはtolua++しか試してないのですが、この辺解決してる他の手段ってありますでしょうか?
面倒がないならそっちに移っちゃうのもアリかと……
>>143 まだちょっと触った程度だけど、ものすごいスピードアップしたって感じはないかも。
146 :
140 :2012/01/08(日) 00:40:37.91
>>144 あぁ、なんで困ってんのか今理解できた
c++な自プロジェクトに直接放り込んでいる
tolua++関連のcソースは
別プロジェクトでビルドし静的なり動的なりのライブラリを作成したら
それにリンクすればいいと思うよ
組み込みではLuaが一番マシだな。 だてに普及してない。
ノウハウもたまってる品
普及してない。
え?
∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
AngelScriptはアドオンでメタデータ使えるようになるみたいだけど みんなどういうふうに使っている?
AngelScrip自体使ってないよ
スクリプトなんてどっぷり使うもんじゃねえんだよ わかるか小僧?
>>152 CScriptBuilderは使ってるけど、メタデータは使ってないな…
(´\r-、 ┼ + /`/`) + ┼ (\. \! * // ,/) * + * (ヽ、 \ + * / /) + ⊂ニ ) * + ( ニ⊃ * + ⊂、 ( ∩___∩ ノ ⊃ + * (/(/ ヽ | ノ ヽ / 、)ヽ) ┼ + (/ ∨ ● ●レ /⌒) 、)ヽ) * (/' | ( _●_) ミ' /、)、)´ + + (/'ヽ 彡、 |∪| ノ / AngelScript!! + / __ヽノ / * + ┼ (___) / + / / (_ ⌒丶.. | /ヽ }. し )) ソ トントン
∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
ドラゴンの囚人が捕まったじゃねぇか...
TIOBE見る限りLuaって去年一瞬盛り上がっただけで また元に戻ってしまったみたいだな
今は盛り上げるな時期が悪い
>>160 盛り上げるべき時期ってどんなやろう……
まさかmoai sdkを知らぬ訳ではあるまい
>>165 moai少し使い方がむずくね?あれ流行らんと思う
えっ
moaiって名前がなー。 ガラパゴス島だぞ。
moaiって名前がなー。 ガラパゴス島だぞ。 せめてダークドラゴンとかいかにも凄そうな名前にしておけば 本物のハッカーが使う闇の道具になったと思う
>>167 実際難しくないか。特に日本語処理。
Luaの文字列関数郡自体がUTF8やSJISをサポートしていないから
日本語普通に使うだけでも難しい。
文字を切り抜いたり、文字数数えたり、位置を取得したりもそのままやると出来ない。
そこで外部のCライブラリ組み込めたらいいんだけどmoaiもcoronaもそれが
出来ないから日本語でゲーム作ろうとしたりすると高確率で躓く・・・ような気がする。。
moai のほうはオープンソースだから適当にマルチバイト処理関数足せばいいんじゃ
>>171 確かにそうなんだけどそれをしないと使えないのはやはり敷居高くない?
標準関数がUTF対応していないlua側の問題でもあるんだけれど、
moaiやcoronaがマルチバイト言語の国で流行りそうにないなー、
と思ったのはそういうところ。
まぁ将来的なバージョンアップでどう変わるかは分からないし、
俺からも開発チームにUTF対応の文字列処理関数の標準実装を
提案したんでなんか進捗あったら報告するよ
Luaはもっと言語仕様絞ってもいいくらい。 ライブラリを充実させて欲しい。
AngelScript|Д`)<デフォでUTF8に対応してるよ AngelScript|Д`)<SJISは有志のやつ使わないとダメだけど
AngelScriptは擬人化すると8歳〜11歳位の金髪美小女。 北欧の小学校に通う祖母と二人暮らしのイメージ。
Luaは擬人化するとスウェーデンあたりの14歳くらいの祖父と二人暮らしの青髪美少年。 つまりAngelScriptと相性抜群なのは言うまでもない。
擬人化とか精神がオタクすぎるからやめてw 新板でも立ててやってくれw
>>177 すまんwAngelScriptの響きがエロすぎてついwww
これっきりだから許してくれw
\ l´⌒\⌒\ \\ \ \ ヽ ) ) \\ \\ ( \ \∩___∩ \\ \ \ ⌒⌒| ノ ヽ \\ \ \ / ● ● ト、\ \\\ \ Y | ( _●_) ミ\ \\\ \ / 彡、_ |∪| ノ \ \\\ (____)―ヽノ' ヽ  ̄ ̄ ヽ\\ \, j l l .l } Lua! l (_ノノノノ
(´\r-、 ┼ + /`/`) + ┼ (\. \! * // ,/) * + * (ヽ、 \ + * / /) + ⊂ニ ) * + ( ニ⊃ * + ⊂、 ( ∩___∩ ノ ⊃ + * (/(/ ヽ | ノ ヽ / 、)ヽ) ┼ + (/ ∨ ● ●レ /⌒) 、)ヽ) * (/' | ( _●_) ミ' /、)、)´ + + (/'ヽ 彡、 |∪| ノ / AngelScript!! + / __ヽノ / * + ┼ (___) / + / / (_ ⌒丶.. | /ヽ }. し )) ソ トントン
>>181 おお、これかなり便利そうだね。
後で使ってみるよサンクス。
183 :
デフォルトの名無しさん :2012/01/27(金) 19:30:33.54
Programming in Lua 4800円たけーよ だれか公式のver5.0訳してくれよただで
2400円ならいいよ
1ページ10円は技術書の標準的な価格 別に高くないよ
英語勉強しろ
187 :
デフォルトの名無しさん :2012/01/30(月) 17:31:12.94
>>187 今のところ、namespaceで囲っている部分から、RegisterGlobalFunctionで登録したグローバル関数や、
グローバル名前空間(って言うのか?)の関数を呼び出そうとすると文法エラーになる模様。
(´\r-、 ┼ + /`/`) + ┼ (\. \! * // ,/) * + * (ヽ、 \ + * / /) + ⊂ニ ) * + ( ニ⊃ * + ⊂、 ( ∩___∩ ノ ⊃ + * (/(/ ヽ | ノ ヽ / 、)ヽ) ┼ + (/ ∨ ● ●レ /⌒) 、)ヽ) * (/' | ( _●_) ミ' /、)、)´ + + (/'ヽ 彡、 |∪| ノ / AngelScript!! + / __ヽノ / * + ┼ (___) / + / / (_ ⌒丶.. | /ヽ }. し )) ソ トントン
/ヽ /ヽ ':' ゙''" `':, ミ ・ω・ ;, :; . っ ,つLua `:; ,;' `( /'"`∪
192 :
デフォルトの名無しさん :2012/02/01(水) 12:23:35.36
いまのver5.2でも C>lua.exe -lilua ってできる? lua52〜にしてもできんかった
おー、ありがたいね。 これで5.2にバージョンアップしよう。
>>196 のって非公式ソース?
例えばこれ入れるとstring.lenとかで日本語混在でも正しい文字数計測できたりするってこと?
非公式って意味不明だけど 公式のソース lua5.2.0.tar.gz にシフトJIS漢字を扱うための修正を加えたものを VisutalStudio2010ExpressのVC10で実行形式にしたもの。 5.1.4の方はまだ ちょっとしたバグがあるもよう。
ちなみに string.lenおよびstring.subは修正なし。 string.mblenは漢字混在で正しい文字列を数え、 string.mbsubでそれを使った操作が可能。 string.match/string.sub/string.formatは漢字が混ざっていても動作する。
MITってソース公開義務がないんだったなそういえば
なにいってんだかわかんない。 実行ファイルもソースも全部同梱してるから未公開部分なんてないw
単純に、MITライセンスのコードに、手を加えた場合の話だとおもう。
>>198-199 いや、LUAが公式で配布しているソースなのかどうかを聞きたかっただけだ。
意味不明と言いながらちゃんと俺の言いたかった事を理解してんじゃないかw
分かってると思うけれど要は公式のソースを改変した非公式配布のものかどうかって事が言いたかったというわけだw
まぁでもサンクス。こういう活動は面白いね
自分の手許でレポジトリあげて管理すれば別に困ることはないような
もしcontinueの提案をすんなり採用していたら gotoを思いつく暇もなかったかもしれないな
ウェブだけだろ オープンソース関係でUnicode対応してるのなんて見たこと無いが? _T()なんて毎回つけろとか仕様がアホすぎるだろw
\0すら文字列のLuaでは文字コードなんてどうでもいいような。 つまり柔軟なのでどう使うかは自由
キセルのように両端をUnicodeにするだけでいいんだよな
配列が1からなのが気持ち悪くて
ポインタ病ですな。社会通念では1が常識です。
そして、Luaはプログラマのためではなくエンドユーザーのための道具であるわけですから1からでよいのです。
ここの人たちはluaで何作ってるんだろう
何か壊れたらそれを作ればいいし何も壊れないなら適当にゲームとか作ればいいだろ
まあ文字コードの変換無しでいけるのならちょっとだけ速くなるって利点があるか。
1は合理的じゃないからいや
どうせ配列は連想配列なんだし、添え字に0入れれば使えるじゃん。 負の数すら入る。 スピードは知らん。
よく考えて選ぶより何も考えず両方試す方が効率的なこともある
0が合理的なんて理系に向いてないんじゃないの?
そうですね!
ffmpeg のストリーム指定オプションとか0ベースだから分かり難い。 プログラマ脳を信じちゃだめ。
自然数は0からだろうJK
例えば、ドラクエ買うために前の晩から店に並んでたら、 開店した瞬間に、「では0番目のお客さまどうぞ」っていわれたら 納得するか?
だが0から始まる言語なら誰も並ばないデスクリムゾンのような糞ゲーの並びも 誰もいなかったと認識できるのだ
ボラティリティは0から ポジションは1から
イギリス式の階数の数え方も0からって考えていいのかな? 1Fがグランドフロア、その上が1階、2階、って増えていくやつ。
例えば、福男の神事で、一生懸命走って最初に神主さんの胸に飛び込んだのに 「0等賞です!おめでとう!」っていわれたくないだろ?
>>229 英国でもその他の地域でも、地下は1階からだよね。
そう考えると英国式のほうが良いように思えてきた。
英国のは「0階」ではないよ。あれはground floor、つまり、Lua でいうところの nil 。
ボタンは0になってるところ多いけどな でも地下が-1だから配列とは関係無いな
速いし軽いからじゃね
組み込み系の場合は言語仕様の優劣以前に 改造のしやすさとかホストアプリとの親和性とか そいうった別の側面が大きいからねえ。
iPhoneとLuaから連想されるのは、C++の不人気
Luaの場合、他でも使われてるから使う、ってのも大きいんじゃないの? 実績があるって事だし。
iPhoneでもC++使ってるとこ多そうだけど、不人気なの?
関数の引数に数値型を参照渡しするにはどう書けばいいですか?
なぜ参照私か
言語名も書かずに
f(a, b, c) を参照渡しじゃなくて a, b, c = f(a, b, c) とやればいいでそ
Squirrelです。 Cでいう所の void f(int& a){ } ということをやりたいだけです。
∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
>>244 そういう仕様は無いので出来ません。
辞書を渡して値をいれてもらうとかで代替するしか無いかと
>>244 参照を渡すのは変数をpublicにするようなものなので、いまひとつ需要がない。
setterやgetterを作って渡すか配列を作って渡す。
Squirrelって人気無いの?
俺の周辺では大人気だよ
俺の周辺ではまったく人気ないな
俺の周辺ではたわし
>>250 大人気はどうでもいいんで人気を教えてください
イカ臭いよお前
お前の臭いじゃないの?
StorokeItもStrokesPlusもLua
ぅあ臭い
∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
>>259 出来るよ
基本的にはそうでしょうね
struct X { T data[N]; };
で X x; としたときに
インスタンスの&x.data[0]が分からなどうにもなりませんからね。
でも、x.data, T, Nが分かればどうにでもなるでしょ?
これ、たぶん外部からのスクリプトの import/export ついてないよね? つけた時点で規約違反でアウトになると思うんだが……
まだ使ってないけど 他言語との連携がLuaの肝なのに スタンドアロンにして大丈夫なのか
大丈夫だ
きたああああああ これとMoai SDKで最強やんけ
外部からデバッグできる口を作る一般的な方法が確立してるなら問題ないんじゃね?
エディタとデバッガ分離して別々にインストールできるようにして欲しいとこ。 Eclipseもっさりんこすぎ。 フリーズしてラグいw
>>260 259です。
class_::property()を使用して出来るという事でしょうか?
わたしの理解が足りてないのですが、
Nを知る手段が分かりません・・・
また、Lua側で x.data[1] = 0 といった事が上手くできませんでした。
その他の手段としてメタメソッドの変更で何とか出来そうな気もするのですが、
こんどはC++側での x.data を知る手段が分からず・・・
AngelScriptJITキター でもVS2010持ってねぇーorz
Express でいいじゃない コマンドライン版でよければ Windows SDK 入れるだけで入るよ>VC++
>>271 とりあえずExpressインストールして試してくる。
274 :
デフォルトの名無しさん :2012/02/18(土) 00:22:16.48
5.2 release age
>>272 見てLuaBinariesに行ったら5.1.5はまだ無かったけど
[08/Jan/2012] Lua 5.2.0 - Release 2があった
>>269 x.dataに{Type=..., Size=... ,__index=..., __newindex=...}
なメタテーブルをセットする
mt.Type, mt.Sizeがキモいなら
struct TypeInfo { int type; size_t size; };
std::map<void*, TypeInfo>
とかで管理してもいい
mtをセットするタイミングは
local _X = X
function X(...)
x=_X()
-- ここで
return x
end
C側で管理している場合は__gcも設定してmap.eraseするのを忘れずに
AngelScriptJITはMITライセンスなのか
とりあえずAngelScriptJITを試してきた。 簡単なFibonacci数の計算をスクリプトでやらせると、通常の時の半分ぐらいの時間で済んでた。
LuaってやっぱPerl/Ruby/Pythonとかと比べて 簡単にできることが激少ないんですかね? 例えば複数のファイルの名前にnekoって文字を付け足すとか ファイルに行番号を付与するとかのちょっとしたこと
用途が異なるんだから当たり前
>>279 そんなことないと思うよ
標準ライブラリのボリューム、end }, exp stなどの違いで
Golf向きではなかったり苦手な処理もあるけど
出来ない表現ってのはないと思う
とりあえず、仕様がいまいちわからないので
簡単に出来るPerl/Ruby/Pythonという言語で
その2つの例題の解答例をさっくり書いてもらえないかな?
perl や ruby は、組み込みの正規表現記法や文字列操作用の特殊変数を持ってるので、 単純な文字列操作系の記述はシンプルになるね。そういうのを lua に求めるのは筋違い 文字列処理自体は普通に扱えるから、トリッキーな記述はできないってだけで、 Cとかで組むよりははるかに簡単やね。外部ライブラリでさわれないことはもちろんできないけど
グローバルオブジェクトみたいなオブジェクトも持って「:」で呼び出しつつ スタティックなメンバを「.」で呼び出すみたいなのってどうやって作ればいいんだろ
スタティックなメソッドはただの関数 スタティックなフィールドはただのグローバル変数でいい
>>283 metatableのcallやindexを指定する方法もあるけど
fooモジュールなら
f = foo.new()
f:a()
foo.func(f,...)
てな呼び出しが一般的かな
luarocksやluaforgeで公開されている
メジャーどころのライブラリを真似るのが楽でいいと思う
286 :
279 :2012/02/24(金) 19:55:53.73
>>281 すみません。どれもやったことありません。
2つの例はPerl等でやれば簡単と、
どこかの書き込みを見たことがあっただけでした
Rubyなら files = Dir.glob("*") 一発で済むところを f = io.popen("DIR/B", "r") こんな風にゴニョゴニョ さいとうたかをのマンガ「サバイバル」的な何か。 だがそれが良いw
io.popen("perl")でいい rubyでこれをやる気にはならないが、luaならできる
luaはもともとそういうコンセプトだからね 必要機能を省いて超高速動作する でも別に簡単処理が出来ないわけじゃない 自分で関数を作ってrequireすればいいだけ
popenを双方向にしてみた #!/usr/bin/perl use POSIX; pipe($i, $o); POSIX::dup2(fileno($i), 0); POSIX::dup2(fileno($o), 1); close $i; close $o; exec(@ARGV); #!/usr/local/bin/lua local f = io.popen("perl") io.write([[print "$_\n" for (glob('*'));]], "\n__END__\n") io.flush() for l in f:lines() do io.stderr:write(l, "\n") end f:close()
\ l´⌒\⌒\ \\ \ \ ヽ ) ) \\ \\ ( \ \∩___∩ \\ \ \ ⌒⌒| ノ ヽ \\ \ \ / ● ● ト、\ \\\ \ Y | ( _●_) ミ\ \\\ \ / 彡、_ |∪| ノ \ \\\ (____)―ヽノ' ヽ  ̄ ̄ ヽ\\ \, j l l .l } Lua! l (_ノノノノ
>>287 それはwinだからじゃね?
Linuxなら
luarocks install luaposixで入れて
local px = require "posix"
files = px.glob("*")
するだけなので大して変わらないよ
>自分で関数を作ってrequireすればいいだけ まぁそれが塵も積もれば面倒臭いわけだけどな
というか Luaのユーザー層って組み込み用だから 単独でLua使おうとは思ってないでしょw スタンドアローンならPythonやRuby使ってるだろうし、 アプリ側はC/C++でそ。
軽量Rubyってその後どうなってるんだっけ
今年の四月に公開の予定。 さて どうなんだろ。 longjump投げるようならパス。 ホスト側でC++使えないとまずいからね。
一応、公式の紹介文ではLua使いは ・開発者がC/C++等と合わせて使う ・1 SHOT KILL?のLua単体プログラミングとして使う ・ゲーム等でエンドユーザーが使う の3種類にわかれると書いてたな。 1 Shot killがよくわからんけど。
AngelScriptJITだと!? 俺2005pro止め…面倒
> 一応、公式の紹介文ではLua使いは > > ・開発者がC/C++等と合わせて使う > ・1 SHOT KILL?のLua単体プログラミングとして使う > ・ゲーム等でエンドユーザーが使う > > の3種類にわかれると書いてたな。 ソースよろ
>2 ?
304 :
297 :2012/02/26(日) 17:24:38.09
すまんうろ覚えだったw
そういうの白ける
SJis対応って具体的に何が対応してるんですか? 問題なんか起こった記憶がないんだけど
>>307 「表」とか文字列で使うとわかると思うよ
SHIFTJIS対応してないと、正規表現式に漢字を入れても正しく動作しない。 それどころか、Luaの場合、コメント中でも誤動作する可能性があるのねw
>>309 コメントでも誤動作するのか・・・知らなかった。
SJISって重要なんだな
というか WindowsのコンソールもUbuntuのように UTF-8で動作すれば問題ないのにさw
そんなに重要なら問題なら本家でパッチしてもらったほうがいいと思うのですが
本家にシフトJISに対応してもらうのん? 日本語Windows使ってないとテストもできないでそ。
SJIS そのものが欠陥なのでスルーが正解。もう UTF-8 でいいっしょ
たしかにUTFがあるのにSJISを選ぶ理由ってなに?
それはWindowsのコンソールがSHIFTJISだからですよん
sjisはともかく、cp932が生まれたのはunicodeの責任もあるので、スルーは無責任だよね
WindowsはSjisベースだし、移行しようとしてるのはUnicodeという独自規格だし UTF8の出番はないですね
またwindowsしか知らない人のsjisのしょーもない話か
ゲーム機系は、APIは全部UTF-8 になったのに、接続ツールのコンソール表示が UTF-8 対応してなくてもにょる
んと、UTF8のシェルを作って、その上でUTF8のLuaを動かしたとしてもね、 周囲のコマンドがSHIFTJISだからね、 io.popen使った時に激しく文字コード変換することになるわけさ。 変換の時にダメ文字の挙動どうするかとかめんどくさいことも 考えなくちゃいけいないw それともCygWinみたいにごっそり環境作る? w けっきょくSJISで運用するのがラクなのさw
ついでに、Luaって数値のデータ型に整数が無くて 演算が倍制度浮動小数点だからね、 ウニコード文字の比較とか厄介な問題がある。 とりあえず、UTF16やUCSはUTF8に変換すれば ストリングをコンテナとして 保持することは問題ないのさぁ
関数に渡した可変引数の値をまるごと変数に代入してから 別の関数に可変引数の「...」を参照した時と同じ形で渡してやるにはどうしたらいいんだろう? --関数定義 function hoge( x, y, ... ) --可変引数を何らかの保存領域に突っ込みたい関数 { . --[[ 完全に文法間違ってるけど外にスコープ持ってる変数tempに可変引数の値全部渡すイメージ ]]-- . temp = ... } function foo( a, b, ... ) --hogeが保存した可変引数を参照して利用する関数 { print(...) } --メイン function hoge( 50, 100, "L","U","A" ) --ここで複数の文字列等の値が保存用の変数に渡される function foo( 200, 400, temp ) --保存用に使ったものを可変長引数として置く --[[ 欲しい出力 L U A ]]-- 可変長returnみたいなのが使えればいいのかもしれないがどうにもその実装が思い当たらない 利用する可変長引数の引数の上限定めて可変長引数を配列として代入して その配列の要素頭から10〜20位を「return arg[1],arg[2],〜…」と複数の値返すようベタ書きして 規定の上限超過するようならエラー返し上限に満たないなら余った要素のnilごと投げて返す関数で対応とか考えもしたけど なにこの書き方馬鹿なの馬鹿なのと笑われるようなことをしている気がしてならないんだ…
> function f(...) >> return ... >> end > print(f(1, 2, 3, 4)) 1 2 3 4
> function f(...) >> d = table.pack(...) >> d[1] = d[1] + 1 >> return table.unpack(d) >> end > print(f(1, 2, 3, 4)) 2 2 3 4 >
unpackでテーブルから可変引数に変換できるのか! リファレンスを可変で検索しても見当がつかなかったんだ 良かった…これで見るからにどっか間違ってる書き方をしないで済んだよありがとう
あれ、LUAってもしかしてswitch無いの・・・?
continueも忘れないでね
switch風やcontinue風に書くできるけど出勤時間なのだ。
組込みスクリプトにschemeを選ばない奴は、CSの知識が欠けた2流
schemeとか継続あるせいで遅いし・・・
新しいハードなりアーキテクチャが出た際でも、schemeだとすぐに実装が出てきそう
何言ってんの、こいつ
表記が簡単=難読化だからな 明示的な書き方しない言語はどうも好きになれない
Cの悪口はそこまでだ
>>334 組込みスクリプトって、AIみたくロジックに集中するためのものだろ
c++やjavaのように長ったらしいクラス名や変数名を付ける必要ない
今日日のPHP,ruby,javascriptなどの動的言語による開発には同意
>>327 luaでswitch文っぽく書いてみる
function switch(st)
local i
for i = 1, #st, 2 do
if st[i] then return (st[i + 1])() end
end
end
function f(v)
switch {
(v == 1),
function () print(1) end,
(v == 2),
function () print(2) end,
(v == 3),
function () print(3) end,
(v == 4),
function () print(4) end,
true,
function () print "default" end,
}
end
for i = 0, 5, 1 do f(i) end
ついでに continue 文の動作は ループ中に無名関数を置いてそこからのreturnだねん for i = 0, 10, 1 do (function (v) if ((v % 2) ~= 0) then return end print(v) end)(i) end
配列に無名関数入れてテーブル化できないのか
配列に無名関数入れたらテーブルでしょ
\ l´⌒\⌒\ \\ \ \ ヽ ) ) \\ \\ ( \ \∩___∩ \\ \ \ ⌒⌒| ノ ヽ \\ \ \ / ● ● ト、\ \\\ \ Y | ( _●_) ミ\ \\\ \ / 彡、_ |∪| ノ \ \\\ (____)―ヽノ' ヽ  ̄ ̄ ヽ\\ \, j l l .l } Lua! l (_ノノノノ
luabindってLuaからC++に数値型オブジェクトを渡してC++で中身を変更するのも無理だし 戻り値を複数定義することも出来無いの? 調べてもぜんぜんそれらしい情報が出てこない
なにがしたいの?
344 :
342 :2012/02/29(水) 23:43:44.33
結局luabindだけじゃ出来ないのでluaのベース機能と混在させたら出来た 今度は別の問題で悩んでるんだけど luaが持ってるuserdataタイプをluabindで受け取って中身をポインタにする方法が分からない 中身がポインタなのは分かってるんだけど、object_castしても失敗する
luabind::touserdata で、なにがしたかったの? 戻り値を複数定義する って意味不明なんだけど。
346 :
342 :2012/03/01(木) 00:37:51.27
>>345 見つけたけどなんかうまくいかない
戻り値は例えば
ret1, ret2 = func(inp1, inp2)
みたいなlua関数をluabind経由で定義できないって話
ごめんちょっと何言ってんだかわかんない
luabindで定義すると スタックに二つ積んでリターンすることが不可能 になると書いてるんだと思う
具体例出せない?
C++は見た目以外はCと同じなのに もっと見せないと意味がないな
lamda
「Squirrelゲームプログラミング」って本がでてるけれど読んだ人いますか?
amazonで目次と中身少し見れる ググって足りない部分はexampleとヘッダ少々見れば出てくる程度の事しか書いてない windowsでsjisでvsのeeでdxライブラリで…溜息が出るような内容 このスレ見てたらまず要らないだろー
355 :
342 :2012/03/10(土) 22:10:21.11
ゲーム用の組み込みスクリプトでゲームを作るって発想はどうなんだろうね
ゲーム用のものでゲームを作るのはそれはあたりまえでは?
目次を眺めて読みたくなったのは デバッグへの備え その他のテクニック この2ヶ所だけ。 GoogleBooksで該当箇所を読んでみたけど 得るものはなかったっす。
効いてる効いてる効いてる 効いてる効いてる 効いてる効いてる効いてる 効いてる 効いてる 効いてる 効いてる効いてる効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる効いてる効いてる 効いてる効いてる 効いてる効いてる効いてる 効いてる 効いてる 効いてる 効いてる効いてる効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる 効いてる
>>354 それは残念です。買わないことにします…
しかしLuaはあまりにも情報が少なすぎるな
Luaはまだ日本語の情報は多いよ。
>>353 立ち読んだ感じ、初心者なら読んでみるのも悪く内容だとは思ったけどなSquirrel
の本。
スクリプトとC言語側とのデータのやり取りなんかは結構詳しく書いてあったし、リロードについても触れてるっぽいし。
テーブルやクラスのやり取りまで具体的に書いてあるのは、初心者には便利なんじゃない?
まあ、このスレに常駐してるようなベテランには不要なんだろうけどね。
それにしても、Lua以外でスクリプト本なんか出しても売れないだろうによく売る気になったな(笑
>>361 組み込みスクリプトの中ではね
perlみたいなメジャースクリプトと比べたらもう
perlをCに組み込むやつなどいないよ
Luaは、SquirrelやAngelScript、GameMonkeyとかに比べたらものすごく多い日本語資料の量だと思うけどな。
リファレンスマニュアルが日本語化されてる時点で許容範囲内だよね
luaはjavascriptに似ているから簡単だと思うか そもそもjavascriptはjavaに似ていないから難しいと思うかの違い
Luaは色々なアプリケーションを制御する簡素なスクリプト言語として プログラミング言語の使用者数の中でもNo1の言語になっておかしくないくらいの コンセプトを持ってる言語のはずなんだがどこでどう間違ったんだ
368こそどこでどう間違ったんだ 何が言いたいのか伝わらんぜよ
370 :
368 :2012/03/14(水) 06:10:00.66
つまりプログラミングにさほど興味ない人でも 様々なアプリケーションでLuaが使えるなら TIOBEとかで20位前後をウロウロしてるような言語じゃないのに 実際にはそこまでアプリケーションでも使われていないから Luaのコンセプトは良さそうに見えるけど文法か何かに欠陥が あるのかな?ということです
>>370 >Luaのコンセプト
どんなイメージ?
自分の言葉で語ってみて欲しい
誤解してると思う
なぜか「プログラミングにさほど興味ない人」が登場するのは 母集団をいじれば統計を支配できるというコンセプトなんだよな
,,-―--、 |:::::::::::::;;;ノ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |::::::::::( 」 < 実際にはそこまでアプリケーションでも使われていないからLuaのコンセプトは良さそうに見えるけど文法か何かに欠陥がある ノノノ ヽ_l \______________ ,,-┴―┴- 、 ∩_ /,|┌-[]─┐| \ ( ノ / ヽ| | バ | '、/\ / / / `./| | カ | |\ / \ ヽ| lゝ | | \__/ \ |  ̄ ̄ ̄ | ⊂|______| |l_l i l_l | | ┬ |
375 :
368 :2012/03/14(水) 13:34:24.86
Luaは開発者がC/C++等と組み合わせて使う目的があるのと同様に 上記のようにプログラミングにさほど興味ない人でも様々なアプリケーションで 簡単なスクリプト言語として使うという目的もあるはずなんですよね。 Lua開発者の一人のRobertoも 「Luaには、プロ以外のプログラマにとっても簡単に使えるという 目的がありました。『言語設計者たちが考えること』」 って言っていますし。
LuaってUnicode使えないんでしょ?
>>375 目的が二個あるなら言語も二個作ればいいよ
ランキングも二種類でいい
それを一つにしようとすれば、どこかで必ず間違う
>>375 そもそもスクリプトが必要なアプリが少ないところで
Lua使ってる人少ない→Luaは欠陥言語
という理論まくし立てられてもただのLuaの悪口にしか聞こえないよ。
君の理論で言うとSquirrelやAngelScript、GameMonkeyは
さらに目も当てられないほどの欠陥言語ということになる。
>>375 「プロ以外のプログラマ」とは「プログラミングにさほど興味ない人」であると
「Lua開発者の一人のRoberto」が言っているのか?
Luaはユニコード扱えないから、 Windowsのパス名の処理さえ不完全で、 ほんとスタンドアローンのファイル処理などには不向き。 ただ、そのぐらい割り切ったシステムというのは それはそれで大きな利点なんだけど そのわりにコミニティが過疎っているのは 世間一般の理解が足りないというべきかな。
導入しただけで色々できて便利!みたいなものじゃないからでしょ なんらかの接続部は自分で作らないといけないから誰彼にでも勧めるものじゃないきがする
begin / end な言語は永遠にメジャー化はムリ。まじでまじで。
ビギネンド言語ディスってんのか
インデント構文よりは好きだな
>>380 > Luaはユニコード扱えないから、
utf8などは使えるよ
> Windowsのパス名の処理さえ不完全で、
どんな点だろ?
sjisの事ならパッチを当てて
パス文字列の操作ならpenlightなどを使うことで対処出来ると思う
> ほんとスタンドアローンのファイル処理などには不向き。
そりゃそうだろねぇ
>どんな点だろ? 世間では意外とシフトJISの範囲外の文字が使われてる。 「・」にもシフトJIS範囲外のやつがあったりして、 メールで送られてくる添付ファイルなどがそうだったりする。
ファイル名にSJIS範囲外の文字が使われていたらfopenで開けないってことか 対応自体はさほど難しくないけど 需要ないから誰もやらなそうだね
そもそも組み込みスクリプト言語でfopenとか使ってファイル処理する必要はあるんだろうか。 その辺はアプリ側に投げるようにした方が楽な気がするけど。
ビギネンド言語っていうのかw
>>388 exelとかにVBSのような用途でLua組み込む場合とかならLua側から
ファイル操作したい場合もあるんでないの。
ないよ
!=を~=にしたりとか、コロンとセミコロンと2種類のアクセス方法があったりとか まったく目的も意味もわからない言語仕様盛りだくさんなんだよな 絶対他の言語と違う特徴にしようとかって理由だけでやったんだろうけど 一般化されてる!=くらいそのままでいいだろ
~=表現については同意するが、コロン、セミコロンを含めて意味不明な機能などなく、ミニマルに纏まって機能提供されていると感じるがな。
一般的には、レガシーなクラスと匿名クラスの2種類がある これを1種類にするとJavaScriptかLuaのようになってしまう
!=も~=もおかしい。社会通念はVBの<>
==もおかしい。社会通念はPascalの=。 こんなの言い合っても意味ねー
≠ に似ている =/= にしようぜ
日本語ってまったく目的も意味もわからない言語仕様盛りだくさんなんだよな
AngelScriptだっけC++に似せてるやつ
>>390 例えばCSV形式のファイルを読み込む場合、アプリ側からCSVクラスをスクリプトに登録しておいて、
CSV _csv;
_csv.load("〜");
みたいな感じで、読み込みクラスのメソッドを呼び出した方が楽かなと。
> CSV _csv; > _csv.load("〜"); 構文からしてLuaではなくC++だよね? class CSV { public: T load(T) {...} }; というクラスをLuaに公開しつつ C++側で CSV _csv; _csv.load("〜"); とするの? loadの実装が気になるw
いてもたっても居られずsquirrelを作った作者の気持ちが痛いほど分かる
そう思うなら布教なりお布施なりしろよ。 このままじゃ死滅するだろ
分かるからってsquirrelがいいとも思わないからな 一番いいのは周知の既存言語の組み込み版だよな JavaとかC#とかの基本構文を真似たものが欲しいな
プログラマ目線の組み込み型なら別にスクリプトである必要なしともなりかねないからね ユーザ目線ならLuaがちょうどいい
DllImportは欲しいな DllImportは基本構文の中でも最強・・・
ぐぐる先生の dart はどうなん?
>>402 文法はとりあえずC++で書いた。
なので、スクリプト側で、
CSV _csv;
_csv.load("〜");
を実行する。
LuaJITのSJIS対応版ってあるんですか?
LuaJITだろうがsjisソースコード中の文字リテラルに対応するだけなら lex.cに5行くらい追加で終わるでしょ
具体的に何をSJIS対応にしたいの?
いいこと思いついた すべての半角文字をエスケープすればすべての文字が16ビットになる
Luaの様々なバインダを見て標準でバインダ付いてるAngelScriptは偉いと思った(小学生並みの感想) しかし今から実装しようと思うならLuaかねぇ。バインダみんな何使ってる?それとも自作とかか tolua++の最終更新が2009でtoluaの最終更新が2012に見えるんだがググるとtolua++の情報が多いな
luabind,SWIG,バインダなしのどれかだな toluaは中途半端で好きじゃない
慣れるとバインダなしが一番になるよ
Luaには型もないし継承もないからバインダもいらない
型を強くすると、未知の言語に対応できなくなるデメリットがある
アセンブラと同じでスタック(PUSH&POP)で何でもできる
423 :
416 :2012/03/25(日) 19:00:03.00
おーバインダなしかー。仕組み知るためにもとりあえず無しでいってみるか。ありがとう。
関数定義があいまいなせいでコンパイルエラーがほとんど出ないで実行時に例外落ちする悲惨さ
>>422 例えば、未知の言語で、継承ができなくなるリスクは大きい
委譲できなくなるリスクは小さい
リスクを小さくするには、(抽象的だが)「型」を避ければいいと思う
>>425 具体例出せない?
現実的に、静的タイピングで継承有りな言語もSWIGはサポートしてるし
boostライクなテンプレートに落とし込めない理由が浮かばないんだけど。
>>426 できない人の気持ちが浮かばないということは、その人をサポートできてない
サポートは諦めて単純に自力でやる方法をすすめるのが無難
テンプレートの何がいいのかわからないな 難読化させるためにやってるのか
具体的に頼む。 禅問答じゃないんだし。
型を強くすると、未知の言語に対応できなくなるデメリットがある 俺はそう考える。 テンプレートの何がいいのかわからないな 難読化させるためにやってるのか 俺はそう考える。
コメントの類はコードをかえって難読化することもある。 コメントは具体的なコードではないので禅問答に近い。 クラスとテンプレートはコメントではないがコメントに近いので難読化することもある。
なんでOpenOfficeでPythonマクロがあってLuaが無いんだろう ああいうものこそLuaの真骨頂じゃないのかね
足せばいいんじゃ
pythonはコンパイル型だから早い
LuaJITに実行速度負けてるけどな
>>436 何が言いたいのかよく分からんので
ちょろっと検証してみた
-- lua code
t={1,2,3,...,100000}
# python code
t=[1,2,3,...,100000]
$ time lua l514.lua
real 0m0.049s
$ time lua l514.luac
real 0m0.022s
$ time python2.6 p26.py
real 0m0.339s
$ time python2.6 p26.pyc
real 0m0.036s
$ time python3.1 p31.py
real 0m0.371s
$ time python3.1 p31.pyc
real 0m0.047s
$ time src/luajit lj2.lua
real 0m0.019s
$ time src/luajit lj2.luac
real 0m0.008s
結論としては
pythonが速いというよりも、当社比としてpyよりpycという苦肉の策じゃないかな。
ちなみに、Luaのrequireでも
LUA_PATHやpackage.pathに*.luacを追加すれば普通に読めるよ
そんな問題じゃねー OpenOfficeとの膨大な連携関数軍を言語サイドに公開するコストが Physonの方が圧倒的に小さい
>>439 ちょっと理解できない
そもそもpythonのJava実装でそんなのあったっけ?
Javaは他言語含めてどれもいまいちな印象しかないのだが。
Office関連はうといのでパッと見の感想だが、Luaほどの速度は必要なくライブラリ豊富なPythonを取ったということかな 上の見る限りpycなら十分だろう てかLibreOfficeもPython使ってるのかな。しっかり見てないが
Luaの真の力を知ればそのうち神が対応してくれるだろ
Jython
LuaよりPythonの方が記述しやすくない?
今の議論には関係ないんだけど、Pythonインタプリタのインスタンスって 1つしか持てないの? LuaとかはCからインタプリタ内部にアクセス出来るけど、PythonはPythonで 記述できる内容をCでも記述できるという感じに見える。これも合ってる?
>>441 OOo Basic,Python,Java,JavaScript
知名度で選んだだけじゃね?
組み込みコストは似たりよったりだろうし。
>>445 前者はその通り。今の python は multi vm は配慮されてない
後者はちょと意味がとりにくいけど、Cアプリへの python インタプリタ組み込みは可能で、
C側からコードを読み込ませたり値を入れ込んだりはできる。ただ cpython はCの
コールスタックに依存する構造で、一度よんだら python 側の処理がおわるまで帰ってこない
Cのコールスタックに依存せず、途中で止めたりするような制御が必要なら、
stackless python か PyPy という実装なら、コルーチン機構があるので、
疑似的にインスタンスを複数もってるのと同じようなことができる
ゲームの類にうめこまれてるのはたいてい素の python でなくて stackless python です
>>447 , 448
回答ありがとう。
後段の件は自分の中でも整理できてないな。手間を取らせて申し訳無い。
具体的な用途は決まって無くて何が出来るか調べていたので、
感覚的な話になってしまいました。Tclは使ったことがあって、
LuaはTclと似た感じで使えるけど、Pythonはどうも毛色が違うなあと
感じていました。
Luaの文法がCと違うのは混乱しないために良いのかもしれないけど どうせならifとかforとかCの予約語とも重複しないで欲しかったな
配列が1から始まることを忘れちゃってつい0番に値を入れちゃう 動くから気づかないし
欲しいなら 作るとよいよ オナニー言語
0番に入れるのは間違いとは限らないし -1から始まる可能性も忘れてはいけない local i = -1 local t = {[0] = "zeroth", "first", "second"} local function f() i = i+1; return t[i] end for x in f do print(x) end
冗談かと思ったらあるのかよw しかも種類が多いな
これの収益がメンテナーに還元されるんだっけ?
>>454 欲しいけど、英語がわからないのと申し込む方法がわからないんだけど
just choose then buy then checkout then confirm then wait then wear
if/forの代替になるキーワードって何があるのさ 俺は全く思いつかん こいつらはCの予約語どうのって以前に殆どの言語で共通のキーワードなんだから 変えたら混乱以前に誰も使う気しなくなるだろ
英語が分からんから記号的にしか捉えられないのだろう。 すなわち if 〜 then でなく if () { のがいいというC脳の発想。そこにユーザーへの愛はない。
461 :
デフォルトの名無しさん :2012/04/20(金) 23:56:05.31
Windowsアプリにtolua++を使ってLuaを組み込んで、スクリプト動作をさせようと目論んでいます。 コンソールアプリに組み込む事は成功したのですが、ダイアログアプリからスクリプトを呼び出し、 スクリプトからCの関数を呼び出すところで上手くいかずに悩んでいます。 処理としては単純に指定の文字列のメッセージボックスを表示させるもので、 void MessageBox(LPCTSTR lpszMessage){ ::MessageBox(NULL, lpszMessage, NULL, 0); } こういう関数を用意してLua側から呼び出す、というものです。 グルーコードの作成、ビルド等は上手くいくのですが、「MessageBox("あいうえお")」のように スクリプトを書いたところ、 error : test.lua:5: error in function 'MessageBox'. argument #1 is 'string'; 'LPCTSTR' expected. と言うエラーがデバッグウインドウに表示されると言う状態になっています。 「LPCTSTR」を「char *」におきかえて、関数内でUNICODE変換すると上手くいくのは分かったのですが、 このやり方が正しいのか自信がありません。 このような状態について、どのように対処すればよいのでしょうか?
>>460 英語でif〜thenなんて文法は存在しない
>>462 そんなこと誰も問題にしてないぞ。どうした?
>>461 他のOSに移植すると自信を持てる
けどMessageBoxを直接呼び出すようなグルーコードは使わない。
巨大なフレームワークと直結するようなグルーコードを使うと自信がなくなる。
>>462 FORTRANの創始者ジョン・バッカスをバカにしてんのか?
if と then はそれぞれ独立して使うもので同時に使うことは英語の文法上ないんだよ if 〜 then なんて用法はプログラム的文法にすぎない 日本語に例えてみると 「もし」「じゃあ」みたいなもんだ 「もし」フラグが立ったら「じゃあ」実行しよう ほらおかしいだろ?
>>466 If you want a friend then get out of here
「If you don't think you can do it, then you can't.」とか普通にあるな。
>>466 英語わかんないのに何でこんなに自信たっぷりなの?
>>467 ないない
通じない
>>468 ないない
通じない
受験英語覚えて英語覚えた気になってる馬鹿だな
英語の文法で正しいかどうかなんて関係ない 他のプログラミング言語で事実if 〜 then ... という文法が 広く採用されているってのがポイント 分岐はプログラムの論理構造の根幹なんだから そこにオリジナリティを持つだけ無駄だろ お前が英語に詳しいのはわかったから それを正しい方向へ生かす努力をしろ
>>466 どこがおかしいかまったくわからんのだが。
曲解して無理やりおかしくしてるだけでは。
「それぞれ独立して使うもの」ではあるが「同時に使ってはならないもの」ではないのだろう?
そもそも「Luaは英語文法に沿って設計されてます」なんて誰も言ってないぜ?
仮に文法どおりの究極的な言語できたとしても遅くて実用に耐えないだろうよ
then よりもまず for が英語的には意味不明だな もともとは while / until / repeat などのキーワードを含む、ALGOL の繰り返し文の パラメータ指定用のキーワードだったんだけど、後の言語では繰り返しを意味する 単語は姿を消して for だけが回数指定繰り返しのキーワードとして残り、 最終的には foreach というさらに謎の単語が派生して今に至る
もし A=0 そのとき 書け("0になりました") そのほか 書け("まだです") 何にもおかしくないじゃん
すごいなーこれも受験英語なのかー If a city has a 30% Negro population, then it is logical to assume that Negroes should have at least 30% of the jobs in any particular company, and jobs in all categories rather than only in menial areas. (Martin Luther King, Jr.) 問題にするなら else のほうだろうに。
そもそも言語に正しいも糞もないからな。 国が何が正しいかを決めてるわけでもなく、 自称言語学者が自説を述べてるだけだから。
みんなが欲しがっているのは正しい言語じゃなくて小さい言語 正しさの定義が何であろうと、正しくない部分を切り捨てて小さくなりさえすればいい 逆に大きくしたいなら、正しいも何も関係なくすべて取り入れるはず
言語など相手に通じさえすればいい。 翻って、どんなクソ文法でもコンパイラ様が言葉認定してくれればオールオッケーなのだ。
おや、Xtalが息を吹き返したようだ
>>461 void MessageBox(const char* lpszMessage){
::MessageBoxA(NULL, lpszMessage, NULL, 0);
}
とか?
(未テスト)
ダイアログボックスつかってるなら、それのウィンドウハンドルをどここかに保存しといて、
MessageBoxに渡した方がいいんではないか?
>>476 あほだな
それは
If a city has a 30% Negro population, then it is logical to assume
が1つの文章じゃなくて
○○ If a city has a 30% Negro population,
then it is logical to assume
で分離してるんだよな
それにそれちょっと変な言い回しだな
演説用の思わせぶりな言い方ッて感じ
決して日常会話では使わない
その日常会話自体がどんどん変化するからね。 おっさんが若者言葉を知らないだけという可能性も高い
>>482 > で分離してるんだよな
してない。
> それにそれちょっと変な言い回しだな
> 演説用の思わせぶりな言い方ッて感じ
そうですねー(あなたの中では)
> 決して日常会話では使わない
そうですねー(あなたの日常では)
普通日常会話ではthenは文末に使うもんだからね 特に若者会話ではw if ** then go じゃなく if you say **, go then って感じ
まあ2chの自称言語学者とFORTRAN設計者のアメリカ人の どちらを信用するかというだけのハナシだわな
>特に若者会話では てことは、日本の若者会話を慮るに 英語の文法上正しくない根拠にはならないわけだね
末尾に草を生やした時点でお前の負け 読む価値が無い
英語でif〜thenなんて文法は存在しない ↓ 使われない ↓ 日常会話では使われない ↓ 若者の日常会話では使われない ← いまここ ↓ 俺は使わない
>>489 最初の使われないから何もかわってないよ
if〜thenという形の熟語は存在しない
if, thenで分離してるのが普通
その証拠としてthenは文末にくるのが一般的だと言ってる
何故なら独立した2つの分だからthenの位置はifに依存しない
プログラミング言語の if then を熟語だって誰か言ったの? else のこと考えてもあきらかに分離してるわけで問題ないじゃん
>>490 結局、何が不満なの?
英語と文法が違うから?
それとも"if","then"という単語のチョイス?
if 〜 then 〜 else はもはや世界の共通語。 英語の文法がどうとかそういう問題ではない。 英語の文法君は明らかに外してる
ifがいやならsnobol使えばいんじゃね?
なんかのスクリプトにeven if構文ってあったよね
ステマに踊らされてるのか
>>496 がBrain*uckで実用プログラムを作ると聞いて飛んできました
>>496 長くなってくるとSAN値がごりごり削れていくぞ
VSと連携できるluaデバッガ教えてくだしあ
IntelliJ
AngelScript2.23.1記念カキコ
プログラミング言語と英語を直接結びつけるのは違和感ありまくり プログラミング言語は英語圏の人間が全員理解できるわけでもない無理矢理英語っぽくしてあるだけのシロモノなのに なんで日本人が必死こいて英語じゃああだこうだ言って勝手に盛り上がってんの AppleScriptでも使ってろばかー
こぼる
ひまわり
特定の文化圏に依存する文字を使ってるからそんな議論が生じる ほわいとすぺーす
そういえば、外来語としてそのまま使える名詞とか動詞は文化圏に依存しないね 形容詞は微妙 それ以外は駄目っぽい
公開時点だと組み込みに適したような口が全然はえてなかったけど、その後なんか追加実装されたりしてる? > mruby fopen とかしょんぼりだぜ
とりあえず日本語
それなら静的型付言語に何でも入る型用意すればいいんじゃね?
それってどこのバリアント型
そんな言語ではチェックできないから書き直せという話ばかりで チェックできたって話は聞いたことがない
LuaJIT 2.0.0-beta10 has been released
#include <iostream> #include <lua.hpp> using namespace System; int main(array<System::String ^> ^args) { double z; int ret; for(int aa = 0; aa < 1000000; ++aa){ lua_State *L = luaL_newstate(); L = lua_open(); luaL_openlibs(L); // これで以下の個別のライブラリを一度に使えるようにする ret = luaL_dofile(L, "add.lua"); // Lua scipt 読み込む if(ret != 0){ printf("Failed");//読み込み失敗 return -1; } lua_pushstring(L, "add"); lua_gettable(L, LUA_GLOBALSINDEX); lua_pushnumber(L, 100); // 引数数値"100"をスタックに lua_pushnumber(L, 5); // 引数数値"5"をスタックに lua_call(L, 2, 1); z = lua_tonumber(L, -1) ; printf("%d-%f\n", aa, z); lua_close(L); } return 0; } //add.lua function add(a, b) return a+b end
↑動かすとどんどんメモリー増えていく どこ修正すれば解消される? (lua5.1使用)
まさかのc++cli
> lua_State *L = luaL_newstate(); > L = lua_open(); ここだね、かぶってる。消し忘れ?
c++cliです //L = lua_open(); で、増えなくなった ありがとう
WindowsでLuaの勉強をはじめたんですが Shift_JIS対応版Luaを使ったほうがいいのでしょうか? スクリプトファイルはUTF-8で保存してcygwinのターミナルで実行すれば日本語も表示できるし SJISでファイルを保存すればコマンドプロンプトでも日本語は表示できるので不便を感じません いまいちよくわかってないのですがShift_JIS対応版を使うメリットはなんでしょうか?
文字列に「ソ」とか入ってると文字列がおかしくなっちゃうんじゃないの?
カギ括弧でくくればエスケープされないから、大丈夫じゃない? > a = "ソ表"; stdin:1: unfinished string near '"・;' > a = [[ソ表]]; > print( a ); ソ表
もしsjisをやめてもWindowsは "C:\" だけでおかしくなる だからsjisをやめるメリットが少ない
mrubyがでてきたから、今後はもうluaはジリ貧だな
他人が打ち込んだ文字列を取り入れる可能性ないならSJIS無視してOK
mrubyの「組み込みシステム」ってそういう意味じゃないんじゃないの?
すまん、勘違いだった
とりあえずウォッチしてるけどLuaの影響がだいぶでかい感があるな まだまだ開発中だけどやっぱりRubyで書けるようになるのは嬉しい
>>527 それ Windows は、じゃなくて、C言語的に普通にえらーだべ
>>526 Win環境でなくて申し訳ないけど
> s="ソ\r表"
> for i=1,#s do io.write(s:byte(i,i).." ") end print("")
227 130 189 13 232 161 168
> print(s)
表
> s=[[ソ^M表]]
> for i=1,#s do io.write(s:byte(i,i).." ") end print("")
227 130 189 10 232 161 168
> print(s)
ソ
表
別の問題が出て来る気がする
mrubyのミドルウェアへの組み込みは思いつかなかったな
単体で使うならrubyの方がいいけど 組み込み処理系がLuaほどいじりやすいかどうか。 MatzがやってるならC++でのコンパイルも通らないだろうし orz
>>537 534で書いたまんまだけど
"..."では表現できて[[...]]では表現できないものが出てくるって事。
たとえば、以下4つの?に当てはまるものを考えてみ
> print("\r"==[[?]])
true
> print("\r\n"==[[?]])
true
> print("foo\rbar"==[[?]])
true
> print("foo\r\nbar"==[[?]])
true
>>538 Shift-JIS対応の話だったのに問題がすり替わっているような
[[...]]で改行コードが厳密に扱えないとしても
そもそも改行コードを厳密に扱う場面で[[...]]を使おうと思う奴はいない
Shift-JIS非対応のバイナリでも注意して書けばShift-JISは扱える
いちいち気にしてられない場合はShift-JIS対応バイナリを使う
それだけのこと
mrubyJIT…だと…?
これはもうじっとしていられないな
Visual Studioだとビルドめんどくせえなあmruby 他のみたいにパッケージのソースだけで出来上がるようにならんの・・・
>>539 >
>>538 > Shift-JIS対応の話だったのに問題がすり替わっているような
すり替えたつもりはないよ。
>カギ括弧でくくればエスケープされないから、大丈夫じゃない?
に対し、他の問題が出てくるよと提起しただけ。
そもそも、SJISで困るような環境の人ってのは
端末やらコマンド群やらなんやらの都合で
他に選択肢がない人たちなんだから
(SJIS文化に依存しない場合は別として)
パッチを当てるのが無難だよねと。
SJIS対応の為に[[...]]というバッドノウハウでしかないでしょ。
SJIS使いならエスケープするべき漢字全部覚えるくらい普通です!
名前を知ることで対象を支配できるという話があるけど その名前を持つべき本人を操れるわけではなくて 実際には偽物とか仲間とか代弁者を操っているんだなと思いました (小学生並みの感想)
AngelScript|Д`)<UTF8でやるかShiftJIS対応版使うかどっちかになるよ あと、文字列内のエスケープするべき文字を見つけてエスケープに置き換えてくれるプリプロセッサとか使うのはダメなんだろうか。
Lua5.2のシフトJIS版は些細な変更でUTF8にも対応可能 たまたま手を付けてないだけ やってみそ ついでに配布ライブラリやIDEと整合しなくなる場合があるのは C++でコンパイルしていることとVC10の/MTだからで、 必要ならソースの変更なしで対処できる項目ですのん。
>> 543 > print( "foo\rbar" == [[foo]].."\r"..[[bar]] ) > print( "foo\r\nbar" == [[foo]].."\r\n"..[[bar]] ) これでいいでしょ。 普通に改行すればそのまま改行コードが挿入されるけど。そういうことじゃないのかな? print( [[foo bar]] ) > パッチを当てるのが無難だよねと。 これに異論はないです。無用なエラーは避けられたほうがいいし。 > SJIS対応の為に[[...]]というバッドノウハウでしかないでしょ。 エスケープされて欲しくない文字列は[[...]]使えってことなんだから、 そのためにパッチを当てる方が、どちらかというと、バッドノウハウだと思うのだが。
日本語自体がバッドノウハウ
rubyのほうがluaより14倍生産性が高い、って言われてmruby見てみたけど… githubにあるやつが最新でいいんだよね?
そんなに難しいこと言ってるかな…
>>548 > これでいいでしょ。
よくない。
"foo"==[[foo]], "bar"==[[bar]], "\r"=="\r", "\r\n"=="\r\n"
とかいう話をしてない。
> 普通に改行すればそのまま改行コードが挿入されるけど。そういうことじゃないのかな?
ちがう。
534で既に書いてあるが
CR->LF, CRLF->LF, LF->LFな変換が入るので(Cのテキストモードのような)
"..."では表現できて[[...]]では表現できないものが出てくる。
> エスケープされて欲しくない文字列は[[...]]使えってことなんだから、
> そのためにパッチを当てる方が、どちらかというと、バッドノウハウだと思うのだが。
そもそも、SJISは対応してないのね。
対応外の文字コードを扱うために培うノウハウ、これぞバッドノウハウじゃないかな?
>>552 相互呼び出しくらいまでやってみてくれないとネタ以上の意味はないし、"意外と使えるかも?"なんてことは無いと思う
あくまでネタで作ったっぽいけどどうだろ
こんな小ネタで禁断とか涙目とかはしゃげるのだから可愛いじゃないか それよかmrubyの組み込みAPIがドキュメント無くてさっぱりわからん
mruby遅そっ
557 :
デフォルトの名無しさん :2012/06/04(月) 09:20:34.37
ザ・ruby界隈の人間
個人的にruby使えるのは嬉しいのでわくわくして追いかけてる
まぁLua先輩は資産いっぱいあるからすぐどうなるもんじゃないだろうけど
それに割と忘れられてるがまだ正式リリースじゃないしパーサbison製だしまだいまいちだろう
>>556 早くベンチマーク結果を貼るんだ
先輩の資産とrubyの進捗は関係ないだろう ゼロサムゲームじゃないんだから
一方luaにはnode.jsクローンのluvitってのが出来て、 node資産を移植してるみたい。
luajitのベースってmrubyに使えるのだろうか
563 :
デフォルトの名無しさん :2012/06/15(金) 15:55:41.05
>>564 いつものってなんだっけ?
5.2.1のバイナリデータ?
おそっ
AngelScript|Д`)<2.24.0記念カキコ
はやっ
スクリプト言語による効率的ゲーム開発という本のサンプルは luaをインストールしてない環境でも起動できるんですけど、 自作ソフトだとlua5.1.dllがないと言われて起動できません luaをインストールしてない環境でも起動できるようにするにはどうすればいいですか
サンプルから学べばいいですよ
同梱白!
サンプルの方は入ってないのに実行できるんですよ
本をきちんと買って読みなさい
>>569 自分のプロジェクトフォルダlua5.1.dllをコピーすれば動くはず。
>>569 サンプルはスタティックリンクでdll同梱無しに出来るようにしたのだろう
お前が作ったexeはダイナミックリンクでluaを使っているんだろう
だから同梱しないとダメなんだ 多分
あと名前にレス番くらい入れなよ
576 :
569 :2012/06/27(水) 21:29:51.59
実行ファイルと同じところにlua5.1.dllを置いたら実行できました みなさんありがとうございました 自作ソフトで使ってるluaは公式サイトからダウンロードしたものですが、 サンプルは本のサポートページからダウンロードできるものを使っていて スタティックリンクできるよう改造してあるようですね ライブラリへのパスがlibじゃなくてlib\staticだからおかしいとは思っていたんですが このこともちゃんと質問文に加えておくべきでした すみませんでした
ええよ 今回は許したるで^^
俺は許さんけどな。
・д・
Squirrelの本出てたんだなww
(´\r-、 ┼ + /`/`) + ┼ (\. \! * // ,/) * + * (ヽ、 \ + * / /) + ⊂ニ ) * + ( ニ⊃ * + ⊂、 ( ∩___∩ ノ ⊃ + * (/(/ ヽ | ノ ヽ / 、)ヽ) ┼ + (/ ∨ ● ●レ /⌒) 、)ヽ) * (/' | ( _●_) ミ' /、)、)´ + + (/'ヽ 彡、 |∪| ノ / AngelScript!! + / __ヽノ / * + ┼ (___) / + / / (_ ⌒丶.. | /ヽ }. し )) ソ トントン
AngelScript|Д`)<何だよAngelScriptの本も欲しいのか? でも書いている間に新しいバージョンが出て使い物にならなくなりそうで怖い。
>>583 そうだけど
付属ドキュメントは割と丁寧だし、作者がすぐレスしてくれるフォーラムもある
本など不要だ
585 :
デフォルトの名無しさん :2012/07/01(日) 01:33:43.39
実行状態を保存して、次に起動した時に復帰できる組み込み言語ってある? Luaはダメだった。
どうダメだったの? シリアライズするだけじゃね? 逆に聞くけど、それすら出来ない組み込み言語ってそもそも存在するの?
>>550 実行状態ごと記録できるようなのあったっけ
コルーチンまできちんと保存してくれるとなると便利なんだけどさすがに無理か。
VM内の全メモリ保存とかできないの?クイックセーブ的なノリで
core dump
AngelScriptを弄って状態保存やってるけど、まだ不完全 修正のめども立たず 変数がプリミティブ型とかアプリケーションから登録した型のみならちゃんと使える スクリプトクラスの保存はちょっとややこしくてできてない バイトコードを変えた場合セーブデータは引き継げない←これは仕方ないか
593 :
デフォルトの名無しさん :2012/07/02(月) 11:04:15.33
squirrelってサーバーで動かしても平気?
>>591 Suspendで一時停止させた状態も保存できる?
LuaにCのgetchみたいな関数ってあります? エコーバック無しでキーボードから1文字入力したい。
596 :
591 :2012/07/03(火) 23:15:09.72
>>596 スクリプトの実行中にSuspendで止めたときの次の実行位置ってどうやって保存してるのかな?
保存する時は プログラムポインタからバイトコードの始まりを指すアドレスを引き算して その値を保存 読み込む時は逆
それより変数の保存のほうが困難なんだが。
boost::serializationとか上手く使えないかな
boostを上手く使う方が困難じゃないか…
Serializerアドオンと機能がかぶってるぜ
Serializerで変数の内容を保存+実行位置を保存できればセーブできそう。 boost::serializationはその手助けになるよ。
日本語や! 俺にはそこまで必要ないが英語苦手な人にはありがたいだろう Good Job
でもDropBoxよりも、git-svnやhgsubversionでリポジトリ変換して Bitbucketとかに置いたほうが良さそう 今後もどんどん更新されるし他の人も作業に加わりやすい
Luaのグローバル変数ってただのテーブルだって聞いたんですけど、 それならただグローバル変数一つにアクセスするだけでもテーブルを参照したりするコストが結構かかっちゃうってこと?
同じグローバル変数に何度もアクセスするならローカル変数にコピーして
ただ、コンパイル時に文字列定数(テーブルのルックアップのキーになる)は予めハッシュ値に変換されるから、そこまで遅いわけでもない。
>>610 文字列定数をハッシュ値に変換じゃなくて
すべての文字列にハッシュ値を添付してるんじゃないかな
いずれにせよ、グローバル変数はライブラリを受け渡す一時的な置き場所という感じ
なのでrequireの直後にローカル変数にコピーしたりする
Luaは整数型が無いにもかかわらず整数演算がけっこう速い。 つまり、インタープリタの性能のボトルネックは処理そのものの コストよりも 通訳系自身の翻訳コストにある。 そういうわけで Luaの場合 細かいことはあんまり気にしなくてもいいかも。
メモリ上の翻訳よりディスク上のライブラリ検索とロードの方が遅いと思う
オナニー言語がまたひとつ増えたか
最高のオナニーを見せてあげるわ
618 :
604 :2012/07/19(木) 01:03:56.86
620 :
デフォルトの名無しさん :2012/07/24(火) 23:06:57.46
すいません どなたかluvitにluaかsquirrel組み込む方法わかりますでしょうか
>>620 luvitのモジュール構成的に、luaをあえて追加する必要って無いように思うんだけど
私の勘違いだったらごめんなさい
622 :
デフォルトの名無しさん :2012/07/26(木) 21:47:23.82
>>621 itemid=1
effect=kaihuku.lua
param=100
itemuse(1);
みたいなこと単体でできます?
623 :
デフォルトの名無しさん :2012/07/26(木) 21:49:18.52
itemuseの中はeffectに書いてあるスクリプトを実行します
624 :
デフォルトの名無しさん :2012/07/31(火) 00:02:29.60
vm新規で作ったらうまくいきました
rubyをC++に組み込んで使っていて詰まった…かれこれ3日くらい悩んでる。 エンコードshift_jisが使えない。組み込んだRubyで"p Encoding.list"を 実行しても、Shift_JISが出てこない。誰か助けてください。 具体的な組み込み方は以下の通り。 (1) Ruby公式サイトからソースコードを入手して、Visual Studioコマンド プロンプトでコンパイル。 (2) *ruby*-static.lib, *ruby*.libをライブラリファイルとして追加、 *ruby*.dllをソースと一緒のディレクトリに置く。 (3) ダウンロードしたRubyソース内のincludeフォルダをインクルード ファイルとして追加。 という感じ。どうもlibファイルとdllファイルだけではエンコードが 限定されるらしい…? 一応Encoding.listにUTF-8が出ていたから、Rubyのソースコードを UTF-8で保存してC++側で変換すればマルチバイト文字列は扱えたけど、 やはりShift_JISを直接扱えたほうがありがたい。 誰か解決方法を知っている方はいないでしょうか…。
626 :
デフォルトの名無しさん :2012/08/03(金) 12:18:51.12
組み込み系言語として、このスレでは主にluaやsquirrelなどを扱ってる。 調査でrubyを組み込んでみてる人もいるんだろうけど、このスレで聞くより言語のスレのがいいのかな?
630 :
デフォルトの名無しさん :2012/08/06(月) 19:52:26.03
ソースをgrepする元気が無い 眠い 暑い luaって配列渡すとコピーされる? それともアドレスだけ受け取ってうまくやってくれる?
いわゆるvariant型なので引数自体はコピーされるけど、配列は参照で保持してるので同じ物になる
Luaに配列はないです。 配列に似た動作が可能なテーブルもありますので それで代用します。 ちなみに、組み込み言語のボトルネックは 別の部分にありますので、 変数のコピーの受け渡しごとき気にする必要ないです。
634 :
デフォルトの名無しさん :2012/08/07(火) 22:43:45.73
>>633 javascriptのオブジェクトとにたようなものを配列として扱う
5000個のdoubleデータをc++からLuaにデータ移動するのを 5000回lua_pushnumberでスタックにつんで送り出してるんだけど これ以外に高速な方法ないですか?
doubleを5000個保持するデータ構造をuserdataなどで取り扱うのが正解
lua_pushlightuserdata使えばいいのね thx
LuaってC++と相性悪くね? 例外とか考えるのめんどいんだけど
639 :
デフォルトの名無しさん :2012/08/08(水) 15:57:29.71
てかLua自身をC++でコンパイルすればいいじゃん。 MakefileのCC=を書き換えるだけの簡単なお仕事 ソースの修正不要です。
C++でコンパイルすると例外に対応してくれんの?
そうです
というか過去ログのShiftJIS版5.2の実行ファイル、 C++でコンパイル済みの.exe
>>641 するわけ無いじゃん
ANSI-Cで書かれてるんだからANSI-Cに存在しない機能は当然サポートされないよ
>>644 ソース読んでないことバレバレw
/*
** LUAI_THROW/LUAI_TRY define how Lua does exception handling. By
** default, Lua handles errors with exceptions when compiling as
** C++ code, with _longjmp/_setjmp when asked to use them, and with
** longjmp/setjmp otherwise.
*/
#if defined(__cplusplus) && !defined(LUA_USE_LONGJMP) /* C++ exceptions */ #define LUAI_THROW(L,c) throw(c) #define LUAI_TRY(L,c,a) \ try { a } catch(...) { if ((c)->status == 0) (c)->status = -1; } #define luai_jmpbuf int /* dummy variable */ #elif defined(LUA_USE_ULONGJMP) /* in Unix, try _longjmp/_setjmp (more efficient) */ #define LUAI_THROW(L,c) _longjmp((c)->b, 1) #define LUAI_TRY(L,c,a) if (_setjmp((c)->b) == 0) { a } #define luai_jmpbuf jmp_buf #else /* default handling with long jumps */ #define LUAI_THROW(L,c) longjmp((c)->b, 1) #define LUAI_TRY(L,c,a) if (setjmp((c)->b) == 0) { a } #define luai_jmpbuf jmp_buf #endif
RAIIに対応してんの? 例外投げてもリークしたら意味ないよな
AngelScript|Д`)<AngelScript2.24.1記念カキコ
>>647 ケース1:
C++で書いたLua関数の内部でboostやSTLを使用し、
そこから例外が来たとする。
リークしない。
ケース2:
C++で書いた関数の内部でクラスを定義しつつ、
luaL_callなどを使用した場合、
LUAI_THOROWの実装がthrowであるならばリークしない。
longjmpが医師用された場合はリークするが
Lua本体がC++でコンパイルしていれば
LUA_USE_LONGJMPを定義しない限り使用されない。
注意:
当然の事ながらluaL_callの内側からC++で定義された
例外が飛んできた場合、スタックやStateの後始末が
必要になるが、それはプログラムの書き方の問題。
書く時に避ければいい。
>>648 ロゴはラピュタのロボットの飛行状態ですよね
天使語がはやくメジャーになるといいですね
日本語環境で使う場合にエンゼルスクリプトの問題点って何かある?
>>652 Win環境の場合だと、デフォではShiftJISに対応してない事。
UTF8でスクリプト書けば問題ないけど。
654 :
デフォルトの名無しさん :2012/08/10(金) 13:53:58.02
いまどきsjis使わないだろ
使わないよな普通
Windows上でしかやらない場合はまだShiftJIS使う事もあるよ。 WindowsでもUTF8のテキストを変換せずに使えるといいのになーとは思う。
内部でUTF16に変換する環境では、外部がUTF8でもSJISでも五十歩百歩だよな
luaでshebangつかうとき、普通に #!/usr/bin/lua って書いても問題ないですか? というか、実際やってみると動くんですが、 luaってコメントが"#"じゃなくて"--"なので、本当にこれでいいのかなぁと。
こんな時間にありがとうw おかげですっきりしました。
うひー、速いよ、速すぎるよLuaJIT !! Cといい勝負。 なにするとこんなに速くなるんだ?
コンパイルするから速くなる
バインダってへんな副作用とかないんですか? バインダつかってハマったこととかあります?
ハマったわけじゃないけど 最新のboostだとコンパイルできなくて1つ前の使うとかなら
665 :
デフォルトの名無しさん :2012/08/14(火) 02:47:58.36
javascriptとluaどっちがきのこるとおもう
666 :
デフォルトの名無しさん :2012/08/14(火) 02:49:51.92
スクアールはもうダメかな
サッカー選手「竹島」主張、韓国協会が謝罪文書
読売新聞 8月13日(月)22時45分配信
ロンドン五輪サッカー男子の3位決定戦直後に韓国選手が竹島の韓国領有を主張する政治的メッセージを掲げた問題で、
日本サッカー協会の大仁(だいに)邦弥会長は13日、謝罪と再発防止を徹底させる旨を記した韓国サッカー
協会長名の文書を受け取ったことを明らかにした。
文書は同日付で電子メールとファクスで送られており、大仁会長によると「申し訳なかった。二度とこういうこと
が起こらないように徹底する」という内容だったという。
国際オリンピック委員会(IOC)のロゲ会長は12日、当該選手の銅メダルを預かりとしたうえで、国際サッカー
連盟(FIFA)規律委員会の決定を待って処分を決める意向を示している。大仁会長も「五輪の場で起こったの
は残念だが、当面はIOCとFIFAに任せたい」と静観する構えであることを強調した。
.
http://headlines.yahoo.co.jp/hl?a=20120813-00001408-yom-spo
SJIS使わないさん遅いな…
633の頭の中ではメモリが無限でメモリ読み書きは一瞬で終わることになってるのか
まるでfirefox開発者のような意見だな
スクリプトブームってもうオワコンですか?
スクリプトは単なるC/C++のライブラリだという事に、もう気付いたよな
次はGCJブームが始まるべきだ
今はブームから当たり前のものになりつつある時期 各自シコシコいじってるような時期
AngelScriptがクラスのmixinとか言うのに対応するらしいが mixinって何?? C++にはvirtualキーワード使った多重継承があるけど これとは違うのか
似たようなもの。 二つのクラスを混ぜるんじゃなかったっけ
mixinのページより継承のページのほうが良かった気がする
Luajit FFI から APR を使おうとしたら mangling うんぬん・・・
バイナリとソースのギャップが大きいということは 言語を二つ覚えさせられるのと同じことだよな
呼び出しを __stdcall で解決
>>683 じゃ・・・インタプリタ
685 :
sage :2012/09/08(土) 20:46:53.93
angelscript触ってみたが、グローバル関数をC++->asへは渡せたけど ドキュメントにあるようなクラスメソッドを渡すコードは"クラス名"はデータ型じゃぬぇと怒られて失敗する なぜなん・・・
luaについて質問です。 Cの関数で、数値で順序付けられた配列(キーが数値のテーブル)を戻り値として返したいのですが、 どうもうまくいきません。解決方法を教えてください。 data[0] = 100; lua_newtable(L); lua_pushnumber(L, data[0]); // 値。dataはCの配列 lua_pushnumber(L, 1); // 添字 lua_settable(L, -3); return 1; このコードの場合、lua側からは、 print(data[1]) で、100が表示される事を期待してるんですが、そんな要素は無いと怒られます。 以下の様にすると、luaでは、data["1"]としてしかアクセス出来ません。 lua_newtable(L); lua_pushnumber(L, data[0]); // 値。dataはCの配列 lua_setfield(L, -2, "1"); // 文字列としてしかキーを設定できない?
lua_settable はスタックトップに値じゃね メタメソッド呼ばないときは lua_rawseti 使ってるわ
#define fn(L, a, b) \ luaL_loadstring(L, "local " a "=...;return " b) && lua_error(L) fn(L, "val,key", "{ [key]=val }"); lua_pushnumber(L, data[0]); // val lua_pushnumber(L, 1); // key lua_call(L, 2, 1); Cの速度ではなくライブラリの利用が目的であればloadstringでいい
689 :
686 :2012/09/09(日) 12:46:00.35
>>687 おっしゃる通り、スタックトップに値でした。
考えてみると、最後に積んだのがスタックトップですもんね…。
lua_rawseti。大量のデータを格納するには この方が早そうですね。
ありがとうございました。
>>688 なかなかトリッキーな感じですね。
確かに速度に重点を置かなければ、何かに応用ききそうですね。
勉強になりました。
>>685 クラスメソッドはグローバル関数として登録しないとダメなはず。
どうしてもクラスメソッドと同じ書き方で呼び出したい場合は、
lpEngine->SetDefaultNamespace("Hoge");
lpEngine->RegisterGlobalFunction("void Fuga()", asFUNCTION(Hoge::Fuga), asCALL_CDECL);
lpEngine->SetDefaultNamespace("");
とやって、クラス名と同じ名前空間のグローバル関数として登録すれば、
Hoge::Fuga();
って書いて呼び出せる。
>>690 なるほどありがとう ちょっと天使に近づけたわ
// / / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ Lua!! / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
>>690 え?嘘教えるなよwそんな事したってクラスとして使えないだろ
コンパイル通らないか、通っても実行時にエラーになりそう
RegisterObjectMethodの前に
目的のクラスをRegisterObjectTypeで登録していないだけだろ
それと、引数に使われているクラスも事前に登録されていないとエラーになるから気をつけろ
sqplusって2.1.1と一緒にパッケージされてるけどsquirrel3以降では使えないの?
695 :
デフォルトの名無しさん :2012/09/18(火) 00:44:17.72
推奨ではないということ 使えないという可能性も含めて
クラスメソッドって、本当にそっちの事をいっているのだろうか そもそもAngelScriptにはクラス内でstaticなメソッドを作る機能なんてないので そんなサンプルがドキュメントに載っている筈もない
AngelScript 2.25.0 出てたのか
(´\r-、 ┼ + /`/`) + ┼ (\. \! * // ,/) * + * (ヽ、 \ + * / /) + ⊂ニ ) * + ( ニ⊃ * + ⊂、 ( ∩___∩ ノ ⊃ + * (/(/ ヽ | ノ ヽ / 、)ヽ) ┼ + (/ ∨ ● ●レ /⌒) 、)ヽ) * (/' | ( _●_) ミ' /、)、)´ + + (/'ヽ 彡、 |∪| ノ / AngelScript!! + / __ヽノ / * + ┼ (___) / + / / (_ ⌒丶.. | /ヽ }. し )) ソ トントン
/ヽ /ヽ ':' ゙''" `':, ミ ・ω・ ;, :; . っ ,つ `:; ,;' `( /'"`∪
AngelScriptにもデリゲートが実装されるといいのに でもGCとの絡みなんかで難しそう メソッドを呼ぶ側のクラス(管理クラス)と呼ばれる側のクラス(イベントハンドラ)、 どちらかが必要なくなったときに問題がややこしくなる 管理クラスよりイベントハンドラ的なクラスの方を先に解放してしまうと無効なポインタにアクセスしてしまうかもしれないし 管理クラス以外には必要ないのにずっと解放しないで持っておくのもよくない 他の言語ではどういう風に解決しているんだろう
>>693 2.24時点ではコンパイル通ったし、エラーも出なかったよ。
確かにクラスとしてインスタンス化できるわけじゃないけど、メソッド呼ぶのが目的だから十分だた
でも言われた通りクラスオブジェクト登録してないのが原因だったのでそういうふうに書きなおしたわ
mrubyの開発者はLuaじゃ足りないとかいってるが 組み込み言語なんだから十分だよな
足りないよ
monoを組込スクリプトとして使ってる人いませんか? UnityやPSMでスクリプト言語として使ってるけど、情報が少なすぎて真似出来ません。
足りないというよりも、Rubyじゃないのが気に入らんだけでしょ
>>707 今mono 組み込みでググって見たらそれっぽい記事すぐ出たよ。
自分はまだ試してないけど。
monoは配布物全部ぶちこむのは簡単だけど、最小構成がくめない…… unityとかは相当人突っ込んだんだとおもうよ
Luaユーザーに質問ですが、文末に『 ; (セミコロン)』付けてますか? 付けなくても改行すれば問題ないし、タイプ数も減るので付けてなかったのですが、 最近気になって、どっちが一般的か教えてください。
>>712 付けないのが一般的です。
C++とluaを交互に触っていると、セミコロンを付けたくなる
f:write(); f:flush(); f:close(); とかでなら使ってる
改行しないなら付ける。改行の後に () があるなら付ける。それ以外は付けない
>>713-715 一行中に複数文書かない限り、付けない方が一般的みたいですね。
ありがとうございます。参考になりました。
可読性上がるからつける習慣は悪く無いよ
718 :
デフォルトの名無しさん :2012/09/26(水) 03:35:04.81
行末にセミコロン付けた程度で可読性上がんねーよw
エディタが末尾文字に色付けとかしてくれるなら見やすくはなる 末尾以外と同じ色やスタイルでの表示ならあまり意味を感じないな
720 :
デフォルトの名無しさん :2012/09/26(水) 09:39:31.24
無くていいなら無くていい
>>720 元レスの人は
>>716 で納得してるのになんでそんな発狂気味なレスをせずにはいられないの?
>>721 付けなくてもいい言語なら、わざわざ付ける必要ないって事だと思うよ。
統一されてればどっちでもいい 自分はC++に合わせてつけるけど
一方phpはhtmlに合わせて統一をはかった
AngelScript|Д`)<きたわよ
C/C++の記法の特徴はポインタと副作用のある演算子だが それを受け継ぎたいと本気で考えている人がいるだろうか むしろポインタを無くして多重代入を追加したいのではないか
なにそのカオスなレス
729 :
デフォルトの名無しさん :2012/09/26(水) 13:56:23.01
何が発狂なのか理解できん
人の心は理解できないから機械的な仕様が重宝されるんだぜ
自分のやりやすいように書いたらいい
>>719 末尾文字が色分けされるエディタなんて見たことないんだけど。
そんなもの存在すんの?
そもそも末尾文字を色分けして本当に見やすくなるの?
LuaとSquirrelでスクリプト実行中に、 スクリプトを終了させるにはどうしたらいいのでしょうか? Luaの os.exit を使うとプログラムごと終了してしまうし…。 mainでreturnすれば終了させる事は出来ますが、 この方法は関数中だと使えないという。
相当曖昧な質問だな
>>734 フォーカス中行のデリミタ強調なら珍しくもなんとも
>>735 関数がエラーを返したらメインでReturnすればいいやん
>>735 コルーチンで動かしておいてとめたくなったらとめればいいんでないかい?
>>735 例外使って最上位階層まで戻ってからreturnという手も
local function f() coroutine.yield() print(3) end local function m() print(1) f() end local main = coroutine.wrap(m) main() print(2) main()
>>734 おまえエディタはなにつかってんだよw
VCとヒデマルは色付けられるんだぜ。
>>744 おー
luajitとmsgpackはmplua(MessagePack for Lua)で普通に使えてはいたけど
組み合わせてluajit寄りにして高速化でもしてるんかな?
助かるわー
勘違い…luajit"で"実装かorz
>>745 別に秀丸に限らず、高機能なテキストエディタやIDEは大体色の設定出来ると思うが。
初期設定で末尾文字の色を分けてるエディタなんて見たことないし、
わざわざ末尾文字の色を自分で設定して使ってる人も見たことない。
>>748 末尾文字の末尾ってのは具体的に何を指してるの?
その点を明確にすれば誤解は解けると思う
>>749 過去レスちょっと遡れば分かると思うんだが。
気がついたら誰も味方がいなくなってた。 信者みたいな読者だけしか残ってなかった。 それで意味なくヒステリックに攻撃してる。 終わった。完全に。
>746-747 >750
今sqratを使ってc++クラスとのバインドをやってるんですけど 下みたいなイベントコールバック用のインタフェースクラスをバインドしようとしてて class Hoge { public: void addListener( IListener* l ); // Hogeにリスナを登録しておくと勝手にhogeEventが呼ばれる }; class IListener // 呼び出されるインタフェース { public: virtual void hogeEvent( EventObject& e ) = 0; // これをオーバーライドして処理をする }; squirrel側でもIListenerを継承してイベントが起きたらhogeEventという関数が 呼ばれるようにしたいのですが、どうバインドすればよいのか見当もつきません。 なにかやり方はありそうな気がするのですが、知恵遅れな自分 もうここの皆さまに頼ることしかできません…
コールバックのバインドは原理的に不可能 明示的にC++側から呼び返しするしか無い コンストラクタでvmを渡すような構造にして、そこでスタックの1番を参照すれば、 squirrel側のインスタンスを取得できるので、 それを弱参照で保持して、それを使って 自己メソッドコールするようにすれば良い
馬鹿には無理
>>758 弱参照でもたないと永遠に解放されないオブジェクトになるから注意な
コロンとセミコロンは色付けてるけどな。 自分が見たことないからってなんでも否定してたら 新しい発見がすべて自力の車輪の再発明になっちゃうじゃないか。
そんな意味ない設定してんのお前だけだよ
元々多数派少数派なんて話じゃなかったと思うのだが、なんで話すり替えてまで噛み付き続けるんだろ コードスタイルどころかエディタ設定まで一緒じゃないと気が済まなくなってきたのか?
タブ幅は同じにしておかないと共同開発ではストレスが溜まるな
764 :
755 :2012/10/05(金) 21:58:46.11
困った。
>>756 の助言をもとにコールバック呼び出しができるようになったんだが
squirrel側のクラスの書き方が気に食わないことに…
class Hoge extends Native
{
callBack = function(e){} <- こうじゃないとsq_getできない
function callBack(e){} <- NG
};
メンバ関数の取得ってsq_getじゃダメなの?
// / / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ Lua!! / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
766 :
755 :2012/10/07(日) 00:49:15.69
自己解決。インスタンスじゃなくてクラスをプッシュすればよかったのね。
Luaを初めてのプログラミング言語にしようと思います 参考書はテンプレにあるものでいいのでしょうか?
ネットにも情報は載っているのに本なんて要るのか
プログラミング初心者にはいいかもね。<書籍
まとまった情報が欲しいときはネットより本の方が有用だぞ
皆さんありがとうございます テンプレの本を買うことにしてみます
\ l´⌒\⌒\ \\ \ \ ヽ ) ) \\ \\ ( \ \∩___∩ \\ \ \ ⌒⌒| ノ ヽ \\ \ \ / ● ● ト、\ \\\ \ Y | ( _●_) ミ\ \\\ \ / 彡、_ |∪| ノ \ \\\ (____)―ヽノ' ヽ  ̄ ̄ ヽ\\ \, j l l .l } Lua! l (_ノノノノ
AngelScript2.25.0で、C++側でSetDefaultNamespaceで名前空間変更した後関数を登録しようとすると、 自前で登録したクラスを引数や返り値にするとコンパイルエラーになるな…
LuaとLLVMは仲間ですか?
>>774 なんでそんな時間に釣りレスしようと思った?
お前に何があったんだ
LuaJIT 2.0.0-beta11 が出てた 10/16
LuaJIT2は忘れた頃に更新かかるな 最適化が進んでるようでなにより
AngelScript|Д`)<AngelScript2.25.1記念カキコ
(´\r-、 ┼ + /`/`) + ┼ (\. \! * // ,/) * + * (ヽ、 \ + * / /) + ⊂ニ ) * + ( ニ⊃ * + ⊂、 ( ∩___∩ ノ ⊃ + * (/(/ ヽ | ノ ヽ / 、)ヽ) ┼ + (/ ∨ ● ●レ /⌒) 、)ヽ) * (/' | ( _●_) ミ' /、)、)´ + + (/'ヽ 彡、 |∪| ノ / AngelScript!! + / __ヽノ / * + ┼ (___) / + / / (_ ⌒丶.. | /ヽ }. し )) ソ トントン
773の問題を自己解決したんでメモ書きしておく。 ある名前空間で、グローバル名前空間にある自作クラスを使う場合は「::」を省略しちゃダメなんだな。 stringがグローバル名前空間に定義されてるとして、 lpEngine->SetDefaultNamespace("Test"); lpEngine->RegisterGlobalFunction("void Print(::string &in)", asFUNCTION(PrintString), asCALL_CDECL); lpEngine->SetDefaultNamespace(""); こんな感じでいけた。 問題は、このネタが役に立つ人があんまり居ない気がする事だ。
では、その問題解決に向けて尽力してください
>>781 この問題はフォーラムかドキュメントのどこかで指摘されていたようないないような
luaからsquirrelに移行して色々試してたんだけど、yieldで躓いてしまいました。 ジェネレータ関数'F'内から呼ばれる先の関数でyieldした場合に'F'を中断したいのですが、 そんな動作は可能でしょうか? luaだとこの動作が出来てすごく楽だったのですが…
\ l´⌒\⌒\ \\ \ \ ヽ ) ) \\ \\ ( \ \∩___∩ \\ \ \ ⌒⌒| ノ ヽ \\ \ \ / ● ● ト、\ \\\ \ Y | ( _●_) ミ\ \\\ \ / 彡、_ |∪| ノ \ \\\ (____)―ヽノ' ヽ  ̄ ̄ ヽ\\ \, j l l .l } Lua! l (_ノノノノ
suspendすればいいです
ありがとうございました! 希望通りの実装ができました!
requireで上位フォルダへの指定ってどうすればいいの? require("../lib/dumper") とかって感じで指定したいんだが・・。 「.」が「\」と同じで解釈されちゃうんで、 no file '.\\\/lib/dumper.lua' ってなってしまう。。
requireはパスで検索じゃなくてモジュール名で検索って意味合いが強いから その用途にゃ向かないと思うよ package.preloadの__indexに独自ローダ仕込んだりも出来ないことはないけど 読み込むルートが決まってるならpackage.pathに'../lib/?.lua'とか追加するのがまっとうかと モジュールとして扱う必要がなければdofileでも間に合うしね
カレントディレクトリ以外の相対パスでのモジュール指定なんて その意図自体が変なのでは
遅くなってすいません。 そんなものなのですね。 把握しましった。 PJを横断するようなutil的なmoduleには、パス通すようにするかね。。
あれ? Luaってメソッド/関数のオーバーロードって出来なかったけ?
大抵のスクリプト言語ではそう
796 :
デフォルトの名無しさん :2012/11/13(火) 09:57:58.08
Luajit2.0リリース!
LJ!
おい!スレッドクラスとバインドしたのにVMがマルチスレッド対応してないから落ちるじゃねーか!!! クソファッキン!!!
スレッドセーフのインターフェイスを自前で作るんだな
SquirrelとかAngelScriptとかGameMonkeyとかはスレッドセーフなの?
Luaもスレッドセーフだよ
まずスレッドセーフとは何か定義してから話すんだ
定義が必要な範囲でしか語ってないじゃないか。
そんな難しく考えずに普通に考えればいいやん。君はへりくつたれだねぇ。 一般的にいえばLuaはスレッドセーフなんだよ。
一つのLuaインスタンスに複数のスレッドから同時にアクセスしようとすると片方は待たされるってことでおk? それともスレッドの数だけLuaインスタンス作れば好きなようにアクセスできるよってこと?
後者だったと思う。
あとはホスト言語から呼んだ時にホスト言語のグローバル変数を汚染しない
>>806 日本語読めないの?
それともLuaに負けたのが悔しいの?
マルチスレッド対応のGUIウィジェットが欲しい
\ l´⌒\⌒\ \\ \ \ ヽ ) ) \\ \\ ( \ \∩___∩ \\ \ \ ⌒⌒| ノ ヽ \\ \ \ / ● ● ト、\ \\\ \ Y | ( _●_) ミ\ \\\ \ / 彡、_ |∪| ノ \ \\\ (____)―ヽノ' ヽ  ̄ ̄ ヽ\\ \, j l l .l } Lua! l (_ノノノノ
どのスクリプト言語でも以下の対応すればマルチスレッドできるのだろうか? ・スタックをスレッドローカルオブジェクトにする ・複数のスレッドで一つの変数を操作したいときは普通に同期オブジェクトなどで同期をとる 2つ目のはsynchronizedブロックでできると素晴らしいな
はたしてマルチスレッド対応する意味があるのか、をまず考えるべきだな
知らないなら黙っててください
818 :
デフォルトの名無しさん :2012/11/19(月) 14:54:48.06
corona sdkで以下のコードがあるのですが local modname = ... local themeTable = {} package.loaded[modname] = themeTable これってなにをしているのでしょうか?
require(modname)とした時にthemeTableを返すよう設定している 何を意図してるのかはそれだけじゃわがんね
>>818 Lua のマニュアルのローダーのところを読むといいよ
821 :
デフォルトの名無しさん :2012/11/20(火) 08:30:15.66
すみません
822 :
デフォルトの名無しさん :2012/11/20(火) 08:32:29.03
最近使ってるデータベースにluaという言語がのったのですが 使い方がよくわかりません 参考になるサイトとかありますか? redisというデータベースです。
釣りだな。 こんなスレを探すことはできるのにググれないはずがない。 それとも検索キーワードに2chと書く癖でもついてるのか?
どのサイトがいいか質問するために日本語のコミュニティを探したってことだろう。 そこまではおかしくないと思うが、 テンプレ、このスレ、過去スレを読まずに質問する根性は 2ch では叩かれて当然。 優しくしてほしいなら知恵袋にでも行けばいい話で、わざわざ 2ch を選んだというのは叩いて欲しかったと考えるのが自然。 なるほど、確かに釣りのようだ。
825 :
デフォルトの名無しさん :2012/11/23(金) 19:17:02.49
すいません 最近使ってるルーターにluaという言語があったのですが使い方がよくわかりません 参考になるサイトとかありますか? ヤマハのルーターです
mrubyソースの量すでにLuaの三倍 しかもC++でのコンパイルには問題があるので mruby自身の拡張にはboost使えない。 CRCとかPOOLとかなにげに組み込みで使いたいのにorz ちなみにmrubyでできてLuaでできないことはほぼ無い。 即値がメソッドを呼べることぐらいか。 "abcdef".upcase()とかかな。
スクリプトソースをプリプロセスして、マルチバイト文字を全部エスケープシークエンス化する、 ってのはどうなんだろうね。
通過するようになるのは望ましくはあるけど マルチバイト対応でもっとも面倒くさい作業である 正規表現エンジンの修正はエンコード依存だから改善しない。 コメントとか定数の読み込みなんてたいした作業じゃないからねぇ。
UTF8を強力に推進していこうぜ!
は?
Squirrelでマルチスレッドって結構簡単なんだね。 sq_newthread使えば行けるわ。コツがいるけど
base64で
説明どぞ
mac-utf8でググれ。 youtubeでマカーがアップした動画のタイトルが閲覧環境によって間抜けなことになったり、 クラウド共有したファイルの名前がマカーに壊されたり... mac対応がスニペットレベルで済んで共有されてるならいいんだが、現実はそうではないし。
ひどいケースだとmacで編集されたコードを同じコンパイラの別osビルドが認識できない テキストエディタ上は何の異常も無く見えるのでめんどくさい
mac-utf8 が使われるのなんてファイル名くらいだろ。 ファイル名をコピペしてコードに入れたりしてるのか?w
>>839 そんなシチュエーション無いけど実際起きてる現象なんで。
NFD対応のために纏めた文字列正規化モジュールが悪さしてる可能性とか、無いわけじゃないと思う。 コンパイラだし。
いや、エディタ側で挿入されてるのが問題なのか。 うーん。
>>839 クリップボード通したら直ってると思うぞ
>>845 特定ファイルがmacの人にUTF8で再セーブされるとwindows上でxbuild通らないんだもの。
妄想とかいわれても。
UTF8は可変長なのをいいことに同じ文字に複数のバイト列を割り当てられるからな。 それでも他のコードよりはよほどいい。
macのかちー
てか、Windows がバカすぎるんだから、 未だに Windows なんか使っているやつの気がしれない。 一生 CP932 でやってろと思う。
macの奴のやってることの方が正しいやん
2chのUTF-8化はまだですか
ぶっちゃけWindowsが優れているから使っているわけではない。 セキリティ保護コンテンツとネットゲの縛り。 Linuxで動作するなら明日にでもそっちに移行しますがなw VisualC++は無料版にランタイムのEULA.txt同梱しないとか卑劣すぎ
動作するよ
結局のところ、文字列プリプロセスやろうとすると、環境ごとに専用のを用意しないとダメって事?
>>853 PSO2動くのかい?
エミュレーターなら性能が出ないのでパス。
>>854 プリプロセッサで対処できるのは定数とコメントだけでしょ?
数値計算だけならそれでよいけど
パス名の処理、パターンマッチング、
ストリームI/Oの改行の扱い、curses、
それらひっくるめての対応を望むなら
内部処理のUCS化、
またはエンコードごとの対応が必要でしょう。
>>856 ひっくるめてしまうとCの問題になるよね
Cが対応すればLuaも対応するし、Cが対応しなければ現状維持
>>850 monoとかjavaのコンパイラに通すならutf16にするのがマナーだから正しくない
utf8が唯一正しい方法だろ
>>859 webとcの世界しか知らない奴は黙れよ
EBCDIC最強ですねわかります
862 :
デフォルトの名無しさん :2012/11/28(水) 01:18:03.97
863 :
デフォルトの名無しさん :2012/11/28(水) 01:19:17.65
すまん 仕事では未だにcobolなんだ、、、
luaってiPhoneで動くの?
iLuaってのがあったな
866 :
デフォルトの名無しさん :2012/11/29(木) 00:04:30.45
cobolにluaは組み込めますか?
OpenCOBOLなら ランタイム側へ組み込んでインターフェースごにょごにょで可能だろうね。
python組み込めますか?
>>846 それmac-utf8全然関係ない話じゃん……
何度も言うが、mac-utf8 が Mac で使われてるのはファイル名位なんだから。
SHELLがutf8なのをもって「位」とかおかしいだろ
>>870 mac以外の同じエディタでutf8保存しても平気なんだけど
(どの環境でも、winでよくあるbom付きutf8にはせず保存)
>>864 勿論動く。
ipadだと簡単なゲームを作れるアプリもある。
luajitはjitせずバイトコードインタプリタで動く。
>>864 勿論動く。
ipadだと簡単なゲームを作れるアプリもある。
ios上の制限から、luajitはjitせずバイトコードインタプリタで動く。
もうluaはオワコン?
重量言語が順調に続いているから軽量言語の出番がないよね
どうしてそう思うの?
\ l´⌒\⌒\ \\ \ \ ヽ ) ) \\ \\ ( \ \∩___∩ \\ \ \ ⌒⌒| ノ ヽ \\ \ \ / ● ● ト、\ \\\ \ Y | ( _●_) ミ\ \\\ \ / 彡、_ |∪| ノ \ \\\ (____)―ヽノ' ヽ  ̄ ̄ ヽ\\ \, j l l .l } Lua! l (_ノノノノ
一般のユーザーの目の見えないところでひっそりと動いています。 意外なところで動いています。 表の世界には出てこないゴルゴさん
ルータなんかでも組み込まれてるね
yamahaルータさん
Vine6のapt(ネットワーク更新ソフト)がLuaと依存関係あるみたい。 ヘルプに出てこないけどこっそり使ってるかも。
AngelScript|Д`)<ちょっと遅くなったけどAngelScript2.25.2記念カキコ
パイソンで良くね? なんで日本人はパイソン使わないの?
一応使うけど 初心者を優遇するから、がんばって上級者になるメリットが少ない
Luaはしゃぶればしゃぶるほど味が出るな
しゃぶれよ
PythonではなくLuaを使うメリットを上げると ・組み込みサイズが小さい。Pythonの1/5〜1/10くらい。 ・ガベコレのON、OFFができる。 ・JITでかなり速い。非JITでもPyより速い。 ・デフォで基本ライブラリをカットできる。 こんなとこかね
そもそもPythonは組み込み簡単なのかな。
組み込み型はluaで必要十分だな。 lua以外を選択する奴はluaの偉大さに気づいておらずかわいそう。
>>889 適当に組み込むなら簡単だね
情報多いし、SWIGもあればBoost.Pythonもあるわで最強クラス
でも、真面目に組み込むとなると結構大変だよ
まず参照カウントの管理がついて回るので面倒この上無い
あとはPythonに限ったことじゃないけど
"組み込みも出来るよ"程度のスタンスの言語は
インタプリタがメモリリークしてる事が多いんだよね
これがつらい
valgrindなどで見なかったことにしようってな事になるんだけど
そのフィルタを掛けるのには当然その言語への理解が必要不可欠なので
軽々しく使えるものではないんだな
Pythonの言語仕様の大きさを考えても、決して簡単だと言えるものではないと思う
全然そんなことないよ。 もしそうならとっくに大問題になってるしな。 基本的な何かが間違ってんじゃね?
オブジェクト指向の言語は 基本的な型とユーザー定義型を分離しないから ユーザー側のミスでもインタプリタ本体が連帯責任になる場合があるんじゃないか
AngelScript|Д`)<オブジェクト指向と聞いて飛んできたわよ
関数型が使えるスクリプト言語ってLuaだけ?
スクリプト言語だと珍しくない機能だと思う。 Wikipediaで第一級関数を検索すればいくつか出てくるぞ
そこに書いてなくてここ的に関係ありそうなスクリプト言語だと、SquirrelとXtalでも使える。 AngelScriptは関数ポインタはあるみたいだけど、これは違うよね・・・
∧_∧ / ̄ ̄ ̄ ̄ ( ・∀・) < Lua!! ⊂/ 9) \____ q( / > >
AngelScript|Д`)ノ<あけおめ
// / / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ Lua!! / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
質問です Squirrelのrand()の範囲指定が分かりません リファレンスには returns a pseudorandom integer in the range 0 to RAND_MAX と書かれてるので RAND_MAX = 30; と値を代入してちゃんと代入されてるのもLogで確認したんですが rand(); を使っても4桁や5桁の数字が出てきます
自己解決しました 自分で範囲乱数の関数を作らないと駄目だったのね
904 :
デフォルトの名無しさん :2013/01/17(木) 12:09:04.62
mrubyもLuaみたいなもんなのかな?
Luaの疑似クラスでメンバ関数内でメンバ変数使う時に self.を省略させる方法はないのでしょうか。
local self = {mem="ber"} local g = _G; g.setfenv(1, self) -- 5.1 -- local g = _ENV; local _ENV = self -- 5.2 g.print(mem)
すみません、説明が足りなかったようです。 下記のようにした時に getParam メンバ関数内で使っている self.x メンバ変数を「self.」を使わないようにという事です。 C++ や Squirrel では this. みたいなのは省略出来るので、 Lua でも省略出来ないのかなと。 Ando = {}; function Ando.new() return { x = 1, getParam = function(self) return self.x; end } end
>>907 selfを省略するためにwithを使ってみた (Lua 5.1)
function with(e, f) return setfenv(f, e)() end
-- return self.x
return with(self, function() return x end)
なるほど…どうしてもそういうトリッキーなやり方になってしまうのですね。 ありがとうございました。
selfを省略するとself.x()とself:x()の違いがわからない 関数とメソッドを共存させるのは難しい どっちか絶滅すればよいのに
アプリケーションの機能の一部を 本体に組み込んだ言語のスクリプトで実装していて機能的に本体と不可分の場合 スクリプトファイルってどこに置く? Windowsなら本体と同じ場所でいいかなと思うけど Linuxの場合はlibにアプリケーションのディレクトリ作って入れる? そもそも本体バイナリに埋め込む?
インストール先のどこかに入れるに一票。 インストール先は固定値にするか、環境変数で指定させるか、起動用コマンドが スクリプトになっててその中に指定してある(インストール時に埋め込む)とか。
zipに入れる
頭の中に置く
>>911 自作プログラムは/usr/localの下に置くのが
UNIX系のならわし。
Linuxでもインストール時にはこの下を
空にしているパターンが多い。
実行ファイル
/usr/local/bin/appname
設定ファイル
/usr/local/etc/appname.profile.lua
こんな感じにしてる。
勝手に自作と決め付けられてもなぁ
最近は /opt じゃね
aptとかで入らないけど有名どこのやつは/opt マイナーなやつと自作は/usr/local
Linuxってログインアカウント一つしかないの?
なぜそう思ったのか。
あれだ、他人から見えない場所に置きたければ どこにおいても自由w /home/MYNAME/binでいいしょ?
/tmp がオヌヌメ
大切なものは、目に見えない 大切なスクリプトは /dev/null に書こう
大事なときに、スカウターが故障する 0が見えるんじゃなくて故障する
926 :
デフォルトの名無しさん :2013/02/11(月) 19:38:49.10
ちょっと教えてくれ。 requireでロードできるモジュールを動的ライブラリじゃなくてホストアプリから提供したい場合、 package.preloadに自分のluaopen_*を登録しとけばいいの?
luaL_dostring(L, "function hoge() ... end"); でいいんじゃないのん?
いや、やりたいのはCで書いたモジュールがrequireでロードされるように したいということなんで。 Programming in LuaにはluaL_registerで有無を言わせず登録するか 動的ライブラリにする方法しか書いてなかったから。
>>926 去年書いた require 関数のラッパーによると・・・合ってると思う
サンクス。明日試してみるよ。
ぅあああああ
thx!
AngelScript|Д`)<AngelScript2.26.0記念カキコ
AngelScriptのnative calling conventionは色々なCPUに対応しているけど メジャーな物で動かないプラットフォームってあるの X86 SH4 MIPS PPC PPC_64 XENON ARM X64 Windowsはx86かx86_64(Windows8だけARM版もあるらしい) MacはPowerPCとx86,x86_64 Xbox 360はXENON PS VitaはARM Androidスマホ・タブレットは殆どARM iPhone・iPadはARM 動かないの無くね? WiiU、3DSやPS3は個人じゃ開発できないから俺には関係無さげ
メジャーどこだけ抑えればいいなら、x86/x64とARMに対応しておけば平気だな
NetBSDカーネルモードでLuaサポート? どんなメリットあるんだろ
C++サポートより簡単そう
PolKitをLL言語にしたらスゴイコンパクトになる予感
LuaJIT 2.0.1 has been released してる
速いな
Lua5.2のluaL_setfuncsのように上位値を共有するC関数って 5.1で作ることはできないんでしょうか?
でかいな
Topaz(PyPyというかRPythonでRuby)の例なんかを見ると Lua(LuaJIT)で他の言語の実装というのもありなんじゃ?と思う 実際どうなんだろ
作って実証すればいいじゃなーい
LuaJITで他の言語を実装するメリットがあるほど、LuaJITが移植された(メンテも継続されている) プラットフォーム数が、実装したい言語の対応プラットフォームより多くないと無意味じゃね?
いつのまにかVLCにLuaが組み込まれてんのな
JythonでPythonのソースコードをJavaのバイトコードに変換 →Dalvik用のバイトコードに変換 としたらPythonでAndroidアプリが書けるのか JVMで動くスクリプト言語はあるが どれもJavaでパーサーを書いているっぽい 新たなスクリプト言語をJVMで動くようにしようと思ったら大変そうだ Flash C++ Compilerは、llvm-gccで一旦LLVM IRに変換してから 再度ActionScriptのバイトコードに変換してるらしい Emscriptenも似た感じ こちらは、LLVM IRを逆アセンブルする必要があるか
いや、llvmを使って変換する時必要なのはllvm-gccのカスタムバックエンドか
Awesome window manager って Luaが組み込まれてんのな
俺もLuaは好きになれない これ見るとLuaの長所はフットプリントが小さいって所だけじゃないか
>>955 そもそも埋め込みがいいとは限らないとか言う時点で・・・
llex.cとlparser.c、lcode.cので
>>955 Lua5.2にメジャーアップデートする前の約2年前の記事だし
その人が過去に指摘した問題点も5.2で改善されてたりするしなぁ
Luaは使えば使うほど味が出るスルメのようなもの。 つまり使わない(使えない)奴には一生良さは分からない。
スルメのようなものって便利な言葉だな
そもそもLuaは組み込み用言語。 つまり馬鹿が組んだプログラムにが組み込んでも馬鹿なままなんだよ。
「もしかしてこの料理にスルメを入れたら合うんじゃないか・・・?」
「う〜ん、いいスメルだ」
この世の全てはスルメのようなものとバールのようなもので出来ている
Luaは、python,rubyみたいなall in oneで外部ライブラリもすぐ追加出来る言語ではないね。 言語とライブラリが単純で拡張性は高いが、必要な外部ライブラリもそれなりにという程度。 どちらかというと、schemeや一時期のjsみたいに自分で成長させる環境かな。
自分のアプリを制御するための言語としては コンパクトで良いと思うけどねぇ
mのつかないrubyのようにOpenSSLとか膨大なライブラリを抱えると ビルドが複雑化して組み込み用としてはめんどくさい。 まぁ、不要なものは取捨選択できるとしても、 ドキュメント読んだり無駄な作業を増やす。
自分も、ライブラリを組み込むだけで使える手軽さと組み込みに関する 情報量の多さからLuaにした。 本当は言語としてはマイナーなLuaよりJavaScriptとかの方がよかったけど、 なかなか替わりになるようなものがないよねぇ。
luaの日本語サイトでナンノコッチャって感じだったが lua-users覗いたら一発で氷解したわ。 英語スラスラ読める奴が羨ましいわ。
日本語訳に変なとこがあるからな・・・
AngelScript|Д`)<英語マジおすすめ
静的型付け言語のスクリプト言語って少なくね? 動的型付けのものが多いイメージ
JSXとかHaxe(ただし動的型も使用可能)とか……
Konohaを忘れてた
AngelScript|Д`)<静的型付け言語と言えば
typescriptも。
AngelScript Version 2.26.1 - 2013/03/02
ポインタが理解できないとかスタックが理解できないとか いってるような奴はそもそもプログラマとしての基礎が なってないか素質がないんだよ。
急にどうした。
Lua6.0では待望の
Lua は今年で20周年なのか
ポインタ理解しようとするとメモリの構造解析から始めないとw ブラックボックス化することで汎用性を広げてるのにわざわざCに回帰かよw ポインタ理解しようと思ったらそれだけで数冊の文献消化せんとアカン。
↑プログラマに向いてない奴のよい例@
文献w
ポインタは基礎科目にいれずに専門分野にせんと裾野は広がらんよ。
「メモリの構造解析から」といってる時点で既にずれてるもんな
元々アセンブラから入ったので、Cのポインタで悩む場所が分かりません。
そもそもポインタなんて日常的概念だしな。 ある店の位置を住所で示したりするわけだし。
店の位地程度の認識なのかw
アドレスを指す変数なんだから、"概念"としてはあってるんじゃないのかな。
それじゃアドレスの説明でポインタじゃないだろ。
家の大きさを加算すると隣の住所が分かったり 隣の住所と引算して家の大きさを求めたり 住所がポインタ並だったらちょっと便利そう…?
メモリを知らずにポインタて
おもいっきりスレ違いで盛り上がれるなんて きっと自演なんだろうけど埋めついでに ポインタの概念自体は大して複雑でも面倒でもない Cの言語仕様がポインタをわかり難い物にしているだけ
概念でコード組めるならDQNでも組めるだろ。
DQNに概念なんてあるわけないだろ
この辺で話題転換にいつものAAでも
AngelScript|Д`)<更新早いよ!
うんこなう
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。