プログラミング言語 L ..
[2ch|▼Menu]
622:デフォルトの名無しさん
07/12/21 22:20:18
>>621
616の関数を実行して無事に終了したいだけです。
suspendで処理がC++に帰った後、sq_wakeupvmでスクリプトを再実行したらstackからlocal a,bが消えていて
printでnullを参照してしまうという問題を解決したいんです。


623:デフォルトの名無しさん
07/12/21 22:29:42
>>621
ここは作者の掲示板ではないが、
現象が再現するミニマムコードを掲載して、仕様と挙動が異なっている点を報告したうえで、
それがバグかどうかを質問する、ってのは別に失礼でも何でもないと思うけどな。

624:デフォルトの名無しさん
07/12/21 23:39:26
>>623
これは現象が再現しない断片コードだし、仕様を取り違えてるし
そもそも一定の条件を満たしていると自分では思えるというだけで
相手に失礼ではないなんてまたどこまで自分勝手な理屈だよ
常識的に考えておかしいだろ

625:デフォルトの名無しさん
07/12/21 23:46:38
>>624
>>616は現象が再現しない、って試したの?
あと作者でもないのに、作者に失礼すぎるぞ、なんて言うのも充分に自分勝手な理屈だと思うけどな

626:デフォルトの名無しさん
07/12/21 23:47:13
>>624
もったいぶらないで教えてやれよ。
無駄レスが多すぎる。

627:デフォルトの名無しさん
07/12/21 23:55:38
>>626
残念ながら2chとはそういう場所なのです。

628:デフォルトの名無しさん
07/12/21 23:59:24
とりあえずSquirrelユーザーがキモいというのはわかった
この際原点に戻ろうじゃないか

入門Luaプログラミング
URLリンク(www.amazon.co.jp)

629:デフォルトの名無しさん
07/12/22 00:07:36
仕様取り違えてると分かってるのなら、ここをこう取り違えてるよーって言ってやればいいだけなんじゃないの?
そんな、作者に失礼とか自分勝手とか卑下しまくってるとか言わんでも…

ちなみに俺はよく分からんけど、>>616の動作は期待に反している感じはする。仕様は知らない。

630:デフォルトの名無しさん
07/12/22 00:10:01
>>625
断片だから試せない
>あと作者でもないのに、作者に失礼すぎるぞ、なんて言うのも充分に自分勝手な理屈だと思うけどな
俺作者だよ
当然のことながらsquirrelのじゃないけどね
作ってるものが馬鹿からバグ呼ばわりされたときどんな気持ちになるかは分かってるつもり

631:デフォルトの名無しさん
07/12/22 00:55:43
>>630
試してないのなら「再現しない」などと断定するなよ。

>>617の箇所のコードを書いた人間の身になって考えると、確かに
一部のコードを載せられて「これはバグか?」と言われるのは
面白いものではないだろうし反論したいことも沢山あるだろうが、

質問に対する回答は一切無く、その感情に任せて馬鹿とか自分勝手とかてめー呼ばわり
するだけってのは作者であろうがなかろうが人間性を疑ってしまう。

632:デフォルトの名無しさん
07/12/22 01:22:15
とりあえず問題がおこる「呼び出し側のコード」を書こうぜ>623
そうしないと使い方がおかしいかどうかすらわからん。

予想:引数の数を間違えてる

633:デフォルトの名無しさん
07/12/22 02:02:25
引数の数間違えたら、実行する前に落ちるんじゃないか?

634:デフォルトの名無しさん
07/12/22 02:15:54
引数の数が違ってると関数呼ばれないね

635:デフォルトの名無しさん
07/12/22 02:20:35
とりあえず>>632がsquirrel使ってないってのはわかった

636:デフォルトの名無しさん
07/12/22 02:26:24
>>631
断片で不完全なものは試せるはずがない試せないものは再現するはずがない
再現するかどうか観察しなくても断片で動かないんだから再現するはずない
事実を述べてるにすぎないよ

>質問に対する回答は一切無く
ちょっとずつリードしてあげてるじゃん
すぐに解決策が示されるとでも思ったか?俺の人間性が疑われようが甘えはゆるさん

637:デフォルトの名無しさん
07/12/22 02:58:27
>>636
甘えを許そうが許しまいがお前さんの勝手だが、それをスレ住人に強要するなよ

レス数はとても少ないがここは色んな人間が見てる
自分のポリシーを他人に強要したり、それを守れない人間を罵倒したいのなら自分の掲示板でやれ



638:デフォルトの名無しさん
07/12/22 03:22:11
squirrelよく知らないけど616を参考にしてやってみた

function CallSuspend1(i, j, k, l, m, n, o)
{
  local a = 10;
  local b = 20;
  print("Enter CallSuspend1\n");
  while (1) {
    suspend("abc");
    print("i = " + i + "\n");
    print("j = " + j + "\n");
    print("k = " + k + "\n");
    print("l = " + l + "\n");
    print("a = " + a + "\n");
    print("b = " + b + "\n");
    break;
  }
  print("Leave CallSuspend1\n");
  return "done.";
}

local co = newthread(CallSuspend1);
print("Call CallSuspend1\n");
local ret = co.call(1,2,3,4,5,6,7);
print("ret = " + ret + "\n");
print("Wakeup CallSuspend1\n");
ret = co.wakeup();
print("ret = " + ret + "\n");


639:638
07/12/22 03:23:12
結果

Call CallSuspend1
Enter CallSuspend1
ret = abc
Wakeup CallSuspend1
i = 1
j = 2
k = 3
l = 4
a = (null : 0x00000000)
b = (null : 0x00000000)
Leave CallSuspend1
ret = done.


640:638
07/12/22 03:36:38
617 の ※ここ の部分を
if (!v->_suspended) v->Pop(params);
に変更して同じコードを実行すると

Call CallSuspend1
Enter CallSuspend1
ret = abc
Wakeup CallSuspend1
i = 1
j = 2
k = 3
l = 4
a = 10
b = 20
Leave CallSuspend1
ret = done.



641:デフォルトの名無しさん
07/12/22 03:46:14
>>638
ありがとう!
やっぱり他の人がやってもそうなるんですかー
638さんはスクリプトから実行しているようですが、
自分はC++から呼び出して実行してました。

>>640
自分も同じ方法で対処するしかないのかなと思ってました。
これって結局仕様なんですか?


642:638
07/12/22 03:48:05
call と違う順番で wakeup してみる

function CallSuspend2(i, j, k, l, m) {
  local a = 10;
  local b = 20;
  print("Enter CallSuspend2\n");
  while (1) {
    suspend("abc");
    print("i = " + i + "\n");
    print("j = " + j + "\n");
    print("k = " + k + "\n");
    print("l = " + l + "\n");
    print("m = " + m + "\n");
    print("a = " + a + "\n");
    print("b = " + b + "\n");
    break;
  }
  print("Leave CallSuspend2\n");
  return "done.";
}
local co1 = newthread(CallSuspend2);
local co2 = newthread(CallSuspend2);
local co3 = newthread(CallSuspend2);
print("Call CallSuspend2\n");
co1.call(1,2,3,4,5);
co2.call(10,20,30,40,50);
co3.call(100,200,300,400,500);
co2.wakeup();
co1.wakeup();
co3.wakeup();


643:638
07/12/22 03:49:23
結果

Call CallSuspend2
Enter CallSuspend2
Enter CallSuspend2
Enter CallSuspend2
i = 10
j = 20
k = 30
l = 40
m = 50
a = 10
b = 20
Leave CallSuspend2
i = 1
j = 2
k = 3
l = 4
m = 5
a = 10
b = 20
Leave CallSuspend2
i = 100
j = 200
k = 300
l = 400
m = 500
a = 10
b = 20
Leave CallSuspend2


644:641
07/12/22 03:49:29
あ、それと今さらなんですが>>616のコードでwhileしてるのって意味ないんですよね
いろいろ試してる過程の残骸ですので無視して下さい

645:638
07/12/22 04:05:19
sq_call が sq_throwerror を呼び出す前に
if (!v->_suspended) v->Pop(params);
でsuspendしているときはスタックを整えていないことから考えるとバグかも


646:デフォルトの名無しさん
07/12/22 04:06:59
>>644
Squirrel全然分からん(昔Hello World試したくらい) けど、勉強がてら俺も>>616試したら同じ結果になった。

ちなみに引数の数を 7つから変更(呼び出し元も変更)していくと、
3つになったところでbが正常になり、2つになるとaもbも正常になった。

これが仕様だとすると何か根本的根本的に使い方間違ってんのかな?
sq_call とか sq_wakeupvm とかの引数とか色々変えてみたけど、勉強がてらなんでまだよく分からん。
整理できたら多少空気読みつつ晒してみる

647:デフォルトの名無しさん
07/12/22 04:08:59
>>630で吹いた。ギャグだとしたら高度だ。

648:デフォルトの名無しさん
07/12/22 04:10:37
>>645
あまりバグバグ言うとまた五月蝿くなるからやめとけ

649:632
07/12/22 04:13:48
すまん、ばりばりつかってるんだが適当ぶっこいたんだ。

おわびにってことで俺もしらべてたんだが、既に638 で結論でてた…

function test(i,j,k,l,m) {
local a = 10;
local b = 20;
for (a=0;a<10;a++) {
suspend();
print("a=" + a + "\n");
print("b=" + b + "\n");
}
print("done");
}

a <- newthread(test);
a.call(1,2,3,4,5);
while (a.getstatus() == "suspended") {
a.wakeup();
}

こんなかんじのコードで簡単に再現できる。test の引数の数を減らすと
ローカル変数が破壊されなくて止まらなくなるので、sq_call での引数の解放でローカル変数を
破壊してるという、641の推測は正しいと思う。どういった修正が適切かは断言できないけど、
バグなのは間違いないので、本家に報告したほうがよさそう。

自分の手元でこの種のスレッドの suspend を使ったコードはいたるところにあるんだが
なんでいままでトラブルなかったんだろう、とおもってコードを見直したら、
パラメータは bindenv したオブジェクトのメンバ経由で渡してて、引数を全くつかってなかったよ^^;

650:デフォルトの名無しさん
07/12/22 04:15:59
>>646
まさにまさに!

自分もまさか4つ以上引数を渡すのはダメとかそういう仕様じゃないよな?
でもこんなイージーなバグがあるわけないよな?

てな具合にずっと悩んでたんです!

651:デフォルトの名無しさん
07/12/22 04:26:04
>>649-650
だからバグだバグだと騒ぐなと

652:デフォルトの名無しさん
07/12/22 04:42:00
君もこんな過疎地でオタ共を統率して悦に入ってないでニュー速だかvipだかにでもお行きなさいよ

653:デフォルトの名無しさん
07/12/22 04:47:46
あー読んでてやっと分かった。
スタック上にローカル変数があろうが無かろうが、suspend時点でのスタック変数を引数の数だけ問答無用で開放してしまうのか。
なんで>>646みたいに現象は引数の数に変化を受けると。

で、単に使い方が悪いのかバグなのかは不明だけど、
squirrelのコードを>>640の通りに変更すれば少なくとも、この問題は解決、と。

654:649
07/12/22 04:56:40
とりあえず下手な英語だが本家にバグとして報告しといたよ。たぶんそのうち適切な対策とってくれるだろう。

655:デフォルトの名無しさん
07/12/22 05:08:02
ほげげ氏・・・w
ところどころ動詞やらが可笑しいけど伝わるな
Unknown table ってのは内部用のローカル変数のテーブルか何かなのかね?

他のスレも見てみたけど本家のフォーラムって意外と閲覧数少ないんだな・・・

656:デフォルトの名無しさん
07/12/22 09:53:25
squirrelは別のとこでやれよ

657:デフォルトの名無しさん
07/12/22 10:28:10
Luaの本はまだなのか。

658:デフォルトの名無しさん
07/12/22 11:48:48
>>656
前スレ&現行スレ嫁

659:デフォルトの名無しさん
07/12/22 15:55:02
次スレから >>1 嫁にできるよう頼む

660:デフォルトの名無しさん
07/12/22 23:29:26
作者対応速いな
URLリンク(squirrel-lang.org)

661:デフォルトの名無しさん
07/12/23 00:00:33
相変わらず閲覧数少ねえーーw

結論としてはやっぱりバグで、修正方法は>>640の通りだったと。
発見された>>616氏、本家に報告されたほげげ氏、その他検証された方々乙でした。



662:デフォルトの名無しさん
07/12/23 00:03:02
>>660
報告乙

663:デフォルトの名無しさん
07/12/23 00:05:59
>>661
621のこと忘れてるぞ
椰子の煽りがなければ住人もここまで迅速に動かなかっただろう

664:デフォルトの名無しさん
07/12/23 00:09:11
自演乙

665:デフォルトの名無しさん
07/12/24 03:36:26
Lua本もう出てたんだ。ProgrammingInLua持ってるけど買う意義あるかな。

666:デフォルトの名無しさん
07/12/24 06:09:14
おおほんとだ出てるな
A5、256ページで\2310ってちょっと高くないかな、、、こんなもんか
買った人レビュー希望

667:デフォルトの名無しさん
07/12/24 07:01:02
>>666
値段はまあ普通だろうね
マイナー言語の一種だし・・・
Erlang入門なんて同じ値段で200ページしかない。
ともかく日本語で出たことが快挙


668:デフォルトの名無しさん
07/12/24 11:33:56
>>666
入門書としてはこれくらいの長さのほうがとっつきやすいかも。
Lua触るの初めてでしたが、読みやすくて、なかなかよかったです。

奥付みてみたら、2008年1月3日初版第一刷発行とか書いてあってワラタ


669:デフォルトの名無しさん
07/12/24 11:47:05
雑誌の「発行日」の記載って、なぜみんな
実際の発売日よりも1ヶ月くらい未来の日付になっているのでしょうか?
URLリンク(q.hatena.ne.jp)

670:デフォルトの名無しさん
07/12/25 00:55:20
Lua本届いたー
第一部が基本文法。標準ライブラリとか。さくっと読める
第二部がアルゴリズム実装しながらその他機能。結構いろいろ詰まってる。
第三部がC言語との連携その他。

入門ならこの厚さがちょうど手頃でいいかも。

671:デフォルトの名無しさん
07/12/25 01:17:43
入門だけか。
実際に使い出して結構経つ俺には、どのぐらい役に立つのかなぁ。

672:デフォルトの名無しさん
07/12/25 05:18:46
>>670
第三部ってどの程度ページある?
ここがある程度詳しく書かれているなら買ってみてもいいかなあ

673:デフォルトの名無しさん
07/12/25 13:28:19
>>672
第三部の内訳
第9章 Luaを拡張してみる - 13
第10章 Luaのモダンな機能 - 15
第11章 C言語との連携 - 13
第12章 Luaの組込み - 10

674:デフォルトの名無しさん
07/12/25 14:21:04
>>673
詳しい情報さんきゅ
帰ったら注文するわ

675:デフォルトの名無しさん
07/12/31 01:59:29
Squirrelの日本語リファレンス復活しとる

676:デフォルトの名無しさん
07/12/31 02:29:49
結構前から復活してる
というより見られなくなってたのはほんの短期間だった

floatのスペルミスはどうにかならないかなあ

677:デフォルトの名無しさん
07/12/31 02:33:56
いや、落ちて戻って繰り返してるし、またいつなくなるか
分からんから、見たかった人は今のうちに見ておくのが良いかと。

678:デフォルトの名無しさん
07/12/31 02:40:16
そうなのか。
保存しとこう。

679:デフォルトの名無しさん
07/12/31 07:40:09
サーバー落ちてただけのようですね。
でもac.jpですから、今のうちということですな

680:デフォルトの名無しさん
07/12/31 15:23:23
あれ、博士課程を修了したからHPも消えた、って話じゃなかった?
かなり長い間見れなかったような気がするんだが。
まあどっちだっていいんだけど。

681:デフォルトの名無しさん
08/01/01 00:52:15
ぅあけましておめでとう!

682:デフォルトの名無しさん
08/01/02 02:20:12
ぅあけおめ!

683:デフォルトの名無しさん
08/01/02 02:40:09
あけおめ!
今年も、組み込み言語が流行るといいな!

684:デフォルトの名無しさん
08/01/09 20:52:06
asdfasfasdfasdfasdf

685:デフォルトの名無しさん
08/01/10 09:07:06
>Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
>test.cpp:
>Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
>Error: 外部シンボル '_luaL_newstate' が未解決(D:\P\BORLANDC\TEST.OBJ が参照)
>Error: 外部シンボル '_luaL_loadfile' が未解決(D:\P\BORLANDC\TEST.OBJ が参照)
>(以下略)

こんな感じでリンクできないんですがどうしたらいいですか。
パスは通ってると思うんです。lua 5.1.2です。

686:デフォルトの名無しさん
08/01/10 10:45:48
>>685
勘だけどextern "C" かな。src/lua.hの代わりにetc/lua.hppを使ってみるとか。

687:685
08/01/10 16:12:22
extern "C"は使ってるんですけどねえ。うーむ

688:デフォルトの名無しさん
08/01/10 21:31:19
再現するコードを貼りたまえ。

689:685
08/01/10 21:46:05
#include <stdio.h>

extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}

main(){
double z;
lua_State *L = lua_open();
lua_dofile(L, "add.lua");
}



690:685
08/01/10 21:47:08
testなのでこれだけなんです。


691:デフォルトの名無しさん
08/01/10 21:49:42
Borlandの場合は命名規則と呼び出し規約が違うからではないかと。
VCでコンパイルされたライブラリをリンクするときに良くある問題。
詳しくはぐぐればわかると思う。細かいことは忘れた。


692:デフォルトの名無しさん
08/01/10 22:00:54
ライブラリはちゃんと設定してる?

693:デフォルトの名無しさん
08/01/10 22:09:06
ライブラリをリンクしてないとか

694:デフォルトの名無しさん
08/01/10 22:28:07
lua_dofileって5.1.2になくね?

695:デフォルトの名無しさん
08/01/10 22:39:24
ないよ。
lua_dofileでぐぐれば代替コードが見つかる。

696:デフォルトの名無しさん
08/01/10 22:46:01
685はなんでリンクまでは行ったの?

697:685
08/01/11 01:32:18
そうなんですよ。コンパイルは通ってるように見えるんでincludeは多分見てる。
普段はbccでは簡単なものしか作ってないしライブラリやリンク設定は自信ないですが。
ヘルプ見て作業フォルダにbcc32.cfg,ilink.cfgを作り
-L"libraryパス";"パス"
-I"includeパス"
などとやりました。頭をわざと--Lとやったら
>エラー E2075: コンフィグレーションファイル中の オプションの間違い : --LD:\〜略
とエラーになるので読んでるとは思うんですが。
685ではもう5個くらいlua_関数があって全部おなじようなエラーです。
lua_dofileはぐぐりました。
685にあるようにヘッダ読んで_luaL_loadfileまではいくようです。
lua_openも_luaL_newstateに置き換わってる。
バイナリエディタでLuaLib.libをのぞくと2つとも文字列は見つかるようです。
そこからは俺の実力ではどうにも。

691でしょか。

698:685
08/01/11 01:35:45
訂正 ilink32.cfgです
すんません


699:デフォルトの名無しさん
08/01/11 03:24:27
そう思うんだったら、luaのライブラリもbccで作ればいんじゃね?

700:デフォルトの名無しさん
08/01/11 05:23:44
まさか、VCのlibをBCCでリンクしようとしてないよな?

701:デフォルトの名無しさん
08/01/11 06:57:05
自分でBCC使ってビルドしてないのかよ。
そりゃ無理にきまっとる

702:デフォルトの名無しさん
08/01/11 07:41:10
とりあえずわかったのは、いいやつが多い

703:デフォルトの名無しさん
08/01/11 08:17:26
しょうがないからBCCでLuaをビルドする一番簡単な方法をおしえてやろう。後は適当にやりなさい。

D:\lua-5.1.2\src>rename luac.c luac.c_
D:\lua-5.1.2\src>bcc32 -I. -D_isatty=isatty *.c
(略)
D:\lua-5.1.2\src>rename *.exe lua.exe
D:\lua-5.1.2\src>lua
Lua 5.1.2 Copyright (C) 1994-2007 Lua.org, PUC-Rio
>

704:685
08/01/11 09:01:59
なるほどいろいろ勉強になります。互換じゃないんですかこういうのは。出直してきます

705:デフォルトの名無しさん
08/01/12 13:59:52
xxx.luaとxxx/table.luaから成り立つライブラリがあって、
--xxx.lua
require "xxx"
module("xxx",package.seeall)
function xxx_func()
 table.insert(......

--xxx/table.lua
require "xxx"
module("xxx.table",package.seeall)
xxx_func()

--main.lua
require "xxx.table"

を実行するとxxx.luaのtable.insertがnilになってる。理由はxxx.table
のモジュールで"insert"を探しに行ってしまっている為。
問題はxxx.luaだけで使うと問題が起きずxxx/table.lua経由で
使用すると問題が起きるという事だけど、この問題の本質って
なんだろう?xxx.”table” 見たいな標準ライブラリと同じ名前の
モジュールを作成したこと?

706:デフォルトの名無しさん
08/01/12 16:19:01
>>705
moduleはxxx.luaの環境を自身のモジュールのテーブルに変更する(この場合_G.xxx)。
つまりtable.insertはxxx.table.insertになる。
moduleにpackage.seeallを指定するとxxx.tableが存在しなかった場合に_G.tableを見に行くようになる。
回避策としてはtable.insertを_G.table.insertにすればいいと思うよ。
めんどくさかったらxxx.luaの先頭で
local table=table

それはそうと、そのコードだと外からxxx_funcを使いたい時にxxx.xxx_funcって書く必要があって不便じゃないか?

707:705
08/01/12 16:43:02
>>706
>local table=table
まさにそれをやってとりあえず回避してます。
ただそうなると後からの拡張に備えるならばxxxで呼び出している
_Gの全てのメンバに対してそれをやらないと安全でない事に。
そうなるとpackage.seeallの役割って・・・。


708:デフォルトの名無しさん
08/01/13 00:27:18
>そうなるとpackage.seeallの役割って・・・。
ただの手抜き道具。
安全云々なら

local _G = _G
module("xxx")

でオシマーイ。

709:デフォルトの名無しさん
08/01/14 10:57:54
Squirrel に関数内で使える静的変数ってないのでしょうか?
今は仕方なくグローバルに置いてるのですが。

710:デフォルトの名無しさん
08/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


711:デフォルトの名無しさん
08/01/14 14:19:30
>>709
URLリンク(muffin.cias.osakafu-u.ac.jp)

ここに静的変数について説明があるけど、これじゃ駄目なのか?

712:デフォルトの名無しさん
08/01/14 15:47:49
レスありがとうございます。

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

>>711
クラスのメンバ変数でしか使えなく、さらに書き換えが無理なので、使い勝手が悪そうです。

713:デフォルトの名無しさん
08/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

714:デフォルトの名無しさん
08/01/14 16:14:01
質問から少し話はそれるけど、
インスタンスを作成すると、そのクラスのスロットの追加変更が効かなくなるってのは
仕様として分かるんだが、静的メンバまで変更不可になるのはどうにかしてしてほしい。

715:デフォルトの名無しさん
08/01/14 16:19:38
えー、それって直訳になってる?
vの初期化がfunc呼出し毎に毎回起こってないかな。
外側のfunctionを適用した結果のreturn function...のfunctionがfuncの値になるんよ。


716:デフォルトの名無しさん
08/01/14 16:24:31
715は712へのレスね。

717:709
08/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());

718:デフォルトの名無しさん
08/01/14 17:16:55
>>717
それグローバル変数 v が確保されてるだけだよ


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

用途的にstatic なら、名前に気をつけつつグローバルにおくしかないはず。

719:デフォルトの名無しさん
08/01/14 18:07:21
日本でLua使ってる製品ってなにかある?

720:デフォルトの名無しさん
08/01/14 18:11:45
同人なら割と

721:デフォルトの名無しさん
08/01/14 18:58:14
同人ゲーム?
ノベルはある?

722:デフォルトの名無しさん
08/01/14 19:07:55
関数内の静的変数なんて、C言語使いしか使わん

723:709
08/01/14 19:08:23
>>718
> それグローバル変数 v が確保されてるだけだよ

<- はlocalをつけずに初期化するためだけのものだと思ってました。
もっと勉強しないと駄目ですね。

724:デフォルトの名無しさん
08/01/14 19:32:29
>>722
そりゃ、Cぐらいにしかないからだろ。
あれば使うよ。

725:デフォルトの名無しさん
08/01/14 21:28:01
>>721
> 同人ゲーム?
> ノベルはある?

あるはずなのは知ってるんだが具体名は知らなかったり...

726:デフォルトの名無しさん
08/01/14 21:30:38
>>722
> 関数内の静的変数なんて、C言語使いしか使わん

オブジェクト指向言語のインスタンス変数は多用されるわけだが

727:デフォルトの名無しさん
08/01/14 21:53:52
>>726
そうだよ。
何がいいたいの?

728:デフォルトの名無しさん
08/01/14 22:00:27
Luaなら同人まで含めれば幾つかは見つかりそうだが
Squirrelとなると皆無な余寒

729:デフォルトの名無しさん
08/01/14 22:00:42
ある手続きと変数があって変数名がその手続きにローカルである
↑↓
あるメソッドとメンバがあってメンバ変数名がメソッドが属するオブジェクトにローカルである

こう?

730:デフォルトの名無しさん
08/01/14 22:13:55
今はDS Luaが熱いよな

731:デフォルトの名無しさん
08/01/14 22:24:46
>>725
ありがとう。

732:デフォルトの名無しさん
08/01/15 12:17:55
>>728 商業作品だけど
Alcotの「フェアチャイルド」方面にSquirrelの予感
使ってるのかどうか確信が持てないのだけどね

733:デフォルトの名無しさん
08/01/15 12:57:10
商用でSquirrel使うはまだ早すぎる気がする
>>616みたいなバグがまだどんだけ潜んでるか分からないし

734:デフォルトの名無しさん
08/01/15 13:35:04
ん あれ吉里吉里なんじゃないの > FairChild

735:デフォルトの名無しさん
08/01/15 13:39:15
TJSか

736:685
08/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、とりあえずは出来ました。ライブラリの作り方おかしいでしょか。

737:デフォルトの名無しさん
08/01/19 15:31:29
Luaでwireshark(Ethereal)をカスタマイズが出来るみたいですな。
ざっと見たところ出来ることとしては
・プロトコル解析処理の追加
・解析結果を利用したカスタムパケットフィルタリング
・統計情報の収集等。
などが出来そうですが、サンプルとか情報少ない・・・。

使ってる人います?

738:デフォルトの名無しさん
08/01/19 15:32:35
あげとこう

739:デフォルトの名無しさん
08/01/19 16:01:56
ti.moo

740:デフォルトの名無しさん
08/01/20 15:13:20
>737
プロトコル解析につかってるよ。
特にバイナリフォーマットのパケットだと解析できた方が便利だよ〜。

741:737
08/01/21 00:03:16
>>740
Dissectorの機能を使用してですか?
wiresharkのリファレンスみただけではどうも
全体像がいまいち分かりにくいです。
どっか纏まったサイトあります?

742:デフォルトの名無しさん
08/01/21 19:44:31
>>732
その方面だと思うんだけど
商業作にはまだと確認しました

URLリンク(sv.kikyou.info)
プラギンはあるんですねー
アドベンチャー系だとコルーチンの使いでがあるところがあるか微妙ですが

743:デフォルトの名無しさん
08/01/21 19:48:09
ほほう

744:デフォルトの名無しさん
08/01/21 21:51:02
そういうソフトでの組み込みスクリプト言語の使い方って
LuaならLuaでシナリオをいわばハードコードするの?

745:デフォルトの名無しさん
08/01/21 21:53:59
それはスクリプトとホストとのインターフェイスの設計次第だろう

746:740
08/01/22 21:48:29
>>741
dissector使ってますよ。
URLリンク(wiki.wireshark.org)
↑を参考にして、あとは試行錯誤の繰り返しですね・・・




747:732
08/01/23 09:59:34
>>742 あーどうもです。確認しました、その方面で合ってます。

748:デフォルトの名無しさん
08/01/23 22:35:01
ファイルサイズ的に軽量な言語でGUI作りたく
DSL見ててmurglaLuaが良いと思ったんですが、
ほかにお勧めのものありますか?

749:デフォルトの名無しさん
08/01/23 22:36:34
murgaluaだった。。。

750:デフォルトの名無しさん
08/01/24 00:11:03
lua-gtkとかLua-Gtkはどう?

751:デフォルトの名無しさん
08/01/24 00:11:43
間違えた
lua_qtとLua-Gtkだ

752:デフォルトの名無しさん
08/01/24 00:15:58
wxPython

753:748
08/01/25 00:12:41
あんがと。
参考にしてみる。ちょっとサイズでかいけど。

754:デフォルトの名無しさん
08/01/25 01:07:07
結果報告よろ

755:748
08/01/25 22:30:19
lua-gtkとmurgaLuaで迷ってる。
現状、なぜかエラーがでて、Lua-gtkが使えてないが、
結構期待が持てる。でもドキュメント類が少ない。。。
まあ、サンプルコード見る限りわかりやすそうではあるが、発展途上って感じもする。
murgaLuaはFLTKベースで、ちょっと癖はあるがGUIBuilderにfuluidとか使える。
あと、検索すると使ってる人結構いるのな。これも結構簡単そう。

lua-qtはqtのない環境なので見てません。
wxPythonはサイズ的に却下。Luaとは桁が違う。

756:デフォルトの名無しさん
08/01/25 23:11:34
そりゃPythonだもんな

757:デフォルトの名無しさん
08/01/26 00:39:27
5.1.3でました

758:デフォルトの名無しさん
08/01/26 00:39:46
>>748
どんなエラー?

Lua-Gtkのドキュメントは全然無いけど、GTK自体のドキュメントは豊富だからそっちを参考にしたほうが良い。
PyGTKやRuby/GTKのドキュメントが読みやすいと思う。

759:デフォルトの名無しさん
08/01/28 20:05:56
こんなんですね。
lua: error loading module 'gtk' from file './gtk.so':
./gtk.so: undefined symbol: gtk_builder_new

760:デフォルトの名無しさん
08/02/03 17:33:52
Squirrelの日本語リファレンスの中の人です。
マニュアルの一番上にも書いていますが、内容を
URLリンク(wikiwiki.jp) に移そうかと思っています。
他によい場所などありますか?

761:デフォルトの名無しさん
08/02/03 20:14:59
>>760
いつもお世話になってます
大学を卒業なされて日本語マニュアル置けなくなったんですか?
自分としては見られればどこでもいいです


762:デフォルトの名無しさん
08/02/04 13:23:47
>>760
おお、おつかれさんです。

そちらでよいかと思われます。

763:デフォルトの名無しさん
08/02/04 13:26:41
>>760みて改めて思ったけど、このスレって、LL以前のさらに小さな組み込み言語用なんだな。
LLスレが軒並み荒れてるのにここが荒れてなくてw 実感した

764:デフォルトの名無しさん
08/02/04 14:35:40
RubyのどこがLightなんだボケェっていう人たちのたまり場です

Wikipedia項目リンク
>ここでいう「軽さ」はプログラマの負担の軽重を指し、実行速度やメモリ消費量に優れているという意味ではない。

知らなかった・・・

765:デフォルトの名無しさん
08/02/04 14:40:24
知らなかったのかよ…


766:デフォルトの名無しさん
08/02/04 15:46:31
Easy Programing Language と言ったほうがいいのでは

767:デフォルトの名無しさん
08/02/04 15:49:12
URLリンク(en.wikipedia.org) には>>764とは逆のこと書いてある気がする。
まあWikipediaが絶対というわけじゃないしな。
あとLuaのページに
>LuaはライブラリとしてC言語を実装している。
って書いてあったんで晒しsage
俺が消してきます

768:デフォルトの名無しさん
08/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.

URLリンク(ll1.ai.mit.edu)
URLリンク(ll1.ai.mit.edu)


769:デフォルトの名無しさん
08/02/04 16:59:21
>>767
確かに全く逆.というか,日本語版は英語版を否定する内容になってるな.
まぁ日本語のLL界隈は変なの沢山湧いてるしな.

770:デフォルトの名無しさん
08/02/04 17:29:54
/.j

771:デフォルトの名無しさん
08/02/04 18:14:11
Programming Languages for Idiots のが適当だな

772:デフォルトの名無しさん
08/02/04 18:33:50
LL談義は専用スレで。Luaスレからは退去しましょう

773:デフォルトの名無しさん
08/02/04 18:34:46
スレリンク(tech板)l50
専用スレ

774:デフォルトの名無しさん
08/02/04 23:33:45
ゲ製板に張られててたのでこっちにも。

LuaのJIT対応版だって

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

The LuaJIT Project
URLリンク(luajit.org)

775:デフォルトの名無しさん
08/02/05 07:54:33
何を今更と思ったけど、こっちでは話題になってなかったっけか

776:デフォルトの名無しさん
08/02/05 08:27:39
ゲ製板にLuaスレってあったっけ?

777:デフォルトの名無しさん
08/02/05 11:15:08
>>776
各種ライブラリ紹介スレ2
スレリンク(gamedev板)

スレチっぽいのでやってないがあっちにもこっち貼った方がいいのかな。

778:デフォルトの名無しさん
08/02/05 22:01:50
JITつくってはええすげえってするんならsquirrelのがいいとおもうんだが
Luaはそのままで十分に速いからウンコな文法でも許されてるんだろうに

779:デフォルトの名無しさん
08/02/05 23:04:54
失礼な

780:デフォルトの名無しさん
08/02/06 10:03:32
Free Pascal Compiler を組み込んで動的に実行する場合の話題もOKですか?

781:デフォルトの名無しさん
08/02/06 10:35:49
>>10-11 参照
組み込む系の用途がメインの言語と処理系のスレ、ってことで
いいと思う。

782:デフォルトの名無しさん
08/02/07 07:41:19
あーなるほど、Pascalくらいコンパイルが早いとそういう選択もアリなのか。


783:デフォルトの名無しさん
08/02/07 20:15:57
TCCっていうの使えばLua内でCを動的に実行もできるらしいぞ
URLリンク(luaforge.net)

784:デフォルトの名無しさん
08/02/08 01:06:33
>>783
つうか、tccならC内でもcを実行できるだろ。

785:デフォルトの名無しさん
08/02/08 18:36:35
このスレの守備範囲だと思ってたらいつのまにか専用スレが立ってた。

Io Language
スレリンク(tech板)

786:デフォルトの名無しさん
08/02/08 18:46:07
Ioって組み込む系の言語だったんだ

787:デフォルトの名無しさん
08/02/08 19:05:02
IoがあるのならSquirrelスレも立ててくるかな

788:デフォルトの名無しさん
08/02/08 19:15:08
別に話題ないだろうにw

789:デフォルトの名無しさん
08/02/08 20:45:54
3レスでdat落ち

790:デフォルトの名無しさん
08/02/09 01:29:48
Ioは、Luaからもインスピレーション受けてるからな
ただ、実際に組み込んで使っている人いるのかな・・・
組み込みサンプルやドキュメントが少なすぎてなんつーか('A`)

791:デフォルトの名無しさん
08/02/10 20:35:17
xyzzy用のLua modeを更新しました。
URLリンク(park7.wakwak.com)

792:デフォルトの名無しさん
08/02/10 21:19:53
>>791
超乙

つか、ニコニコ技術部 の人か?w
応援しとるよ

793:デフォルトの名無しさん
08/02/10 21:24:35
>>791
スレちですが、せっかくなので Netinstaller 対応しませんか?

794:791
08/02/10 23:04:44
NetInstaller使ってないし。package.lとか用意するのめんどくさい。

795:デフォルトの名無しさん
08/02/18 06:45:34
今作ってるゲームにSquirrel採用することに決めた。おまいらよろしく。

796:デフォルトの名無しさん
08/02/18 07:55:09
こちらこそ。

797:デフォルトの名無しさん
08/02/18 11:31:46
squirrelをビッグエンディアンな環境で動かしたいんだけど、
sq.exeを動かす環境がビッグエンディアンじゃないと、
バイトコードがそのまま実行できない

まあ、当たり前なんだが、みんなどうやって解決してるの?


798:デフォルトの名無しさん
08/02/18 23:18:36
>>797
それってWi○?


799:デフォルトの名無しさん
08/02/18 23:24:29
コードを解析していくと書き込みも読み込みも全部階層の深いところで
それぞれ一つの関数を使っていたりするから
(sqstd_writeとか?もう一つ上の関数だったかも。うろ覚え)
そういうところでまとめてスワップさせてるな、俺は。
んでコード改変したものをコンバート用のツールとして使うと。

800:797
08/02/19 12:28:23
>>798
まあ、あえて何かは言わないけど、
今の据え置きってリトルエンディアンの方が少なくね?

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



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

あと読み込みとか書き込みのところでfopenとか使うの止めて欲しい。
あらかじめファイル読み込んだバッファを渡すとかいう風にすればどんな環境でも対応できるのに・・・

802:デフォルトの名無しさん
08/02/19 17:41:07
>>801
エンディアン変換は同意なんだが、後者は普通にそうなってるだろう
sq_compile, sq_compilebuffer, sq_readclosure, sq_writeclosure と全部抽象化されてるぞ?

sqstdlib では fopen つかってるけど、これは実装用のライブラリだし、あと、
直接つかってるわけではなくて、1段階抽象化してあるんで、sqstdio.cpp のあたまの
関数いくつか書きなすだけだから、どちらかというと親切な部類にはいると思う。

803:デフォルトの名無しさん
08/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に結果を表示させるには
何かおまじないが必要なのでしょうか?


804:デフォルトの名無しさん
08/02/21 21:12:13
LuaってHaskell系だったのか
スレリンク(dtm板:216番)

805:デフォルトの名無しさん
08/02/22 07:17:15
そのスレで既に十分突っ込まれてるじゃないか

806:デフォルトの名無しさん
08/02/22 16:29:42
Squirrel_Langって今「最近編集された項目」からしかアクセスできない?

807:デフォルトの名無しさん
08/02/22 16:30:29
「最近編集された項目」なくて「最近の10件」だった

808:デフォルトの名無しさん
08/02/23 20:47:20
ゲーム開発言語は「Lua」を採用
URLリンク(www.watch.impress.co.jp)

809:デフォルトの名無しさん
08/02/23 22:57:40
>>808
Luaハジマタ\('o`)/

810:デフォルトの名無しさん
08/02/23 23:06:41
Luaはいろんなゲームに採用されてるんだから、今さらってかんじ

811:797
08/02/23 23:20:59
最新の2.2stableに、ビッグエンディアンで出力できるよう、
やっつけのパッチ当てたけど、需要ある?


812:デフォルトの名無しさん
08/02/24 01:48:06
あるある
というか本家にフィードバックしようぜ

813:デフォルトの名無しさん
08/02/24 03:09:28
>>808
うぉ、日本メーカーでLua使用って公開したところはほとんど記憶にないから、
結構インパクトあるねぇ

そういや今GDCの季節かぁ

814:デフォルトの名無しさん
08/02/24 08:58:56
Lua最高!

815:デフォルトの名無しさん
08/02/24 12:30:51
>>811
改変したソースも公開してくれよ

816:767
08/02/24 14:51:34
URLリンク(wikiwiki.jp)

WikiのSquirrelのページに添付させてもらいました。
SQ_BIGENDIANを定義しておくと、出力が強制的にBEになるです。

やっつけなので、これを基に、ちゃんとした対応をしてくれると嬉しいなあ。
ちなみに、出力したバイトコードが、ビッグエンディアンな環境で動作することは確認済み。

でも、SQ64と_UNICODEは知らん。
_UNICODEはこれからやるかも。




最後に、スレ住人&Wikiの管理人さんアリガトー(゚∀゚)

817:797
08/02/24 14:52:30
>>816
自分のハンドル間違えた('A`)

818:デフォルトの名無しさん
08/02/24 17:24:11
URLリンク(www.watch.impress.co.jp)
>Squirrelについては、「メモリの消費量は増してしまうが、それだけの価値がある」という白石氏。
>プログラムの7割はSquirrelを使用しているという。

ですって。

819:デフォルトの名無しさん
08/02/24 17:28:30
うは、Squirrelきたか・・・
つかこのスレに書いてる人いそうだなw

820:デフォルトの名無しさん
08/02/24 19:22:53
スクエニの人もこのスレ見てるんだろうなあ。書き込みもしてるかもね
スクエニが使っているという情報はでかい
Squirrelを採用する企業もこれからかなり増えるんじゃないか
いい感じ

821:デフォルトの名無しさん
08/02/24 20:17:18
製品レベルのゲームコードの大半がメモリマネージド言語で書かれる時代が来たということか。
開発効率に対する姿勢が比較的アメリカ型なスクエニがこういう方法をとったことは不思議ではない。
C/C++(&内製の半端なスクリプト言語)一辺倒から離れられないプログラマや企業はいよいよ
ついていけなくなるかもね。

822:デフォルトの名無しさん
08/02/24 20:26:54
歴史的なしがらみが無いなら移行は簡単だと思うけど。
基本的にスクリプト言語の方が習得難度が低いからね。
まぁその歴史的なしがらみが大きな障壁になるのかもしれないけどさ。
1言語しか扱えないニセグラマとか猿スクリプタとか。

823:デフォルトの名無しさん
08/02/24 20:40:34
>>822
プロでそんな人はいなさそう
むしろ、メモリの動的確保が信じられないとか、そっちの方が使わない理由だろう

824:デフォルトの名無しさん
08/02/25 01:33:21
SCEはLua(C)で、NintendoはSquirrel(C++)か。
オレはそれならSCE派だな。Nintendoは趣味じゃねー。

825:デフォルトの名無しさん
08/02/25 01:37:01
C++の方が開発元に権限が集中しやすいので、それが狙いというのはあるかもね。
そこまで考えれたらいっぱしのマネージャークラス?

826:デフォルトの名無しさん
08/02/25 07:39:05
んでまたちょっとするとカリカリにチューニングした爆速ゲームがもてはやされると。ループですな。

827:デフォルトの名無しさん
08/02/25 07:56:22
DOS版DOOMみたいな、全てのコードがカリカリでないと爆速はむりぽ、
という時代じゃないし

828:デフォルトの名無しさん
08/02/25 14:24:07
>>824
別に任天堂本体が使ってる訳じゃあんめえ
スクエニでしょ

829:デフォルトの名無しさん
08/02/25 15:59:46
Squirrelと心中

830:デフォルトの名無しさん
08/02/25 19:35:14
>>828
DSの開発言語の標準がC++らしいので、Nintendo自体もSquirrelに
まんざらではない可能性も。

831:デフォルトの名無しさん
08/02/25 21:29:10
>>830
WiiはともかくDSにSquirrelはない。メモリ的に

832:デフォルトの名無しさん
08/02/25 21:36:22
>>824
スクエニつーかリードプログラマの趣味じゃね?>Squirrel
カリカリチューンとかいってもLuaとかSquirrelで全部やろうとしたらそら重いけども。
単なるイベントハンドラとして使うだけならどっちでも大して変わらんでしょ。

LuaPlayerでゲーム作るノリでゲーム中の全オブジェクトの管理・更新をLuaとかSquirrelとかで書いちゃう人って結構多いの?

833:デフォルトの名無しさん
08/02/25 22:20:35
大手企業はただ使うだけじゃなく
積極的に開発にフィードバックしてくれたら良いけどな
ただ日本企業にそこまで期待できるか実際のところ何ともいえないけど

834:デフォルトの名無しさん
08/02/25 23:23:49
新・業界標準

835:デフォルトの名無しさん
08/02/25 23:35:58
急に賑わってきたね
ちょっと前まで過疎スレだったのに

836:デフォルトの名無しさん
08/02/25 23:37:43
まあCEDECあったしな

837:デフォルトの名無しさん
08/02/25 23:38:17
GDCだったw

838:デフォルトの名無しさん
08/02/26 00:21:49
Squirrel面白そうだな
うちでも採用検討しようかな

839:デフォルトの名無しさん
08/02/26 01:34:26
つかSquirrel更新来てたのか
>>811さりげなさ過ぎて気付かなかったw

>>616のバグもめでたく正式に修正されたみたいね
-fixed a coroutine bug

840:デフォルトの名無しさん
08/02/26 21:37:58
>>806 すいません、今修正しました。
あと、上のほうでSquirrelでJITみたいな話がありましたが、
ちょっと前にJITをつけたものを公開してます。
速度的にはあまり早くなりませんし、コードも汚いですがよろしければどうぞ。
URLリンク(muffin.cias.osakafu-u.ac.jp)


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5050日前に更新/210 KB
担当:undef