1 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 13:02:21 ] LuaやSquirrelなどアプリケーションへの組み込み用途で 使われるプログラミング言語についてのスレッドです まとめwiki(なにか質問する前に必ずみること!) wikiwiki.jp/lua/ その他の参考URLは>2から ■過去スレ その3 pc11.2ch.net/test/read.cgi/tech/1160799232/ (前スレ) その2 pc8.2ch.net/test/read.cgi/tech/1063711237/ その1 pc5.2ch.net/tech/kako/1034/10341/1034182349.html
558 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 20:18:31 ] >>552 Squirrelでsuspendを使うということは、マイクロスレッドを切り替える処理があるということなんだが。 それが軽いはず無いだろう。 ただし、基本的な演算処理でSquirrelがLuaの半分くらいの速度しか出ないのは本当。 速さだけ求めるならXtalも有力。
559 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 22:15:34 ] >>557 C++が速い理由には、言語仕様の差以上に、コンパイラに投入された労力が膨大なものだからというのもある。 LuaでもSquirrelでも、人月をかければC++以上に速くする事は可能だと思う。 逆に言うと、言語仕様だけではどうにもならない。 >>558 マイクロスレッドに関してはLuaも全く同じ。 Luaではコルーチンって呼ぶけどね。 298もそれはわかった上で比較してると思うよ。
560 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 22:47:50 ] ____ / \ /\ キリッ . / (ー) (ー)\ <C++が速い理由には、言語仕様の差以上に、コンパイラに投入された労力が膨大なものだからというのもある。 / ⌒(__人__)⌒ \ LuaでもSquirrelでも、人月をかければC++以上に速くする事は可能だと思う。 | |r┬-| | 逆に言うと、言語仕様だけではどうにもならない。 \ `ー’´ / ノ \ /´ ヽ | l \ ヽ -一””””~~``’ー?、 -一”””’ー-、. ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ____ /_ノ ヽ、_\ ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ <だっておwww /⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒) | / / / |r┬-| | (⌒)/ / / // | :::::::::::(⌒) | | | / ゝ :::::::::::/ | ノ | | | \ / ) / ヽ / `ー’´ ヽ / / | | l||l 从人 l||l l||l 从人 l||l バンバン ヽ -一””””~~``’ー?、 -一”””’ー-、 ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
561 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 00:22:41 ] その通りのことにそのAA使ってもな
562 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 00:37:35 ] 残念ながら経験10年のおそらく天才プログラマーが作ったJavaScriptが 学生が演習で作ったCのサブセット以下の速度なのよ
563 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 00:49:05 ] >>562 CとJavaScriptで速度差が出るとしたらプロパティアクセス時の ハッシュ計算だと思うんだけど、その差はJITすれば消せる。 JavaScriptはV8で比較した?
564 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 01:26:05 ] そんなんで消せたら 誰も苦労しないだろw
565 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 02:18:11 ] しかし、SquirrelにもLuaみたいなスクリプトのライブラリを置くリポジトリサイトが欲しいよな。 ネタは色々あるんだが。
566 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 03:17:30 ] >>562 ベンチマークに使ったコードは、どんな内容だったのでしょうか? 興味があります。
567 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 03:21:07 ] >>559 squirrel でも普通コルーチン。マニュアルの表記は「協調スレッド(コルーチン)」 「マイクロスレッド」だと、システムよりの機能を使ってるような誤解を招くから、 間違いじゃないけどふさわしくないと思う
568 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 04:38:29 ] lucille.atso-net.jp/aobench/ 誰かこれやってみて
569 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 08:52:18 ] 機械語に近い言語体系じゃないと、C並に早くならんだろうな
570 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 08:59:47 ] 559はJITが機械語を生成すると思ってんのかな?
571 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 11:14:15 ] C++より速くできるって…夢でも見てたんだろうね
572 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 12:05:33 ] ____ / \ /\ キリッ . / (ー) (ー)\ <その通りのことにそのAA使ってもな / ⌒(__人__)⌒ \ | |r┬-| | \ `ー’´ / ノ \ /´ ヽ | l \ ヽ -一””””~~``’ー?、 -一”””’ー-、. ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ____ /_ノ ヽ、_\ ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ <だっておwww /⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒) | / / / |r┬-| | (⌒)/ / / // | :::::::::::(⌒) | | | / ゝ :::::::::::/ | ノ | | | \ / ) / ヽ / `ー’´ ヽ / / | | l||l 从人 l||l l||l 从人 l||l バンバン ヽ -一””””~~``’ー?、 -一”””’ー-、 ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
573 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 12:09:18 ] 559はバイトコードと機械語を同じだと思っている、に一票。
574 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 13:38:25 ] >>570 に聞きたい。 じゃあ何を吐くんだ?
575 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 13:43:00 ] >>564 V8では新たなプロパティが追加されるたびに プロパティに対して定数時間でアクセスできるような アセンブラコードが生成されるよ。 だからV8は速い。
576 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 13:45:06 ] >>573 突然そんなことを言われても意味がわからない。 その根拠はいったい何さ?
577 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 14:32:58 ] >>567 昔StacklessPythonの記事で、言語仕様上で実装したマイクロスレッドとOS側で実装されるネイティブスレッドの 使い勝手の違いの話があって、それで覚えてしまっていた。 確かにこの場合はコルーチンと呼ぶべきだね。勉強になった。 各種言語処理系の仮想マシンが一種の機械語をサポートする場合、 その機械語、もしくはソースコードからコンパイルして作られた(仮想マシン用の)機械語を一般的にバイトコードと呼ぶ。 これに変換してから実行する形態をバイトコード処理系、もしくはバイトコードインタプリタと呼ぶ。 一方、CPUが直接実行する機械語を生成するのがJITコンパイラだ。 ただし欧米人でもたまに間違えてたりするので記事読む時に注意がいる……。
578 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 14:58:00 ] ____ / \ /\ キリッ . / (ー) (ー)\ <一方、CPUが直接実行する機械語を生成するのがJITコンパイラだ。 / ⌒(__人__)⌒ \ | |r┬-| | \ `ー’´ / ノ \ /´ ヽ | l \ ヽ -一””””~~``’ー?、 -一”””’ー-、. ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ____ /_ノ ヽ、_\ ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ <だっておwww /⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒) | / / / |r┬-| | (⌒)/ / / // | :::::::::::(⌒) | | | / ゝ :::::::::::/ | ノ | | | \ / ) / ヽ / `ー’´ ヽ / / | | l||l 从人 l||l l||l 从人 l||l バンバン ヽ -一””””~~``’ー?、 -一”””’ー-、 ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
579 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 15:02:17 ] で、人月をかければJITがC++に勝てるの?
580 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 15:04:19 ] 単に比較したって意味がないだろう
581 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 15:13:24 ] C++も負けないようにJITにするんだ!
582 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 15:13:52 ] 茶化してるだけの人とマジな人と、マジにわかってない人と、いろいろいるな
583 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 15:17:30 ] >581 LLVMとか
584 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 17:12:36 ] >>575 プロパティに定数時間でアクセス出来るのと JIT使っているっていうのは関係ないだろ
585 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 17:41:53 ] JIT使ってもC/C++より早くなるわけねぇじゃん 現代のCコンパイラがどれぐらいの労力をかけて最適化コード吐くのか考えてみたことある?
586 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 17:49:38 ] C++より速くなる病患者が Javascriptにまでw
587 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 17:52:39 ] コーディングにかかる時間は考慮しないんだな
588 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 17:53:08 ] 結局JITは怖くて使わないです。えぇハイ
589 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 17:54:00 ] >>584 JavaScriptだとプロパティの追加や削除を実行時に しなきゃならんことがある。 なので、普通はそれをプロパティに対するハッシュで実装するわけだけれど、 Googleはプロパティの変化ごとにJITコンパイルする道を選んだ。 V8 JavaScript Engine code.google.com/apis/v8/design.html > JavaScript is a dynamic programming language: properties can be added to, and deleted from, > objects on the fly. This means an object's properties are likely to change. > V8 compiles JavaScript source code directly into machine code when it is first executed. > There are no intermediate byte codes, no interpreter. Property access is handled by inline cache > code that may be patched with other machine instructions as V8 executes.
590 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 17:57:25 ] 機械語を生成できたところで、コンパイラの性能差が大きすぎるでしょ
591 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 18:19:21 ] プロパティの変化ごとにJITコンパイルするとか 意味不明
592 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 18:37:03 ] 現代のCコンパイラがgccの事であるなら 労力だけかけても間違った結果しか出てこないもんなんだなー とは考えてみた事がある 主にループ抜けなくなるとか
593 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 18:45:52 ] gccについては、あの…その……うんゴメン
594 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 18:48:15 ] >主にループ抜けなくなるとか wwwww
595 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 18:50:37 ] Squirrelを使おうとしているんだが、 バインダ(SqPlus)の更新が半年前から止まっていて、使おうかどうか躊躇してる。 みんなはバインダに頼らず直接実装した?
596 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 18:57:43 ] 優れたJIT技術者がいるとして そいつが何の仕事を選ぶかだな
597 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 20:01:23 ] // / / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ Lua!! / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
598 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 20:19:26 ] 散々JITについて盛り上がっておいて、ここまでLuaJITに言及なし
599 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 20:30:57 ] JIT使ったことねぇからわからねぇ が大半だと思います
600 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 21:12:32 ] >>595 俺はjkBindに乗り換えようかと考えている。 既に作者とは連絡を取った。 Squirrel-2.2.2-stable向けのパッチがフォーラムにあがってる。
601 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 21:22:04 ] jkBindについてkwsk
602 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 21:31:40 ] >>600 ありがとう。jkBindも選択肢としてありなのか。なるほど。 ちょっと調べてみますね
603 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 21:44:37 ] 結局Luaなんて誰も使ってなくて へんなクマが冷やかしに来るスレ?
604 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 22:31:10 ] バリバリLua使ってるような人が中々来ないスレ 現在は使ってないけど「今後使ってみようかな」とか興味ある人が情報収集しにくるスレ あとはクマスレ
605 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 22:35:26 ] // / / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ Lua まピョーん☆ / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
606 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 23:01:53 ] // / / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ AngelScript!! / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
607 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 00:38:30 ] ほっそいなAngelwwwww Luaは使ってないけどXtalはバリバリ使ってるよ!
608 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 00:40:39 ] AngelScriptをメインで使ってるのは俺だけですかそうですか。
609 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 01:16:03 ] AngelScriptは不遇だよね〜 もうちょっとがんばれば2強に肩を並べるぐらいになってたかもしれないのに
610 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 01:41:28 ] JITコンパイラが付いてC++並の速度で動くようになれば AngelScriptも流行るよ
611 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 02:15:47 ] なんかJITが好きな奴がいるけど、ゲームとかに組み込んで使用する 用途での言語処理系でJITなんて危なくて使えないだろw
612 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 02:38:34 ] JIT の実装が進んでるシステムは、事前コンパイルできる場合があるので、 開発中は作業効率がいい動的スクリプト言語として使って、完成したら コンパイルしてネイティブコード化するという方法もある。
613 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 06:44:51 ] Pascalでいいやん
614 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 06:57:19 ] CriScriptはベンチを見る限り割と良さそうなんだがなぜか話題にも上がらない
615 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 09:24:13 ] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
616 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 09:24:39 ] 先月の IGDA の奴を聴きにいって以来、オレの中で CriScript 株は急上昇中。
617 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 10:33:51 ] 実際使ってみたなら感想よろ
618 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 10:47:00 ] スクリプトって多々あるけど、 今後の展望を含め、どれか一派に絞らなけりゃならないのは賭けだよね ・言語仕様 ・ライセンス ・動作環境 ・速度 ・メモリ量やGC問題 ・安定性 ・将来性 ・国内外でのコミュニティの活性度 など複雑な素因が絡んでくるもんね。 自分はSquirrelを選んだが、将来残っているか不安っちゃ不安だわ。 磐石なスクリプトが存在するか、せめて機械的なコード置換があればいいんだがなぁ。
619 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 11:05:29 ] コミュニティや作者のサポートが必要とはあまり思わないな ソースコードが何百万行もあるソフトとは違う
620 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 11:30:48 ] 問題ってのは起ってほしくないときに起るもんだ そのときに同じように余裕ぶっこいていられるかな?
621 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 11:35:30 ] バグが見つかったら、自分の書いたソースだろうが利用しているオープンソースだろうが自力で直す。 直す手段が用意されているところがオープンソースの処理系のいいところじゃないか。
622 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 11:50:11 ] お金とってサポートしてくれるところがあるといいなーと思う場合は無きにしもあらず
623 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 11:50:42 ] Squirrelは辛うじて読めたが、Luaは読めなかった俺 今のところ自力で直す場面に出くわした事は無いが、これを直すとなると骨折れるだろうな…
624 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 12:05:00 ] >>601 jkBindだが、SqPlusと比較してみる。 いいところ: ・ソースコードが遥かにきれいで簡潔 ・グローバルスコープで余計なことをしない(main関数抜けるまで握ってるオブジェクト解放しないってなんだそれ>SqPlus) わるいところ: ・テストコードが整備されていない ・マニュアルがない(簡単なサンプルコードのみ) ・Squirrel言語仕様への対応が古い(公式のはコンストラクタの登録に対応してない。要パッチ) ・DirectXのラッパーライブラリがない?(全然使わんよこんなもの) ・せめてソースコードにコメントくらいは書いてください バインダとしての使い勝手はそう変わらないと思う。 どちらもtemplateを用いるし。
625 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 15:14:24 ] plusd.itmedia.co.jp/pcuser/articles/0902/17/news046.html キーカスタマイズ機能でLuaを使ってるそうな。
626 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 20:15:03 ] Lua の言語仕様が好きって人いる? JavaScript から prototype をなくしたような感じで、 しかも stackless。 なんかすごく気に入ったんだけど、そういう人いないかしら?
627 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 20:34:28 ] pascalっぽいところが好き
628 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 21:08:40 ] 俺は pascal っぽいところが嫌いw
629 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 22:28:38 ] end だけかYO!
630 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 22:55:36 ] どうやっても--はコメントではなくて、デクリメントと認識してしまっている
631 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:26:57 ] AngelScriptはなぜ広まらないんだろう。 かなり使いやすいと思うんだが、やっぱり日本語資料が少ないのがネックなんだろうか。
632 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 01:57:11 ] . ∩___∩ ; ; | ノ||||||| ヽ ` , / ● ● | ;, | \( _●_) / ミ AngelScript… ; 彡、 | |∪| |、\ , ./ ヽノ/´> ) : (_ニニ> / (/ ; ; | | ; ' \ ヽ/ / : , / /\\ . ; し’ ' `| | ;
633 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 04:01:51 ] >>631 コルーチンが無いからスルーした記憶がある 「このサンプルは AngelScript でどうやったらコルーチンが実装できるか示してる」 って状態だとさっぱり嬉しくない
634 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 08:03:15 ] ぅあ!
635 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 08:54:02 ] 過去スレを見たら、Lua で Yコンビネータを書いてる人とかいたけど、今は いないのかな。 言語オタクの興味の対象から、実用フェーズに移ったということなのかなあ。 「スクリプト」で差がついた日米ゲーム開発の生産性 GDCを読む(2) デジタル家電&エンタメ-最新ニュース:IT-PLUS it.nikkei.co.jp/digital/news/index.aspx?n=MMITew000006022009
636 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 12:01:19 ] >>633 C++のバイナリ仕様に合わせて設計されてるわけだから、C++にできないことを実装するのは難しいのかもな。 ただJITコードですら中断可能なコルーチン化は実現できるので、やりようはあると思う。
637 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 12:08:11 ] ほう
638 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 12:12:47 ] >>633 普通にSuspendじゃだめなん? lua_yieldと同じことはできるよ。 引数渡せないが。
639 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 12:31:17 ] >>638 マニュアル眺めてまともに記述されてないってことでスルーしただけなのでつっこまれると困る。すまん できるのならどんな記述でできるのかぐらい書いておいてほしい
640 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 12:31:25 ] むしろ引数なんか要らないっていう
641 名前:デフォルトの名無しさん [2009/02/18(水) 13:37:22 ] >>639 void Suspend() { asIScriptContext *lpContext=asGetActiveContext(); if(lpContext!=NULL) { lpContext->Suspend(); } } こんな感じの関数をC++の方に記述して、このSuspend関数をasIScriptEngineインスタンスにRegisterGlobalFunctionで登録すればOK。 Luaだと、 int yield(lua_State *l) { return(lua_yield(l, 0)); } こんな感じかな?
642 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 19:10:41 ] Squirrelのバインド操作が意味わからん……。 バインダ使わずその辺を自前で実装したいんだが、SqPlusのコードを読んでてTemplateの嵐だったので投げた。 次はjkBind読むしかないのか……。 SquirrelのC/C++への組み込み方法について、何か参考になるページありませんか?
643 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 19:26:30 ] tolua++とか
644 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 19:28:19 ] 補足です。一般的なsqstd_dofileやsq_compileなどからsq_callすることは出来ております。 スタック操作については若干曖昧ですが、C++側からSquirrel内の関数を呼ぶことは出来ました。 特にBind操作(LuaからC++関数の呼び出しや定数/変数のBind)について、 グルーコードの自動化のような処理を探しています。(Luaで言うところのtolua++に相当する実装)
645 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 19:34:35 ] >>642 >>644 それを処理するのに、C++ではtemplateが一番適しているわけだが? SqPlusにはマクロ版も一応ある。お勧めはしないが。
646 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 19:42:05 ] ttp://muffin.cias.osakafu-u.ac.jp/~matumoto/cgi-bin/xt.cgi?prog/squirrel ここを全部読んで理解するべし。 C++ のクラスを squirrel のクラスとして登録する方法は 「C++オブジェクトでのメタメソッド使用」から先で解説されてる。 ポイントになるのは sq_newclass と、sq_setinstanceup/sq_getinstanceup テンプレートはラッパー関数群の自動生成を行ってるだけで本質じゃないよ
647 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 21:37:31 ] >>646 645だが、642は自前でバインド作業をやろうとしてたのか。 2行目の前半を読み飛ばしてた。スマン。 ……まあ、そのページ読めば分かるだろう。 ClassオブジェクトをSquirrel中にこさえるのと、それをroottableに登録するのと、 Classオブジェクトにメソッドやらプロパティやらの諸情報を埋め込むのと大まかに3つに分かれる。
648 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 02:18:49 ] そろそろ Squirrel の読み方考えようぜ!
649 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 02:40:42 ] 発音記号に照らせば スクァラル が近いが、俺はスクワールと呼ぶことにしている。 ちょうどそんな名前の喫茶店があるので。
650 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 06:40:56 ] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
651 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 07:08:30 ] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua まピョーん☆ 彡、 |∪| / / __ ヽノ / (___)
652 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 09:42:21 ] ちくしょうクマが可愛くなってきたw
653 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 11:38:00 ] luaやsquirrelよりもgauche, ypsilon, moshのような国産schemeの方が速いらしいぜ これからの組み込みスクリプト言語はschemeの時代かもしれない
654 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 12:18:31 ] はいはい
655 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 12:22:24 ] それは無い。残念ながら。 ありうるならもう来てないとおかしい>schemeの時代
656 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 12:30:18 ] schemeの処理系がいくら性能がよくて、柔軟な性質を持っていても、 普通のスクリプタは括弧の嵐を見ただけでげんなりするからな lisp系がメジャーになることは永遠にないだろう
657 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 12:37:12 ] かなりいい線まで行って、おいしいところを非lisp系に取られるんだよなぁ
658 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 13:20:30 ] それがLispの矜持でさぁ
659 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 13:35:58 ] ・・・・・・隠れlisp使い多い?w
660 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 15:24:06 ] どっちでもいいよ。 組み込み言語の利点は、ただ1つ「コンパイルなしで改変、実行できる」 言ってしまうとこれだけだし。 デザイナが弄るなら、弄るデータなんてほとんどデータだし、 括弧が多少多くてもプロなら入力してくれる。 ロジックはどうせ、プログラマの仕事だから、schemeだろうが何だろうが、かまわん
661 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 15:27:55 ] まあ、止めはしない。がんばれ。
662 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 17:06:57 ] jkBindってどこにあるの?
663 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 17:59:28 ] 釣りか? ググれ。
664 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 18:08:12 ] >>645-647 ありがとうございます。 教えてもらったサイトを見て実装してみました。大変助かりました。
665 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 18:14:53 ] jk-pro.info/en/projects/jkbind/ 2006年で更新止まっているけど ここでいいのかな?
666 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 20:35:55 ] ∧_∧ / ̄ ̄ ̄ ̄ ( ・∀・) < Lua!! ⊂/ 9) \____ q( / > >
667 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 21:12:25 ] >luaやsquirrelよりもgauche, ypsilon, moshのような国産schemeの方が速いらしいぜ 「らしい」とかウゼェから死ねよ、クズ。 各言語のベンチマークに使ったコードを書き込んでから話せや。
668 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 21:19:59 ] 仮にそうだとしても schemeなんか速くたってどうしようもないじゃないか
669 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 22:16:56 ] Schemeは処理系を作るのは容易だが、それでプログラミングするのを 嫌うプログラマがかなり多い。非プログラマにも好まない言語だ。 昔を懐かしみ知識を得るだけしか役にたたないというのが常識。 その常識を無視して新規プロジェクトに導入しようとするのは無能マネー ジャで、他にも間違いを多く侵してる。 学生が自分の勉強用に自作するにはとても良い言語とは思うが。
670 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 22:22:00 ] Schemeは学生のとき やらされたっきりだな
671 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 22:35:22 ] Emacs使ってた時にelisp触ってたぐらいだなぁ。 この前エディタスレに行ってみたら、 「○○という機能があるエディタありませんか?」 「emacsなら出来る。Lispで自分で作ればいいよ」 と言う流れを未だにやっていて笑った。
672 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 23:03:25 ] 良い言語だと思うけど、学ぶのにコストがかかるから導入しにくい。
673 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 00:20:44 ] >>618 いくつか齧ってたらなんとでもなるよ。 似てる概念や要素が多いから。
674 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 00:44:48 ] |Д`)<AngelScriptも忘れないであげてください |ミサッ
675 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 00:47:10 ] // / / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ AngelScript!! / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
676 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:44:06 ] スクリプト言語による効率的ゲーム開発 C/C++へのLua組込み実践という書籍の P.43,44にあるスタンドアロンのLuaを実行してテキストファイル(hello.lua)に 書いたスクリプトを実行する(中身はprint("This is hello.lua"))部分を試しているのですが Windowsのコマンドプロンプト上でhello.luaと同じディレクトリに移動し「lua5.1 hello.lua」と入力する部分がうまくいきません コマンドプロンプト上でhello.luaと同じディレクトリに移動という意味が理解できず 勝手にただ単にパスを指定して実行すると解釈したのですが(C:\------\lua5.1 hello.lua) stdin:1: '<name>' expected near '\'と出てきて実行できませんでした stdin:1: '<name>' expected near '\'のキーワードで検索しても期待した内容が出てきませんでした 無知な私にご教授いただければ幸いです
677 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:47:02 ] www.google.co.jp/search?q=%83R%83}%83%93%83h%83v%83%8D%83%93%83v%83g+%83f%83B%83%8C%83N%83g%83%8A+%88%DA%93%AE 無知な上に努力不足です
678 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:53:10 ] もはやDOSコマンドも知らないプログラマが存在する時代なんだな そんなんでよくプログラム書けるな
679 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:58:19 ] 教えて頂きありがとうございました 「コマンドプロンプト 同じディレクトリ」では検索したのですが検索方法も悪かったようです
680 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:00:12 ] 前の職場にC++,JavaがめちゃくちゃできるのにDOSコマンド知らん人がいたわ 使う機会ないと覚えないもんだなと思った
681 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:05:24 ] DOSコマンド知っているけど 使う機会が無くなったな
682 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:25:52 ] ディレクトリの移動はできるようになったのですがLua起動後にhello.luaを実行しようとするとまた stdin:1: '<name>' expected near '\'と表示されます 「stdin:1: '<name>' expected near '\'」はどのような意味を表しているのでしょうか?
683 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:28:44 ] だから言ってるだろ無知な上に努力不足だって お前はそうやって完成するまでずっと人に聞きつづけるのかっつーの 本でわからない事があるなら著者に聞けよ
684 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:36:52 ] 著者に聞いたら完成するまで人に聞き続けるだろwwww 試しに俺もそのワードでぐぐってみたが多分わからんと思う わざわざここに書き込んでるのは反応が早いからって理由だろうに まあ俺はドSだから教えないけどな
685 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:37:17 ] 不快にさせてすみません 著者にわざわざ連絡を取って聞くほどの問題ではないのだろうかと思い書き込みました
686 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:51:25 ] Hello,World!が出来ないのを切り捨てるのは性格の悪さがうかがえるな stdin〜はようわからんが俺も同じ内容で引っかかったから教えると lua5.1を起動させずに(重要).exeと.luaを同じディレクトリに置いてlua5.1 hello.luaでいける これは初歩の初歩からやってんのに重要な事書かない筆者が悪いわ これさえわかりゃ後はスムーズに進むぜ
687 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:54:13 ] ていうか >Windowsのコマンドプロンプト上でhello.luaと同じディレクトリに移動し「lua5.1 hello.lua」と入力する部分がうまくいきません って自分で書いてるのに >Lua起動後にhello.luaを実行しようとすると やってること違うじゃんよ。これぐらいさすがに気付いて欲しいよ
688 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:58:08 ] DOSコマンド使った事ないならそんなもんだ .lua形式のファイル開くんだからlua起動してないとって思ったんじゃね
689 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 04:51:55 ] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
690 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 05:12:51 ] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua まピョーん☆ 彡、 |∪| / / __ ヽノ / (___)
691 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 05:18:32 ] >>685 たぶんもう少し読んだら出てくるtolua++の解説箇所あたりでも 困ることになる予感がする。 でも苦労したり嫌な思いして覚えたことほど忘れにくいのでがんがれ。 ただその本にはWikiにサポート用のForumあるので、質問とかは あちらに書いた方がいい気はする。
692 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 07:47:20 ] まあ、ypsilon作った会社は社員一人しかいないからなw
693 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 17:21:06 ] コマンドラインなんて使わないな。 バッチファイル作るのに少し教えて貰ったけど全然使う機会無いわ。 便利な世の中になったお陰で考える事が減って美味しいです^q^
694 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 17:30:42 ] >>693 こういう奴がHDD全消去するようなインストーラー作るんだろうな
695 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 18:06:17 ] ぎすぎすした流れをぶった切って申し訳ないが、 luaのイテレータを使用したfor文に渡す引数は イマイチなじめない。 C++/STLのbegin/endになれた身としては最初に渡した "_var"がfor内ブロックに渡されず、_f(_s,_var)の戻り値が 渡される所とか違和感を感じる。 他の言語のイテレータになれた人だとそうでもない?
696 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 19:02:00 ] じゃあC++使ってればいいじゃん
697 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 21:08:32 ] 今時、コマンドラインも使わなきゃLINUX鯖も立てられない奴には仕事は来ないわなw
698 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 21:35:39 ] はいはい挑発伝説挑発伝説
699 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 22:27:30 ] 俺なんか家も学校もUNIXだったし会社はいるまでWindows触ったこともなかったからなぁ。 DOS窓?ぷwなにそれ、って言ったら白い目で見られたよ。 Windowsが全てと思ってる奴もいるし世の中間違ってる。
700 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 22:43:01 ] PowerShellはどうよ?
701 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 22:44:34 ] >>695 Luaのことはほとんど知らないんだけど、w 組み込みでは、 ・iteratorインスタンスをいちいち生成したくない。 ・クロージャやジェネレータを扱いたくない。 という意図があると思う。 特に_s。クロージャ、ジェネレータ相当のことを自前で実装しろと。 単純なイタレータばかりなら、_varだけでいいけど。 そのトレードオフが_f(_s,_var)だと思う。
702 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 23:13:50 ] 先週toLua++更新されてるね。
703 名前:695 mailto:sage [2009/02/22(日) 23:21:55 ] >>701 ごめん。理解できないで詳しくお願い。 ちなみに、私が求めていたのはこんな感じ do local _f, _s, var_1,...,var_n = explist while var_1 do block var_1, ... , var_n = _f(_s, var_1) end end たとえばluaのtableでリンクリスト(nil終端)を操作する iteratorを作るとき、上のだと、 _f=function(_s,_var) return _var.next end _s=nil var_1,...,var_n = top , .... でいけると思うけど、オリジナルのLua版だと _f=function(_s,_var) if _var then return _var.next,... else return _s,... end _s=top _var=nil とかいまいちすっきりしない。(特に_varの位置付け) リンクリストなら無理してforを使用しなくても出来るけどね。 for文がああなったのはLuaの文法との整合性の問題?
704 名前:695 mailto:sage [2009/02/22(日) 23:23:50 ] luabindも0.8にあがってる。
705 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 23:58:15 ] C++しか知らんからそうなる このイテレータの形は関数型言語やれば自然と判るよ
706 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 01:57:47 ] なんでLua以外の言語人気ないんだろう?
707 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 02:16:24 ] Squirrelの時代が来る! …と信じている……
708 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 08:13:23 ] スクエニが使った実績もあるしな! 俺も今度スクリプト使うときはSquirrelでいくぜ! 何か作る…暇さえあればな…
709 名前:デフォルトの名無しさん [2009/02/23(月) 08:46:39 ] www.ferzkopp.net/~aschiffler/Personal/FunStuff/Pictures/Squirrel.html
710 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 09:32:18 ] luaforge.net/ squirrelforge.com/
711 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 11:36:53 ] というか、普通にPC向け商用ゲームで採用予定なんだが>Squirrel ……って、他に居ないのか。居ないのか!
712 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 12:06:37 ] ここにいるよ
713 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 13:13:11 ] ここにもいるよ。 PSPの案件でもテスト開始してる。スクエニ様々だね。
714 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 14:18:10 ] よかった…。Squirrelが一躍有名になって。 スクエニのFFCCのプログラマーはGJです。
715 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 17:25:16 ] DQ9はSquirrel採用?
716 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 17:55:06 ] もし知っている人が居ても絶対教えてくれないと思いますよ
717 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 18:14:38 ] いや、9は無理でしょ。DSだよ? メモリ4Mくらいじゃなかったか?
718 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 21:57:49 ] >>713 スクエニでPSP・・・・・パラsうわ何をするやめ(ry
719 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 22:15:59 ] おいおいwネタなのか本当なのか知らんが笑ってしまったw 自分も案件提案して採択されそうだ。というわけでSquirrelは水面下で絶賛展開中だ
720 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 23:50:06 ] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ 勝手に使えばいいだろw 彡、 |∪| / 日本人が発音できない言語lolololololol / __ ヽノ / (___)
721 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:03:49 ] ロリロリロリロリ
722 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:34:12 ] Luaにはクマが居るのに、SquirrelにはAAすらない。可哀相
723 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:39:56 ] Xtal のインタプリンタとかデバッガーとかIDEとかってまだない系?
724 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 01:16:53 ] >>723 以前(半年ぐらい前)ちょっと調べてたけど見つからなかったよ。 Xtalの中の人はかなりがんばっていると思うんだけど、いかんせん外野からの支援が無いよね。
725 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 01:17:30 ] あれは何処の国の人が盛り上げるんだろうね
726 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 01:34:28 ] Xtalは応援してやりたいが、sourceにほとんどコメントが無くて読めなかった。C++コーディングここに極まりって感じ。 言語仕様も定まってきているわけだし、ここいらで一旦仕様拡張を止めて、 導入方法について詳しく記述し、間口を広くすれば流行りそうな予感はしている。 欲を言えば作者自ら本出してほしい。そんな暇無いだろうけど。
727 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 01:38:50 ] >>722 クマなんぞただの目障り。
728 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 01:41:11 ] // / / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ AngelScript!! / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
729 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 01:42:06 ] >>726 Squirrelより実行速度速いしな。おまけに使いやすいC++バインダも内蔵ときた。 ちょっと構文が変な感じするけど、 オープン界のPHPとRubyみたいな関係で、 互いに刺激を受けてcoolな発展してくれることを望むぜ。
730 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 01:43:59 ] 実行速度は後からなんとかなるけど 構文が変なのは致命的だなあ
731 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 01:51:08 ] 他のスクリプト言語とほぼ相互置換できるのなら無問題なんだけど、実際のところどうなんだろ? Xtalを触りだけじゃなく、実際に使ってる人って居ないんかいねぇ?
732 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 01:51:13 ] Luaの本は結構出てるんだけど Squirrelの本って洋書でもまだ出てない?
733 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 01:57:42 ] GDC2008 FFCCのSquirrel採用の件 game.watch.impress.co.jp/docs/20080224/ffcc.htm たった1行だけ。
734 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 02:07:27 ] 洋書でもいいからSquirrel本ほしいよな まとまって目ぼしい情報があるのが公式wikiぐらいだ
735 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 09:48:36 ] SquirrelはAngelScriptよりはまだマシじゃないか。 AngelScript使ってるのは日本で自分含めて数名しかいないんじゃないかとすら思える。
736 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 10:14:14 ] スクエニがFFCCで色々やった結果をSquirrel公式に提供してくれればなぁ
737 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 10:18:45 ] >>735 詳しく調べたわけではないが、C++の制約をそのまま受けてしまう仕様ではなぁ……。
738 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 11:14:45 ] >>700 > PowerShellはどうよ? UNICODE文字だけなので普段使いにはムリがあった
739 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 14:48:35 ] >>736 んだな。SquirrelにLuaにあるような動的リロードをどう実装したのかが知りたい。 おそらくdelegateじゃないんだよな。
740 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 16:56:00 ] >731 ノシ使ってるよ
741 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 18:44:09 ] せめてインタプリンタやデバッガやIDEがあればなあ・・・>Xtal Pythonからの移行を考えてる今日この頃 LuaやSquirrelも考慮してみるか・・・
742 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 20:41:59 ] >>741 Python止めようと思ってる理由は?
743 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 21:01:21 ] 止める気はないよ、機能も手軽さも文句ないし ただちょっと飽きてきたとかそんな理由
744 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 21:50:51 ] あーしいて言うなら処理速度だな あと、ゲームを作る用に作った言語ってのも まだ、完成してないし詳しく知らんwスマソ
745 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 04:30:52 ] >>739 どうなんだろねー。delegate はあまり凝ったことできないし、ユーザデータかテーブルでしか 使えないので別の方法だろうとは思う。 思いついた方法その1 メタメソッドを使ってプロトタイプもどきを実装 ・「クラス名」は文字列で保持しておく ・_get/_set のメタメソッドを使って、「クラスのメソッドテーブル」を毎回「クラス名」を使って 引いてきてメソッドはそこから引き出して使うようにする ・「クラスのメソッドテーブル」の中身を書き換えると、同種のオブジェクトのメソッドを一斉にさしかえたことになる 思いついた方法その2 弱参照でインスタンスを全部おぼえておく ・クラスはメソッドを別のテーブルとして持つ(クラスは一度インスタンス化すると書き換えできないため) ・コンストラクタでそのメソッドテーブルの内容をインスタンスに自力でコピーする ・クラスはインスタンスリストも持つ。コンストラクタでインスタンスの弱参照をリストに追加する ・メソッドを書き換えるときは、新規オブジェクト用にメソッドテーブルの中身を置き換えると同時に、 インスタンスリストに登録されてる全インスタンスの該当メソッドも置き換えてしまう ・インスタンスリストは適当なタイミングで掃除 こんなとこじゃないかなー
746 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 08:54:06 ] >>706 Luaがユーザー多くなった→情報を増える→ユーザー増える→(以下繰り返し) 日本でユーザー増やすなら、>>708 みたいな実績増やして、 スクエニが導入の手引きみたいなリソースを公開してくれたら 祭りになるかもしれんが(公開は)多分ない やっぱり情報を一杯出さないとな
747 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 09:39:42 ] Squirrelを動的リロードできるようにソース改造したとか。 zlib/libpngライセンスだから問題ないだろうし。 他のスクリプトのShiftJIS対応版みたいな感じで。
748 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 09:49:42 ] Squirrelの動的リロードは、ソースファイルを読み直すだけでそのままできるんだが? ファーストクラスオブジェクトというのはそういうものだ。 シリアライズ・デシリアライズ機構を用意するだけ。
749 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 09:50:54 ] nn _ γ・ ̄\ γΞミvヽ _r・ ( r-、i (゚Д゚) ヽノ (ノ ミ) ミ Squirrel!! ヾ_(つノノつ
750 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 10:38:57 ] >>748 「ソースファイルを読み直すだけ」じゃないじゃん
751 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 14:43:12 ] BSDやMIT等の重要な部分に記載しろというのが嫌い でもzlib系は書かなくてもいいのに記載します なのでSquirrel使い
752 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 14:57:07 ] >ソフトウェアのすべての複製または重要な部分に記載するものとします。 MITのこれって、全体もしくは部分的な複製に記載しろという意味じゃなかったっけ?
753 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:09:09 ] >>750 シリアライズ機構を、インスタンスの再構築を行うソースファイルを生成するように設計すればいい。 フォーラムに例が挙がってる。
754 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 16:03:26 ] Xtalはよさげなんだが食指が動かんな。何故だろう?個人がせっせとやってるからかなー。 2月24日の日記によるとよりC++らしい記法が出来るようになるみたいだが、 やっぱりC++チックな記法が世の中的には好まれるんだろうか?
755 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 16:06:48 ] おそらくね。 endはメンドクサイんで嫌いだ
756 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 16:17:04 ] 元々xtalはC++ライクな軽量言語ってのをウリにしてるからな
757 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 17:32:44 ] zlibライセンスでC++チックな記法といえばAngelScriptだな。 MITならCINTってのもあるが。
758 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 17:39:51 ] ちょっとしたゲーム製作にSquirrelを使いたかったが、挫折した。 日曜プログラマには無理だった。 もっと勉強してからにします。
759 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 17:56:28 ] Squirrel内の関数をCから呼び出すときに可変長引数で引き渡したいが、上手くいかないです。 bool CallSquirrelFunction(const TCHAR* pFuncName, ...) { SQInteger top = sq_gettop(m_vm); sq_pushroottable(m_vm); sq_pushstring(m_vm,pFuncName,-1); if(SQ_SUCCEEDED(sq_get(m_vm,-2))) { sq_pushroottable(m_vm); int nArgCount = 1; //TODO ここに可変長引数でsq_pushしたい(integer,float,string) sq_call(m_vm,nArgCount,false,false); sq_settop(m_vm,top); return true; } sq_settop(m_vm,top); return false; } va_***系マクロ使えば行けるかなと思ったが、無理なのかな。 "%d%f%s"のような型指定リストを渡すのはスマートじゃないけど、これ以外に方法は無いのかな……。 あんまりSquirrelと関係なくてすいません。助言をください。
760 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 18:07:11 ] >>759 わかってるんじゃん。Cは言語仕様的に引数の型情報を取得する手段がないので、 型指定情報をなんらかの形で渡すか、全部 Variant な型を使うようにするかのどちらかしか無理。 型指定は別に printf みたく文字列にする必然性はないよ。 func("funcName", TYPE_INT, a, TYPE_FLOAT, b, TYPE_STR, c, TYPE_END) とかこんなかんじで順次型情報とあわせて渡すとかでいいんじゃね?
761 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 18:32:27 ] >>760 すばやい返信ありがとうございます。うーん。Cの仕様上どうしようもないんですね。 型情報も合わせて引数に送ることで、対処しようと思います。 ありがとうござました。
762 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 21:07:44 ] ま、そもそもC言語で今更、自前の可変長引数関数を (ログ出力等以外の目的で)で整備する利点は薄いので、 正直に他の方法による実装を考えた方がいいと思うけどな。
763 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 21:28:52 ] C++にしてboost::tupleとか使えばうまく書けるかもしれない
764 名前:デフォルトの名無しさん [2009/02/26(木) 09:55:45 ] C++だと、boost::functionみたいに、 template<typename _tR,>sq_function0(HSQUIRRELVM &vm); template<typename _tR,typename _t0> sq_function1(HSQUIRRELVM &vm,_t0 t0); template<typename _tR,typename _t0,typename _t1> sq_function2(HSQUIRRELVM &vm,_t0 t0,_t1 t1); template<typename _tR,typename _t0,typename _t1,typename _t2> sq_function3(HSQUIRRELVM &vm,_t0 t0,_t1 t1,_t2 t2); … といった感じで、引数の個数にあわせたtemplateファンクタを用意して、これらをsq_functionというtemplateに置き換える仕組み用意したらいいんじゃね? そういう仕組みの具体的な実装はboost::function参照。 Squirrelじゃないけど、自分はこういうtemplate用意してスクリプト内の関数呼び出す仕組み用意した。 結構便利。
765 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 22:53:47 ] Squirrel3.0の安定版っていつ出るのさ
766 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 23:02:24 ] >>765 そもそも3.0というほどの変更箇所があるように見えないんだが、 ずっと黙って2.2.2-stableを使ってるな。
767 名前:デフォルトの名無しさん [2009/03/01(日) 18:51:08 ] 剰余の計算をするとエラーが出るのですが、どうしてでしょうか? x = 10 y = 3 print("余りは" .. x % y .. "です") これを実行すると、 stdin:1: `)' expected near `%' と表示されてしまいます。
768 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 19:03:51 ] 何語で書いてるのか書け。まずはそれからだ。
769 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 19:08:52 ] 演算子の優先順位の問題じゃね?
770 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 19:21:57 ] Lua5.1.4で再現無いことだけ確認したw
771 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 19:33:50 ] Lua使ってないからしらんが、 括弧付ければ無問題だと予想
772 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 22:16:06 ] >>767 使ってるLuaが5.0系(%演算子が無い)なんだろう。 5.1にするか、math.modを使うかしろ。 ただしmath.modと%演算子は、負数のときの挙動が違うので注意。
773 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 08:05:29 ] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
774 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 18:06:00 ] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / <●> <●>| / | ( _●_) ミ/ Lua? 彡、 |∪| / / __ ヽノ / (___)
775 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 21:35:40 ] いいえKumaです。
776 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 22:31:36 ] Luaってもしかして、++iとか--iとかない?
777 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 22:51:12 ] 忘れたけど、基本floatだからないんじゃないの?
778 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 23:16:53 ] -- はコメントだしなあ
779 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 00:17:05 ] >>777 ,778 ないのか、残念 レスありがとう
780 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 21:09:28 ] i += 1 もないお
781 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 21:18:53 ] //は何なの
782 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 01:20:44 ] >>781 「**」がべき乗として使われる言語がたまにあるけど、 // はその除算版。 つまり、a // b = a ** -b = pow(a, -b)
783 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 08:14:31 ] 冪根ことか累乗根とかだっけ
784 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 14:01:59 ] & と && の関係みたいなもんか
785 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:35:46 ] 全然違わないか? それ
786 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:46:34 ] いや、=と==みたいなもんだろ
787 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 22:34:53 ] *hoge と**hogeよりは違わないだろう
788 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 10:43:16 ] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
789 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:40:40 ] Squirrelでルートテーブルに対しての、定数のバインドってどうやってやるか分かりますか? sq_pushroottable(m_vm); sq_pushstring(m_vm,"CONST_VALUE",-1); sq_pushinteger(m_vm,255); sq_newslot(m_vm,-3,true); sq_pop(m_vm, 1); これでもCONST_VALUE=255となりますが、定数ではなく変数(書き換え可能)なんですよね……。 スクリプト記述で言うところの、 const CONST_VALUE = 255; となるよううなコーディングを実装したいです。 やっぱ、定数はコンパイル時決定だから無理なのかな?
790 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:56:03 ] 自己解決しました。 sq_pushconsttableとsq_setconsttableで上手くいきました。 仕様に目を通してないことが丸分かりで恥ずかしい……。 これでやっと ・定数・変数・クラスのバインド ・C++⇒Squirrel関数の呼び出し ・Squirrel⇒C++関数の呼び出し まで完成しました。 あとは、デバッガと動的リロードだ。先が長いぞ。
791 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 10:35:48 ] ∧_∧ / ̄ ̄ ̄ ̄ ( ・∀・) < Lua!! ⊂/ 9) \____ q( / > >
792 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 13:37:15 ] >>782 Lua だとそーいう演算子ないみたいだけど、それってどの言語で使えるの? c++系統だとコメントだし、Python3.0とかだと余りを切り捨てる除算に使うしあんまり一般的じゃない気がする
793 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 01:20:20 ] // でググってみれば? 俺はどうでもいいからやらないけど。
794 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 01:46:26 ] >>793 あほか、ぐぐってみろw
795 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 02:59:28 ] double slash operator
796 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 09:03:27 ] 組み込み言語Pawn The Pawn language www.compuphase.com/pawn/pawn.htm Pythonバインディングあった。(組み込みにも使うPythonから使う利点は不明w) craftware pypawn 1.05 hp.vector.co.jp/authors/VA012411/pypawn/doc/
797 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 09:04:01 ] >>793-794 だめぽ。見つかりませんでした // - Google 検索 www.google.com/search?hl=ja&safe=off&num=50&q=%2F%2F&btnG=%E6%A4%9C%E7%B4%A2&lr=
798 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 09:13:14 ] LuaInterface 2.0.3 code.google.com/p/luainterface/ Luaから.NETの機能を使ったり、.NETな言語からLuaを利用したりできるやつ。 LuaInterface Debugger code.google.com/p/luainterface-debugger/ ステップ実行とかできるLuaのデバッガ。非GUI
799 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 10:59:05 ] >>798 これ何がやりたいのかわからん Luaはネーティブなんだから、只のラッパーに徹するか、 既存のLuaでも使える、.NETをラップしたモジュールにしてくれれば良かったのに 自分はC++/CLIに馴染みが無いから、只のラッパーを自作する参考に コードを読む程度の利用しかしてね
800 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 11:26:37 ] は?
801 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 15:46:24 ] ひ?
802 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:45:18 ] る
803 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:54:28 ] の
804 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:57:40 ] 憂
805 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 22:01:58 ] ハルビンの親戚か?
806 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 00:19:44 ] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
807 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 10:34:54 ] ちょw
808 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 11:09:28 ] る
809 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 13:16:17 ] 次スレはいらないな・・
810 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 16:32:12 ] ∧_∧ / ̄ ̄ ̄ ̄ ( ・∀・) < Lua!! ⊂/ 9) \____ q( / > >
811 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 11:37:16 ] >>800-806 AVで本当にあって吹いた TMA 涼宮ハヒルの憂鬱 レビュー | 丁dai Blog tyodai.blog47.fc2.com/blog-entry-65.html
812 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 12:59:07 ] そりゃ、あるから書いてるんだろう
813 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 20:05:17 ] Luaを実装したプログラムのソースコードください。
814 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 20:12:32 ] >>813 ttp://www.lua.org/ftp/
815 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 08:32:52 ] 乳揉みてぇ
816 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 01:43:27 ] >>815 ttp://www.milknosato.com/enjoy/cowy.php
817 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 12:59:13 ] LuaのテーブルをXMLに保存する homepage3.nifty.com/akaho/program/lua/xml.html 見つけたので、貼っとく。
818 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 17:09:25 ] じゃあ俺はSquirrelのテーブルをJSONに保存する
819 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 18:09:36 ] YAMLじゃなくて?
820 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 06:14:06 ] S式で
821 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 17:56:26 ] 根性です
822 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 22:38:00 ] ttp://haxe.org/ NekoVM 用として使えば組み込み系もいけるかも? でも Nekoランタイムは LGPLかー
823 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 17:56:07 ] haxeでlua出せないかなぁ