トップページtech
1001コメント297KB

プログラミング言語 Lua  その3

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/10/14(土) 13:13:52
だれか サポ−ト 頼む。
前々スレ http://pc5.2ch.net/tech/kako/1034/10341/1034182349.html
前スレ http://pc8.2ch.net/test/read.cgi/tech/1063711237/
本家 http://www.lua.org/
lua-users http://lua-users.org/
LuaForge http://luaforge.net/
Lua 5.1 リファレンスマニュアル(日本語訳)
http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html
0710デフォルトの名無しさん2008/01/14(月) 13:40:53
Squirrel 知らんけど、もしクロージャがあればどうにかなるのでは。
Lua だとこんな。
> f = (function ()
local v = 0
return function ()
v = v + 1
return v
end
end)()
> print(v)
nil
> print(f())
1
> print(f())
2
> print(f())
3
> print(v)
nil
0711デフォルトの名無しさん2008/01/14(月) 14:19:30
>>709
ttp://muffin.cias.osakafu-u.ac.jp/~matumoto/cgi-bin/xt.cgi?prog/squirrel_lang

ここに静的変数について説明があるけど、これじゃ駄目なのか?
0712デフォルトの名無しさん2008/01/14(月) 15:47:49
レスありがとうございます。

>>710
真似てみて以下のようなコードを書きましたが、
実行時しても、111が出力されました。
function func()
{
v <- 0;
return function() {
return ++v;
}();
}
print(func());
print(func());
print(func());

>>711
クラスのメンバ変数でしか使えなく、さらに書き換えが無理なので、使い勝手が悪そうです。
0713デフォルトの名無しさん2008/01/14(月) 16:12:55
同じくLuaしか知らんからマニュアル見ながら勘で答えるけど
{ local v = 0; function count() { return ++v; }}
こんな感じのことがしたいのかな。Luaなら
do local v = 0; function count() v = v + 1; return v; end; end
0714デフォルトの名無しさん2008/01/14(月) 16:14:01
質問から少し話はそれるけど、
インスタンスを作成すると、そのクラスのスロットの追加変更が効かなくなるってのは
仕様として分かるんだが、静的メンバまで変更不可になるのはどうにかしてしてほしい。
0715デフォルトの名無しさん2008/01/14(月) 16:19:38
えー、それって直訳になってる?
vの初期化がfunc呼出し毎に毎回起こってないかな。
外側のfunctionを適用した結果のreturn function...のfunctionがfuncの値になるんよ。
0716デフォルトの名無しさん2008/01/14(月) 16:24:31
715は712へのレスね。
07177092008/01/14(月) 16:31:53
>>716
以下のように書き直してみたところうまく動きました。
local v = 0; では駄目で v <- 0; にする必要があるみたいです。
動作原理がいまいちわかっていないので詳しく追ってみます。
local f = (function() {
v <- 0;
return function() {return ++v;}
})();
print(f());
print(f());
print(f());
0718デフォルトの名無しさん2008/01/14(月) 17:16:55
>>717
それグローバル変数 v が確保されてるだけだよ


>>710 の例ぽいことは squirrel なら generator つかえば簡単にできるけど、
それはあくまで「その中に閉じた変数」であって、全体で共有される static 変数じゃない。

用途的にstatic なら、名前に気をつけつつグローバルにおくしかないはず。
0719デフォルトの名無しさん2008/01/14(月) 18:07:21
日本でLua使ってる製品ってなにかある?
0720デフォルトの名無しさん2008/01/14(月) 18:11:45
同人なら割と
0721デフォルトの名無しさん2008/01/14(月) 18:58:14
同人ゲーム?
ノベルはある?
0722デフォルトの名無しさん2008/01/14(月) 19:07:55
関数内の静的変数なんて、C言語使いしか使わん
07237092008/01/14(月) 19:08:23
>>718
> それグローバル変数 v が確保されてるだけだよ

<- はlocalをつけずに初期化するためだけのものだと思ってました。
もっと勉強しないと駄目ですね。
0724デフォルトの名無しさん2008/01/14(月) 19:32:29
>>722
そりゃ、Cぐらいにしかないからだろ。
あれば使うよ。
0725デフォルトの名無しさん2008/01/14(月) 21:28:01
>>721
> 同人ゲーム?
> ノベルはある?

あるはずなのは知ってるんだが具体名は知らなかったり...
0726デフォルトの名無しさん2008/01/14(月) 21:30:38
>>722
> 関数内の静的変数なんて、C言語使いしか使わん

オブジェクト指向言語のインスタンス変数は多用されるわけだが
0727デフォルトの名無しさん2008/01/14(月) 21:53:52
>>726
そうだよ。
何がいいたいの?
0728デフォルトの名無しさん2008/01/14(月) 22:00:27
Luaなら同人まで含めれば幾つかは見つかりそうだが
Squirrelとなると皆無な余寒
0729デフォルトの名無しさん2008/01/14(月) 22:00:42
ある手続きと変数があって変数名がその手続きにローカルである
↑↓
あるメソッドとメンバがあってメンバ変数名がメソッドが属するオブジェクトにローカルである

こう?
0730デフォルトの名無しさん2008/01/14(月) 22:13:55
今はDS Luaが熱いよな
0731デフォルトの名無しさん2008/01/14(月) 22:24:46
>>725
ありがとう。
0732デフォルトの名無しさん2008/01/15(火) 12:17:55
>>728 商業作品だけど
Alcotの「フェアチャイルド」方面にSquirrelの予感
使ってるのかどうか確信が持てないのだけどね
0733デフォルトの名無しさん2008/01/15(火) 12:57:10
商用でSquirrel使うはまだ早すぎる気がする
>>616みたいなバグがまだどんだけ潜んでるか分からないし
0734デフォルトの名無しさん2008/01/15(火) 13:35:04
ん あれ吉里吉里なんじゃないの > FairChild
0735デフォルトの名無しさん2008/01/15(火) 13:39:15
TJSか
07366852008/01/16(水) 12:52:20
>>703 出来ました。
ぐぐってmakefileが見つかったけどうまくいかないんで、
tlib lua.lib /C +lapi.obj,lua.lst
tlib lua.lib /C +lauxlib.obj ,lua.lst
tlib lua.lib /C +lbaselib.obj ,lua.lst
(略)

と、luaのsrcすべての.objからmylua.lib作ったんですが、
>ilink32 c0x32.obj cw32.lib import32.lib mylua.lib test.obj
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: 外部シンボル '_luaO_log2' が未解決(...\MYLUA.LIB|ltable が参照)
Error: 外部シンボル '_luaO_nilobject_' が未解決(...\MYLUA.LIB|ltm が参照)
(以下同様)

仕方ないのでgrepしてluaO_がlobject.hに見つかったので(あとturboFloatエラーも検索して)
>ilink32 c0x32.obj lobject.obj test.obj cw32.lib import32.lib mylua.lib
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland

>c0x32.exe
8.000000desu

add.luaで3+5、とりあえずは出来ました。ライブラリの作り方おかしいでしょか。
0737デフォルトの名無しさん2008/01/19(土) 15:31:29
Luaでwireshark(Ethereal)をカスタマイズが出来るみたいですな。
ざっと見たところ出来ることとしては
・プロトコル解析処理の追加
・解析結果を利用したカスタムパケットフィルタリング
・統計情報の収集等。
などが出来そうですが、サンプルとか情報少ない・・・。

使ってる人います?
0738デフォルトの名無しさん2008/01/19(土) 15:32:35
あげとこう
0739デフォルトの名無しさん2008/01/19(土) 16:01:56
ti.moo
0740デフォルトの名無しさん2008/01/20(日) 15:13:20
>737
プロトコル解析につかってるよ。
特にバイナリフォーマットのパケットだと解析できた方が便利だよ〜。
07417372008/01/21(月) 00:03:16
>>740
Dissectorの機能を使用してですか?
wiresharkのリファレンスみただけではどうも
全体像がいまいち分かりにくいです。
どっか纏まったサイトあります?
0742デフォルトの名無しさん2008/01/21(月) 19:44:31
>>732
その方面だと思うんだけど
商業作にはまだと確認しました

ttps://sv.kikyou.info/trac/kirikiri/browser/kirikiri2/trunk/kirikiri2/src/plugins/win32/squirrel
プラギンはあるんですねー
アドベンチャー系だとコルーチンの使いでがあるところがあるか微妙ですが
0743デフォルトの名無しさん2008/01/21(月) 19:48:09
ほほう
0744デフォルトの名無しさん2008/01/21(月) 21:51:02
そういうソフトでの組み込みスクリプト言語の使い方って
LuaならLuaでシナリオをいわばハードコードするの?
0745デフォルトの名無しさん2008/01/21(月) 21:53:59
それはスクリプトとホストとのインターフェイスの設計次第だろう
07467402008/01/22(火) 21:48:29
>>741
dissector使ってますよ。
http://wiki.wireshark.org/Lua
↑を参考にして、あとは試行錯誤の繰り返しですね・・・


07477322008/01/23(水) 09:59:34
>>742 あーどうもです。確認しました、その方面で合ってます。
0748デフォルトの名無しさん2008/01/23(水) 22:35:01
ファイルサイズ的に軽量な言語でGUI作りたく
DSL見ててmurglaLuaが良いと思ったんですが、
ほかにお勧めのものありますか?
0749デフォルトの名無しさん2008/01/23(水) 22:36:34
murgaluaだった。。。
0750デフォルトの名無しさん2008/01/24(木) 00:11:03
lua-gtkとかLua-Gtkはどう?
0751デフォルトの名無しさん2008/01/24(木) 00:11:43
間違えた
lua_qtとLua-Gtkだ
0752デフォルトの名無しさん2008/01/24(木) 00:15:58
wxPython
07537482008/01/25(金) 00:12:41
あんがと。
参考にしてみる。ちょっとサイズでかいけど。
0754デフォルトの名無しさん2008/01/25(金) 01:07:07
結果報告よろ
07557482008/01/25(金) 22:30:19
lua-gtkとmurgaLuaで迷ってる。
現状、なぜかエラーがでて、Lua-gtkが使えてないが、
結構期待が持てる。でもドキュメント類が少ない。。。
まあ、サンプルコード見る限りわかりやすそうではあるが、発展途上って感じもする。
murgaLuaはFLTKベースで、ちょっと癖はあるがGUIBuilderにfuluidとか使える。
あと、検索すると使ってる人結構いるのな。これも結構簡単そう。

lua-qtはqtのない環境なので見てません。
wxPythonはサイズ的に却下。Luaとは桁が違う。
0756デフォルトの名無しさん2008/01/25(金) 23:11:34
そりゃPythonだもんな
0757デフォルトの名無しさん2008/01/26(土) 00:39:27
5.1.3でました
0758デフォルトの名無しさん2008/01/26(土) 00:39:46
>>748
どんなエラー?

Lua-Gtkのドキュメントは全然無いけど、GTK自体のドキュメントは豊富だからそっちを参考にしたほうが良い。
PyGTKやRuby/GTKのドキュメントが読みやすいと思う。
0759デフォルトの名無しさん2008/01/28(月) 20:05:56
こんなんですね。
lua: error loading module 'gtk' from file './gtk.so':
./gtk.so: undefined symbol: gtk_builder_new
0760デフォルトの名無しさん2008/02/03(日) 17:33:52
Squirrelの日本語リファレンスの中の人です。
マニュアルの一番上にも書いていますが、内容を
http://wikiwiki.jp/lua/?FrontPage に移そうかと思っています。
他によい場所などありますか?
0761デフォルトの名無しさん2008/02/03(日) 20:14:59
>>760
いつもお世話になってます
大学を卒業なされて日本語マニュアル置けなくなったんですか?
自分としては見られればどこでもいいです
0762デフォルトの名無しさん2008/02/04(月) 13:23:47
>>760
おお、おつかれさんです。

そちらでよいかと思われます。
0763デフォルトの名無しさん2008/02/04(月) 13:26:41
>>760みて改めて思ったけど、このスレって、LL以前のさらに小さな組み込み言語用なんだな。
LLスレが軒並み荒れてるのにここが荒れてなくてw 実感した
0764デフォルトの名無しさん2008/02/04(月) 14:35:40
RubyのどこがLightなんだボケェっていう人たちのたまり場です

http://ja.wikipedia.org/wiki/%E8%BB%BD%E9%87%8F%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E
>ここでいう「軽さ」はプログラマの負担の軽重を指し、実行速度やメモリ消費量に優れているという意味ではない。

知らなかった・・・
0765デフォルトの名無しさん2008/02/04(月) 14:40:24
知らなかったのかよ…
0766デフォルトの名無しさん2008/02/04(月) 15:46:31
Easy Programing Language と言ったほうがいいのでは
0767デフォルトの名無しさん2008/02/04(月) 15:49:12
ttp://en.wikipedia.org/wiki/Lightweight_languages には>>764とは逆のこと書いてある気がする。
まあWikipediaが絶対というわけじゃないしな。
あとLuaのページに
>LuaはライブラリとしてC言語を実装している。
って書いてあったんで晒しsage
俺が消してきます
0768デフォルトの名無しさん2008/02/04(月) 16:18:51
MITでのLL1ではこう書いてるね。まぁ観点の違いと思われ。

We use the term "lightweight languages" to describe some of the common features of these new languages.
The term "lightweight" refers not to actual functionality, but to the idea that these languages are easy to acquire, learn, and use.
Examples that would fall into this category include Perl, Python, Ruby, Scheme (and scsh), and Curl.

http://ll1.ai.mit.edu/cfp.html
http://ll1.ai.mit.edu/
0769デフォルトの名無しさん2008/02/04(月) 16:59:21
>>767
確かに全く逆.というか,日本語版は英語版を否定する内容になってるな.
まぁ日本語のLL界隈は変なの沢山湧いてるしな.
0770デフォルトの名無しさん2008/02/04(月) 17:29:54
/.j
0771デフォルトの名無しさん2008/02/04(月) 18:14:11
Programming Languages for Idiots のが適当だな
0772デフォルトの名無しさん2008/02/04(月) 18:33:50
LL談義は専用スレで。Luaスレからは退去しましょう
0773デフォルトの名無しさん2008/02/04(月) 18:34:46
http://pc11.2ch.net/test/read.cgi/tech/1188997302/l50
専用スレ
0774デフォルトの名無しさん2008/02/04(月) 23:33:45
ゲ製板に張られててたのでこっちにも。

LuaのJIT対応版だって

LuaJIT ? a Just-In-Time Compiler for Lua.

The LuaJIT Project
http://luajit.org/
0775デフォルトの名無しさん2008/02/05(火) 07:54:33
何を今更と思ったけど、こっちでは話題になってなかったっけか
0776デフォルトの名無しさん2008/02/05(火) 08:27:39
ゲ製板にLuaスレってあったっけ?
0777デフォルトの名無しさん2008/02/05(火) 11:15:08
>>776
各種ライブラリ紹介スレ2
http://pc11.2ch.net/test/read.cgi/gamedev/1177886529/

スレチっぽいのでやってないがあっちにもこっち貼った方がいいのかな。
0778デフォルトの名無しさん2008/02/05(火) 22:01:50
JITつくってはええすげえってするんならsquirrelのがいいとおもうんだが
Luaはそのままで十分に速いからウンコな文法でも許されてるんだろうに
0779デフォルトの名無しさん2008/02/05(火) 23:04:54
失礼な
0780デフォルトの名無しさん2008/02/06(水) 10:03:32
Free Pascal Compiler を組み込んで動的に実行する場合の話題もOKですか?
0781デフォルトの名無しさん2008/02/06(水) 10:35:49
>>10-11 参照
組み込む系の用途がメインの言語と処理系のスレ、ってことで
いいと思う。
0782デフォルトの名無しさん2008/02/07(木) 07:41:19
あーなるほど、Pascalくらいコンパイルが早いとそういう選択もアリなのか。
0783デフォルトの名無しさん2008/02/07(木) 20:15:57
TCCっていうの使えばLua内でCを動的に実行もできるらしいぞ
http://luaforge.net/projects/lua-tcc/
0784デフォルトの名無しさん2008/02/08(金) 01:06:33
>>783
つうか、tccならC内でもcを実行できるだろ。
0785デフォルトの名無しさん2008/02/08(金) 18:36:35
このスレの守備範囲だと思ってたらいつのまにか専用スレが立ってた。

Io Language
http://pc11.2ch.net/test/read.cgi/tech/1201100624/
0786デフォルトの名無しさん2008/02/08(金) 18:46:07
Ioって組み込む系の言語だったんだ
0787デフォルトの名無しさん2008/02/08(金) 19:05:02
IoがあるのならSquirrelスレも立ててくるかな
0788デフォルトの名無しさん2008/02/08(金) 19:15:08
別に話題ないだろうにw
0789デフォルトの名無しさん2008/02/08(金) 20:45:54
3レスでdat落ち
0790デフォルトの名無しさん2008/02/09(土) 01:29:48
Ioは、Luaからもインスピレーション受けてるからな
ただ、実際に組み込んで使っている人いるのかな・・・
組み込みサンプルやドキュメントが少なすぎてなんつーか('A`)
0791デフォルトの名無しさん2008/02/10(日) 20:35:17
xyzzy用のLua modeを更新しました。
http://park7.wakwak.com/~blackbox/
0792デフォルトの名無しさん2008/02/10(日) 21:19:53
>>791
超乙

つか、ニコニコ技術部 の人か?w
応援しとるよ
0793デフォルトの名無しさん2008/02/10(日) 21:24:35
>>791
スレちですが、せっかくなので Netinstaller 対応しませんか?
07947912008/02/10(日) 23:04:44
NetInstaller使ってないし。package.lとか用意するのめんどくさい。
0795デフォルトの名無しさん2008/02/18(月) 06:45:34
今作ってるゲームにSquirrel採用することに決めた。おまいらよろしく。
0796デフォルトの名無しさん2008/02/18(月) 07:55:09
こちらこそ。
0797デフォルトの名無しさん2008/02/18(月) 11:31:46
squirrelをビッグエンディアンな環境で動かしたいんだけど、
sq.exeを動かす環境がビッグエンディアンじゃないと、
バイトコードがそのまま実行できない

まあ、当たり前なんだが、みんなどうやって解決してるの?
0798デフォルトの名無しさん2008/02/18(月) 23:18:36
>>797
それってWi○?
0799デフォルトの名無しさん2008/02/18(月) 23:24:29
コードを解析していくと書き込みも読み込みも全部階層の深いところで
それぞれ一つの関数を使っていたりするから
(sqstd_writeとか?もう一つ上の関数だったかも。うろ覚え)
そういうところでまとめてスワップさせてるな、俺は。
んでコード改変したものをコンバート用のツールとして使うと。
08007972008/02/19(火) 12:28:23
>>798
まあ、あえて何かは言わないけど、
今の据え置きってリトルエンディアンの方が少なくね?

>>799
やっぱ、それしかないのね
なんかうまい方法があればなーと、思ったんですが、
楽はできないですね
ありがとうです

0801デフォルトの名無しさん2008/02/19(火) 17:03:33
一応コンシューマ機の環境で使うことも考慮してるみたいだから、
だったらエンディアン変換くらい対応しといてくれと思ったりするよね

あと読み込みとか書き込みのところでfopenとか使うの止めて欲しい。
あらかじめファイル読み込んだバッファを渡すとかいう風にすればどんな環境でも対応できるのに・・・
0802デフォルトの名無しさん2008/02/19(火) 17:41:07
>>801
エンディアン変換は同意なんだが、後者は普通にそうなってるだろう
sq_compile, sq_compilebuffer, sq_readclosure, sq_writeclosure と全部抽象化されてるぞ?

sqstdlib では fopen つかってるけど、これは実装用のライブラリだし、あと、
直接つかってるわけではなくて、1段階抽象化してあるんで、sqstdio.cpp のあたまの
関数いくつか書きなすだけだから、どちらかというと親切な部類にはいると思う。
0803デフォルトの名無しさん2008/02/20(水) 12:44:02
Luaとは直接関係無いのですが
EclipseにLuaEclipse入れて動作させて見たところ
ConsoleViewに
<terminated> test.lua [Lua Standalone Application] hogehoge\lua5.1.exe test.lua
と出てしまいます。手打ちで
>hogehoge\lua5.1.exe test.lua
としたときはちゃんと結果が表示されたのですが
EclipseのConsoleViewに結果を表示させるには
何かおまじないが必要なのでしょうか?
0804デフォルトの名無しさん2008/02/21(木) 21:12:13
LuaってHaskell系だったのか
http://pc11.2ch.net/test/read.cgi/dtm/1194648279/216
0805デフォルトの名無しさん2008/02/22(金) 07:17:15
そのスレで既に十分突っ込まれてるじゃないか
0806デフォルトの名無しさん2008/02/22(金) 16:29:42
Squirrel_Langって今「最近編集された項目」からしかアクセスできない?
0807デフォルトの名無しさん2008/02/22(金) 16:30:29
「最近編集された項目」なくて「最近の10件」だった
0808デフォルトの名無しさん2008/02/23(土) 20:47:20
ゲーム開発言語は「Lua」を採用
http://www.watch.impress.co.jp/game/docs/20080223/gdc_home.htm
0809デフォルトの名無しさん2008/02/23(土) 22:57:40
>>808
Luaハジマタ\('o`)/
■ このスレッドは過去ログ倉庫に格納されています