プログラミング言語 L ..
[2ch|▼Menu]
452:デフォルトの名無しさん
07/08/23 23:43:10
言ってることがどんなに真だろうが
実際のデータがなかったら何も言っていないのといっしょだよこういう話は

453:デフォルトの名無しさん
07/08/23 23:47:00
>>452
はいはい。お前は口を出すとマイナスにしかならないから黙っててねこういう話は

454:デフォルトの名無しさん
07/08/24 00:13:42
>>453
>>452が何をいってるのかちゃんと理解できてるか?
キレてるのだけはわかるんだが
黙ってろとかどんだけだよ

455:デフォルトの名無しさん
07/08/24 00:20:08
どおおおんだけええええええ

456:デフォルトの名無しさん
07/08/24 01:25:58
まあいろいろと突っ込まれるのは覚悟してました
Squirrelのことだったらまだしもそれ以前に用語の使い方がおかしかったりとか
そういう指摘もあるだろうなあ、と
それはもう未熟っぷりを晒す覚悟でしたのでいいのですが、
Squirrelに関する間違いはここで出して欲しいです。それをまとめたいので。
特に>>448さんのdelegateに関しては具体的に理由を聞きたいです
常駐、非常駐的なことをするのって他に方法あるんですかね?
個人的にそこら辺は死活問題なんですよね

457:デフォルトの名無しさん
07/08/24 01:26:54
安価447だったw

458:デフォルトの名無しさん
07/08/24 01:46:54
つーかめんどくさいとか、投げやりとか書いてるし、
最初から真面目にやろうとしてないじゃん。

スレは荒れるし、入門者が間違った知識覚える恐れもあるし、
やる気無いんだったら別にやらなくていいから、変なこと書かないでくれ。

459:デフォルトの名無しさん
07/08/24 01:48:57
>>454
なにキレてんの?

460:デフォルトの名無しさん
07/08/24 01:50:07
>>458
間違いを指摘するやる気もないなら、お前が黙ってろって話だと思うよ

461:デフォルトの名無しさん
07/08/24 01:54:45
>>460
黙ってろとかどんだけだよ

>>458
書かないでくれとかどんだけだよ

どおおおんだけええええええ

462:デフォルトの名無しさん
07/08/24 02:04:02
どんだけとかどんだけだよ

463:デフォルトの名無しさん
07/08/24 02:13:18
>>461
どんだけ〜言われたのが相当気に障ったのか相当気に入ったのか知らないけど
書きたいだけならどっか他のとこで発散してきてくれると助かる

464:デフォルトの名無しさん
07/08/24 02:28:00
このスレ定期的に小学生の口ゲンカみたいなやりとりがあるけど
luaってそういう言語だったっけ
複数手前のスクリプトのステートメントを参照できる変数があって
それを一部書き換えてevalできるとか
すごいプログラムがかけそうだが

465:デフォルトの名無しさん
07/08/24 02:47:24
>>463
キレてんのはお前だろ。どっかいってね。

466:デフォルトの名無しさん
07/08/24 03:49:14
>>456
常駐、非常駐的なことってのがよくわからないんだけど
いらなくなったら消すテーブルの名前をあらかじめ決めておいて
スクリプトの中でいらなくなったら消すものはそのテーブル内に定義しておいて
そのテーブルをいらなくなったら消す
じゃだめなの?

467:デフォルトの名無しさん
07/08/24 07:54:03
オブジェクト指向のスクリプト言語が遅いのはほぼ定説だと思うが

468:デフォルトの名無しさん
07/08/24 17:56:15
>>466
リファレンスにある関数登録みたいなやり方でテーブルを登録するってことですか

そうかー、普通そうするのか

469:デフォルトの名無しさん
07/08/24 18:07:59
でもそれって、GCやrefcountを阻害するだけじゃない?


470:デフォルトの名無しさん
07/08/25 00:12:03
>>468
どうも納得されてるみたいだけど
常駐、非常駐的なことってのが未だに謎なので少し説明してよ
>リファレンスにある関数登録みたいなやり方
ってどこのこと?

あまりにニッチな要求に応えなくちゃならんならスクリプトでどうにかしようとするより
squirrelのソースコードいじるほうが利口な場合もあるかもしれないよ?

471:デフォルトの名無しさん
07/08/25 00:41:37
>いらなくなったら消す
いるものは残して、いらないものは消す。おっしゃってる通りのことをやりたいだけです。
ルートテーブルに全部のスクリプト読み込んでたら、そういう区別ができないじゃないですか

>>リファレンスにある関数登録みたいなやり方
>ってどこのこと?
SQFUNCTION型の関数をルートテーブルに登録するやつみたいなやり方…、じゃないんですか?

472:デフォルトの名無しさん
07/08/25 01:46:07
>>471
APIでやるならそのとおり

↓みたいなスクリプトをルートテーブルをpushしたあとdofileしちゃってもいいし
tmptable <-
{
 a = function(v) { return v + 1; },
 v1 = 0,
 v2 = 3.1415
};

473:デフォルトの名無しさん
07/08/27 11:16:30
>>472
166はコンパイラを削ってつかっている予感

常駐の意味がよくわからないけど、
がんばって使ってる感がいいね


474:デフォルトの名無しさん
07/08/29 22:09:09
IronLua じゃなくて Nua かよ(w
URLリンク(www.codeplex.com)

475:デフォルトの名無しさん
07/08/29 23:09:00
ぬあ?

476:デフォルトの名無しさん
07/08/30 01:12:36
あえて外人っぽく発音すればヌワだが

477:デフォルトの名無しさん
07/08/30 01:22:53
にょわーっ

478:デフォルトの名無しさん
07/08/30 20:47:36
Nuaで検索するとFate系ばっかだな

479:デフォルトの名無しさん
07/09/01 13:13:08
>>166さんの文章ってどこ?

Squirrel - Lua/組み込み系言語 Wiki*
URLリンク(wikiwiki.jp)

こっちにもないんだけど・・・roz

480:デフォルトの名無しさん
07/09/01 13:18:28
とりあえず張られてるリンクを探してみるとか
そういうこと考えないのか?

481:デフォルトの名無しさん
07/09/01 13:41:26
>>480
お!はてなのやる気のないゲームプログラマさんのページか!
dクスだぜ
じっくりよむぜ

482:デフォルトの名無しさん
07/09/02 21:09:16
質問

lua_State *L = lua_open();
int* hoge = new int;
lua_register(L, "hoge", hogehoge);
luaL_dofile( L, "hoge.lua");

この時、関数hogehoge内で変数hogeをいじりたいのですが、
どうすればいいのでしょうか?
グローバルに置くとかしか解決方法がないのならあきらめますが…

483:デフォルトの名無しさん
07/09/03 16:01:58
>>466
思ったんですが、そのやり方で登録した関数はスクリプト側から呼び出せないんじゃないでしょうか


484:デフォルトの名無しさん
07/09/04 11:57:00
API はまだよく知らないんですが、ローカル変数をほかの関数からいじるには、
その関数に変数の参照を渡す必要があります。
たぶんテーブルで囲んであげればいいです。Lua のコードで書くとこんな感じ。

function hogehoge(box)
box[1] = 456
end

local hoge = {123}
hogehoge(hoge) -- ここで hoge の内容が変わる

485:デフォルトの名無しさん
07/09/04 15:04:00
Generic Pascal Lua Library
URLリンク(www.eonclash.com)

486:デフォルトの名無しさん
07/09/04 19:15:48
>>485
DelphiとFPCをサポートしてる?

487:デフォルトの名無しさん
07/09/04 20:50:51
>>482
lua_register(L, "hoge", hogehoge);

lua_pushlightuserdata(L, static_cast<void*>(hoge));
lua_pushcclosure(L, hogehoge, 1);
lua_setglobal(L, "hoge");
に変えればいんじゃね?

hogehogeの中身は
int hogehoge(lua_State *L)
{
 int* hoge = static_cast<int*>(lua_touserdata(L, lua_upvalueindex(1)));
 // hogeを使っていろいろ
}

あと、hogeはどこでdeleteするの?
delete後にhogehogeを呼ばれたらアウト

488:デフォルトの名無しさん
07/09/11 02:21:22
luabindのこれってバグ?

object.hpp:256 ---------
template<class LHS, class RHS>
typename enable_binary<bool,LHS,RHS>::type
operator!=(LHS const& lhs, RHS const& rhs)
{
 return !(lhs < rhs); // '<' => '==' の間違い?
}
---------
luabinder の意見求む!!


489:デフォルトの名無しさん
07/09/18 15:27:05
age

490:デフォルトの名無しさん
07/09/18 23:28:09
ぅあ

491:デフォルトの名無しさん
07/09/19 21:23:46
ぅあ

492:デフォルトの名無しさん
07/09/22 20:39:47
ょゅぅょゅぅ

493:デフォルトの名無しさん
07/09/23 19:05:00
|ナ|ナ|ナ

494:デフォルトの名無しさん
07/09/24 00:30:35
っょぃっょぃ

495:デフォルトの名無しさん
07/09/24 00:37:35
ょゎぃょゎぃ

ぅあ

496:デフォルトの名無しさん
07/09/28 17:42:45
   ドゴォォォ
    ∞        ぅゎ ょぅι゛ょ っょぃ
   ┃( '-')  、(;´д`) 
   ┣ノ、 )= 三 )n ) Σ   
      〉  / / <  

497:デフォルトの名無しさん
07/10/14 12:47:04
皆さんLuaインタプリタを何でコンパイルしてる?

C言語として
=> lua_gettable等がlongjmpかますので
  C++と一緒に使うのは相当つらい。

C++言語として
=> 上記問題は解決する(longjmpでは無く
  throwつかうから)がluaとリンクするプログラム
  は全てC++でコンパイルする羽目になる

C++言語として&LUA_APIをextern "C"として宣言
=> 割合ましだが、相変わらずLuaとリンクする
  プログラムは-fexceptions等をつけてコンパイル
  する必要あり。

意見よろ

498:デフォルトの名無しさん
07/10/14 13:27:27
つDLL

499:デフォルトの名無しさん
07/10/14 14:09:07
俺は
>C++言語として&LUA_APIをextern "C"として宣言

Cのライブラリを使う予定がない場合はextern "C"無しでもいいかも。
LuaのソースコードがそのままC++でコンパイルできると知った時はちょっと感動したもんだ。

500:497
07/10/14 14:43:32
>>499
やっぱそれが妥当ですかねぇ。

ただ、Cのライブラリ使う場合Cのライブラリを-fexceptions付き
でコンパイルしないといけないので(lua->Cライブラリ->luaが起こる
場合)、ソースが手に入ることが前提になるんだよね。
linux&gccな環境でソースが手に入らないことはまれだろうけど。


501:デフォルトの名無しさん
07/10/14 15:38:22
そもそもCには例外処理が言語に組み込まれてないんだけど、 -fexception つけると
何が変わるの?

502:497
07/10/14 16:26:57
>>501
えーっと、gccの話ね。(VCにも似たオプションがあったはず)
関数呼び出しが”C++<1:try> => C<2> => C++<3:throw>” となる場合
<2>の部分のスタックをまき戻す為の情報を付加しているんだと
思う。自信ないけど。
これが無いと例外発生時にAbortしてしまう。

>>499の例で言うと、
lua(C++) => C言語ライブラリ => lua_gettable(...)
なんて場合、lua_gettable内で発生した例外が
C言語ライブラリ内を通ることになる。


503:デフォルトの名無しさん
07/10/14 16:57:07
>>502
つけてもつけなくても素通りするだけで変わらないと思ってたけど、
つけないと abort しちゃうのか。

URLリンク(gcc.gnu.org)
-fexceptions
"... However, you may need to enable this option when compiling C code that needs to interoperate properly with exception handlers written in C++. ..."

なんかぼかして書いてあるけど、そういうことね。

ありがと。

504:デフォルトの名無しさん
07/10/24 19:54:40
hoshu

505:デフォルトの名無しさん
07/10/27 13:51:35
luaファイルで標準ライブラリの関数(math.randomとか)を使った関数を定義
しC++側からその関数を呼び出すとlua_pcallのところで失敗します。きちん
とluaopen_math()なども呼び出しているのですが・・・
同じ経験がある人とかいませんか?

506:デフォルトの名無しさん
07/10/27 16:48:44
>>505
lua_pcallの戻り値とエラーメッセージは?
それを確認すると解決の糸口が見つかると思う。

507:デフォルトの名無しさん
07/10/27 17:29:12
lua_pcallの戻り値は2なんで実行時エラーの模様です。デバッガで追ってみると
スタックからpopするところでエラーが出ていました。引数はきちんと
スタックにつんでいるので問題ないと思うんですが・・・
標準ライブラリを使わない関数とかは普通に実行できるんで、全く理由が
分かりません。

508:デフォルトの名無しさん
07/10/27 17:55:59
再現するソースを見せるんだ

509:507
07/10/27 18:26:57
//関数呼び出し部分
lua_getglobal(m_L, "hoge");
lua_pcall(m_L, 0, 1, 0); //ここでエラー
int ret = static_cast<int>(lua_tonumber(m_L, -1));

//luaファイルで定義した関数
function hoge
return math.random(100);
end

luaL_loadfile()は呼び出し済みです。

510:506
07/10/27 19:03:01
>>507
戻り値が0以外の時は文字列型のエラーメッセージが
スタックのトップに置かれているからそれを見れ。

511:デフォルトの名無しさん
07/10/27 19:52:02
>>509
luaopen_math呼んで無いじゃん。
呼んでる部分を含めた再現ソースを見せなさい。

512:507
07/10/27 22:31:55
>>510
スタックトップのエラーメッセージを調べたら引数が足りないというエラー
でした。マニュアルにはmath.randomの定義は以下のように書いてあったので
普通に通るもんだと思っていたんですが・・・
「引数無しで呼ばれると、math.random は [0,1) の範囲の実数の疑似乱数を
返す。数値 n を渡すと、math.random は [1,n] の範囲の整数の疑似乱数を
返す。 2つの引数 l と u を渡して呼んだときは、 math.random は [l,u]
の範囲の整数の疑似乱数を返す。」
引数を2個で渡すとエラーは出なくなったんですが、常に0が返ってきます。
引数0個だと正常に動作します。何なんでしょうね。

>>511
luaopen_mathは呼んでいます。

513:デフォルトの名無しさん
07/10/27 23:22:03
>>512
再現する最小限のソースを全て晒したら?
省略する奴に限って、省略したところに問題があるのはよくある話だから。

514:デフォルトの名無しさん
07/11/02 01:34:46
ミニマムコードを上げろー

515:デフォルトの名無しさん
07/11/02 03:54:43
このスレ的にはTJS2の組み込みってどうなの?

516:デフォルトの名無しさん
07/11/02 04:49:28
スレ違い

517:デフォルトの名無しさん
07/11/02 08:13:59
え?べつにいいんじゃないの
LLでしょTJS2って

518:デフォルトの名無しさん
07/11/02 08:19:06
pLua (Lua wrapper for FPC, Lazarus, and Delphi)
URLリンク(eonclash.com)

519:デフォルトの名無しさん
07/11/02 15:32:46
>>517
スレタイ嫁
ここはLL全般じゃなくてぅあのスレだ。

つっても過疎ってるから俺は構わないけど。

520:デフォルトの名無しさん
07/11/02 18:55:19
List[1]={"name","addr","phone"}
List[2]={"name","addr","phone"}
List[n]={"name","addr","phone"}

このような記述のList.luaがあるとして、これをrequireした後に書き出しすると、

List[4]={"name","addr","phone"}
List[1]={"name","addr","phone"}
List[3]={"name","addr","phone"}
List[2]={"name","addr","phone"}

のように、順序が崩れてしまいます。
テーブルのソートとはどのように行うのでしょうか?

521:デフォルトの名無しさん
07/11/02 19:04:32
>>520
1から始まる数値キーなら
for i,v in ipairs(List) do ... end
で回せばキーの順序はずれないと思うんだけどな。

実際ソートするならこれだけど。
table.sort(table, function(a,b) return a.x < b.x end)
みたいな。

ただこれでソートするにしても、テーブルは配列状(キーは1から始まる数値)である必要がある。

522:デフォルトの名無しさん
07/11/02 19:07:27
>>521
ありがとうございます。

現在のところ、

List[2]={"name","addr","phone"}
List[3]={"name","addr","phone"}
List[n]={"name","addr","phone"}

などのように1から始まる保証は無く、かつ数値が2, 3, 5, 6, 8, ...のように
飛び番になる可能性もあります。
実際のところ、処理上は問題は出ないのですが、
ログを取った際の可読性の問題でソート可能であればしたいのです。

523:デフォルトの名無しさん
07/11/02 19:22:39
>>522

Listとは別に、

sort_table[1]={no=5,"name","addr","phone"}
sort_table[2]={no=1,"name","addr","phone"}
sort_table[3]={no=13,"name","addr","phone"}
....

って形に詰めなおして>>521みたいにnoでソートすればおk

524:デフォルトの名無しさん
07/11/02 23:05:56
>>519
前スレ嫁。ここはLL全般のスレだ。

お前が構おうが構うまいがな。

525:デフォルトの名無しさん
07/11/02 23:27:58
>>524
お前が構おうが構うまいがここはスレタイ通りLuaのスレだ。
ここが何のスレかを知るのになぜ前スレを読む必要がある?

LL全般について議論したいのならお前がLLスレを立てればいいだけのこと。

526:デフォルトの名無しさん
07/11/02 23:45:50
>>524-525
前スレみるまでもなく>>8-11辺りでわかるんじゃ?
スレも半分超えてるのになんで今更突然……。

527:デフォルトの名無しさん
07/11/03 01:00:15
ぅあだけでもいっぱいいっぱいなのに
LL一般扱ってたらスレがいくらあっても足りないぜ

528:デフォルトの名無しさん
07/11/03 05:06:28
>>525
はいはい、新参が知ったかすんな。


>>527
何が一杯一杯なの?

つうか、お前過疎ってるから構わないって言った癖に意味不明すぎんな。

529:デフォルトの名無しさん
07/11/03 08:40:49
1年経で500レス程度だからLL全般スレでも良さげだな。
次スレ(いつになるかわからんけど)のスレタイは変えたほうが良いかもね。

530:デフォルトの名無しさん
07/11/03 08:48:29
情報が錯綜するからLuaがらみの話題だけでいいよ。
勝手に連立政権にされちゃ迷惑だ。

531:デフォルトの名無しさん
07/11/03 10:53:29
せいぜい Luaとその仲間 ぐらいかな。

LL特集になぜかLuaは入れてもらえないことが多いんだこれが

532:デフォルトの名無しさん
07/11/03 11:07:19
なんでだろう?
Webサーバとの組み合わせを指向してないからかな?

533:デフォルトの名無しさん
07/11/03 11:28:57
>>519
違う。
組み込み言語全般のスレ。
過去ログ嫁

スレタイは、前回、組み込み言語にしろって言ったのに、
Luaだけにしやがっただけで

534:デフォルトの名無しさん
07/11/03 11:35:56
「俺様はそうしろと言ったのに無視しやがって」

535:デフォルトの名無しさん
07/11/03 11:39:37
>>534
ワロタw
まさしくその通りw

536:デフォルトの名無しさん
07/11/03 11:59:15
>>534
そうですw

537:デフォルトの名無しさん
07/11/03 12:51:30
前スレでもLuaの話題なんてたいしてなかったんで、LL系の話題は全般取り扱うことになったの。
このスレ用のwikiもURLはluaだけど、LLならOKってなってるでしょ。
URLリンク(wikiwiki.jp)


「情報が錯綜する」ってバカですか。
錯綜するほど情報が出てないでしょ。
むしろ組み込み言語の情報が集まった方がいい。

>>534=535=536
そうじゃない。前スレではLL全般ということで同意がとれていていた。


538:デフォルトの名無しさん
07/11/03 12:55:10
>>537
そんなに煽りに反応しなくて良いよ。

539:デフォルトの名無しさん
07/11/03 12:56:14
前スレの終わり辺りではLL全般のスレにしようって流れだったんだけど、
なんだかんだでスレタイは変わらなかったんだよ。
前スレDAT落ちしてる上に、1年以上も前の話だから、
忘れてる人も多いだろうし、最近来た人が知らないのはしょうがない。

540:デフォルトの名無しさん
07/11/03 12:56:41
ちなみに俺は533ではない。

てか、ここ一年未満の新参が増えて、古参はluaをもう見放したのか?

541:デフォルトの名無しさん
07/11/03 13:13:34
squirrelが気になってます


542:デフォルトの名無しさん
07/11/03 15:21:49
>>540
ノシ 前スレからいます。

テンプレがあまり良くないよね。
前スレの終り頃はゴタゴタしてて急だったから立ててくれた人を責められないけど。

人も集まってるみたいだしテンプレを考えるにはいい機会かも。
できたら>11のWikiに書いておくと。

543:デフォルトの名無しさん
07/11/04 21:18:36
LL全般スレになったらlua専用スレ立てればいいだけじゃんw
民主主義は多数決で決まるんだよ、ばかがw

544:デフォルトの名無しさん
07/11/04 22:29:07
多数決も取ってないのによく言えるね、ばかがw

545:デフォルトの名無しさん
07/11/04 23:50:22
というか、たぶんLua専用する理由ってなに?
このLL全般でやってる現在でさえスローペースなんだよ? 全然意味がわからない。

546:デフォルトの名無しさん
07/11/04 23:52:22
日本語で言え俺orz

えー、Lua専用にしようという意見があるみたいなんですが、
別にレスも多いわけではないしそういった話が出る理由がわかりません。

……なんか、ごめん……。

547:デフォルトの名無しさん
07/11/05 00:06:05
Lua専用にするっていうか,別に総合スレをLuaスレにしようって言ってるわけじゃなし.
今Lua専用なんだから格別の理由がなければそのままだろ.
過疎スレは過疎スレなりに3スレまで来てるんだし
わざわざ総合にするって話が出る理由がわかりません.

548:デフォルトの名無しさん
07/11/05 00:16:03
別にLL総合スレを立てて、Luaスレが寂れて落ちるようなら
統合と言うことでいいんじゃない?
現状うまくいってるところを、わざわざ乱すこともないと思う。

549:デフォルトの名無しさん
07/11/05 00:17:56
元々スレタイはLuaだけど、内容的には総合スレ同然だと思うが。

550:デフォルトの名無しさん
07/11/05 01:23:03
そこの認識だよね。
ここが『Lua専用』だと思ってる奴って前スレとか持ち出すまでもなくこのスレ読んでないんじゃないかと。

551:デフォルトの名無しさん
07/11/05 01:34:36
687 :1:2006/03/16(木) 16:08:48
とりあえず、Wikiでも作ってみようかと思うんだが必要?

694 :デフォルトの名無しさん:2006/03/17(金) 09:57:30
このスレのWikiを作ろうかって話なんだから
看板はLuaで一応Luaの情報メインだけど
アプリ組み込み系なら多少の脱線はあり、ぐらいでいいだろ。
メジャーな言語は他所でやってくれ。

695 ::2006/03/17(金) 17:49:21
LightWeightLanguageがでかすぎるから。
やっぱ組み込み向けscriptつーことで

701 :デフォルトの名無しさん:2006/03/18(土) 21:36:56
なしてそこまでLightWeightLanguageでまとめたがるのか
明らかにLua wikiの方がわかりやすいタイトルと思うのだが

703 :デフォルトの名無しさん:2006/03/19(日) 02:18:56
このスレが、LightWeightLanguageの情報OKってなったからだろ。

LuaだけでWikiほんとに必要か?
マニュアルだけで結構十分じゃない?w

このスレの情報の出具合からいっても、
Wikiつくっても寂れるの見えてない?


↑前スレですでに総合スレにする流れになってたし、
そもそも前スレでも総合的に扱ってたはず。
このスレの最初のほうにも書いてあるし。

552:デフォルトの名無しさん
07/11/05 08:40:28
>>547-548
お前、これまでの話聴いてなかったのか?

553:デフォルトの名無しさん
07/11/05 09:30:03
>>547-548
・・・
ほんとにもう・・・乱してるのがおまえらだよ にわか

554:デフォルトの名無しさん
07/11/05 13:32:10
LuaLuaいってるやつは
上でさんざんでているsquirrelはなんだと思っているんだろう

555:デフォルトの名無しさん
07/11/05 18:26:14
これとか?
URLリンク(sourceforge.net)

検索ついでにテンプレ用にsquirrel関連を拾っておくか
The programming language Squirrel
URLリンク(www.squirrel-lang.org)
URLリンク(sourceforge.net)
SqPlus URLリンク(sourceforge.net)
Squirrel Shell URLリンク(sourceforge.net)

556:デフォルトの名無しさん
07/11/05 20:42:18
>>554
"squirrel"でこのスレを検索すれば、
lua専用スレじゃないということは、前スレを見るまでも無くあきらかだな。

557:デフォルトの名無しさん
07/11/06 01:52:37
SquirrelはLuaからの派生だからどちみちここで良いのでは。

558:デフォルトの名無しさん
07/11/06 02:00:57
別にluaからforkしたわけじゃないんで、派生とはいえない けど、
squirrelはこのスレでいいのは事実

559:デフォルトの名無しさん
07/11/10 06:44:52
次スレタイトル案
【Lua】LightWeightLanguage統合【squirrel】
【Lua】組み込み言語統合【squirrel】

560:デフォルトの名無しさん
07/11/10 07:04:42
>>243に一票

561:デフォルトの名無しさん
07/11/10 07:22:32
Squirrelの情報欲しい人の為にもスレタイにSquirrelは欲しい気がする
そうすりゃSquirrelスレが立つ心配も無さそうだしな

…ところで、次スレの話はまだ早すぎないか?
何だか、自分超元気なのに次期国王の話を聞かされる王様の気分だ

562:デフォルトの名無しさん
07/11/10 07:48:54
ぅあで喜んではしゃいでたのはやっぱりニワカか。

なんか違和感あったんだよな。

563:デフォルトの名無しさん
07/11/10 08:19:44
Squirrel重すぎ

564:デフォルトの名無しさん
07/11/10 09:02:58
ぎりぎりになって決まってなくて結局いまのまま……みたいなのは避けたい。

565:デフォルトの名無しさん
07/11/10 09:48:25
>>559
なかなかいいんじゃないかな

>>562
このスレがLuaで機能してるから他の言語くるな、なんて
質問しかしないような奴がいいそうなこったな

566:デフォルトの名無しさん
07/11/10 11:07:01
そしてPerl, Ruby, Python, PHP, JavaScriptで埋め尽くされる、と

567:デフォルトの名無しさん
07/11/10 11:51:30
566 ニワカ乙

568:デフォルトの名無しさん
07/11/10 12:28:24
守備範囲は
・アプリ組み込み用
・軽量小規模言語
・他にスレがない
あたりかな。巷のLLとはちょっと違う気がする。
LL自体定義があるのかよくわからないが。

569:デフォルトの名無しさん
07/11/10 13:11:20
>>568
ニワカ乙

570:デフォルトの名無しさん
07/11/10 13:43:20
>>568
そんなとこだろうな というか
ずっとそんなスレのつもりだった

571:デフォルトの名無しさん
07/11/10 14:09:13
LLだと、RubyやPythonも入るからな・・・
いや、組み込む話題については、歓迎かも知れんけど

572:デフォルトの名無しさん
07/11/10 14:19:33
JavaScriptも当然入るな。
PHPは組み込みあったっけ。

573:デフォルトの名無しさん
07/11/10 15:45:11
>>571
そっち系の話題は向こうのスレじゃあんま出ないしな。
いや、もちろん出してもスレ違い扱いされたりはしないだろうが。

574:デフォルトの名無しさん
07/11/10 23:40:43
>568 の箇条書きをもとに
>571-573 のニュアンスを加えて文章にしてみた。

[[
アプリケーション組み込み用の小規模言語についてのスレです。
話題の中心はLua、Squirrelですが他の言語もOK。
]]

575:デフォルトの名無しさん
07/11/10 23:46:17
1に何書こうが誰も読みゃしないのでスレタイに注意を払うべき

576:デフォルトの名無しさん
07/11/11 03:59:09
>>559
> 【Lua】組み込み言語統合【squirrel】
に一票

577:デフォルトの名無しさん
07/11/11 06:37:50
スレタイとは全然関係ないことなのですが、いくつか質問があります。
よろしくお願いします。

1,luaの実行を内部から一時停止、外部から再開する方法にcoroutine以外のやり方はありますか?
2,luaの実行を外部から一時停止&再開することはできますか?
3,フックされた関数からluaを一時停止させることはできますか?

578:577
07/11/11 07:45:09
スレタイとは関係あります
「スレタイ変更とは関係ありません」でした><

579:デフォルトの名無しさん
07/11/12 20:12:36
>>577
1、2はファイバorスレッドorプロセスが絡む話なの?
そうであればやり様はいくらでも有る。実行コンテキストを
変えずにという意味であれば他に方法は無いと思う。
3、”フックされた関数”=>”Luaから呼ばれたC言語の関数”という
意味であればlua_yieldを使うかcocoを使うか。


580:デフォルトの名無しさん
07/11/14 01:03:42
>>579
フック関数からyieldできるなんて意外でした。
ありがとうございます。

581:デフォルトの名無しさん
07/11/14 15:41:09
C側から実行されたluaプログラムを
gdbやvcのような環境でデバッグできませんか?

582:デフォルトの名無しさん
07/11/14 16:11:03
できない

だけど、Lua専用IDEからならできるよ
Decoaだっけ

583:デフォルトの名無しさん
07/11/14 23:55:43
>>581
Decodaは割合評判いいらしいね。

他に名前聞いたものとしては
VSLua(有料)
LuaEdit(無料・微妙というか未完成)

wxLuaにもビジュアルデバッガついてたような気がするけど、embed環境で動かせるかどうかは不明。

584:デフォルトの名無しさん
07/11/17 19:26:16
>>592
>>593
Decodaいいですね。組み込みで使いたかったです。
LuaEditも試してみたのですが、luaをdllにする必要があるのと、
そのdllのバージョンを合わせるのが大変で途中でやめてしまいました。
luaの自作ライブラリをdllにしてしまった方が早そうな感じです。
どもでした。

585:デフォルトの名無しさん
07/11/17 19:36:03
>>592>>593の人よろしく

586:デフォルトの名無しさん
07/11/17 21:47:01
ループの先頭に戻るという処理は、
continueでしょうか、nextでしょうか?

URLリンク(uri.sakura.ne.jp)
この辺を参考にしているのですが、breakなどしか見当たらなくて困っています。

587:デフォルトの名無しさん
07/11/17 22:15:10
>>586
何故か無い

588:デフォルトの名無しさん
07/11/17 22:32:33
continueないんだよねー
海外でもこの話題ちらほら見かけるけど。何故無いのかは知らない。

"continue" construct in Lua loops
URLリンク(lua-users.lua.org)

589:デフォルトの名無しさん
07/11/17 23:11:01
なるほど、Luaには存在しないんですね。。
レスありがとうございました。

590:デフォルトの名無しさん
07/11/18 05:35:00
新しいバージョンが出ると誰かがcontinueパッチを作ってるはず

591:デフォルトの名無しさん
07/11/18 14:31:58
continueが必要なループはイテレータのようにfunction作成してreturnしてる。
breakも必要なときは返値で判定。

592:デフォルトの名無しさん
07/11/18 15:05:18
breakはまだしも、continueをreturnで代用?
コード汚そう。

593:デフォルトの名無しさん
07/11/18 15:55:19
prototype.jsのeachのようになるからそんなでもない。


594:デフォルトの名無しさん
07/11/18 15:57:24
いちおう言っておくと「だからcontinueいらない」って話ではなく。
continueあったほうがそりゃ素直に書けるしなあ。

595:デフォルトの名無しさん
07/11/18 18:31:11
>>593
汚いじゃん

596:デフォルトの名無しさん
07/11/18 18:35:45
>>593
最悪レベルの汚さだと思う

597:デフォルトの名無しさん
07/11/20 00:10:47
Lua本(゚∀゚)コター!!
URLリンク(staff.aist.go.jp)

598:デフォルトの名無しさん
07/11/20 00:47:15
コタワァ*:.。..。.:*・゚(n‘∀‘)η゚・*:.。..。.:* ミ ☆

599:デフォルトの名無しさん
07/11/20 01:21:05
しかも今年中の予定か。
実現したら自分へのクリスマスプレゼントにする……っ!

600:デフォルトの名無しさん
07/11/20 01:26:39
なにかの死亡フラグに見えた

601:デフォルトの名無しさん
07/11/20 15:30:26
日本語解説書期待age

602:デフォルトの名無しさん
07/11/21 08:30:15
かつてPascalにもbreak、continueなくて、
まあそれでも別に困らんかったから、
改造してまで付けるほどでもないなワシは

603:デフォルトの名無しさん
07/11/21 23:13:33
SJISのソース内にリテラルを埋め込む際の文字化けについて悩んでいるのですが、
文字化けする2バイト文字の一覧のようなものってどこかに載っていないでしょうか?

604:デフォルトの名無しさん
07/11/22 00:40:33
>>603
文字化けはエスケープシーケンスのせい。
"abc"じゃなくて[[abc]]使うといい。

605:デフォルトの名無しさん
07/11/30 11:15:33
やったー 予約始まってるよー^^/

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


606:デフォルトの名無しさん
07/11/30 12:58:19
一ヶ月後か
期待age

607:デフォルトの名無しさん
07/11/30 14:01:17
URLリンク(www.nicovideo.jp)

608:デフォルトの名無しさん
07/12/08 15:22:14
hoshu

609:デフォルトの名無しさん
07/12/08 16:49:38
squirrelのリファレンスマニュアルの日本語訳ページが404な件

610:デフォルトの名無しさん
07/12/08 23:14:42
Google cache からまだ一応読めるね。

そういえば以前にも一回読めなくなったときがあったけど、
そのときはサイト全体が読めなかった。

611:デフォルトの名無しさん
07/12/09 09:57:13
>>609
うあーー
ac.jpなのを忘れてた orz
保存しとけばよかった

つーか、ac.jpの人って、卒業したら消えるんだよな・・・大抵

612:デフォルトの名無しさん
07/12/09 10:09:16
9月でD論通ってるから卒業か

613:デフォルトの名無しさん
07/12/09 15:36:33
>>609
googleキャッシュかInternet archive行けばまだ間に合う


614:デフォルトの名無しさん
07/12/16 01:31:14
hoshu

615:デフォルトの名無しさん
07/12/18 17:31:29
あるlua_Stateのクローンが作りたいのですが、
グローバルステートを含めすべての内容をコピーすることは可能ですか?

616:デフォルトの名無しさん
07/12/21 01:33:58
squirrelの質問です。
スレッドで使って下の関数をコールするとsuspendでC++側に処理を返したときに
a、bのデータが壊れてしまいます。

function CallSuspend(i, j, k, l, m, n, o)
{
local a = 23;
local b = 32;

while(1)
{
suspend();
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;
}

}


617:616
07/12/21 01:40:57
どうやらsq_call関数で関数実行後にスタックをポップしている部分でデータが壊れているようです。
suspendはwakeupでまたスクリプトを起動するのだから、引数の数だけポップする意味がわかりません。
これはバグなのでしょうか?
ちなみに自分の使っているsquirrelのバージョンは2.1.1です。


SQRESULT sq_call(HSQUIRRELVM v,SQInteger params,SQBool retval,SQBool raiseerror)
{
    SQObjectPtr res;
    if(v->Call(v->GetUp(-(params+1)),params,v->_top-params,res,raiseerror?true:false)){
        v->Pop(params);//pop closure and args ←※ここ
        if(retval){
            v->Push(res); return SQ_OK;
        }
        return SQ_OK;
    }
    else {
        v->Pop(params);
        return SQ_ERROR;
    }
    if(!v->_suspended)
        v->Pop(params);
    return sq_throwerror(v,_SC("call failed"));
}




618:デフォルトの名無しさん
07/12/21 10:05:07
いきなりソース覗きこんでバグだバグだ騒ぐ前にまずはちゃんとマニュアルを読めよ…

619:デフォルトの名無しさん
07/12/21 10:54:35
>>618
どういうことですか?
知っていることがあるなら教えてください。お願いします。

620:デフォルトの名無しさん
07/12/21 11:04:12
リファレンスのsq_callの説明にはこう書いてありました。

>この関数はすべての引数をpopし、スタック上のこのクロージャを取り除く。
>もしretvalがtrueであるなら、クロージャの戻り値がpush される。
>もし関数実行がsq_suspendvmによって中断されたなら、クロージャと引数はスタックから自動的にpopされない。

しかし、自分が実際に追ってみた限りではsuspendでsq_callを抜けた後に引数をポップする処理は実行されています。
それがlocal a,bを破壊しているようなのです。


621:デフォルトの名無しさん
07/12/21 22:08:56
バグじゃないっつーの
とりあえずなにがしたいのか書こうよ
「これはバグですか?」じゃ作者に失礼すぎるぞ
てめーを卑下しまくる前にちょっとは他人のことを考えようよ

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 したオブジェクトのメンバ経由で渡してて、引数を全くつかってなかったよ^^;


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

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