1 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 20:49:02 ] プログラミング言語処理系の開発に興味のある人達のスレッドです。 字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換, CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン, SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化, JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。 意味論に関する話題も歓迎です。 過去スレ 1 pc.2ch.net/tech/kako/981/981672957.html 2 pc2.2ch.net/test/read.cgi/tech/1021136715/ 3 pc5.2ch.net/test/read.cgi/tech/1070089173/ 4 pc5.2ch.net/test/read.cgi/tech/1100097050/ 5 pc8.2ch.net/test/read.cgi/tech/1106129164/ 6 pc8.2ch.net/test/read.cgi/tech/1115335709/ 7 pc8.2ch.net/test/read.cgi/tech/1129287390/ 8 pc8.2ch.net/test/read.cgi/tech/1131273918/ 9 pc8.2ch.net/test/read.cgi/tech/1135082582/ 10 pc8.2ch.net/test/read.cgi/tech/1146844753/ 11 pc11.2ch.net/test/read.cgi/tech/1160879890/ 12 pc11.2ch.net/test/read.cgi/tech/1188688416/ 関連リンクは多分 >>2-10 あたり
2 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 20:49:29 ] Wikiのまとめページ www6.atwiki.jp/compilerandscriptengine/ ★コンパイラ一般 ・色々なツールの紹介 catalog.compilertools.net/ ・コンパイラ関連のリンク集 www.ulis.ac.jp/~nakai/rel_web_compilers.shtml ・スクリプティング言語資料室(仮) (リンク集) www.kt.rim.or.jp/~kbk/ ・Compiler Construction www.ie.u-ryukyu.ac.jp/~kono/lecture/compiler/ ・情報システム工学実験 III コンパイラ・コンパイラ math.cs.kitami-it.ac.jp/~fuchino/proin/experimentIII-2000/jikken.html ・OS/Programming 簡単な C コンパイラ www.csg.is.titech.ac.jp/~chiba/lecture/os/ ・正規表現 hp.vector.co.jp/authors/VA007799/viviProg/doc_regexp.htm ・コンパイラ研究・開発情報の一集積所 compilers.cs.uec.ac.jp/ ・Links and Selected Readings www.gnu.org/software/gcc/readings.html ・国産のコンパイラ共通インフラストラクチャCOINS www.coins-project.org/
3 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 20:49:56 ] ★字句・構文解析 ・Lex and YACC primer/HOWTO (邦訳) ttp://www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.html ・Turbo Pascal Lex/Yacc www.musikwissenschaft.uni-mainz.de/~ag/tply/tply.html ・Jim Roskind's LALR(1) C++ Grammar ttp://www.empathy.com/pccts/roskind.html ・Flexと Bisonを同時に使う guppy.eng.kagawa-u.ac.jp/2005/SysProg/both.html ・KITE_ASM (yacc,lex) www.arch.cs.kumamoto-u.ac.jp/project/kite/kiteasm/ ・bison用のC++ LALR skeleton ttp://www.bj-ig.de/software/bison/ ・ANTLR(非yaccのパーサジェネレータ) ttp://www.antlr.org/ ・JavaCC(Java Compiler Compiler) ttps://javacc.dev.java.net/ ttp://village.infoweb.ne.jp/~fwif0083/program/java/javacc/javaccgrm.html ttp://www.asahi-net.or.jp/~DP8T-ASM/java/tips/JavaCCHelloWorld.html ・CUP, JLex, JFlex www.cs.princeton.edu/~appel/modern/java/ (JLex, CUP) ttp://www.jflex.de/ ・SableCC ttp://www.sablecc.org/ ・¬<><∪∪ (notavacc)LALR(1) ne.cs.uec.ac.jp/~koto/notavacc/ ・boost::spirit(C++のテンプレートでEBNFの構文を模倣) spirit.sourceforge.net/ ttp://boost.cppll.jp/HEAD/libs/spirit/index.html(マニュアル日本語化プロジェクト) ttp://www.fides.dti.ne.jp/~oka-t/cpplab-boost-spirit.html
4 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 20:50:53 ] ★ごみ集め ・GC FAQ -- draft www.iecc.com/gclist/GC-faq.html ・A garbage collector for C and C++ www.hpl.hp.com/personal/Hans_Boehm/gc/ ・一般教養としての Garbage Collection www.is.s.u-tokyo.ac.jp/vu/jugyo/processor/process/soft/compilerresume/gc/gc.html ・Garbage Collection : Algorithms for Automatic Dynamic Memory Management www.amazon.com/exec/obidos/ASIN/0471941484/ ★処理系,スクリプト ・kikyou.info (吉里吉里というゲームのスクリプト) kikyou.info/ ・tiny C コンパイラ (C) www.watalab.cs.uec.ac.jp/tinyCabs.html ・6809用 Micro C コンパイラ www.axe-inc.co.jp/pds/mc09.html ・Portable Object Compiler (Obj-C >> C のトランスレータ?) users.pandora.be/stes/compiler.html ・自作コンパイラの部屋(PL/1, Pascal等) www.tokumaru.org/ ・『Rubyソースコード完全解説』サポートページ i.loveruby.net/ja/rhg/ ・『やさしい Lisp の作り方』『やさしい Java インタプリタ の作り方』 www.okisoft.co.jp/esc/go.html ・MSによるPEフォーマット仕様書(日本語) www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/intro.html
5 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 20:51:26 ] ★学会 ・PLDI research.microsoft.com/conferences/pldi06/ コンパイラの研究に関する最新成果を知りたければまずはここ。 ・POPL www.cs.princeton.edu/~dpw/popl/06/ PLDIよりは理論寄りだが大いに参考になる。 ・ICFP icfp06.cs.uchicago.edu/ 関数型言語に関する学会。とても難しい。 ・OOPSLA www.oopsla.org/ オブジェクト指向言語に関する学会。最近はやや低調? ・ICCC www.st.cs.uni-sb.de/cc/ ヨーロッパ系。派手さはないが堅実。
6 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 20:53:35 ] ★参考書籍 ・コンパイラ 原理・技法・ツール 1&2 www.amazon.co.jp/exec/obidos/ASIN/4781905854/ www.amazon.co.jp/exec/obidos/ASIN/4781905862/ 通称ドラゴンブック。バイブル。 ・コンパイラ構成法 原田 賢一 www.amazon.co.jp/exec/obidos/ASIN/4320029224/ www.hara.cs.keio.ac.jp/kCompiler/ (ソース、正誤表のダウンロード) ・プログラミング言語処理系 岩波講座 ソフトウェア科学〈5〉 佐々 政孝 www.amazon.co.jp/exec/obidos/ASIN/4000103458/ 一冊で済ませたい人へ。 ・コンパイラの構成と最適化 中田 育男 www.amazon.co.jp/exec/obidos/ASIN/4254121393/ 最適化がメインだが、構文解析からコード生成までの基本事項も解説されている。 ・コンパイラの仕組み 渡邊 坦 www.amazon.co.jp/exec/obidos/ASIN/4254127081/ 薄い奴(185p)を読みたい人に。 ・21st Century Compilers (Alfred V. Aho, Sethi, Ravi Sethi, Jeffrey D. Ullman, Monica Lam) www.amazon.co.jp/exec/obidos/ASIN/0321131436/ まだ出ていない。 ・スモールコンパイラの制作で学ぶプログラムのしくみ www.cbook24.com/bm_detail.asp?sku=4774121770 初心者向けの優しい解説本。 以上
7 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 21:07:26 ] >>1 乙
8 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 12:12:16 ] >>1 乙これはポニーテールだからなんとかかんとか テンプレ追加 PEG(解析表現文法),Packrat Parser ja.wikipedia.org/wiki/%E8%A7%A3%E6%9E%90%E8%A1%A8%E7%8F%BE%E6%96%87%E6%B3%95
9 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 20:21:44 ] // / / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ まピョーん☆ / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
10 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 22:49:04 ] スクリプトエンジン作ってみたい。 お勧めのサイト教えて
11 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 23:13:10 ] >>10 数レス前も読めないのか…
12 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 23:35:19 ] やっぱいいや
13 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:13:29 ] @wiki 更新しときました。
14 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:15:27 ] 「★字句・構文解析」に追加。 caper naoyuki.hirayama.googlepages.com/caper.html
15 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 04:46:47 ] >>10 サイトでないけど www.amazon.co.jp/ スクリプトエンジン-プログラミング-坂本-千尋/dp/4797347627/ref=sr_1_1?ie=UTF8&s=books&qid=1233603981&sr=8-1 これで最低限の知識は得られると思う
16 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 17:32:19 ] パーサジェネレータは検索すれば山ほどひっかかるけど、 スキャナージェネレータは少ないね。 すぐに見つかるのはLex, Flex, JLex, JFlexくらいか。 UINTVAL = "[0-9]+"; のように書けばスキャナークラスを生成してくれる、 お手軽スキャナージェネレータは無いのかな?
17 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 01:05:33 ] >>16 つ「正規表現」
18 名前:デフォルトの名無しさん [2009/02/07(土) 15:58:49 ] 各コードジェネレーターが生成したコードの処理速度を比較結果を掲載しているサイトってないの?
19 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 16:22:18 ] ここで聞いていいのかわからんけど、ActionScriptのDSL処理系ってない? ActionScriptっていちいちコンパイルせなあかんやん? 面倒なんよね オンザフライで処理してくれるDSLあると便利何やけど、emebedded向けなライブラリないかな? 検索してるんだけど、全然でてこないんだ
20 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 21:19:58 ] >19 むかしActionScriptで書かれたJavaScript実装で、fiberみたいなこともできるのがあったけど、 ググッたら出てこなかったorz...
21 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 21:21:40 ] >>16 マイ・オートマトンブームを起こすしかない。
22 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 22:54:30 ] >>16 PEGでいいじゃん
23 名前:19 mailto:sage [2009/02/08(日) 01:06:23 ] みなさん、ありがとう。 wonderfl関係あさってたらいろいろ発見しますた。 wonderflでポケコンでシューティング | wonderfl build flash online wonderfl.kayac.com/code/338bb2c5f0058713460610b8794d4efa4f80309a 2009-01-08 - Simple Inspiration d.hatena.ne.jp/keim_at_Si/20090108 Cannon macro language www.yomogi.sakura.ne.jp/~si/SolidImage/cml/index.html ゲーム用のちっこいDSLがあればなーと思ってたので調度よかった・・・ wonderflのはまあコンパイルはしないといけないけど、文字列を外部にだせばどんだけでもいけるよね
24 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 22:34:36 ] Xtalの作者ってバンダイナムコゲームスで活動してるんだな…
25 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 02:01:57 ] 保守
26 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 14:16:19 ] jp.ne.cappuccino.keisuken.lex が字句解析してくれるみたいです。 cappuccino.jp/keisuken/java/lex/docs/specification.html
27 名前:16 mailto:sage [2009/03/25(水) 05:11:37 ] >>17 >>21 >>22 >>26 何気なく書いただけなのに、暖かいレスさんくす。 他にもJavaの場合には、標準ライブラリのStreamTokenizerを使っても 字句解析らしきことができるようです。 www5b.biglobe.ne.jp/~psoft/lesson/StreamTokenizer.html
28 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 20:03:50 ] XtalのPEG採用って、言語仕様側じゃなくて、アプリ側だったのか。 言語仕様側だったらセミナーにはぜひ行ったところだったんだが。
29 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 20:31:43 ] Xtalスクリプトのコンパイラ自体はC++でがりがり書いてるからな。 PEGパーサを組み込みライブラリとして持つとのことようだが(詳しくはソースコード参照)
30 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 22:05:00 ] コンパイラつーか、パーサね。 パーサジェネレータ使わずにがりがり書いてるね。腕力のある人はうらやましいわ。
31 名前:転載 mailto:sage [2009/04/05(日) 09:38:58 ] IGDA Japan chapter - ニュース www.igda.jp/modules/news/article.php?storyid=1622 13:10 - 14:00 「ごく簡単な並列処理スクリプトシステムの設計と実装」 □講師 小久保啓三(HAL東京) (株)スクウェアでの代表作「ロマンシング・サガ」「FF5」「クロノトリガー」「FF7」。クロノトリガーとFF7では、スクリプトシステムの設計と実装に携わる。 14:00 - 14:50 「『サクラ大戦X』でのスクリプト運用事例」 □講師 秋葉晴樹(セガ) 株式会社セガ 第三CS研究開発部 リードプログラマ。 代表作は、サクラ大戦シリーズ、のび太の新魔界大冒険、ブレイザードライブ。 サクラ大戦シリーズは3から参加、主にADVパートのプログラムを担当。 15:20 - 16:10 「汎用スクリプト言語Xtal 設計と実装」 □講師 石橋立宣(バンダイナムコゲームス) NBGI プログラマ。 PSP塊魂のエンディングミニゲームやシステム周り担当。 PSP太鼓のADV部分やシステム周り担当。 趣味で、C++組み込み用スクリプト「Xtal」を開発。 16:10 - 17:00 「Squirrelスクリプトを使った実装と活用」 □講師 神尾隆司(スクウェア・エニックス) Wiiウェア 小さな王様と約束の国 ファイナルファンタジー・クリスタルクロニクル の開発に関わる。 北出智(スクウェア・エニックス) PS2 聖剣伝説4、Wiiウェア 小さな王様と約束の国 ファイナルファンタジー・クリスタルクロニクル 等の開発に関わる。
32 名前:デフォルトの名無しさん [2009/04/07(火) 12:55:27 ] 誘導されてきました。よろしくお願いします。 自作ソフトで使うマクロの文法を、拡張しようと思い、 lexやらyaccやらbisonやら調べ始めたのですが・・・難しい・・・ 例えば呼び出し前に新たなトークンを追加したり、関数定義みたいなことが 出来るようにするサンプルを探しているのですが、見つかりません。 ・自作ソフトはプラグインで拡張可能になっていて、マクロのプラグイン名 を自前で解析していますが、区切り文字の検出とか括弧の扱いとか、自力 では限界なので・・・プラグイン名を追加トークンにして、ライブラリお 任せ一発という形に出来ればと思っています。 (プラグイン辞書の関数ポインタ呼び出しみたいな形) ・マクロの中で関数マクロの定義が出来るようにといいのですが、 function hoge(a, b, c) = { age; sage(a, b); uge(c); } hoge(1, 2, 3); こういうのを実現しているサンプルなどありましたら教えてください。
33 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 13:20:14 ] 現状、どういう風に構文解析とかしていて、どういう風にマクロを実行したり プラグインを呼び出したりしてるわけ?
34 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 14:32:15 ] 今の時点の文法はシンプルです。プラグイン名と引数、セミコロンのみ。 hoge[(...)]; [...] プラグイン名を配列に積み上げて、一括でマクロ構文を読み込み、 セミコロンで分割して、参照の配列に積み直し。 動かすときに、それぞれのインターフェースを順に呼び出す形です。 これだと代入操作ひとつ出来ないので、何か良い方法を探しています。
35 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 15:06:31 ] 関数名だろうが変数名だろうが,言語組み込みじゃないトークンは トークン化の時点では何も考えず全部「識別子」一括りでおk
36 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 15:21:59 ] そもそも、「変数」といったものをどうやって実現したらいいのか、とか、 スクリプトを読み込んで、関数定義があったら何をして、関数の呼び出しが あったら何をするのか、とか、そういうことがそもそも全くわかってないのでは? なんか配列って言ってるけど、リストとか木とかをポインタで操るコードは 書ける? それができないと本格的な処理系は無理。
37 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 15:35:53 ] 目先にとらわれて本質が見えてない感じがする 高レベルな言語を触ったりしてみてもいいんじゃない
38 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 16:24:26 ] >>35 なるほど。最後にまとめてチェックすればいいという考え方ですね。 >>36 その通りです。yaccやbisonのサンプルを探してみても、文書を 解析するところまでで、その先を実際にどうやっているかの例が なかなか・・・。 唯一良さそうな例を見つけました。 >ttp://www.ibm.com/developerworks/jp/linux/library/l-pirates4/index.html 生のソースもとれるようですし、これで勉強してみます。 ホントはもう少しシンプルな例があればいいのですが・・・
39 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 16:53:02 ] yacc 電卓、で検索すれば簡単な電卓の例がいくつも出てくると思うが...
40 名前:デフォルトの名無しさん [2009/04/07(火) 17:02:05 ] yacc/lexを自作するところから始めるのがお勧め。
41 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 07:11:35 ] LLVMの簡単な使い方ってどこ見ればいいのですかね?
42 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 08:21:46 ] >>41 llvm.org/
43 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 13:17:44 ] これはワクテカじゃないか? InfoQ: LLVMおよびRubyの総まとめ:llvmruby、yarv2llvmおよびregexpllvm、Rubinius www.infoq.com/jp/news/2008/10/llvmruby-roundup-yarv2llvm InfoQ: MacRuby 0.5にLLVMをベースにした高速VMが搭載される www.infoq.com/jp/news/2009/04/macruby-llvm-speed
44 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 03:35:20 ] おー、世の中にはこんな便利なものがあるのか。 たとえ苦労してでも勉強して使いこなしたいところだな。
45 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 18:14:29 ] >>38 コンドーさんの「yaccによるCコンパイラ」がおすすめ ・・・なんだけど、プレミアがついちゃって高いんだよなあ
46 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 12:04:35 ] >>38 yaccやbisonでないと駄目なのかい? 古くさくて使いにくいから、今からパーサを書くなら 他にいいジェネレータがありそうだけど。 C++、C#、Javaならばcaperがお薦め。 (Javaジェネレータはまだレポジトリから落としてビルドする必要がある) ttp://naoyuki.hirayama.googlepages.com/caper.html ttp://code.google.com/p/caper/updates/list どうしてもyaccやbisonがいいなら、以下を読めばいいよ。 ttp://guppy.eng.kagawa-u.ac.jp/2006/ProgLang/bison-1.2.8/bison-ja_toc.html
47 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 14:37:19 ] >>46 日本語の文書!! いや実は挫折してました。ごめんなさい。がんばります。
48 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 18:29:20 ] 紙メディアで出てるGNUのBison解説とかどうかな?
49 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 22:46:38 ] >>48 以下のことですな。 www.amazon.co.jp/Bison 入門-チャールズ-ドネリー/dp/4756130658 内容は>>46 の一番下と同じなのだけど、絶版で値段が高騰しているのが問題かな。 紙媒体だと電車の中などで読めるのがいいんだけどね。
50 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 23:31:19 ] そういえばこんなのが出るとか Flex & Bison - by J Levine (2009/8/31) www.amazon.co.jp/dp/0596155972
51 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 08:10:34 ] > 内容は>>46 の一番下と同じなのだけど、絶版で値段が高騰しているのが問題かな。 うわわわ。絶版してたのか。
52 名前:46=49 mailto:sage [2009/04/29(水) 10:37:05 ] >>47 > yaccやbisonのサンプルを探してみても、 > 文書を解析するところまでで、 > その先を実際にどうやっているかの例がなかなか・・・。 > > 日本語の文書!! 日本語で書かれていて意味解析以降も 全部載っているドキュメントを探してきた。 ecs.kuis.kyoto-u.ac.jp/isle/le3b/siryo.ps Flexの解説 (GNU公式ドキュメントの日本語訳) もあった。 Flex入門 ascii.asciimw.jp/pb/bookmart/pdf/47561/4756130976.pdf
53 名前:52の続き mailto:sage [2009/04/29(水) 10:41:59 ] 読みやすいように、要点だけ説明しておこう。 まずは字句解析から。 まずはソースファイルを読み込み、字句解析にかける。 字句解析では文字列を切って、種類を表すタグを付ける。 (タグはenumなどの定数) 例えば、 int main(void) {return 0;} ならば、字句解析の結果は elem(INT, "int"); elem(ID, "main"); elem(PAREN_L, "("); elem(VOID, "void"); elem(PAREN_R, ")"); elem(BRACE_L, "{"); elem(RETURN, "return"); elem(INTLITERAL, "0"); elem(SEMICOLON, ";"); elem(BRACE_R, "}"); のようになる。 (elemはC++のクラスのつもり) 引数は左がenum定数で右は文字列ね。 一行を1つの構造体 (またはクラスやタプル) に入れると便利。 (Flexだと種類と文字列を別々に取得するんだったかな?)
54 名前:52の続き mailto:sage [2009/04/29(水) 10:55:29 ] 字句解析の結果を構文解析にかける。 上の例だと、ベタに書くと以下のようになる。 Program : INT ID PAREN_L VOID PAREN_R BRACE_L RETURN INTLITERAL SEMICOLON BRACE_R ; 「=」の右側には、どういう種類の文字列がどういう順で並んでいるかを書く。 これだと本当に上の例しか読めなくなるので、 例えばVOID型で中身の無い関数も定義できるようにすると、以下のようになる。 (「|」は「または」という意味, 複数のパターンのどれでもいい場合に使う) Program : INT ID PAREN_L VOID PAREN_R BRACE_L RETURN INTLITERAL SEMICOLON BRACE_R | VOID ID PAREN_L VOID PAREN_R BRACE_L BRACE_R ; これで、以下のコードも読めるようになった。 void main(void) {}
55 名前:52の続き mailto:sage [2009/04/29(水) 10:58:05 ] しかし、こうやって全部のパターンを網羅していくときりが無いよね。 だから、部分的に抜きだして共通化する。 上の例だと、 Program : ReturnType ID PAREN_L VOID PAREN_R BRACE_L Body BRACE_R ; ReturnType : INT | VOID ; Body : // 空の場合は何も書かない | RETURN INTLITERAL SEMICOLON ; こんな具合に、共通でない部分を追い出してやるわけだ。 # void型なのにreturnしている関数や # int型なのにreturnしていない関数も読めるようになったことに注意。 構文解析では、一度に完璧な定義を書こうとせずに、 少しずつ解析できるパターンを増やしていくとやりやすいと思う。
56 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 17:46:16 ] >>30 LLVMもbisonパーサから手書きのパーサにかえたんだっけ。 案外、手書きの方が開発しやすいのかな?
57 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 15:51:13 ] 構文の規模や性質や、頻繁に規則をいじるかどうか、などなどによる。
58 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 01:30:41 ] FlashのActionScriptで自作言語を作ろうとして ttp://www.hakkaku.net/articles/20080226-154 ttp://www.hakkaku.net/articles/20080307-158 を先日から見ているんだが、字句解析の部分がさっぱりわからん。 構文解析のkmyaccの部分は良く分かるんだが、lexにあたる部分を 手書きしているらしく、なんか自力でトークンを探して分割したり クラスをゴリゴリ作ったりしている。正直ムリポ。 その辺に落ちてるlex/flexで代用したいんだが、どうやればいいんだろう? もしそれがムチャなことなら、「kmlex」的なものはないだろうか?
59 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 04:26:19 ] このレベルがわからないんじゃ 言語なんて作るの無理
60 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 07:28:20 ] AS3.0以降はRegExpあるから、自作してもすぐ出来るだろ
61 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 07:50:10 ] RegExpで字句解析するの?
62 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 08:10:18 ] RegExpで字句解析しないの?
63 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 08:23:56 ] な・・・RegExpで字句解析しただと!?
64 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 09:11:48 ] パース、構文木生成、式解釈、ニーモニック生成、コード出力をやるだけだ。 慣れたらゼロからでも数日で実装できる。
65 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 01:25:57 ] LLVMを勉強したいです 書籍ってありますか?
66 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 02:14:25 ] 本家のドキュメントがよい。
67 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 09:20:42 ] 本家にkaleidoscopeっていう処理系を作りながらllvmを憶えるチュートリアルがあるよ。
68 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 23:32:34 ] >>61 「文字列の先頭からアルファベットに引き続く、空白までの連続部分のマッチ」に 該当すれば、それを予約語として認識し、文字列からその部分を取り除いて 再度先頭から…を繰り返しているんだろう。 >>62 getChr()で一文字づつ文字を読み込んで、「空白の次にアルファベットだから このトークンは予約語」というアタリの付けかたをしているんだろう。
69 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 17:16:46 ] ドラゴンブック二版の邦訳買ってきたよ。すごい紙薄い。
70 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 18:16:41 ] いい紙なのかな。TAOCPみたいな?
71 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 00:45:48 ] バラシテスキャンしないと
72 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 22:22:08 ] up2.viploader.net/pic2/src/viploaderf159403.jpg バーコード邪魔
73 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 22:49:06 ] [これはひどい] 絵本とかでバーコードがシールになってて、買ったらはがせるのあるけど、 そうしてほしいところだな。技術書だから無理に決まってるけど。
74 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 22:53:56 ] なんか本当に剣と魔法の挿絵になってね?
75 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 23:01:57 ] 楯が Syntax Directed Translation 剣が LALR Parser Generation 鎧が……読めにゃい 竜が Complexity of Compiler Design かな?
76 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 23:24:16 ] 拡大 up2.viploader.net/pic2/src/viploaderf159408.jpg
77 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 23:32:24 ] Data Flow Analysis か
78 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 00:32:32 ] コンパイラ第2版ってどこ改訂されたの?
79 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 02:55:37 ] 全面的に
80 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 03:02:46 ] 読みやすくなってる?
81 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 16:40:02 ] >>75 もう画像流れてるわ 第一版と同じで鎧は syntax directed translation じゃなかろうか default を「省略時解釈」とか、そういうのが無くなってるといいんだが
82 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 18:24:48 ] > 第一版と同じで鎧は syntax directed translation じゃなかろうか それは盾だって>>75 に > default を「省略時解釈」とか、そういうのが無くなってるといいんだが 往年の教科書では定番だったよねそういう訳
83 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 19:28:33 ] 最近の本は「既定の…」になるの?w
84 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 21:09:37 ] ごめん、data flow analysis だな
85 名前:デフォルトの名無しさん [2009/06/06(土) 01:03:33 ] 検索でここまで辿り着きました。 宜しくお願いします。 現在、オブジェクト指向のクラスの実装などが、 コンパイラでどのように実現されているのかに興味を持ち、勉強中です。 コンパイラの本も何冊か買い、簡単に目を通しましたが、 殆どが手続き型言語のコンパイラの解説で終わっており、資料の少なさに困っています。 自分で探した範囲で、オブジェクト指向型言語のクラスの実装等に触れられている本は、 『コンパイラの構成と最適化』(朝倉出版)しか見つけることが出来ませんでした。 『コンパイラ―原理・技法・ツール』の第2版版が最近出版されたようなので、 書店で立ち読みをして見ましたが、オブジェクト指向言語に関しては、 余り記述がされていないようです(短時間立ち読みをした程度なので、見落としてるだけなのかもしれませんが…)。 上で記述した以外に、オブジェクト指向言語の具体的な実装について書かれたコンパイラ等の書籍などがご存知の方がいらっしゃいましたら、本の題名等をご教示頂けると幸いです。
86 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 01:21:19 ] なぜそんなにオブジェクト指向にこだわるのか理由がよく分からないな。 まあ、単純にオブジェクト指向を特徴としている言語の実装が知りたいなら、 ソースコードを入手して眺めるのが一番早いだろう。 RubyやPythonなんかでどうだ?
87 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 01:24:05 ] >>85 gcc読んでここでその成果全部書けよ そしたら教えてやるから
88 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 01:40:21 ] >>85 "Rubyソースコード完全解説"
89 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 01:43:11 ] 『いまどきのプログラミング言語の作り方』に、ちょっとだけ載ってたかなあ
90 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 03:16:32 ] >>86 OOPにこだわる切欠は、自分で作ったCのプログラムを逆アセンブルして、アセンブリ言語の勉強をしていた時、JavaなどのOOP言語では、どのようにソースコードがバイトコードなどに置き換えられ、クラス等がどの様に実装されているのかに興味を惹かれたためです。 PythonやRudyに関しては、恥ずかしながら名前しか知りませんでした。 ソースコードもダウンロードしてみました。 再度の質問になり恐縮ですが、これはコンパイラのソースコードではないかと考えていますが、その様な理解で良いのでしょうか? どちらにせよ、自分の勉強不足は明らかなので御指摘を元に、勉強してみます。 アドバイスをありがとう御座います。 >>87 まだ勉強を始めたばかりで、恥ずかしながらgccについては、知りませんでした。 gccについて、これから勉強してみたいと思います。 >>88 検索して見つけることが出来ました。 Amazonで買おうかとも思いましたが、プレミアが付いているようで、とても高いですね。 Webで本文が見られるみたいなので、それを見させていただきます。 ご教示ありがとうございます。 >>89 Amazonでも今は取り扱っていないようですね。 評判の良い本のようなので、購入を検討してみます。 ありがとうございました
91 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 03:31:26 ] >>90 RubyやPythonは、オブジェクト指向のスクリプト言語だ。 現代のスクリプト言語はいったんバイトコードにコンパイルされてから実行される形式が一般的で、 従ってコンパイラと呼びうるすべての要素がソースコード内に含まれている。 そしてそこから先(バイトコードをどのように動かすかの仮想マシンの実装)もあるわけだ。 いい教材になるわけで。
92 名前:90 mailto:sage [2009/06/06(土) 10:21:50 ] >>91 そうなんですか。 その事については、知りませんでした。 コンパイラの動作をソースコードを読むことで確認出来るというのは、 私のように学習を目的としている者にはありがたい話です。 Rudyは書籍やWebでの資料が充実しているようなので、これから調べてみます。 ご教示、ありがとう御座いました。
93 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 11:25:22 ] >>92 Rubyソースコード完全解説という神書籍があってだな、絶版だが、初版が無料公開されているのでオススメ Rubyソースコード完全解説 i.loveruby.net/ja/rhg/book/
94 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 19:53:04 ] >>90 参考までに、Javaのバイトコード仕様はSunのサイトで閲覧できる (英語)。 SunのJDKに付属しているjavapとかで逆アセンブルできるよ。 他にEclipse用のプラグイン「Bytecode Outline plugin for Eclipse」とかでも。 Eclipse用だと「Classfile Inspector」(有料 99Euro)ってのもあったけど、いまググったら サイトが消滅したようだ。
95 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 07:45:39 ] 速攻MinCamlコンパイラ概説 ttp://min-caml.sourceforge.net/
96 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 10:54:28 ] >>85 英語は読めますか?
97 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 11:07:20 ] あんまり道を示しすぎてもパンクすると思うんだが。 85とは関係なしに紹介したいサイトがあるなら、俺が消化するから構わず続けてくれ。
98 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 11:54:40 ] www.amazon.com/Advanced-Compiler-Design-Implementation-Muchnick/dp/1558603204/ www.amazon.com/Modern-Compiler-Design-D-Grune/dp/0471976970 この辺りの概説書にはOOの実装のこと"も"解説してる。 www.amazon.com/Programming-Language-Pragmatics-Third-Michael/dp/0123745144/ はOO関連のコンセプトの整理がうまい。実装についても書いてある。 全般的な概説書はやはり記述がプアになるので、C++に限れば一番詳しいのは、訳書の www.amazon.co.jp/dp/4810181014 これだけど、今は絶版なので、 www.amazon.com/Inside-Object-Model-Stanley-Lippman/dp/0201834545 原書を読めばいい。 ARM(注解 C++リファレンスマニュアル)も詳しく説明している。これも絶版なので、 www.amazon.com/Annotated-C-Reference-Manual/dp/0201514591 Objectのslot accessでC++と全く異なるアプローチで有名なのが、 code.google.com/intl/ja-JP/apis/v8/design.html#prop_access Selfの元の論文が、 research.sun.com/self/papers/implementation.html にある。JITと相性がよい。 もちろんaccessが遅くていいなら他にも幾らでもやりかたはある。 Objective-Cなんかはhash引いている。
99 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 13:07:35 ] 普段はレキサ・パーサレベルの話しか出ないのに、堰を切ったようにいろいろ出てくるな 実はみんな、教えることに飢えてたのか?
100 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:40:03 ] lexerかparserより先に進んだ質問者がなかなかいないからじゃないかな
101 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:19:24 ] じゃあ俺がお前らの意見を聞いて 万人が理解できるlexerとparserの サンプル書いてやる ということでまず何をすればいいぉ?
102 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:00:12 ] 文法決めれ
103 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:09:06 ] >>101 かっこに対応した四則演算とかどうだ
104 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 19:58:23 ] 四則演算はネット上にゴロゴロしてるからイラネ
105 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 20:18:37 ] forループとif-else-endifの構文サンプル
106 名前:90 mailto:sage [2009/06/09(火) 22:05:49 ] >>93 教えて頂いて、ありがとう御座います。 絶版の資料が無料で公開されているのは、ありがたいですね。 >>94 Javaのバイトコードにも、興味があります。 Java仮想マシン仕様は、日本語の書籍でも出版されているので、今度読むつもりでした。 仮想マシンの概念は、コンピュータのアーキテクチャとも密接に関わってくる事項なので、興味深いですね。 >>96 正直、英語はまともには読めません。 日本語の資料で勉強するのに限界を感じているので、 英語の勉強をやり直そうと思ってます。 >>98 今まで知らなかった資料が多いので、参考になります。 英語の資料が多いですね。 コンパイラの勉強の前に、英語をやり直して、 資料をまともに読めるようになってから、勉強をし直すべきかもしれません。 コンパイラの勉強は、思っていたよりもしんどそうですが、 今まで知らなかった資料を紹介していただいたので、今後の勉強の指針が見えた気がします。 教えていただいた資料を参考に、頑張ってみます。
107 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 22:28:05 ] >>105 それだッッッ ブロックの扱いがどうやればいいのか 悩みまくっている俺にはおいしいです ^q^ ^
108 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 22:57:09 ] >>101 lexer parser 何てどうとでもなるから cps とか ssa あたりの内部表現の評価手法を, 最適化方法に合わせた一覧として提示してくれ
109 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 00:05:45 ] >>108 どうとでもならない人のための相談室スレだと思うんだ。 だから、出来る人は我慢して、ここはレベルを下げて欲しいんだ。
110 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 00:11:32 ] 平行すりゃいいじゃん 誰か一人のためのスレってわけでもないんだし。
111 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 00:32:56 ] >>108 オレは専門家じゃないのでCPSもSSAもどちらの用語も知らなかったが、 これってLLVMで全部実装されてるんじゃね? やはりLLVMの包括的な解説記事が欲しいところだな。
112 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 00:43:18 ] >>107 Pascalのone pass compiler読め。 homepages.cwi.nl/~steven/pascal/book/7statements.html
113 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 01:19:43 ] >>111 LLVMは既に提出されているものをうまくつなぎ合わせてるだけ つなぎ合わせ方法はいくらでもある 各要素項目を網羅的に解説したものがほしい つか、現場にいるとそっち系をゆっくり、みてる暇がない
114 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 01:43:17 ] >>113 実務者としては、実装されてない方法より 既に実装されているものの解説のほうが遥かに役に立つ。 >各要素項目を網羅的に解説したものがほしい この分野に詳しくないので外野の意見だが、それなら洋書を漁って読めばいいんじゃね?
115 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 01:45:38 ] >>108 Tiger Bookや"Practical Improvements to the Construction and Destruction of Static Single Assignment Form."は読んだの?
116 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 01:48:23 ] >>114 > 実務者としては、実装されてない方法より > 既に実装されているものの解説のほうが遥かに役に立つ。 ぶっちゃけここで質問している人が、 現実に使われているコンパイラのソースを参考にして、 自分のコードに反映させるのは難しいと思う。 そのくらいコンパイラは複雑化している。 さらに学習用のコンパイラは関数型言語で書かれているものが多く、 実務指向の人とは相容れないものがあるだろう。 謙虚な気持ちで学習するのが一番。
117 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 02:21:44 ] >>114 > 実務者としては、実装されてない方法より > 既に実装されているものの解説のほうが遥かに役に立つ。 要素手法が見えにくいんだよね。まとまってしまうと。 ましてや、cps とか ssa 使った状態での複合リダクションとなると。 > この分野に詳しくないので外野の意見だが、それなら洋書を漁って読めばいいんじゃね? そりゃたくさん持ってるさ ただ、現場をかかえてるとそっちばっかやってるわけに行かなくなるんだよな >>116 > さらに学習用のコンパイラは関数型言語で書かれているものが多く、 > 実務指向の人とは相容れないものがあるだろう。 それは気にならないんだけど、細切れの論文掻き集めて整理やり直す時間はとれねぇよ
118 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 11:16:43 ] 実務指向でコンパイラを今時つくりたい、なんて人はいないと思う スクリプトでDSLをさっくり組むならともかく
119 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 19:19:12 ] >>90 www.amazon.co.jp/ コンパイラとバーチャルマシン-Text-今城-哲二/dp/4274133087 ↑この本に、オブジェクト指向も例外処理も分かりやすく載ってるよ。 薄くてすぐに読めるし、お薦め。 ただ、日本語で概要が載っているだけなので、 実装するには自分で知恵を絞らないとだけど。 現代的なコンパイラは、内部で何度も変換を繰り返して、 最終的に実行可能なコードをはく。 オブジェクト指向の場合は、最初の方で非オブジェクト指向の Cみたいなコード (AST) に変換してしまうと、 後はよく書籍に載っているような方法が使えていいと思う。 コンパイラを全部 (シンタックスシュガーの除去から アセンブラの出力まで) 自作するのは、大規模過ぎて現実的じゃない。 だから、自分が関心を持っている部分以外は なるべく既存のものを利用するといいと思う。 例えばCのコードを書きだすコンパイラを書けば、 アセンブラごとにジェネレータを自分で書かなくても 多くの環境で動くし、最適化もCコンパイラに頼める。 例外処理などはCでは実装しにくいので、 必要ならLLVM IRを出力するという方法もあるよ。
120 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 19:25:19 ] >>118 「実務」の中身によるんじゃないかな?
121 名前:119 mailto:sage [2009/06/13(土) 19:32:59 ] 以前、Javaバイトコードに変換するコンパイラも書いたことがあるけど、 Javaだと「.class」ファイルはクラス単位でオブジェクト指向になっていて、 オブジェクト指向「からの」変換はJVMが担当している。 だから、バイトコードの仕様を読んでも、あまり参考にはならないと思う。 同じ理由で、JVMをターゲットにした (「.class」ファイルを生成する) コンパイラも皆、参考にならないと思う。
122 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 20:10:29 ] リンゴの本見ればコンパイラなんて3日で書けるだろ
123 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 10:39:22 ] >>121 最近はclassファイルを扱うためのライブラリがたくさんあるよ。
124 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 11:15:34 ] >>121 が言ってるのは、Java のオブジェクト指向的な面 (動的バインディングとか)が実現されてるのは、Java VM自体 なので(invokevirtual命令とか)、オブジェクト指向言語を ふつうのCPU上で実現するコンパイラの参考にはならん、と いうこと。
125 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 21:52:36 ] ドラゴンブック超える神本の出版が確定! プログラミング言語を作る プログラミング言語を作るなんて究極の楽しみだ!
126 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 09:50:36 ] >>125 著者の「プログラミング言語を作る」のサイトはぐだぐだ進行な上に 今ブログをチェックしてみたら最新エントリがエロゲの話で しかもトンデモ理論だったので失笑せざるを得なかった 立ち読みはしてみるつもりだけど、はずれじゃないかなぁ
127 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 10:18:52 ] 前橋さんが言語本出すのか。 まあ、変なものにはならないでしょ。
128 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 18:57:40 ] >>125 作者乙
129 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 20:24:01 ] >>128 あの人の作る言語は神レベルの美しさだぞ お前こそ何言ってるんだw?
130 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 20:26:33 ] >>129 どの人??
131 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 08:43:47 ] >>125 >>129 は信者だろうな。 ポインタ本とか、Java謎本とか、結構悪くなかったと思うけど、今回もそういう 他に類例のないところを押さえる趣向かねぇ。 ドラゴンブックに代わる、なんてことはないないw
132 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 09:01:10 ] >ドラゴンブックに代わる、なんてことはないないw 学術書と実用系趣味本を一緒にすること自体おかしいよね
133 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 09:59:07 ] ドラゴンブック買ったけど、全然役に立たなかった。オナニー書籍 りんご本のほうがよほど役に立ったわ というくらい
134 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 10:21:41 ] >>133 具体的に書かれてないと、単に難しいことが理解できなかった可哀想な趣味グラマにしか見えないな
135 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 10:50:14 ] ドラゴンブック喧嘩せず
136 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 12:07:40 ] ドラゴンブックは、 字句解析、構文解析はツールを使うから詳しくなる気はないし、 構文解析向けの言語理論にも興味ないって人にはまったく不向き。 構文解析ツール作ってみたいなって人、 計算機科学科の学生には今でもいい本の一つ。
137 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 14:08:10 ] そこから先のバックエンドについても、高度な話の基本になるところを 押さえてあるからね。
138 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 16:24:11 ] >>136 「内容に興味のない人には不向き」っていうことですねわかります
139 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 16:44:12 ] >>138 当たり前の事ではないか
140 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 17:41:11 ] 特定書籍の信者って面白いね。 反撃が全部「ぼくは君をこういうキャラに設定したぞ。どうだ悔しいだろう」だし。
141 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 17:45:52 ] >>140 具体的に書かれてないと、単に難しいことが理解できなかった可哀想な趣味グラマにしか見えないな
142 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 20:23:54 ] >>140 構文が曖昧です。君からキャラへの変換は明示的なキャストが必要です。
143 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 22:43:48 ] coinsの利用についてはどうよ? COINSコンパイラ・インフラストラクチャ ttp://www.coins-project.org/
144 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 22:52:47 ] coinsは最凶最悪
145 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 00:01:52 ] >>139 いやだから、内容に興味があるのは”前提”として、 その人たちにとって良い本かを議論しないと意味ないじゃんという話 まぁ全体的にいい本っていう論調だし俺も同意するが
146 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 00:06:19 ] まずドラゴンブック読めない奴はゴミ これ世界の常識あるね
147 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 06:51:19 ] このスレで勧められ板から、ドラゴンブックせっかく奮発して買ったのに、 いきなりしょっぱなからはじめから変な数式ばっかでいやになった…。 論文とかたまに見るけど、どうして人にわかるように書かないんだろうか? 大学行ってたら、小学生でもわかるように、って習わなかったんだろうか?
148 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 07:24:21 ] 小学生でもわかるように書くと厚さと著作にかかる時間とが値段が10倍になりますがよろしいか。
149 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 07:26:33 ] >>147 え?あの程度の数式読めないの? 何それこわい
150 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 07:28:12 ] 10倍じゃ全然きかないか
151 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 07:36:55 ] >>147 貴様は人間の屑だ
152 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 08:23:43 ] >>147 ただ単に読むのが早すぎただけでしょ。積読して、適正になったらまた読む
153 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 10:09:04 ] 小学生でもわかるように、ってのは 無 理 。 大学の教科書で、小学生でもわかるように書いてあるものなど皆無です。 高校生で奮発して読もうと思っているなら、学校の先生にでも相談しなさい。 多分集合の記号とか論理式とかでつまづいてるんじゃないかと思うんだけど。
154 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 23:36:05 ] 先に簡単なの何冊か読めばいいのに
155 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 00:00:30 ] ドラゴンブックが一番簡単 これも読めないゆとりは来るな
156 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 00:07:00 ] ドラゴンブック読まなくてもコンパイラ作れるけどね
157 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 00:13:25 ] 読まないと読めないは違う
158 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 16:33:02 ] 数年前、文系の見方で書いたとかいうコンパイラの本ってあったよね 日本のコンパイラの第一人者が監修になってたから、わりと買った人多い? たとえ話がぜんぜん例えになってなくて大混乱 巻末のJavaで書いたコンパイラのプログラムはほとんどCからの丸写しみたいなつくりだった。
159 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 16:38:45 ] 上のほうですでに出てたかw
160 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 17:15:05 ] むしろ、ドラゴンブックは、それさえ読めれば、相当なコンパイラが書ける本だろ。 確かLSI-Cの作者がそう言ってたと中村正三郎か誰かが書いていた記憶がある。
161 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 17:27:01 ] コンパイラを書けるくらいの人なら読める
162 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 17:45:10 ] >>160 「ドラゴンブックを読めば誰でもLSI-Cぐらいのコンパイラは書ける」だなw
163 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 19:39:56 ] LSI-Cのひとはyacc互換のコンパイラコンパイラも作っていましたよね。 「ドラゴンブック読めば誰でもコンパイラコンパイラは書ける」なの?
164 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 19:57:12 ] スクリプトエンジンプログラミング 買ってきた。半分くらい読んだとこ。 なんか書いてみたいなレベルの自分にとっては、ぴったりのイメージ なんだが、この本あんまり話題に上らないね・・・ C++出来ない自分にゃ読み替えるのが大変w javaVM向けの中間言語を吐くやつのサンプルとかがあると、最高 だったんだけど。
165 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 20:40:34 ] >>162 LSI-Cは1980年代始めから中頃までが全盛期だと思うが、 当時最高の最適化を行なう最強コンパイラですよ。 作者はデータフロー解析、レジスタカラーリングは、 原論文をバリバリ読んでいた人だと思う。 かなりの腕前の人。
166 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 21:33:02 ] >>165 いやいや、>>162 は作者がそう言ったので 中村正三郎か誰かがしょんぼり、という話w
167 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 22:14:46 ] >>164 ちょっと薄い本だけど、日立の人が書いた、Javaのバイトコード を吐くコンパイラがサンプルで載ってる本あったね。 って調べたらあった↓ www.amazon.co.jp/dp/4274133087/
168 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 23:13:16 ] >>167 著者の最初に名前上がってる人、コボラーだね。
169 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 23:15:27 ] まじかよw 興味あったけど買うのよしたw
170 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 23:19:24 ] 作者じゃないが。最近発売された「プログラミング言語を作る 」がインタープリタ もバイトコードコンパイラのソースも載ってるぞ。買って読んでないから内容は 知らんが。
171 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 23:20:09 ] MiniCamlで良いじゃん。
172 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 00:34:54 ] スレ住人に聞くけどJIT関係の最適化に関するプロファイリングネタはここでいいのかな?
173 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 04:30:55 ] さっきJavaで書かれた独自形式の中間言語を出力する コンパイラが欲しいと書いてる人がいたが、 よくよく考えてみると、.NETやJavaなどのそれ自体が 中間言語でかかれててJITコンパイラまで付いてる環境では、 下手に独自で作るよりもその環境の中間言語を出力してしまう、 要するにコンパイラそのものを作ってしまったほうが簡単なんだよな。 中間言語の書式や(基本的に)仮想マシンの仕様を考えなくて済む。 だからJavaにおけるGroovy、.NETにおけるIronPythonなど、 中身はインタプリタというよりもコンパイラそのものだ。
174 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 05:51:31 ] そこでLLVMやCOINSが出てくるわけだ。
175 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 07:32:42 ] プログラミング言語を作るは神本 ドラゴンブック不要といわれる理由がよくわかる 読んでみろ
176 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 07:41:40 ] はい。
177 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 08:03:25 ] はいじゃないが。
178 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 10:29:52 ] >>170 ,175 信者か作者かしらんがいい加減うざい
179 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 11:43:34 ] そう思わせるのが目的のアンチかもよ
180 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 22:29:32 ] プログラミング言語を作る 買って読んでみたぞ 普通の本だろこれ 金返せよ
181 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 22:40:43 ] え?俺の本からは神様が出てきたぞ?正に神本だと思ったw
182 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 23:16:58 ] >>181 作者乙
183 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 23:20:30 ] 間違えた、紙だったw >>182 偽エスパー乙
184 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 23:25:07 ] 無理に面白いこと言おうとしなくてもいいよ
185 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 07:31:29 ] ドラゴンブック持ってないのに コンパイラの本書いてるやついるけど あいつは何なの?
186 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 07:35:37 ] 分かりません。
187 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 14:13:43 ] >>169 いや、コボラーはコボラーでもIBMの奴隷って意味のコボラーじゃないからw
188 名前:デフォルトの名無しさん [2009/06/27(土) 23:40:48 ] >>160 確か、LSI-Cの作者がそれしか読んでないとかいってただけだと思う。 万人に当てはまるわけではない と
189 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 00:30:24 ] 大昔の話じゃいろいろ説明をつけないと通じないんだなあ…… というかその大昔の時点で意味わかってなかったのか? LSI-Cの最適化は凄いとよく言われたが 詰めが甘くて実際には骨折り損だという話もあったよ コンパイル時間はMS-Cの倍だったしね
190 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 01:40:22 ] >>189 8080版の最適化の話だろすごかったの
191 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 07:18:31 ] LSI-C(笑)
192 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 07:19:14 ] 4004(笑)
193 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 09:20:58 ] >>189 知りもしないことをよくもまあ
194 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 11:56:45 ] 知ってる人だけ。。。 MSX-Cは変数が自動でレジスタに割り当てられるんだけど、 そうなるとポインタを介したアクセスと一貫性がなくなる。
195 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 12:01:02 ] MSX-C = LSI-C
196 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 21:23:22 ] >>194 変数のポインタを取り出せばメモリ上に確保しなおしてたよ それともループ内に持ち込んだ変数を割り込み処理で外部から変更した時に関与が出ないって意味で言ってる?
197 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 21:59:34 ] #include <stdio.h> #pragma nonrec main() { int n; int *p; p = &n; n = 10; *p = 100; printf("n = %d\n", n); } MSX-C のマニュアルに載ってたサンプル。 これで「n = 10」と表示されるそうな。
198 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 23:10:50 ] なんじゃこりゃ。 これが仕様なの?
199 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 23:30:24 ] 往年の8ビットマイコン用Cコンパイラの#pragmaか コード書く人もコンパイラの振る舞いにあわせて組んでたんだね
200 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 23:40:43 ] 逆だろ。 pragmaはコンパイルの動作を指定するためにある。
201 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 00:14:16 ] MSX-CでC言語を勉強したんだけど、これによくはまった。 レジスタに割り当てないこともできるけど。 #pragma nonrecはローカル変数をstaticがついているかのようにする。 non-recursiveの略。CPUの制限でスタック上の変数にアクセスするのが 遅いからです。コードの再利用のことを考えてのことだと思う。 あとMSX-Cはlongと浮動小数点数がないんです。 #ifもない。if文で代用とマニュアルにありました。実行されないコードは 生成されない。 なにかの役に立つかな?
202 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 00:17:14 ] #pragma有効で組むか さもなくば死か この時代にCを開発用途に使えたという時点である意味幸運だったとも言える
203 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 12:13:13 ] 8080でのスタックフレームってめんどくさいよな
204 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 23:59:31 ] 高級言語を意識して設計されてないから仕方ない Z80だとIX/IYで強引にやるのか?汎用/裏レジスタで最適化とかしてたら凄いが
205 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 00:51:28 ] IX/IYは人間向きのレジスタで、 便利ではあるけど遅いからコンパイラは使わない。 (HD64180あたりになると結構速かったが) LSI-C(MSX-C)はもちろん裏レジスタ使いまくり。
206 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 22:30:31 ] むかし見たLSI-C80の広告ではIXかIYをフレームポインタに使っていた コードが掲載されていた。 MSX-Cは裏レジスタ,IX,IYを使うコードは生成しなかったと思う。 付属のライブラリでは使っているかもしれませんが。 スタック上のローカル変数アクセスの方法はどうだったか記憶にありません。 MSX-Cのアセンブリ言語出力をZ80に最適化するプログラムを書いた人もいるようです。 僕も出力を見ていたときすこし考えたことありました。 アセンブリ言語レベルで8080から8086に変換するプログラムの存在を古い本で読んだのも思い出しました。
207 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 23:41:00 ] コンパイラが将来性のない 回顧主義者おっさんのたまり場であることがよくわかる だから日本は研究でも実業でもこの分野でチョン以下になる。
208 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 23:51:29 ] >>207 そんな愚にも付かないことを言ってるヒマがあったら、 LLVM向けに何かメジャーな言語を移植するのだ。
209 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 00:01:25 ] LLVMは糞だろ
210 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 00:22:10 ] >>209 どこがどう糞なの?
211 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 23:55:53 ] >>210 Milepost GCCがあるから不要 自分でコードをチューニングするという古臭い時代は終わったの 自動的に学習して最適なコードを出力してくれるからLLVM自体不要なの
212 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 00:01:16 ] 幼稚園児かw
213 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 00:15:27 ] >>211 というか、同じようなアイデアのllvm-gccのほうが有名なわけだが?
214 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 00:20:21 ] >>211 完全自動化だし、今年後半のコンパイラ関係の 賞総なめにするって言われてるけどねぇ EUレベルの国家プロジェクトと田舎大学の糞プロジェクト 比較されてもねぇ
215 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 00:23:40 ] 幼稚園児だな
216 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 07:15:50 ] ヒント:実績
217 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 17:26:47 ] Milepost GCCのICIな人たちが次はLLVMでやってみるって言ってんですがねえ…
218 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 18:29:02 ] 基地外は相手にするなよ
219 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 21:43:00 ] >>217 妄想乙
220 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 00:33:17 ] >>219 君がろくに論文も読んでないのが良く分かりました。
221 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 14:42:00 ] このスレふつうのコンパイラをつくろうを 宣伝したやつフルボッコにするからな
222 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 15:27:47 ] まず>>221 が・・・
223 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 15:45:49 ] >>221 >>221 >>221
224 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 15:59:24 ] >>221 >>221 >>221 >>221 >>221 >>221
225 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 19:14:05 ] 著者の関係者なのか?
226 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 22:26:25 ] 8080でLLVM実装まだ?
227 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 17:28:44 ] ゼッパチでよければ
228 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 16:05:46 ] x86用のコードを吐くCコンパイラの、64bit整数(long long)まわりを読んでいます。 addl $1,%eax adcl $0,%eax みたいな簡単なものは理解できたのですが、シフト演算や乗算・除算になると 追い方が悪いのか理解力が弱いのかさえ分からなくなってきました。 この手のことを解説したサイトって無いのでしょうか。
229 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 17:55:56 ] >>228 たぶん自分で調べたほうが早い。 最適化をかけないデバッグビルドで、 演算させるたびに何か関数(printf)でも呼び出す形にするといいよ。
230 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 18:16:51 ] デバッガ知らないの?gdb?
231 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 18:21:05 ] 前提知識であるx86のアセンブリの知識はあるの?
232 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 01:09:36 ] $(GCC)/gcc/longlong.h まじお勧め
233 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 06:52:57 ] >>229 そうですか。急がば回れってことなんでしょうか。 おれ、このリーディングが終わったらまとめ書くんだ。 >>230 acid 使い方が分からないので、スタックトレースにしか使ってません。 >>231 数年前に、はじめて読む8086を流し読みした程度の知識です。 分からない命令はインテルのpdf引きながら読んでいます。 >>232 www.opensource.apple.com/source/gcc/gcc-937.2/gcc/longlong.h mullを1回で、(long)*(long)はできるのですね。おもしろい。
234 名前:デフォルトの名無しさん [2009/07/08(水) 09:10:38 ] >>230 gcc使う人はたいていデバッガ使わないでしょ。 デバッガに頼り切ってるのはVS厨が多い。
235 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 09:36:37 ] > gcc使う人はたいていデバッガ使わないでしょ。 そういう人って デバッグがデバッガに頼り切りではないという面もあるにしろ デバッガを使いこなせてないという面もあるんじゃないかな。
236 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 09:59:40 ] >>234 それは偏見。 組み込みLinux開発ではgdbくらい使いこなせないとお話になりません。
237 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 17:28:59 ] >>236 それは偏見。 組み込みLinux開発ではgdb使ってるようではお話になりません。
238 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 17:31:41 ] gdbは使いこなせるけど使ってないケースもあるわけで
239 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 17:35:33 ] printfの方が高機能なわけで
240 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 17:56:46 ] Caper良さそうなのですが字句解析(Lexar)には 何を使うのがいいでしょうか? おすすめを教えてください。
241 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 18:34:20 ] Caper良さそうなのですが字句解析(Lexar)には 何を使うのがいいでしょうか? おすすめを教えてください。
242 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 18:53:24 ] 手書きでOK
243 名前:デフォルトの名無しさん [2009/07/08(水) 19:48:27 ] 手書きでいいと思う 文字列→数値のパースみたいなランタイムの処理に流用しやすいし
244 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 23:21:38 ] 本気で速度気にするならflex出力を手修正とかがいいんじゃないか
245 名前:デフォルトの名無しさん [2009/07/09(木) 01:22:53 ] アセンブリから機械語にどうやって変換しているんですか?
246 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 01:54:23 ] まずOPコードを暗記するんだ 相対アドレスも数をこなせば暗算できるようになる
247 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 09:40:02 ] >>245 アセンブラを使う。 gccに-vオプションつけてみな。
248 名前:デフォルトの名無しさん [2009/07/09(木) 09:50:38 ] >>241 Caperはgcc+Perlで開発されているので字句解析にはPerlを使うと馴染みやすい。 Linuxには必要なものがすべて揃っている。
249 名前:デフォルトの名無しさん [2009/07/09(木) 10:10:50 ] >>247 あなたの作っているコンパイラに対してアセンブラは自前ですか?
250 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 10:16:58 ] 母国語でおk
251 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 16:11:15 ] アセンブラどころかリンカもローダも自作したが 最初は使えるものを使って、徐々に置き換えていけばいいんじゃない
252 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 23:01:50 ] Richard Bornatのコンパイラの本でお勧めですか?
253 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 23:26:02 ] 日本語でおk
254 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 21:58:11 ] やさしいコンパイラ(デコイ本)はやめたほうがいい ふつうの方は神本確定の出来だった
255 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 00:56:59 ] やさしいコンパイラ貶して ふつうの方宣伝してる人は まったく具体的な指摘がないんだよな
256 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 01:09:34 ] と、ここぞとばかりに架空の傾向を持ち出すわけですね。
257 名前:デフォルトの名無しさん [2009/07/25(土) 09:32:51 ] ふつうのコンパイラ良書なんでしょうか 学生なのでちょっと資金余裕がなくて
258 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 09:38:48 ] 研究室で買ってもらえばいい。あるいは図書館。
259 名前:デフォルトの名無しさん [2009/07/26(日) 02:01:07 ] mingw-jpの使い方まったくわからないので どなたか教えてもらいたいのですが
260 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 17:17:33 ] 言語ワークベンチは究極的には完全にプログラミング方法を変えるかもしれない www.infoq.com/jp/news/2009/05/Language-Workbench
261 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 17:40:02 ] >>260 なんかスタイルシートが効いてなくて生々しいレイアウトになってない?
262 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 17:57:19 ] >>261 今見たが、特に問題ないぞ。
263 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 11:25:26 ] >>261 うちの環境だとこうなってる IE6 ちゃんと出る FireFox スタイルシートが効かない Google Chrome スタイルシートが効かない上に画像も表示されない
264 名前:263 mailto:sage [2009/07/27(月) 11:30:13 ] 今見たら直ってました。
265 名前:261 mailto:sage [2009/07/27(月) 12:19:46 ] うーん。うちのFirefoxだと変わらずだな。 エラーコンソールになんか出てるけど、それが原因を示してるのかわからん...
266 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 13:05:55 ] >>265 リロードしたらOKになったよ、うちのFX
267 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 14:00:29 ] うちもFirefoxだと一度目はスタイルシート読み込まれないな まぁスレには関係ない話題だが
268 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 14:39:17 ] >>260 どっちかというと設計よりの話だね。
269 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 04:41:50 ] .NET周りで使えるもの、という条件だが。 ・Lexical analyzer and parser generator 単純だがよくできている。構文木を食わせてソースコードを吐かせるBison式。 最初これで作りかけていたが、パーサーを構築できてもそのパーサーが予定の挙動をしない場合、デバッグの方法が困難。 (テーブルに分解されてしまうため、ソースが追いかけられない) パーサーの動作は高速と思われる。 ・Irony パース、構文木構築までをやってくれるコンパイラを動的に構築してくれる。 簡単なGUIのパーサーチェッカーが付いていて、開発がかなり楽 (すごい楽かはもっと楽なものがあるのかどうか知らないので……) 動的に構築する分lapgより遅いかもしれないが、とりあえず自分の目的にはこれで十分なので。 ただ、コンパイル済みコードを吐かすために自分用の構文木を もう一度作り直す羽目になるのは激しくビミョー……。 (別にそのまま構文木を消化していったっていいわけだが。 まあ少なくともテキスト形式で出力するにはあの構文木のオブジェクト構造は向いてないな)
270 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 04:55:36 ] 修正と補足。 「構文木を食わせて〜」は、「BNF定義を食わせて〜」が正しい。 lapgもIronyもどちらもEBNFではなくBNF式。(Wikipediaで調べた限りでは) ただしどちらもパースに正規表現が使える。 lapgは非Ascii文字の正規表現パースがどうも挙動が怪しい……。 Ironyはホワイトスペースの除去以外にも非構文要素を取り除けるチャンスがあるので小回りが効くようだ。 (といったところも気に入っている)
271 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 13:51:44 ] JetBrains Meta Programming System これが最強他は全て旧世代の糞技術
272 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 14:25:38 ] >>271 どんなものか説明してみれ
273 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 14:32:14 ] .NET向けの旧来のスタイルのものとしてはGPPG/GPLEXが定番 GPPGはIronRubyにも使われてる
274 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 15:05:06 ] ドラゴンブック買ってきたぞ!さあ読むぞ!
275 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 16:48:45 ] >>273 なるほど……。 現在はMPPG/MPLEXと名前が変わってるようだけどね。 どうせいずれVisual Studioの胸を借りる(SDKを使ってオレ様IDEを作る)予定なので、 はじめからこちらで構文解析を実装しておいた方が 構文の強調、InteliSenceなどで使い回しが利くかもしれない。 結構進んでてあとはエラー周りくらいだったんだが、破棄してしまうかなぁ……。
276 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 16:55:06 ] MPPG/MPLEXはまた別物だよ(MSがVisual Studio SDK用にカスタマイズしたもの?) 本家はttp://plas.fit.qut.edu.au/gppg/Default.aspxで開発継続中でドキュメントも充実してる
277 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 17:30:29 ] >>276 HPみてみたら、GPPG is closely related to the “Managed Package Parser Generator” application って書いてるね。 今仕様を決めているスクリプトは文法がPythonに似ているので IronPythonがどうなってるか調べてみたら、こっちはパーサーを自前で書いてる……? (ソースコード中に直接コメントでBNFが書いてある)
278 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 17:42:08 ] ともあれ、BNF定義の中に直接コード片が埋め込めるGPPG/MPPGの仕様は興味深いね。 ただそれだけに、PDFドキュメントだけじゃなくて実際に動くサンプルプロジェクトが欲しいところだなぁ。 どっかにお手ごろなのが落ちてないかな。
279 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 18:06:36 ] >>276 のサイトにあるパッケージには電卓のサンプルが付いてる。 言語なら ttp://www.iunknown.com/2007/11/lolcode-on-dlr.html これなんか手ごろで面白い。あとは大規模だけどIronSchemeやIronRubyくらいかな。
280 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 18:20:30 ] >>278 > ともあれ、BNF定義の中に直接コード片が埋め込めるGPPG/MPPGの仕様は興味深いね。 >>276 のサイトも見ないで聞くがyaccなんかのアクションとは違うもの?
281 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 18:41:28 ] 同じです 言語定義が処理系を実装する言語に依存しないというのは,むしろ流行りの売り文句です
282 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 18:47:36 ] >>281 > 同じです じゃあ>>278 は何が興味深いんだろうか? > 言語定義が処理系を実装する言語に依存しないというのは,むしろ流行りの売り文句です JavaでいうとSableCC的なやつかな JavaCC+JJTree、ANTLRでもできるが
283 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:06:25 ] > GPGP is a generator for LALR(1) parsers. It accepts a > “YACC/BISON-like” input specification and produces a C# output > file. The parsers that it produces are thread-safe, with all parser > state held within the parser instance. プログラミング言語非依存でもないよ。
284 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:09:44 ] >>280 ,281 278だが、その点で言えば、269で挙げたLexical analyzer and parser generatorはC++/Java/C#形式で吐き出せるよ。 だがこちらとしては、実装言語の非依存性などどうでもよい。 パーサーを実装しやすい仕様になっていればそれでいいわけ。 実装しやすさという観点で言えば、BNF式ごとにコードが埋め込めるGPPGは小回りが利きそうだし、 コンパイラやエラー処理があらかじめ一通り実装された状態で使えるIronyよさげ、というわけで。
285 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:14:10 ] >>284 話の流れが見えてなくてすまないが、要は昔ながらのコンパイラ・コンパイラが 欲しくてGPPGがそうだってだけ? 仕様が興味深いというから何か目新しいネタがあるのかと期待しちゃったんだが
286 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:16:39 ] ANTLRみたいなのって,C#にも対応してるよと謳ってるのが多いけど ランタイムの実装が糞すぎて使い物にならないのが多いんだよね
287 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:28:14 ] >>286 学者風情が作った糞ライブラリに 期待するなよw自作しろ
288 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:37:36 ] >>284 >>286 >>287 ノイズレスはやめてくれ
289 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:47:26 ] >>285 他のやつらとこのスレの趣旨的にはどうか分からないが、 オレとしては自分で仕様を決めたスクリプトを他の形式にコンパイルするのに 必要十分な環境をそろえられればいい。 GPPG(MPPG)はスレの流れからするとyaccに仕様が近いようだが、(いわゆる昔ながらのコンパイラ・コンパイラ) 別にそれにこだわりはない。 むしろIronyによる作りやすさを評価してるくらいだ。 ともあれ、構文木を作った後が大変なんだがな……。
290 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 21:50:56 ] 確かに、はじめてyaccを知ったときは大変興味深かった。 >289はGPPG?で今その感動を味わっているわけだ。
291 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 21:55:08 ] >>289 あんなバグフィックスも含めて、 ちゃんとメインテナンスされてるどうかわからんツールよく使えるな。 近況はブログにでも書いてて欲しい。
292 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 22:02:23 ] >>291 リリース版しか見てないだろ。 Subversionのリポジトリみたら今月に至るまでコミットされつづけてるぞ。 というか、作者に連絡して修正パッチを投げてさっき返事が来たところだ。 codeplexにおけるプロジェクトratingsも★5つだし、どこが気に入らないのか知らないが、 まあオレが使いこなせれば済むことだからいいや。
293 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 22:27:30 ] yaccを知らずに僕らは生まれた〜 lexを知らずに僕らは育った〜
294 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 10:06:57 ] PEG世代の歌か?
295 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 00:01:46 ] 夏休みなんで C++でPEGかpackratのパーサ作ってみたいのですが 何を参考に作るのが面白いでしょうか?
296 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 00:13:52 ] ポリエチレングリコール? いやいや・・
297 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 00:23:12 ] >>295 PEGは新しい概念で古い言語向けにはあまり実装されて無いんじゃね? Haskell、Pythonあたりを使うことをお勧めする。
298 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 11:42:07 ] ttp://pdos.csail.mit.edu/~baford/packrat/ Packrat の総本山に、C++ 実装へのリンクがいくつかあるよね。
299 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 12:00:32 ] PEGって使いやすいの? CFGに比べた利点・欠点とか こういうのが書きやすいとか書きづらいとかありますか。
300 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 12:29:13 ] 原理的には、バックトラックのあるトップダウンパーザの受け入れる文法そのもの なので、CFGに比べて、原理を理解してしまえば直感的。 利点とも欠点ともとれるけど、レキシカルアナライザと統合される。 ナイーブな(メモ化なし)実装だと、指数的に時間がかかり、かつ無駄が多い。
301 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 12:41:16 ] C#の処理系ってことでIronMetaを眺めてみたが、こりゃあ異次元行ってるな。 ぱっと見ただけじゃさっぱりわからんぞ……。
302 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 12:56:06 ] ? これ別にC#をパースしてるわけじゃないと思うよ yaccみたいにテキスト的に処理してるだけだろ
303 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 12:58:29 ] >>302 まあそうなんだけど、C#自体の文法と似通っていて、 どこまでがC#の文法なのかが非常にわかりにくい。 どう見ても構文の宣言とラムダ式の定義が混じって見える。
304 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 01:55:34 ] >>303 そもそもそういう人が処理系なんて書けるの?
305 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 07:32:04 ] >>304 んんー、昨日いっぱいまでで、Irony使って大体書き上げてしまったぞ。 単独ファイルのコンパイルは文法の厳密化とか以外は大体こんなもの。 あとはエラー出力を整理してGUIくっつけて複数ファイルのコンパイルに対応したらおしまい。 ソースコード吐き出し式よりライブラリ式の方がオレには使いやすいようだ。
306 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 10:55:30 ] C#って文法は単純でも中身は超複雑だぞw
307 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 12:43:57 ] 中身w
308 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 16:08:03 ] PEGのパーザジェネレータ作るのはかなり簡単だよ。LL(1)やLALR(1)のパーザジェネレータ 作るのと比べてもかなり簡単。LLやLR系だと文法に対するグローバルな解析が必要になるけど PEGはそういうのしなくていいし。パーザジェネレータじゃなくてパーザコンビネータならもっと簡単に書ける 無名関数に相当する機能がある言語だったら、大体100行程度で基本的な機能を持ったものを作れる
309 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 16:14:10 ] PEGの利点: ・原理的にyaccとかのLALR(1)より強力なので、yaccでハンドリングするのが難しい文法も簡単に扱える(ことがある) ・レクサとパーザが統合されてるので、Rubyの"#{exp}"みたいな式埋め込み文字列みたいな文法も簡単に扱える ・Rubyとかではトリッキーな事をしてこの問題を回避している ・アルゴリズムが簡単なので挙動を理解しやすい=文法をデバッグしやすい(かも) PEGの欠点: ・ナイーブな実装では最悪の場合指数関数時間(だけど、実用上最悪ケースはそんなに起きないと思う) ・メモ化(Packrat)しても、定数係数でLLやLRとかの非バックトラック型のパーザよりは遅い ・Packratだと、状態付きパーザを扱うのが難しい(シンボル表を参照しながらパーズする場合など) ・レクサとパーザが統合されてるので、空白とかの処理がやや面倒
310 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 16:14:12 ] それはPackratパーザ? それともバックトラック?
311 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 16:15:27 ] >>310 Packratも基本的には、単にナイーブなPEGパーザをメモ化するだけなので、多少手間が増えるくらいで、実装は難しくは無い
312 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 16:28:07 ] とりあえずLISP系でスマートに実装してみて! ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
313 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 16:43:41 ] >>312 OK. 1時間くらい待っててくれ
314 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 16:50:54 ] なんかPEG/Packrat詳しい人がいるみたいなので質問させてくれ。 手元のPEGのサンプルは四則計算を解釈していて、いきなりインタプリタとして動くようになっている。 いきなり動かすんじゃなくて構文木構築の段階で動作をとめることはできるんだろうか? それから途中まで解析した文脈を情報として続く解釈で再利用できるだろうか? 例えばPythonの文法を考えてもらうとして、 # ***ここから*** if [Expr]: [Sentence] [Sentence] [Sentence] # ***ここまで*** Pythonでは構文の範囲は字下げで表現しているので、 if文の範囲を調べるのに字下げの数を数えないといけない。 どうやって解釈させたらいいのかわからなくて戸惑っているところなんだが。
315 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 17:21:20 ] そのサンプルは、構文木を作ってから四則演算を実行してるんじゃなくて、 いきなり構文を解析しながら四則演算をしてるんじゃなかろうかという気がするが。 オフサイドルールとかはPEGの鬼門だということかと。 確か原論文では、それを理由にHaskellはムズいとして、Javaのパーザを 実装していた。 多分さがせば解決方法が出てる論文もあるだろうと思うのだけど。 パーザを状態付きにする方法は原論文にある。
316 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 17:56:21 ] >>309 > 定数係数で この言葉遣いはちょっと変なのでは? >>314 字下げ処理はレキサの仕事と割りきってしまえばそれほど難しくはないでしょ。 先読みして{と}に相当するものに変換できるから。
317 名前:313 mailto:sage [2009/08/04(火) 18:20:40 ] (use srfi-9) (define-record-type result (make-result x y) result? (x value) (y next)) (define (app parser f) (lambda(in) (define r (parser in)) (if r (make-result (f (value r)) (next r)) #f))) (define (term str) (lambda(in) (if (equal? (string-scan in str ' index) 0) (make-result str (substring in (string-length str) (string-length in))) #f))) (define (/: x y) (lambda(in) (or (x in) (y in)))) (define (^: x y) (lambda(in) (define r1 (x in)) (if r1 (let ((r2 (y (next r1)))) (if r2 (make-result (cons (value r1) (value r2)) (next r2)) #f)) #f))) (define (seq p . parsers) (fold (lambda(x y) (^: y x)) p parsers)) (define (rep0 parser) (lambda(in) (let loop ((rest in) (rs '())) (define r (parser rest)) (if r (loop (next r) (cons (value r) rs)) (make-result (reverse rs) rest))))) (define (rep1 parser) (^: parser (rep0 parser))) (define (? parser) (/: parser (app (term "") (lambda(v) '())))) (define (& parser) (! (! parser))) (define (! parser) (lambda(in) (if (parser in) #f (make-result '() in)))) (define-syntax rule (syntax-rules() ((_ name body) (define name (lambda(in) (body in))))))
318 名前:313 mailto:sage [2009/08/04(火) 18:25:10 ] なんとか1レスの範囲に収めたが、そのせいもあって、読みづらくなってる。その辺は読む側 の環境で適当になんとかしてくれ。あと、Gaucheのライブラリ関数string-scan使ったので、Gauche でしか動かんと思う。string-indexとかに置き換えれば、他のSchemeでもたぶん動くと思われ。 Schemeは普段使わないんで、Scheme使いの人からするとアレなコードかもしれんが、そのへんは勘弁。 使い方は以下のような感じ。文脈自由文法では表現できない、A^n B^n C^nの文法。 (rule S (seq (& (^: A (! (term "b")))) (rep1 (term "a")) B (! (term "c")))) (rule A (seq (term "a") (? A) (term "b"))) (rule B (seq (term "b") (? B) (term "c"))) (display (S "aaabbbccc"))
319 名前:313 mailto:sage [2009/08/04(火) 18:28:52 ] Pythonのインデントルールみたいなのは、レキサがインデント処理する事が前提だから、PEG/Packrat で処理する場合でも、レキサを別に用意した方が書きやすいと思う。レキサがあったらPEGじゃないというわけ じゃないので別に構わないはず(基本単位が文字の代わりにトークンになるだけ)。
320 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 19:26:20 ] >313 うお、本当にできてる! たしかにこれはクロージャ使えない言語では無理だ こういう風になったけど合ってますか? gosh> (display (S "aaabbbccc")) #<result 0pbb1788>#<undef> gosh> (define res (S "aaabbbccc")) res gosh> (result? res) #t gosh> (value res) (((() #0="a" #0# #0#) (#1="b" (#1# (#1#) . #2="c") . #2#) . #2#)) gosh> (next res) ""
321 名前:313 mailto:sage [2009/08/04(火) 19:34:21 ] >>320 たぶんそれであってる。まあ、これだけだと構文エラー時のエラーメッセージ 表示とかどうしようも無いし、実用的にしようと思うと、色々付け足す必要があるけど、 コアの部分はこれくらい簡単だということで。
322 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:05:50 ] みんな論文みながら作ってるの? どうやってpackrat実装すればいいかよくわからん
323 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:21:12 ] 21世紀…人類はいまだに左再帰問題を克服できずにいた
324 名前:313 mailto:sage [2009/08/05(水) 00:55:09 ] >>322 一応、自分が作ったときは論文参考にしたけど、基本的にナイーブなPEGパーザ+メモ化に過ぎ無いから それさえわかっていれば、自力で実装することもできると想う。ヒントとして、上で書いたSchemeによる パーザコンビネータで、各非終端記号の解析結果をメモ化するにはどうすればいいか考えてみて。 Rats!とか高度な最適化してる奴はまあソース読むしかないと思うけど。
325 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 01:16:54 ] 左再帰の論文もあったような。
326 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 02:07:47 ] これのことかな。 Packrat Parsers Can Support Left Recursion (PEPM 2008) Alessandro Warth, James R. Douglass, and Todd Millstein www.tinlizzie.org/~awarth/papers/pepm08.pdf
327 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 18:40:53 ] COBOLインタープリタを作ろうと思ったが挫折。 制定されているキーワードの数が尋常じゃない。 商用COBOLコンパイラを作っているメーカーの人はマジ天才。
328 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 19:51:58 ] 何でそんなものを作ろうと思ったんだw
329 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 03:42:55 ] COBOLかっこいいじゃん。大文字で。 Cを使える人はいっぱいいるけど、COBOLはそうはいない。 だからこっそり開発して職場のヒーローになろうと思ってね。 でも道は遠かった・・・使うのと作るのとは別物なのだ。
330 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 09:26:31 ] >>327 > 制定されているキーワードの数が尋常じゃない。 何のためにパーサジェネレータがあるんだか まあ、BNF 打ち込むだけで疲労困憊ってのはあるかもしれんが…
331 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 09:32:18 ] 大文字使いたいだけならマクロでも使えばいいじゃん
332 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 10:31:58 ] >>330 やっぱ疲労困憊ら?(静岡弁で)
333 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 11:53:19 ] >COBOL ほとんどは命令の名前なんだから、Identificationのレベルで区切って、 命令の判別はあとの段階にまわした方が簡単になるんじゃない? あとはまあ、フリーソフトのCOBOLの処理系なんて昔ならともかく今ならいくつもあるんだし、作らないという手も。
334 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 15:03:20 ] ゲームのNPCとかにスクリプトを使いたいんだけど 参考になるサイト教えて、lexとかyaccとか難しいのはいらない
335 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 15:32:59 ] >>334 とっつきは悪いかもしれないけど、yacc&lexを使った方が 結局は落だと思うよ。
336 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 16:35:21 ] >>334 オープンソースのスクリプトの処理系を組み込んだ方が普通は楽。 オレはそれにシナリオ記述用の独自形式のスクリプトと2種類用意しているが。
337 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 17:11:04 ] >>334 ゲームの性質(リアルタイムとかアドベンチャーとか)にもよるけど ゼロから勉強しなきゃいけないならYaccとかbisonとかの支援受けるのは悪くないと思うよ 組み込みでスクリプトをその場解析する必要があるならLRのパーサを裸で実装したマイクロPlan(1970年代のbitの記事)とかもあるからそういうレガシーなものもいいかもしれない(これは中間コードVMとしても結構興味深い) っというわけで334がどういうものを欲しているかによって回答が異なるのだな
338 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 21:00:13 ] luaは洋ゲーで良く使われてる
339 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 21:21:39 ] >>337 マイクロPlan懐かしすぎ 臨時増刊捨てなきゃよかった
340 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 23:00:14 ] >>339 同じく後悔してる 他にもmicro StarTrekやTinyBASICのソースもあったんだよな >>334 ゼロから勉強するつもりで、もし入手できるなら「翻訳系構成法序論」がお勧め。 えらく堅苦しい題名だけど、たった136ページで翻訳系(コンパイラ)から 翻訳器生成系(yaccのようなコンパイラコンパイラ)まで作成方法が解説してある。 言語はPascal系なModula-2だけど、難解なアルゴリズムではないから、 C/Javaなどに慣れていれば読解に問題はないと思う。 あと、自前で言語処理系を作らないつもりなら、Tcl/Ruby/Pytonみたいな 汎用スクリプト言語をゲームアプリの中に「埋め込む」ことも検討できる。 ゲーム専用のスクリプトエンジンについては、よく分からんなぁ。
341 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 01:44:52 ] 老婆心だが、Tcl/Ruby/Python のうち、Rubyを組み込むのは やめたほうがいいと忠告しておこう Tclはもともと組み込みのための処理系だし、Pythonもある程度 考えてあって商用も含めて実績も多い。 R(以下略
342 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 01:51:34 ] PL/0まじおすすめ 許されるのは小学生までだけど
343 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 01:59:01 ] >>334 tclかluaを使うことにして、公式ドキュメントを。
344 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 02:48:09 ] >>334 あとはまあ、NPCの台詞や動き程度なら、 イベントの発生条件とイベントの内容をデータとして書ければいいわけだから、 スクリプト言語を使うまでもなく、 XMLやYAMLなどで宣言的データとして書く方法もある。 ちょうど、同じようなものを自分で作ろうとしているところ。
345 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 03:15:15 ] >>341 スレ違いの質問で悪いが、続きを聞かせてくれ。 実際、Pythonを組み込んだオプソだけど高機能な3Dソフトを 知っているし、それに対してRubyはvimくらいしか実績を知らない。 ただ、Rubyの組み込みに何か技術的に致命的な欠陥があったりするのか、 あるいは、それほどPythonが組み込みに優れているのかまでは分からないんだ。 それとも単に>>341 の印象で語ってるのか?
346 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 03:35:11 ] >>345 341ではないが、代わりに答えてみよう。 Rubyでは処理系そのものをライブラリの形で差し替えたり、 あるいはJavaや.NETの枠組みで処理系そのものを再実装したりの試みは広く行われているが、 Rubyを組み込みスクリプトとして使用する例はオレもRPGツクールXPくらいしかしらない。 あまりその辺の分野は活発ではないような気がする。 いい加減スレ違いだから、これ以上の話はRubyのスレに行ってくれ。
347 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 10:55:31 ] 独自に実装かつ、yacc&lexは難しいと言うなら、LISPかForthがいいんじゃね? LISPはよく見るから、あえてForthでやってみてくれ。
348 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 13:30:18 ] >>345 ruby は GC というかメモリ管理まわりの兼ね合いで 組み込みがかなり面倒、という話を聞いたことがある
349 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 14:10:04 ] スレチだけど、言語実装の話でもあるので、ちょっとRubyの話を続けると、 組み込みに向かないのは、evalがあるのが大きいと思う。 そのせいで、パーサとVMが独立できないので、言語まるごと組み込む必要が あるのが大変なんじゃないかと。 1.9でその辺は変わったみたいだけど。
350 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 14:27:07 ] 行の1文字目で処理を分ける程度でいいんじゃね?
351 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 14:33:22 ] 1文字で思い出したけど、変数名が1文字の場合はハッシュ使わないで 26個のテーブルってのどう?
352 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 14:41:29 ] いつの時代のBASICだよ
353 名前:デフォルトの名無しさん [2009/08/13(木) 15:08:53 ] Rubyの話をもちっと聞かせてくれ。 俺も拡張機能用にPythonを組み込んだアプリは良く見るが Rubyを組み込んだアプリは見たことが無い。 これは単にRubyが歴史が浅いからなのか、それともRubyが組み込みで使えない深い理由があるのか?
354 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 15:33:13 ] >>352 難読化したjQueryとかじゃね?
355 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 16:00:40 ] じゃあこのスレっぽく話を広げようか 俺341だけど、言いだしっぺっぽいので まず指摘されてたけど、メモリ管理の点で、1.8時代はネイティブスレッドとは 破滅的に相性が悪かったし、ウィンドウシステム・3D・DirexX関係も 相性はあまりよくない。 それに対してPythonは参照カウントとマーク&スイープの組み合わせで、 マーク&スイープもおとなしいタイプ。 参照カウントってのはちょっとダサいが、質実剛健だしその点では好感。 あと、これは俺の想像だけど、Pythonの作者は、PythonからCを使うってのと CからPythonを使うってのを対称的で対等なものとして考えている雰囲気があるし、 技術的に変なこだわりはなくて、いろんなところに配慮しながら無難な実装をしてる。 Rubyは実装技術オタクのMatzが作ったので、変なところでこだわってたり 無駄に離れ業やってたりしてタチが悪い ただし、Rubyは将来的にはマルチVMも可能にしようという方向で動いてるようだから そこらへんは変わってくるかもしれない
356 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 20:56:15 ] とりあえず Google SketchUp が Ruby 組み込みだったはず。
357 名前:デフォルトの名無しさん [2009/08/14(金) 01:20:18 ] Q. 64bitプログラムとは、どのような文を書くといいのですか A. コンパイラが64bitコンパイルできるなら何でも64bitプログラムになります 心底「ダメだこのバカ」と思った
358 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 09:35:58 ] >>357 つぶやきはtwitterで
359 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 11:41:34 ] >>357 スレ違い 64bitのソフトウェアってどうやって作るの? pc12.2ch.net/test/read.cgi/tech/1170481037/ そのセリフの人物によっては ハズレの外注を引いたときの対応 2人目 pc11.2ch.net/test/read.cgi/prog/1147161173/ 【まるで】使えない新人 0x1C pc11.2ch.net/test/read.cgi/prog/1249835909/ など
360 名前:デフォルトの名無しさん [2009/08/14(金) 21:52:07 ] トークンという物について質問させてください。 例えば s = "ABC"; という文があった場合トークンは、 1. s 2. = 3. " 4. ABC 5. " 6. ; でいいのでしょうか? とくに文字列が "ABC" で1つのトークンなのか "とABCと"で3つのトークンなのかがわかりません。
361 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 21:59:32 ] s = "ABC" ; と分けるのが一般的かと思います
362 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 00:06:09 ] Forthは"が単独トークンになるね。
363 名前:345 mailto:sage [2009/08/15(土) 00:07:23 ] スクリプトエンジンのスレだから、 「組み込み用途における技術的観点での比較」に絞ってレスする。 宗教戦争を煽る気はない。 >>346 >あまりその辺の分野は活発ではないような気がする。 Rubyは組み込みの実績が少ないし活動が活発ではないという理由かな。 それは技術的な理由からは外れている気がする。そうなった理由(背景)がこのスレの主題。 >>349 >そのせいで、パーサとVMが独立できないので、言語まるごと組み込む必要が >あるのが大変なんじゃないかと。 Rubyが言語まるごと(パーザ+VM)組み込む必要があるのは事実。 ただし、個人的な感覚として、アプリケーションにスクリプトを組み込む目的の多くは、 ユーザによるアプリケーション機能の自由な拡張(スクリプティング)なのだから、 まるごと実装は欠点にはならないと思う。(JavaVMのようなコンパイラ系は別) (長いので続く)
364 名前:345 mailto:sage [2009/08/15(土) 00:10:47 ] (>>363 の続き) >>355 >まず指摘されてたけど、メモリ管理の点で、1.8時代はネイティブスレッドとは >破滅的に相性が悪かったし、 Rubyとネイティブスレッドとの破滅的な相性の悪さは事実なので同意。 ただし、多くのアプリケーションでは、ネイティブスレッドが前提とはならない (あるいはRubyの疑似スレッドでもかまわない)ケースが大半を占めるのではないかと思う。 >ウィンドウシステム・3D・DirexX関係も相性はあまりよくない。 RubyもGNOME, WxWidget, Qt, Cocoa, SDLとウィンドウ(GUI toolkit)は揃っているし、 3DもOpenGL拡張ライブラリがあるから、相性が悪い理由にはならない。 DirectXは(おそらく)Rubyで対応しておらず、Phytonの実績が多いのかも(?)しれないが、 それは実績が多いという事実の言明だけであって、具体的な技術面の指摘ではない。 そもそも、これらは拡張ライブラリであってエンジン組み込みではないからスレ違い。 >それに対してPythonは参照カウントとマーク&スイープの組み合わせで、 >マーク&スイープもおとなしいタイプ。 GC制御に関わる所有ルールの難解さは、RubyにもPythonにも同様に存在する。 またGC方式の差異は、組み込み用途の利点とは直接的に結びつかないのでスレ違い。 (もし関連性があると考えているなら、具体的に差異を説明してください) >あと、これは俺の想像だけど、Pythonの作者は、PythonからCを使うってのと >CからPythonを使うってのを対称的で対等なものとして考えている雰囲気があるし、 対称性はRubyも変わらない。実装の難易度も同等というのが、個人的な実感。 (まだ続く)
365 名前:345 mailto:sage [2009/08/15(土) 00:15:27 ] (>>364 の続き) >技術的に変なこだわりはなくて、いろんなところに配慮しながら無難な実装をしてる。 これは(スレ違いだけど)同感で、PythonがSimple is bestを追求してるのは好感。ただし、 >Rubyは実装技術オタクのMatzが作ったので、変なところでこだわってたり >無駄に離れ業やってたりしてタチが悪い については、組み込み用途とは無関係だし、Rubyがスキャナとパーザの実装で 離れ業をしている事を除けば、具体性の無いMatzへの個人批判でしかないのでスレ違い。 以上、個人の印象/主観を除いたRubyの組み込み用途における技術的な問題点をまとめると、 - 言語まるごと(パーザ+VM)組み込む必要がある - ネイティブスレッドとの破滅的な相性の悪さ の二点のみ。組み込み用途に限れば、Pythonと比較した決定的な欠陥は見当たらない。 実際、拡張ライブラリ(Ruby->C呼び出し)を自作できるRubyプログラマであれば、 Ruby組み込み(C->Ruby呼び出し)も難儀な実装作業ではない、というのが個人的な実感。 (PythpnでもPython->C呼び出しが実装できない人であれば(その逆の)組み込みが難しいのは同じ) (ゴメン、次で最後だから許して)
366 名前:345 mailto:sage [2009/08/15(土) 00:18:02 ] (>>365 の続き) あと(技術的な観点ではないけど)付け加えるとすれば、 Pythonは公式文書として組み込み方法が解説されているのに対して、 Rubyはインタプリタソース(ruby-1.8.x-xxx.tar.gz)に含まれるごく簡単な解説が 唯一の公式文書であるため、自力でネット/書籍から情報を得る必要があるという差異が、 組み込み実績という結果に大きく影響していると思われる。 これだけだと何の事か分かりずらいと思うので、最後に具体的なアドバイスをまとめる。 - RubyプログラマはRuby組み込みで、PythonプログラマはPython組み込みを選ぶのが楽 - ただし、ネイティブスレッドが前提なアプリケーションであれば、Pythonしかない - どちらも知らない人は、(解説文書が整備されている)Phyton組み込みが無難な選択(=お勧め) - ただし、言語の選択は、システム全体を見渡してから判断すべき(解説文書の有無だけで 言語を選択すると、本末転倒になる恐れがある(木を見て森を見ず)) 長文/連投のスレ汚し、失礼しますた。
367 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 00:43:35 ] 元々の話のゲームのスクリプト用途とかなら 既に挙げられてはいるけど lua みたいな 最初から組み込み用に作られたものを使うのが無難じゃないかな 変に難しいこと考えなくても楽に組み込めるし
368 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 00:53:25 ] 長過ぎて読んでないが、 結局Rubyを無理やり組み込む人はいないと
369 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 00:53:49 ] これだけ長文でレスしたくせに、中身がほとんど無いじゃないか。 スレ違いをいちいち長ったらしく指摘しなくていいからもっと短くまとめろよ。 > あと(技術的な観点ではないけど)付け加えるとすれば、 > Pythonは公式文書として組み込み方法が解説されているのに対して、 > Rubyはインタプリタソース(ruby-1.8.x-xxx.tar.gz)に含まれるごく簡単な解説が > 唯一の公式文書であるため、自力でネット/書籍から情報を得る必要があるという差 > 異が、組み込み実績という結果に大きく影響していると思われる。 付け加えじゃなくて、ここが一番重要なところだろ。
370 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 00:58:42 ] 機能的にはschemeやjavascript辺りのサブセットがVMで動けば十分 バランスが取れたのがlua 実際にスクリプトを書かせる対象を想定しないとな
371 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 01:04:13 ] >>366 まず、俺の主観が入っているってのはその通り。その点はすんまそん てかあまり深く考えずに書き込んだけど、363氏の説明の方がほとんど 正しいと思います。 いくつか書きたいのは、 PythonのGCは停止時間(いわゆるレスポンス)が悪くない。 循環参照を解消するために定期的に マーク&スイープする必要があるけど、そのタイミングは制御できる。 たとえばゲームでいえばシーン暗転の時にやるとか。 Rubyは逆で、楽だけど大味な制御しかできない 以前に256倍網道編でarton氏がpure rubyでゲーム作ってたけど、 実際実行すると結構カクカクだった ついでにいうとCから使ってるとファイナライザが欲しくなるが、 CPythonならスコープはずれたら解放されることが(個別実装の仕様として) 保証されるので楽。 これらが決定的な利点・欠点かどうかは状況に依存するね。もちろん あと実装じゃなくて完全にスレチだけど、ライセンスが違うのと、 (用途によるが)配布の際にバイトコード化可能かいう点もある。 以上で撤収します
372 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 01:40:39 ] forthってGCってあるんだっけ? あれ?ディクショナリ内にメモリって確保するんだっけ?
373 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 01:48:28 ] 組み込み用スクリプトのインタプリタとライブラリのデバッグに時間を掛けたくないよね ゲーム本体よりも大きいと本末転倒だし ソースがせいぜい2〜3ファイル、合計数百行程度、使えるライブラリは関数をテーブルに登録ぐらいが理想か
374 名前:345 mailto:sage [2009/08/15(土) 02:21:05 ] >>371 >まず、俺の主観が入っているってのはその通り。その点はすんまそん こちらこそネチネチ書いてスマンかったです。ただ主観/印象で論議すると 宗教戦争に陥りがちだから、それを避けたかった。分かってくださいませ。 >Rubyは逆で、楽だけど大味な制御しかできない RubyもGCを明示的に起動できますよ。シーン暗転前に起動すればいいと思いますが....。 >実際実行すると結構カクカクだった カクカクになるのは、GCとは別の要因ではないかと思います。 GCが原因なら、(比較的あいた間隔で)実行が固まったように見えるはずですから。 >CPythonならスコープはずれたら解放されることが(個別実装の仕様として) >保証されるので楽。 これは、(Cスタック上に)auto変数としてPythonVMを確保すれば、そのVMと実行環境が まとめて自動的に解放されるということでしょうか? もし本当なら、(Rubyと比較して)かなりプログラマの負担が減りますね。 あと同一プロセス上でのマルチVM(インタプリタ)も簡単に実現できると思われますし。 >あと実装じゃなくて完全にスレチだけど、ライセンスが違うのと、 Rubyライセンスは、とっても緩やかなものです。Matzは言語オタクだから、 (権利の主張よりも)自分の作品を使ってくれることに喜びを感じてるのだと想像させるほどに。 >(用途によるが)配布の際にバイトコード化可能かいう点もある。 これも、(オプソなプロジェクト以外では)採用を決めかねない大きなPythonの利点ですね。 ソース非公開というニーズは多いと思いますから、>>363 の最後の段落は撤回します。
375 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 02:49:20 ] いまさらなんだが既存のスクリプトエンジンを組込む話は 組込み系言語スレがふさわしいと思う。
376 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 03:05:22 ] javascriptはBOTとかのチートツールで使われてる
377 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 03:08:01 ] >>375 でもあそこでpとかrとか言ったら荒れるんだよね
378 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 08:17:18 ] >>355 > 参照カウントってのはちょっとダサいが、質実剛健だしその点では好感。 mark & sweepと併用するやり方は、 どっちをメインにするとしても、極めて有効なやり方だよ。
379 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 09:46:27 ] Rubyは実装として美しくない 最近の高スペックPC当て込んだ バブル言語だろ
380 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 10:16:03 ] Forthは基本的にはライブラリ(辞書)管理もFILOだから、 GCという概念がない。動的なデータ構造も(スタック以外)ないし。 PostScriptは確かスナップショットのようなものを取って、 明示的に指定してそのスナップショット以降に確保されたものを 解放するとかそういう機能がある、と思った。
381 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 11:29:43 ] おれ科学計算系で、3回くらいPythonが組み込まれてるソフトを 触ったことがあるよ。個人的な感想だが、pythonの微妙に面倒臭いところが、 組み込みだと逆にぴったり使いやすいんだわ。説明しづらいけど。 Rubyの自由さは組み込み向けだと正直いらない。
382 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 13:30:14 ] >>363-366 おおむね同意だが、>>349 に対するレスはやや違うと思う。 漠然とスクリプトエンジンと題した場合、真っ先に求められるのは 書いたスクリプトをその場で実行できる手軽さであり、 必然的にインタプリタの要件を満たすことになる。 これに現在主流がバイトコンパイル式であることを勘案すると 言語まるごと(パーサ+VM)を組み込むことがほぼ確定になる。 まあオレがオレオレ処理系を作るときはスクリプトのコンパイラは 事実上のジェネレータとして実装して、 生成物は汎用のスクリプトの処理系に渡してしまうから 自作部分は純粋なコンパイラになるわけだが。 開発用にはそれとは別にスクリプトのタイムスタンプを見て 自動的にコンパイル作業を行う機能を追加することになるだろう。
383 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 13:32:25 ] ruby のライセンスは GPL よりは緩いけど 他の組み込み向け言語に比べると だいぶめんどくさい方だと思うけどな まぁライセンス云々はスレ違いだけど
384 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 13:58:23 ] >>382 パーサーの要不要は用途次第かと ゲーム用とかだと開発時は素早く試行錯誤したいが リリース後は基本的にはスクリプトをいじる必要がないので そういう場合パーサーは無駄なので最終的には外せる方が良い 実行環境がプアなものは特に
385 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 14:58:43 ] これが噂の「すり合わせ」というやつか
386 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 17:01:08 ] 生インタプリタも、中間形式分離型も両方ある奴がほしい、という 要望ってこれからも大きいかな? 今のところメジャーなもので、実現したものってないような気がするけど。
387 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 17:41:29 ] Ruby, Python等のダイナミック言語でパーサを分離するのは無理じゃないか? 例えばPerlだと、実行せずに静的にパースすることは不可能なわけだし。 ttp://perlmonks.org/?node_id=663393&
388 名前:345 mailto:sage [2009/08/15(土) 18:25:09 ] >>387 Pythonであれば、以下のようなカキコがあるから、 パーザとVMは分離できるように見えるけど、違うの? Pytonにはevalは存在しないみたいだし(>>349 参照) >>371 >(用途によるが)配布の際にバイトコード化可能かいう点もある。
389 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 19:16:11 ] >>380 > Forthは基本的にはライブラリ(辞書)管理もFILOだから、 > GCという概念がない。動的なデータ構造も(スタック以外)ないし。 それは嘘。 FORTHを採用する場合、 後置記法を採用するくらいだから、 非常に小さいインタプリタが必要とされている局面。 だからプアな処理系が多いと言うだけで、 GCをバッチリ実装した処理系はあってもいい。 データがFILOで済むというのも嘘。 辞書に登録したら不必要になる順序はプログラム次第。
390 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 19:56:55 ] まあ誰もスクリプトでFORTHなんか使いたくないからどうでもいいけどなw
391 名前:387 mailto:sage [2009/08/15(土) 20:03:53 ] >>388 実際にPythonやRubyでパースが曖昧になるようなケースは知らないが、 evalがあると分離しにくいのは確かだろうね。ちなみにPythonにもevalはある。
392 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 21:33:03 ] そこれりすぷれすよ
393 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 21:35:35 ] Rubyが使われないのは単に実績がないからなんでしょ どんどん使えばいいと思うよ
394 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 21:45:11 ] 組み込みスクリプト用のLispってあるの?
395 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 21:50:20 ] emacs lisp
396 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 22:02:09 ] Ypsilon
397 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 23:35:53 ] elisp
398 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 23:43:00 ] ruby
399 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 00:05:29 ] >>394 小さな独自Lisp系ならいくらでもあるよ(CLとかSchemeとかの規格準拠じゃなければ8ビット機でだって動くんだもの)
400 名前:345 mailto:sage [2009/08/16(日) 01:27:27 ] >>391 え、Pythonにもevalあるんですか?!うーむ どちらが真実かは、結局は自分で調べなさいということですな。
401 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 01:36:23 ] python -c 'print eval("1+1")'
402 名前:345 mailto:sage [2009/08/16(日) 01:52:09 ] >>401 再現しますた。わざわざありがトン。
403 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 02:37:35 ] >>394 LISPerは自分用のがあるから 他人の糞LISPなんて使わない
404 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 02:50:00 ] >>403 というか、そんな結論ありきな考え方をするやつなら そもそもこんなスレに来る必要がないわけだが。
405 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:26:25 ] > データがFILOで済むというのも嘘。 > 辞書に登録したら不必要になる順序はプログラム次第。 少なくとも伝統的なFORTHなら辞書は一方向リンクトリストで最後に 登録されたものから順につながってるし、最後に登録されたワードを グローバルなワークエリアが指している。 FORGETワードは、特定のワード以降に登録されたワードを全部捨てて しまう。 そういう構造だから、基本的にGCはない。
406 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 10:10:39 ] >>394 ISLISP
407 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 22:10:05 ] ABAPのEBNFください
408 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 11:13:52 ] ANTLRで苦戦していて質問したいのですが、このスレでいいでしょうか? もしくは専用スレを立てる?
409 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 11:40:06 ] このスレでいい。
410 名前:408 mailto:sage [2009/08/31(月) 11:58:13 ] お言葉に甘えて。 ng : n=TOKEN (v=INT|v=FLOAT) -> ^(PARAM $n $v) ; ok : n=TOKEN v=(INT|FLOAT) -> ^(PARAM $n $v) ; ngルールみたいな書き方はダメでしょうか? antlrは通るのですが、C言語からそれを呼び出すと セグメンテーションフォールトします。
411 名前:408 mailto:sage [2009/08/31(月) 11:59:43 ] ごめん。ngルールとokルールが逆だった。 v=(INT|FLOAT)がNGで(v=INT|V=FLOAT)がOK. ANTLR的にv=(INT|FLOAT)という書き方はNGなのでしょうか?
412 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 21:10:45 ] 出来ればツール頼らずに 手続き型言語作りたいんだけど どのくらい大変なん
413 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 21:16:35 ] コンパイラもアセンブラもリンカもエディタもツールですよ・・・
414 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 21:40:42 ] Brainfuckならパンチカード手打ちしてもできるんだろうな
415 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 21:42:28 ] TinyBASICくらいの規模なら机上でいけるんじゃないかな
416 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 21:49:12 ] ツールってyaccとかlexのことか? なくても大差ないと思うよ
417 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 21:57:54 ] >>412 LLで混乱しない文法なら問題ないんじゃないの? このスレだったと思うけどμplanとかpascalの構文なら自己記述できるし
418 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 22:00:52 ] >>412 どういうコードに落とし込むかってあたりが問題になる位で落としやすいVMを設計すれば32Kワードもありゃ言語コンパイラは書ける UCSD p-systemとかが実際そんなものだ 案ずるより産むが易しってあたりの言語なら悩む前に書き始めてみればいい コード公開してもいいのなら行き詰まってから助けを求めに此処に戻ってこい
419 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 22:09:00 ] いまどきこだわることはないと思うが、 たいがいの言語ならちょいと工夫すればだいたいトップダウンパーザで書ける。
420 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 22:10:26 ] >>412 PerlやRubyで書けば、素で描いてもまあ2週間くらいで。
421 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 23:56:56 ] LISPだと数分〜数時間
422 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 00:03:58 ] yane lispおすすぬ
423 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 00:42:09 ] Lisperあっち行け
424 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 12:57:23 ] おおっ わからない単語がいっぱいでてきた たくさんレスありがとう >>416 そういうことです >>418 Lispなら作れたからアルゴリズムで行き詰る事は多分無いんだけど Lispに比べると全然ソース量が桁違いになりそうでヘタレてる・・・ >>420 2週間!! 以外と速い 頑張ってみます
425 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 20:43:59 ] Lispすげー
426 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 07:46:38 ] Lisp作れたならその上でマクロ書けば数日で手続き型言語作れないか?
427 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 10:19:06 ] LISPのインタプリタの作り方ならLISPの入門書の最後に例題で出ているレベル JavaとかのGC機能が前提の言語ならそんなに難しくないはず コンパイラなら知らん LISPのインタプリタと手続き型言語のインタプリタはつくりがまったく違うと思うけどなあ
428 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 11:44:23 ] ↓このスレの住民なら1レス以内に作れるレベル
429 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 11:57:33 ] LISPで全部できると思うならそうすればいい。 ただ、なぜいつまで経ってもLISP系が主要プログラミング言語にならないかの理由についても考慮すべき。 >>424 パーサー、構文木構築、構文木消化・変換、出力を順番に作って中間出力を目で確認する。 中間出力はPerlならData::Dumper、RubyならYAMLで。 この辺がC/C++ではしち面倒くさすぎてスクリプト言語でコンパイラを実装する理由。 よほど大規模なマイ言語のスクリプトを構築しない限りは速度面の不満も出ないしね。
430 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 12:03:55 ] >>429 C++はSTLとかを使えば面倒な部分がなくなってスプリクト言語で実装するレベルにならない?
431 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 12:20:47 ] >>424 Lispの処理系を書いたことがあるってことは、コンパイラ理論は知っているんだよな? インタプリタ、中間コード吐いてVM上で動かす、ネイティブバイナリ吐く、 と色々パターンがあるが、基本はまず、再起下降パーサー書いて抽象構文木に 落として、実行するインタプリタを書く。それが出来たら(中間表現に落として 最適化して)コード生成。
432 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 12:33:59 ] >>430 C++のSTLでYAML並みの読み書き柔軟性得るのにどれだけコストが必要か考えてみて。
433 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 14:11:55 ] boost:serialization ってものも
434 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 14:19:38 ] ruby信者は痛いので気づいたらそれ以降触らないようにしてる
435 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 14:33:52 ] 大体IRを一々ファイルに書き出す必要もねーだろw Pretty-printerを書いとけば十分
436 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 16:19:41 ] >>432 シリアライゼイションを覚えたての子供ですね?
437 名前:デフォルトの名無しさん [2009/09/08(火) 16:33:32 ] ANTLR3でトークンとしてヒットするけど出力しないトークンはどうやって定義すれば良いのでしょうか。 このTOKENでDQを無視してSTRINGだけツリーパーサーで欲しいのですが… SKIP()はセグメンテーションフォールトで落ちました. TOKEN : DQ STRING DQ ; fragment DQ : '"' ; fragment STRING : ( ES | ~('\\'|'"') )* ; fragment ES : '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\');
438 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 21:46:52 ] ADD 3 TO 4 という文があった場合 BNFするとしたら、どうするのがカッコいいですか?
439 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 21:52:46 ] <文> ::= "ADD" "3" "TO" "4"
440 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 21:57:39 ] >>439 ATSにする場合どうすればいいの?
441 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 22:39:18 ] キンコンキンコンキンコンキンコンキンコンキンコン
442 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 19:04:29 ] AST? ATS?
443 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 20:50:35 ] >>442 AST AST AST たすけてください
444 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 20:53:29 ] >>439 みたいな文法だったらツリーにする必要なくね
445 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 21:01:21 ] だね。 リスト(線形)でじゅうぶん。
446 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 21:02:35 ] 自然言語を再現したいのか 本当に "ADD" <NUM> "TO" <NUM> なのかでずいぶん違うよな
447 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 21:17:13 ] "ADD" <NUM> "TO" <NUM> なのです その跡にFROMとかつくかもしれないのです お願いします
448 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 21:23:58 ] それでも再帰構造さえなければツリーはいらん
449 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 21:30:25 ] でも、その後学のために 作ってみたいのです お願いします
450 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 21:31:10 ] だから構文そのものがツリー構造じゃないからツリーにならないんだって
451 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 21:38:38 ] >>450 COBOLみたいな構文もツリー構造じゃないから無理?
452 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 23:39:27 ] COBOLに式あったっけかな。 要するに、 <式> :== <式> + <式> とか <文> :== <IF文> | ... <IF文> :== "IF" <式> "THEN" <文> ("ELSIF" <文>)* ("ELSE" <文>)? "FI" みたいな再帰的な構文があると、再帰的なデータ構造でないと いけないわけで、木が必要になる。 アセンブラみたいなのだったらリスト(線形)で十分。 SQLってどうなの? 識者求む。
453 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 02:07:23 ] 副問合せ句とかが在るから、再帰じゃないと表現できないんじゃないかな。 ところで、ORACLEのマニュアルにある図ってなんって言ったっけ? BNFが図になってる奴。
454 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 03:14:36 ] 構文図
455 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 10:36:28 ] Expression ::= "ADD" Factor "TO" Factor Factor ::= Num | "(" Expression ")" Num ::= "0".."9"+ かもしれん。 これならツリーになる?
456 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 10:49:33 ] AND, OR, UNION等は再帰で定義するから木で表す。
457 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 11:25:21 ] >>455 その構文のインスタンスはツリーに出来る。 その構文そのものは再帰があってDAGになる。
458 名前:デフォルトの名無しさん [2009/09/17(木) 02:22:52 ] デザインパターンを駆使してコンパイラを自作しています。 ・字句解析=Chain Of Responsibility ・構文解析=Interpreter のように作っていてうまくいっているのですが、 意味解析はどのパターンを使えばいいでしょうか? どこかのサイトでVisitorを使うとか見たような気がするのですが。
459 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 08:28:50 ] >>458 先に仕様があってそれから設計を施していくわけで、 手段と目的を混同しちゃいかん。 誰も君のコンパイラの設計がどうなってるのかなんて知らんだろ。
460 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 09:34:27 ] つか, 関数型言語なら別の選択あるだろうけど, 手続き型言語の場合, パーサジェネレータ使った方が 早い処理系ができるだろうに………
461 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 10:02:39 ] >>460 それは文法によるだろう。 言語処理系の書きやすさを第一に考えて言語を設計した場合、 手書きの再帰下降パーサでも十二分な速度が出ることはD言語などで実証されている。
462 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 10:08:28 ] Interpreterで構文解析っておかしいだろ どういう設計なのか知らんがVisitorとInterpreterは相互変換できるからどっちかに統一するべき
463 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 12:13:30 ] 性能はむしろ手書きのパーサのほうが出る。 手書きパーサが不利で、パーサジェネレータが有利なのは以下のような点。 ・構文規則とアクションがすっきり分離させて記述できる ・LL(1) に収まらない文法を記述するためのテクニックに煩わされない ・規則をあれこれ変更するのが簡単 あと現代的なテクニックをかじりたいならパーサコンビネータライブラリとか使ってみたら?
464 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 17:32:14 ] Scalaの勉強していてパーサコンビネータを触っていたんだけど、 電卓の次に思い浮かぶ使い道がコンパイラとかインタプリタになってしまう。 その間ぐらいで、手ごろな練習のネタって無いものかなぁ?
465 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 18:49:33 ] >>464 発想の出発点を見直せば、その人なりのネタは見つけられると思うけどね。 自分だと、最近はRubyでツール作りする機会が多いから、そのコマンド引数 (サブコマンドやオプション指定の組み合わせ)を解釈するのにRaccを使うことがある。 他にも差分記述のある知識表現にPrologのDCGで簡単なDSL(ドメイン固有言語)を作ってみたり、 同じ発想で差分記述のできるテストデータ記述言語をRaccで記述したり。 極端な例だと、Webアプリのプロトタイプ開発で、画面遷移を制御するためにyaccを使い、 画面(フォーム)定義言語もyaccで実装するというマニアックな設計をしたことも。 要は「パーサ」イコール「言語処理系」という思い込みを捨て、単なる再帰的な データ構造の処理に適した「道具」にすぎないと考えれるのがいいのではないかと思う。
466 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 18:52:17 ] >>465 オレだったらそういう用途の処理用データはXMLやらYAMLやらで定義ちゃうだろうな。
467 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 19:15:33 ] >>465 おまえUNIX板のyacc&lexスレの>>120 だろ
468 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 20:08:43 ] >>464 ・ ラムダ式の使える関数電卓 ・ 文字列がメールアドレスとして正しいかチェックするプログラム(コメントのネストにも対応) ・ 装飾をネストできる独自Wiki ・ テンプレートエンジン
469 名前:465 mailto:sage [2009/09/17(木) 20:21:28 ] >>466 最初は同じ事を考えていたんだ。でも、自分一人で作る/使うぶんにはいいんだけど、 他のメンバが使う/使わせることを考えると、エラー処理(構文検査)も考えなけりゃならない。 XMLならDTDやRELAX-NG、YAMLならKawflyみたいなスキーマ定義が必要になる。 そこまでするくらいなら、汎用パーザを使うのがいいんじゃないかと、最終的に判断した。 パーザで適切な構文木さえ構築してしまえば、あとはVisitorパターンを駆使することで、 XMLでもYAMLでも(Latexでも....)出力形式の切り替えは簡単な処理で実現できるからね。 >>467 あたり
470 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 21:00:25 ] >>465 なるほど、使い道としては面白いですね。ちょうど今、コマンドライン解析のあたりやってるし。 でも、勉強としてやってるんで、これが正解ってのがあるほうがいいです。 仕様も自分で考えるんだと、パースしやすいような仕様にしてしまうんで。 >>468 メールアドレスって、foo@examples.comだけじゃなく、"foo" <foo@examples.com>, …のほうですよね。 それはやりがいがありそうなネタですね。
471 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 21:10:01 ] >>470 ・PCRE(Perl 5 Compatible Regular Expression Library)の正規表現のパーズ。 ・POSIX shellの文法のパーズ。
472 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 23:33:28 ] >>462 Interpreterパターンって構文解析の為のパターンじゃないの?
473 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 23:39:58 ] InterpreterはASTのノードに自分自身と子の評価を行う処理を直接埋め込むことで ASTをそのまま実行するパターンだよ あらかじめ構文解析を行ってASTを作っておく必要がある
474 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 03:37:23 ] ja.wikipedia.org/wiki/%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3_%28%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%29 ウィキペディアには Interpreter パターン = 構文解析のために、文法規則を反映するクラス構造を作る。 って書いてあるんだけど。
475 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 04:51:05 ] デザインパターンとか大層なもんじゃないでしょ
476 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 05:27:58 ] Interpreterパターンが構文解析のために利用されるのは正しい表現だと思われ。 あらかじめ構文規則に沿ってオブジェクトを配置する必要があるのは事実だけど、 それは構文解析とは別の話しだし、(yaccみたいな)パーザジェネレータも同じだから。(>>473 ) 最近はデザインパターンから入る若者が多いから、ごっちゃにして考えやすいけどね。 まあ、デーザインパターンなんて大層なもんじゃないという意見に同意するよ。(>>775 )
477 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 06:03:46 ] >>462 =473=476? 君はたぶんいろいろと間違って理解してるからGOF本をしっかり読みなおした方がいいよ 確かにデザインパターンは大層なものじゃないとは思うが、間違った理解は周りの人を 混乱させてむしろ害悪だから
478 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 06:12:44 ] >>477 具体的にドゾー
479 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 06:44:13 ] >>478 >VisitorとInterpreterは相互変換できる できない VisitorとInterpreterでは全く目的が異なる >InterpreterはASTのノードに自分自身と子の評価を行う処理を直接埋め込むことで >ASTをそのまま実行するパターンだよ 処理を直接埋め込むこと、そのまま実行することは必須ではない (GOF本「実装」欄の2.を参照) >あらかじめ構文解析を行ってASTを作っておく必要がある ASTの生成方法までは定義されていないが、Interpreterパターンと言った場合、 (ASTを生成する)Clientオブジェクトもパターンの構成要素に含めて考える方が一般的 (GOF本「構成要素」欄と「実装」欄の1.を参照)
480 名前:476,478 mailto:sage [2009/09/19(土) 07:03:29 ] >>477 自分は>>462 ,473じゃないヨ >>479 まったく、その通りだね ところで、GOF本のアレをInterpreterパターンと呼ぶのはどう思うかな?>>all 自分にはインタプリタという言葉のニュアンスから違和感があるんだけど と、スレらしい話題に戻してみる
481 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 13:20:31 ] 逆。Parsingにinterpreter patternってのは単純な場合のみ。 ASTインスタンスの生成を行うのは、interpreter patternの仕事だけど、 (ASTインスタンス生成は解釈の特殊な形態の一つ) parsingそのものはInterpreter patternの仕事じゃない。 単純な例だと一体化しているので、混同しているケースが結構多い。 日本語版wikipediaの記述がその例。(これは古い英語版を元にしている) GoFより > The pattern doesn't address parsing. When the grammar is very complex, > other techniques (such as a parser) are more appropriate.
482 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 18:12:25 ] GOFの神格化進んでいるんだね。怖いね。
483 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 18:24:39 ] 必要以上に貶めている人がいるから 訂正してくれてるだけでしょ?
484 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 20:17:37 ] ヤレヤレ
485 名前:デフォルトの名無しさん [2009/09/23(水) 08:13:49 ] 形式言語と正規表現って別物ですか? 同じものですか?
486 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 08:33:39 ] >>485 正規表現は形式言語の一種である、という解釈でだいたい合っていると思う。 C言語はプログラミング言語の一種である、と同じ解釈ね。 あと、そういう言い方をするなら、正規表現ではなく正規言語だろうね。
487 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 08:48:28 ] 正規表現と正規言語は別のものだが?
488 名前:デフォルトの名無しさん [2009/09/23(水) 09:02:34 ] 正規表現と正規言語と正規文法はどういう関係ですか? コンパイラの理論の基になっているのは生成文法なんですか? もし、チョムスキーが生成文法を発表しなかった世界があったら その世界で使われているコンパイラはどんな物だと思いますか? COBOLとFORTRUNとlispですか?
489 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 09:11:11 ] ちったあ自分で調べろ
490 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 10:16:49 ] 古い変な本しか手に入らないか 周囲に変なことを吹き込む人がいるか 釣りか なんにせよ調べる気はあるまい
491 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 10:20:38 ] それにしてもチョムスキーのこんな持ち上げ方って久々に見たw
492 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 10:22:29 ] 調べる=知ってる人に聞く じゃないの? 本やネットってゴミ情報が多すぎて 知りたい情報にたどりつくまで 手間と時間がかかりすぎるからさ 知ってる人にズバリ答えてもらうのが一番なのよ
493 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 10:36:03 ] チョムスキー理論の理解こそが自然言語処理実現の第一歩だぁー!!と 必死になって文献を読みあさっていた、過去の自分を思い出すw
494 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 11:51:45 ] 文字列が長すぎて strlen()が'\0'にたどりつくまで 手間と時間がかかりすぎる って話を思い出した
495 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 15:01:14 ] こんなこと如きで他人に苦労させるなカス >488 自分で勉強するつもりが無いのならこんなスレ覗くなボケ ttp://www.bing.com/search?q=%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%81%A8%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E%E3%81%A8%E6%AD%A3%E8%A6%8F%E6%96%87%E6%B3%95&FORM=ADDLVD&src= ttp://www.google.co.jp/search?q=%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%81%A8%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E%E3%81%A8%E6%AD%A3%E8%A6%8F%E6%96%87%E6%B3%95&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
496 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 15:05:34 ] と思ったが、最後のは少し興味あるな。 チョムスキーが発表しなくても、同様の概念(TMとか再帰とか翻訳とか形式体系とか)はあるから 結局は同じようなものに落ち着くような気がする。
497 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 15:43:24 ] BNF自体はチョムスキーの発明でもないしな
498 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 15:56:41 ] インド人だっけ?凄いよね。
499 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 16:02:39 ] 誰がインド人?
500 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 16:06:52 ] っ ttp://ja.wikipedia.org/wiki/%E3%83%91%E3%83%BC%E3%83%8B%E3%83%8B
501 名前:デフォルトの名無しさん [2009/09/23(水) 17:21:39 ] 大体が↓のような感じで構文解析までが行われると思うのですが、 ソースコード → 字句解析 → トークンリスト → 構文解析 → 構文木 トークンリストはトークンクラスのリストと表せますが、 構文木はどのような形になると思いますか?
502 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 17:36:26 ] 構文要素クラスの木構造
503 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 17:38:26 ] 開始記号クラスかな
504 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 17:45:32 ] このあいだまでは「パニーニ」と表記してた気がするが、最近は「パーニニ」なのか。 昔インド人の先生に尋ねたら俺の耳にはパニニーと聞こえたが。 てかBNFはバッカス(と、本人はあまり乗り気でないようだがナウア)の功績だろ一応はやっぱ。
505 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 20:01:10 ] インド人の発音は独特だから
506 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 00:29:14 ] 日本人の発音の方がはるかに独特です
507 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 00:35:57 ] かもしれぬ インド人と言っても様々だ が、日本人がインド人の発音を聴き取るのは慣れないと無理 驚くというか途方に暮れるぞ
508 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 01:41:42 ] 詳しく!
509 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 02:38:16 ] >>507 そこでインド人を右へ
510 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 05:56:31 ] なるほど。たしかみてみよう
511 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 14:00:01 ] 確かめた結果、 ザンギュラのスーパーウリアッ上 でした
512 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 14:23:33 ] ダトル・オブ・ぷよぷよ
513 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 20:00:42 ] ゆとり教育は嘆かわしい。 中学生の息子の机に数学のノートが開いていた。 なんと、数式にビックリマークを付けて遊んでいた。 出てくる数字はほとんどが1桁の整数のかけ算。 しかも答が間違ってる。 小学校の九九の復習にもなってない。 本当に嘆かわしい...。
514 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 20:16:35 ] >>513 ゆとり教育でなければ九九ができるようになるはずだという発想がすでにおかしい 人任せにしてないで、自分で教えてあげたら? 多分、どっかでつまずいてそのままになってるんだと思うよ。
515 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 20:22:54 ] >>514 ネタにマジレス、カコワルイ。 ここは息子インタプリタが自然数の階乗をパースして計算していると考えるんだ。
516 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 21:06:42 ] ネタだと気付かないところがすでにおかしい
517 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 22:11:00 ] 不思議なインド人に対抗するには 九九じゃなくて二五六二五六やらせるべき
518 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 22:30:37 ] >>513 を読んで想像すべきだった状況の例 3!×5!=720
519 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 22:40:00 ] >>513 って親がゆとり世代だった、ってオチ?
520 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 22:40:49 ] 階乗は習ってねーや
521 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 00:53:30 ] 「ジョークを解説するのはカエルを解剖するのと似ている。 解剖されたカエルには誰も興味を示さないし、カエルは死ぬ」
522 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 01:15:17 ] なんかえらく主観的な格言だなぁ 説得力のある文体に騙されそうになるけど
523 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 01:25:10 ] 解剖したカエルは、フランス人スタッフがおいしく頂きました。
524 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 08:36:52 ] 最初からコンテキストもなにもなしにジョークを投下するやつが悪い
525 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 23:45:56 ] antlrworksで正規表現の [0-9]{1,16} ってどうやって書けばいいの?
526 名前:デフォルトの名無しさん [2009/09/27(日) 04:32:51 ] 日本ではコンパイラの研究ってあんまはやってないの? 有名な研究室ってどこ?
527 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 09:31:33 ] >>526 コンパイラ site:ac.jp で検索してみるとか。
528 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 23:19:37 ] タイガーブックの最新版ってどうよ? 今月末に出るけど
529 名前:デフォルトの名無しさん mailto:sage [2009/10/02(金) 20:43:42 ] どうよ?だと? 自分で買ってきて報告しろやヴぉけ
530 名前:デフォルトの名無しさん mailto:sage [2009/10/02(金) 22:48:49 ] 無駄無駄 どうよ?厨はいつだって人から貰うだけ
531 名前:デフォルトの名無しさん mailto:sage [2009/10/03(土) 00:06:04 ] 俺の上腕二頭筋どうよ?
532 名前:デフォルトの名無しさん mailto:sage [2009/10/03(土) 00:14:32 ] すごく・・・ぷよぷよです・・・
533 名前:デフォルトの名無しさん mailto:sage [2009/10/03(土) 05:55:58 ] タイガーブックがついに邦訳されて今月末に出版されるよ
534 名前:デフォルトの名無しさん mailto:sage [2009/10/03(土) 07:23:00 ] 無駄無駄 されるよ?厨はいつだって人から貰うだけ
535 名前:デフォルトの名無しさん mailto:sage [2009/10/03(土) 12:42:47 ] preccsより腐ってない フリーのプロトコルコンパイラ知りませんか?
536 名前:デフォルトの名無しさん mailto:sage [2009/10/03(土) 14:04:03 ] 尻いりませんか?だと? いいのかい?ホイホイ突いちまって
537 名前:デフォルトの名無しさん mailto:sage [2009/10/03(土) 14:39:57 ] >>535 preccsのドコが腐っていると感じたのかな? 自分は初見だったのでググってみて、CSPというかOccamの実装という印象を持った。 そのうえで、予想される「腐って」いそうな点をあげてみる。(実際には触っていないヨ) ・コンパイラの実装がバグだらけ ・マルチスレッディングに対応していない ・デバッグが難しい ・プロトコル記述(状態遷移)が直感的ではない ・メッセージ処理機能が不十分 ・プロトコル定義の網羅性に欠ける あと、このスレよりもネットワークプログラミングスレ向きな話題かも。 このスレだと「自分の好みに合ったコンパイラを作れ!」なレスが中心になってしまう気がする。
538 名前:デフォルトの名無しさん mailto:sage [2009/10/04(日) 04:03:23 ] 実質パーサの話題に終始してるがな コンパイラですらない インタプリタでもない
539 名前:デフォルトの名無しさん mailto:sage [2009/10/04(日) 10:59:49 ] じゃ、話題の提供ヨロシク
540 名前:デフォルトの名無しさん mailto:sage [2009/10/05(月) 13:04:03 ] Pythonでコマンドを作って、 自作のスクリプトでそのコマンドを呼び出すという仕組みで処理系を構築してる。 すでにある程度動いてるんだが、 現状手動で作成してるコマンドの一覧をPythonのプログラム側からどうやって吐き出そうかなと考えているところ。 sed/awkあたりで簡単に切り貼りできるような形式を用意できるといいかなぁ。 できればコマンドのマニュアルも一緒に生成できるといいんだが。 現在固定になってるコマンド一覧は実際にはXMLファイルで、 コンパイラがデシリアライズの形で一括で読み込める仕組みにしている。 XMLを手作業で編集するのはしんどいので、シリアライズで書き出す簡単なプログラムを用意して、それを毎回手で編集してる。
541 名前:デフォルトの名無しさん mailto:sage [2009/10/05(月) 13:38:45 ] >>540 JavaDocみたいに定型のコメントを書くのはどうですか?
542 名前:デフォルトの名無しさん mailto:sage [2009/10/05(月) 14:02:58 ] pydoc
543 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 12:51:07 ] 実装には命令型言語より関数型言語の方が向いているのかな Pugsが出てからずいぶん経つのにPerl6まだ出ない
544 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 13:45:27 ] >>543 そんな漠然としたレベルの話だと、好みでとしかいいようがないんじゃ。 ただ、Haskellの論理的な記述能力は空恐ろしいものがあるな。 例えばYAMLパーサのリファレンス実装はHaskell製だ。 HTMLの仕様書用意されてはいるが仕様の詳細までは網羅されておらず、参考程度にしかならない。 で、ソースコードみてみたら、ほとんどBNF式そのまんま。 これをネイティブで解釈するんかHaskellは……。
545 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 13:51:06 ] 再帰下降パーザを書くのに関数型言語は合ってると思う パーザ以外の部分は知らん
546 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 22:35:37 ] Haskellは新しく演算子をユーザ定義できるからな。 優先順位を付けて。それが例えinfixでも。 出来る奴が書いたコードの記述力は破壊的。 Parser Combinatorの発明は、奴等ならではだろう。
547 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 22:44:43 ] >>546 > Haskellは新しく演算子をユーザ定義できるからな。 > 優先順位を付けて。それが例えinfixでも。 それPrologでもできるよ。何十年も前から
548 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 23:00:45 ] PrologのDCGはBNFそのものだしな。 単純にパーザ記述の容易さを比較するならPrologに軍配があがる。
549 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 01:01:43 ] 間を取ってLISPだな そのままLISPの処理系速度で実行できるし
550 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 06:15:44 ] RubyとHaskellがベスト
551 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 07:25:05 ] noop
552 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 07:28:15 ] Ocamlが至高 ほかは糞
553 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 08:38:22 ] Ocamlなぁ。 こんどはOcamlでスクリプティングやってみるかなぁ。 静的型付言語の割りにコンパイラが賢いので 人間はあまり型を気にする必要がないというところがよさげだな。
554 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 10:28:43 ] >>548 DCGはいいものだったけど、 元になっているPrologが独自すぎて流行らなかったな。 一時はちょっとややこしい構文解析はDCGの独壇場だったのに。
555 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 13:25:28 ] >>554 スレ違いになるけど、Prologがブームだった頃「PrologはAI言語である」みたいな解釈の 説明が多かったため、AIブームの終焉と一緒にPrologへの関心も冷めてしまったように 感じてる。Prologなんて記号処理言語の一つで、「道具」にしかすぎないはずなのに。 DCGが自然言語研究の中から生まれたのは事実だけど、パーザ記述向けの「道具」として、 今でも有効に活用できるものだと思う。固定観念さえ捨てることができれば....。 とりあえず、Prologによるコンパイラ開発に興味を持った人向けに書籍を紹介する。 ・Prologの技芸, L.Sterling&E.Sharpiro著, 共立出版 Prolog中級者向けの内容で、全体で557ページ、DCGには12ページ、コンパイラ(構文解析/ コード生成/アセンブラ)に関しては24ページが割り当てられている。
556 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 13:50:43 ] 昔、Prologで簡単なBASICインタプリタをちょこちょこっと作る話が 載ってるウェブページあったなぁ。
557 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 18:58:11 ] プログラマならなんか成果物だして世の中の役に立て。
558 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 23:58:17 ] >>557 スークリですね解ります。
559 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 09:23:15 ] マ板でやれ
560 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 09:24:40 ] OCaml使いの間では"O"の部分は使わないのが常識らしいな。
561 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 11:08:27 ] OCamlさん 何してはるんですか
562 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 19:10:26 ] DSLを設計するための良書ってないですかね?
563 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 20:32:29 ] >>562 良書かどうかは分からないけど、とりあえず手持ちの書籍を紹介。 ・lex & yacc, John R,Levine他共著, アスキー出版局(O'Reilly本) この本ではCUI向けのメニュー生成言語、言い換えるとCUI向けメニュー生成処理に特化した DSLの開発手法が紹介されている。 本全体が429ページで、そのうち33ページがDSL。 あるいは設計しようとしているDSLの適用分野(ドメイン)が明確になっていて、 それをここで提示できるのなら、その分野における類似したDSLを紹介したり、 その類似DSLに関する書籍を紹介したりすることができるかもしれない。 もし適用分野が明確ではなく、一般的なDSL設計技術を勉強したいという話であれば、 残念だけど「一般コンピュータ言語設計論」みたいな題名の抽象的で難解な書籍を 探すしかないと思う。自分は紹介できないや。 ただし、発想を変える事で参考になるやり方もある。 最近ではXMLで様々なデータやルールといった情報を表現することが 普通に行われていると思うけど、そのXMLで表現するタグ構成というのは、 目的とする分野に特化したDSLの一種であると考えることもできる。 だから「XML文書設計法」みたいな題名の書籍を読むことが、参考になるかもしれない。 # ほとんど参考にできるレスじゃなくてゴメソ # あるいは、推薦図書/必読書のためのスレで質問してもいいのでは?
564 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 20:42:01 ] >>562 いずれ書籍になる予定 martinfowler.com/dslwip/
565 名前:デフォルトの名無しさん [2009/10/12(月) 20:50:00 ] >>564 martinfowler.com/dslwip/ github.com/nealford/presentations homepages.cwi.nl/~arie/papers/dslbib/ どうもっすこの辺ちょっと読んできます。
566 名前:563 mailto:sage [2009/10/13(火) 10:06:24 ] うーみゅ、>>562 が期待していたのはMartin Fowler氏の定義した DSLという用語だったのね。このスレでの質問だったから、 てっきりパーザでミニ言語を作りたいのだと思い込んでしまったぜ。 漏れは釣られたのか?....orz
567 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 10:18:50 ] >>566 何を言い出すのだお前は?
568 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 10:19:51 ] >>563 baka
569 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 10:44:07 ] ja.wikipedia.org/wiki/DSL
570 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 17:52:37 ] >>566 internal DSLとexternal DSLと呼び分けるのが一般的かと
571 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 19:30:41 ] >>563 はきちんと説明して偉いと思うよ。 マーチン・ファウラーがいうDSLを実装するにも、 lex&yaccは必要になることがある。
572 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 19:39:16 ] 本人乙
573 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 21:16:50 ] 内部DSLだとlex yaccの出番なくね?
574 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:12:14 ] DSLでも表記はS式 or 逆ポーランドで良いと思うんだけどな。 俺言語でS式&逆ポーランド&三項演算子というのをやったことあるけど、なかなか良い感じだった。
575 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:26:02 ] x^2 + 3 * x + 4 と (x 2 ^ 3 x * + 4 +) あなたはどっちが好きですか
576 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 00:09:22 ] DSLぐらいだったら二項演算子無しでも良いんじゃね? 俺言語だとこんな感じかね x 2 ..pow 3 x ..multi ..plus 4 ..plus
577 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 00:15:34 ] 想定するDSLのプログラマによるよね。 自分用・ギーク向け・趣味用途ならS式でも逆ポーランドでもいいけど スーツ/エンドユーザー向け・パッケージソフトだったりすると流石に無謀だろ。
578 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 04:29:11 ] >>575 (x + 3) * x + 4
579 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 04:30:18 ] x 3 + x * 4 +
580 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 20:27:14 ] >>576 引数の数を演算子の前のドットの数で表してるんですね。 それって >>576 氏の発明ですか?それともそういった処理系がありますか?
581 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 21:52:05 ] fortran
582 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 00:18:11 ] 後ろに置いたピリオドで、スタックに積んだ返した数を表すのはどうだろう 前後逆か? .*で不定長引数とか
583 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 00:19:40 ] 何のためのスタックかわからん
584 名前:576 mailto:sage [2009/10/16(金) 01:17:54 ] >580 俺の発案。forth系なんて流行ってないから誰もこんなこと考えないって。 コロンも活用すればそこそこ大きな引数でも使えるから実用的だよ。 .one ..two .:three ..:four こういうのもWordレベルで一意になるから解析が楽チン。 4 3 2 1 ..sum // 3 4 3 2 1 .:sum // 6 4 3 2 1 ..:sum //10
585 名前:576 mailto:sage [2009/10/16(金) 01:27:49 ] >582 それは考えた。Wordレベルで一意になるから良さげだった。 …………普通はデフォルトの戻り値で十分なので後ろピリオドは要らないけど。 他にもこんなことを実装したんだけど、プロセス実行をどうするか考えているので実装は進んでない。 ..func //デフォルトの戻り値 ..func: //戻り値2つ ..func:. //戻り値3つ ..func[] //戻り値無し(廃棄) ..func[0] //配列型戻り値(全体) ..func[1] //配列型戻り値の1番目を返す ..func[-1] //引数を返す
586 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 02:04:29 ] >>584 あんまり突っ込むのも無粋だが、 .2sum とか .8sum とかの方が 見やすくて短くて解析も楽な気がしねぇ?
587 名前:576 mailto:sage [2009/10/16(金) 02:23:54 ] その辺りは好みですな。 個人的にはwordの中に数字が入るのが嫌なんでね…………
588 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 08:36:34 ] 言語は仕様考えて、加減乗除ライブラリと、1文字出力ルーチン作って 階乗とかfib関数作るところまでで、たいてい飽きるの俺法則
589 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 14:07:02 ] >>584 そうでしたか。 >>576 氏は天才だと思います。 FORTHみたいな言語を自作するときは参考にさせてもらいます。
590 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 18:34:44 ] プレフィックスの数字で長さとかを決めるのって、 昔のFORTRANの文字列(5HHELLO とか)みたいでなんかヤだなぁ。 Verilogのビット幅指定がそうなんだけど。
591 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 12:19:17 ] 俺、中学の頃、逆ポーランド記法のこと何て、 聞いたことも、無かったけど、自分で、思いついてた、、、
592 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 13:23:53 ] 逆ポーランド記法は日本語に似ているから、日本人にとってはある意味自然なんだよな。
593 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 13:55:45 ] 惜しいかな 変なことを考える中学生に今少し学問があれば
594 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 14:01:40 ] >>591 「お前が思いつくようなことは、すでに誰かが思いついてる」 ベッコアメの社長が親父に言われたんだったかな? 大昔に見た記事だから忘れたけど
595 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 15:25:19 ] それなりの環境にいれば思いつくことは思いつく。 しかし思いついたことを実現まで持っていく奴はなかなかいなくて、大抵 思いついた数年後に世の中のどこかからそれを実現させた会社がでてくる。
596 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 00:19:13 ] つ LISP
597 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 11:29:40 ] >>592 2から3を引く 3を2から引く どちらも日本語として自然ですが、RPNとしてはどちらかが間違いですよね? 一見そう見えるというだけだと思います。
598 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 11:37:48 ] >>597 2から3を引く --> -1 3を2から引く --> 1 どちらもRPNとして正しいと思うが?
599 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 11:38:57 ] 日本人は中学で語順で格を示す英語学ぶのだから、 それは機能語である助詞の機能によって、 語順が変えられるのだとすぐ気づくだろう。
600 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 12:07:45 ] >>598 おい
601 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 12:11:40 ] >>597 >3を2から引く これは日本語として自然か? 漏れにはえらく不自然に見えるが....。 逆にRPN(Forth系言語)なら "から" を減算元属性付加、"を" を減算先属性付加という ワードであると考え、ワード "引く" ではスタック上の属性値を参照することで、 演算対象値を決定できる。これなら3と2が逆でもオケー。以下は例。 3 :スタックに3をPUSH を :スタックの先頭値に演算先属性を付加 2 :スタックに2をPUSH から :スタックの先頭値に演算元属性を付加 引く :スタックから値を2個POPし、減算子(演算元値 - 演算先値)を評価して、結果をPUSH
602 名前:598 mailto:sage [2009/10/18(日) 12:13:11 ] >>598 のカキコは取消
603 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 16:24:14 ] そういう風に、本来のRPNにないものを導入しないとダメじゃん、って話。
604 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 21:56:46 ] シューティングで弾幕とか敵の動きをスクリプト化したくて Java上で動くスクリプトエンジンを作ろうと思ったのですが、 ・・何から始めたらいいんでしょうか。 スクリプトに使う言語はLuaにしようと思っています。
605 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 22:23:29 ] Java上なのにLuaなのかよ。
606 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 22:59:00 ] Jua
607 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 23:01:28 ] >597 おいおいおい、日本語が逆ポーランドの構造しか持っていないなんて言ってないぜ。 日本語の特徴の一つ(述語を中心とした後置型)が逆ポーランドに似ているということだよ。 〜して、〜して、〜して、……。といった感じでだらだら続けられるのも日本語の特徴だよな。 そういや、各国の言葉の特徴をイラストにしたのがあったな。日本は渦巻だっけ?
608 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 10:57:43 ] > といった感じでだらだら続けられるのも日本語の特徴だよな。 逆ポーランド記法から夢が膨らむネット言語学者乙 英語でもできるし、日本語よりもっと簡単なぐらいだ。 新聞などではさすがに極端なのはないが 小説でも眺めてみるとよい。 見るからに馬鹿そうな著者を選ぶのがポイント。
609 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 11:05:22 ] 逆ポーランド記法を使えば、自然言語処理の能力がアップするに違いない!
610 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 12:57:18 ] つ「日本語の語順と逆ポーランド記法」「和文の語順と逆ポーランド記法」どちらも水谷
611 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 02:04:38 ] どんなの? >608 日本語よりも柔軟に組めるの?
612 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 13:47:52 ] 緩いだけだろ 日本語で曖昧さがなく読みやすい長い文を書くのには 読点の使い方や語順を工夫したりとか技術がいる
613 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 15:33:34 ] つまり、時代はラテン語か
614 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 20:47:50 ] >>613 西洋人にとってのラテン語にあたるものが日本で学ぶ漢文なのよ(割とマジで)
615 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 20:47:56 ] 古代ギリシャ語でおk
616 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:22:44 ] >>614 いや漢文じゃなくて古文の方だろjk
617 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:32:57 ] 古文に相当する授業ではたとえばイギリス人ならシェークスピアとか読む。
618 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:46:08 ] 字句解析を手書きするのって難しい・・
619 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 08:19:24 ] >>616 漢文です。ていうか常識ないなおまい
620 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 12:52:17 ] 古文だろ。
621 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 13:10:32 ] 南部ヨーロッパだと昔使っていた言語だけど、 北部ヨーロッパだと別の民族の言葉だな。
622 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 20:00:31 ] 「から引く」と「を引く」の二つの演算子つくればいいだけじゃん。とカメレス。 どっちもドンラーポとしては正常だよね。
623 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 12:31:29 ] そこは語尾屈折で
624 名前:デフォルトの名無しさん [2009/11/06(金) 11:41:09 ] Rubyで俺DSLを作りたいのですが、パーサーの作り方を解説したURLはないでしょうか
625 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 12:25:59 ] ウェブページはあるかもしれんが、URLだけで解説するのは無理だな。 冗談はともかくとして、とりあえず Racc 使い方、で検索するとか。 先頭に出てくるページは、今なんか落ちてるようだが。 ていうか言語内DSLじゃダメなの?
626 名前:624 [2009/11/06(金) 13:27:03 ] 検索しましたがraccで良いような気がします(合ってますか?) ”Rubyを256倍使うための本 無道編”というraccの解説本がありましたが絶版でした。 どこかに良い資料はないでしょうか。 最終的には俺言語、俺コンパイラ、俺VMが作りたいです。
627 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 13:44:05 ] >>626 ttp://www.bk1.jp/product/01992393 そういやANTLRの人がこんな本出すね Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages ttp://pragprog.com/titles/tpdsl/language-implementation-patterns
628 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 14:10:12 ] >>626 ネットで見つかる資料でとりあえずいいと思うんだけど。
629 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 14:36:41 ] 俺程度の脳みそでは下記のサイトが役に立った 早く2部を作ってくれ。 KENJIの独り言 ttp://www.ne.jp/asahi/kenji/pda/
630 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 15:39:48 ] それ、ざっと見たけど、まともに構文解析してない気がする。 ...ゲームスクリプトエンジンとして、インタプリタがセーブ・ロードをサポートする所の考察は面白いが。 アセンブラのような文法(ベタッとした、入れ子になった構造がない言語)なら、 それでも構わないけど、どうやら if や式に現れる入れ子構造をどうやって処理したら いいか、わからなくって手詰まりになっちゃったんじゃないかな? > もし、複雑な物を使いたい場合、 > スクリプトコンパイラを使うに乗っている拙作の acc.exe を使うか、lexとyaccで作った方が良いと思います。 と本人が言ってるように、yaccも使わないし、再帰降下パーザを手で書くわけでもなく、 シンプルに済ませたいなら、if や while なんかの入れ子なんぞもっての他、 式も (1 + 2) * (3 + 4) なんて複雑な式はきっぱりあきらめる、と。 それくらい割りきらないとダメっつーか。 まぁ昔のFORTRANや、BASICインタプリタは、なんだかんだのテクニックを使って、 そういうのを実装してたわけなんだけどさ。
631 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 16:43:44 ] 現実に使っていると思われるスクリプトコードの一例がブログに載っているが、そこの一部で説明されているものと大差ないんだな。 変数名を(固定プリフィクス+数字)の形でしか表せないように見える。 管理するの大変そうだ。
632 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 17:29:15 ] C言語と同等の機能の#define、 MASMライクな#macroの2種類があり、もちろん様々な条件コンパイルも出来、 最終的にプリプロセッサは、式(逆ポーランド)と DD,DW,DB,stringにスクリプトを解析してコンパイラに渡す。 よって、プリプロセッサの大きさに比べてコンパイラの大きさは小さい。 そして強力な文字置換により、文字セットもプリプロセッサ時、コンパイル時、実行時の3段階で解決される。 本人曰く、 21年プログラマやってて、13年同じシステムを使ってるって と書かれてるから、さすがにそんなチープな物じゃないんじゃない? しかし、カナ入力なんてじじいかよw
633 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 17:33:36 ] ブログの回答で初心者にドラゴンブックと中田の本を紹介してるw
634 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 18:10:46 ] 誰か特攻しやがったw
635 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 18:25:09 ] またおまえらかw
636 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 18:55:05 ] > 変数名を(固定プリフィクス+数字)の形でしか表せないように見える。 > 管理するの大変そうだ。 アルファベット2文字とかそういう制限ならわかるけど、 わざわざそんな制限つけるとか考え辛いし、そういう名前で変数を管理する 世界にいる、ないしそういう環境で学んだ人ってことなんじゃないかな? ドラゴンブックと中田先生の本(どれ? 厚い奴薄い奴ペーパーバックの奴と いろいろあるけど)って、結構わかってるじゃないかw 一昔前なら市販品だったようなレベルのCコンパイラだって書けるぞ。 つまり >>629 のコンテンツは覚醒前に書いたっつーことかね。 ぜひ今の知識とノウハウを注ぎ込んで書き直していただきたい。 masmのマクロって俺よく知らないんだよな。構造化アセンブラみたいな記述が できるようになるマクロセットを作れたりとか結構すごいらしいんだけど。
637 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 19:45:38 ] 変数名は英数文字で表現できます。マルチバイトでは表現できません。 メッセージ命令の中でもレジスタ間接などを使って計算結果やストリング配列の表示も出来ます メッセージ中に直接式を入れることも出来ます。 if 式 elseif 式 else end / while 式 end / do while 式 / for 式;式;式 end などが記述出来ます これらは全てプリプロセス時に、#amacroでifn_goto 式,label / if_goto 式,label と goto labelに分解されます。 式は代入式と評価式の区別は付けません。それとポインター式があります。 式はC言語と同等の物だと思ってください。演算子の優先順位も合わせてます。 記述性はVB並と思ってください。それに強力なマクロと強力な置換が追加されていて、 それらを使って、windows apiを呼び出すようになっています。 逆に言うと、強力なマクロと強力な置換を使い、システムをラッパーしなければ 最低限のゲームシステムの支援(文字表示やCG表示)しかなく windows apiやcopyrect命令などの呼び出しが必用になり、 ゲームシステムとしては使い物になりません。 式関連は最適化もしています。 コンパイラ自体は以上の実装なので、 ウチで作った携帯電話用のゲームシステム等ともマクロを変えて併用しています。
638 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 19:48:09 ] 以下がendマクロの実装例です #amacro end( d0 )(local0,local1,localn,localt,localcase) ; ; end ( while,do,for,switch,if ) ; #getnum localt 2 #getnum localn 3 #subnumsp 3 #define local1 "f_{localn}" #unstr local1 #if (localt==10) ; while #define local0 "b_{localn}" #unstr local0 goto local0 local1: #elseif (localt==11) ; do #define local0 "b_{localn}" #unstr local0 if_goto local0,d0 local1:
639 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 19:49:13 ] #elseif (localt==12) ; for #define local0 "b_{localn}" #unstr local0 goto local0 local1: #elseif (localt==13) ; switch #popnum localcase #substrsp 1 #define local0 "case_{localn}_{localcase}" #unstr local0 local0: local1:
640 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 19:50:27 ] #elseif (localt==14) ; if #popnum localcase #define local0 "if_{localn}_{localcase}" #unstr local0 local0: local1: #else #error end文の対応が異常です #endif #endm
641 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 19:55:12 ] 笑ってすみませんでした。 ttp://www.ne.jp/asahi/kenji/pda/ の2部以上の物を作っているみたい。 マクロで言語を作るのって、意味あるんかい と思ったら、携帯電話へも流用してるのね。 面白いアプローチだ。
642 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 20:02:19 ] LispやSchemeはマクロのお化け 複雑な構文をマクロに委ねるってアプローチはありだと思うけど 括弧はイヤだ
643 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 20:05:24 ] >>636 > ドラゴンブックと中田先生の本(どれ? 厚い奴薄い奴ペーパーバックの奴と > いろいろあるけど)って、結構わかってるじゃないかw > 一昔前なら市販品だったようなレベルのCコンパイラだって書けるぞ。 かなり古くさいスタイルの仕様、実装になってしまっていることと、 概論で終わっているような本を参考文献に挙げることは、対応していると思う。
644 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 20:06:36 ] 何をやってるかさっぱりわからない。 みんな理解できるのか? だったとしたら、みんなが普通で俺がバカと言うことになるw
645 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 20:12:30 ] >>642 ほう、そうなのか。 しかしこの仕様なら、リンカさえ作れば色々なCPUの実行型を作れて面白そうだな。 >>643 関数型言語みたいだね。現代のoopには対応できないのかね。 まーエロゲのスクリプトみたいだからこれでもオーバースペックだよな。
646 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 20:16:26 ] end命令1個作るのにわざわざこんなに記述するのは嫌だな。 中間スクリプターは地獄だな。 多分本人が作ってるんだろうけど。
647 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 20:31:07 ] 逆にマクロさえ作ればいくらでも言語を拡張出来る 確かにlisp的だ
648 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 20:46:57 ] lispなめんな
649 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 20:56:54 ] >>643 の言うとおりoopではない。 言語仕様としては古くさいのでは? しかし、ゲームのシナリオを入力するだけの物にoopは必要ない。 携帯電話のゲームにも流用しているみたいだから この人の場合は>>643 の言うことは見当外れで>>647 の言うことが正しい。
650 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 20:58:15 ] >>648 気に障ったか、ならば言い換えよう マク…モゴモゴ テンプレートさえ作ればいくらでもメタ言語を拡張出来る 確かにC++的だ …?
651 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 21:07:58 ] 俺には作れないな。 17才からエロゲプログラマーか。 俺がやったゲーム、何本か作ってるw
652 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 21:10:04 ] コンパイラの理論だけじゃ関数型言語はわからんよ
653 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 21:38:13 ] >>649 >>643 にはoopじゃないから古くさいとは書いてないが?
654 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 21:40:32 ] >>653 649じゃないけどさ、 じゃあ何が古くさいの? アンチドラゴンブック派?
655 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 21:42:43 ] ドラゴンブックが古くさいとも書いてないようだが…
656 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 21:45:43 ] >>653 >>655 アンタの文章は何を言いたいのかさっぱり解らんのよ。
657 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 22:00:23 ] >>643 >>655 >>かなり古くさいスタイルの仕様、実装になってしまっていることと、 >>概論で終わっているような本を参考文献に挙げることは、対応していると思う。 仕様と実装が古い、そして参考文献が対応してるって書いてあるから、 643はドラゴンブックを古いと思っていることは拙い文章だけど解る。
658 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 22:07:16 ] おちつけ。 >>637 はエロゲや携帯電話のゲーム用のスクリプトだぞ。 それにしては強力だし妥当な言語仕様だと思うぞ。
659 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 22:35:14 ] C言語にMASMの強力なマクロが使えればいいと思っていたが、 実際にやる奴が居たなんて…
660 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 23:08:03 ] 面白そうな言語だね。 マクロの全容とサンプルソースを見てみたいね。
661 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 02:32:06 ] 中田先生の本の第2版が出るらしいよ
662 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 02:48:16 ] save,loadがバグfix時の文章追加でずれるのか。 プロはそんなところまで考えないといけないのか。 大変だな。
663 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 05:55:04 ] なんだか面白い話になってるね。 メイドゲーの始祖の殻の中の小鳥のプロデューサーでありプログラマのKENJI氏か。 年下だけどオレがこの道に入った元凶の1人だ。音楽プログラムが凄い人だ。 こうなったらシステムを公開して欲しいって言ったら、罰が当たるよね。 過去に関わったタイトルも100以上で、オレが買ったのも10は下らない。 天才っているもんだね。 CG,WAV圧縮もオリジナル、それら全てにMAKE内蔵って事は 100本以上というタイトルを考と公開されているKMAKEと言うのを見てみれば分かるが高性能。 DOSもK-DOSとか言う物がゲームに入ってて、さらにUMBメモリツールのUMBCNFGの作者。 うーん、システムを公開して欲しい。 >>661 2版が出るんですか。1版を持っている自分は買わないですが、 立ち読みはしてみたいですね。 中田先生はいつまでたってもエネルギッシュですね。凄い!
664 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 10:19:34 ] >>652 確かに関数型言語の実装のしかたがわかる文献となると、まだ論文とかが頼りかなぁ。 Tiger Book の訳本が出るけど、あれにもないんだっけ? >>662 ベタデータでセーブするかねぇ? ハッシュをJSONみたいな形式でセーブするとかすればロバストになると思うが。 確かにコンティニュエーションとかコアダンプを丸ごと保存してプロセスを停止・再開 という手段も世の中にはあるが。 Lispのマクロは、プリミティブとしてリスト構造を切った貼ったできる(List processor だけに)。 ありがちな、文字列レベル+α程度の編集能力しかないマクロと一緒にしちゃいかん。 2版が出る、って、中田先生のどの本よ。 厚い最適化の本? > if 式 elseif 式 else end / while 式 end / do while 式 / for 式;式;式 end などが記述出来ます それら自身は<文>なんだよね。 詳細を埋めると、 <文> : if <式> <文> elseif <式> <文> else <文> end / while <式> <文> end / do <文> while <式> / for <式>;<式>;<式> <文> end ってことでいいのかな?
665 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 10:50:01 ] >>651 >>663 俺がやったエロゲも作ってたw メモリツールも使ってた。同一人物だったとはね。 >>664 あの分厚い最適化の本は2版が出てもいらんわ。 まだ最初の奴、読み終わってないからなw 中田が監修した本の2版なら絶対買わない。 >それら自身は<文>なんだよね。 >詳細を埋めると、 ブログを見る限りだと文の区切りは改行臭い。 ネストできない事はさすがに考えられないからそれで正しいと思う。
666 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 10:54:39 ] >>664 関数型言語実装本は何冊も出てるよ。訳本がないだけで。
667 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 10:57:23 ] どちらにしろ訳者が糞だとダメ本になるから英語版を買った方がお財布にも優しい。
668 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 12:32:45 ] MinCamlならコンパイラの作者は日本人だから、解説文書は日本語が中心だよ。 後、東大やJAISTの講義で使われているから、その講義資料や学生の個人HPを漁るもよし。 もしも英語が読めれるなら、ググるといくらでも論文は見つかるんだけどね。 まったくインターネット万歳、いい時代になったもんだと思う。
669 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 13:15:54 ] 公開は断られたね。残念。
670 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 13:17:41 ] 未記入様。 makeを内蔵したのは、 別exeにするとどうしても読み込みのオーバーヘッドが無視できなくなるからです。 マスターアップの時にはデーターが完成するのが当日とか当たり前にあります。 自分のシナリオコンパイルは1fileで1秒前後、自分のwavファイルで0.1秒前後です。 特にwavファイルは最後に入ってくることが多いので、wav圧縮は0.1秒前後のため、 外部makeを呼び出していると1万fileだと相当なオーバーヘッダがつきます。 ですので内蔵しております。oggだとこうはいきませんよね。 1万fileで外部makeだと少なくとも5時間は掛かります
671 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:00:35 ] 上で既出だけど 中田先生のコンパイラの構成と最適化第2版が20日に出版 www.asakura.co.jp/books/isbn/978-4-254-12177-3/
672 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:09:28 ] KMAKEってのが気になって見てみたけど、 依存型じゃなくって単体ファイルの比較なのね。 たしかにWAVの圧縮には依存型じゃない方が良いと思う。 MAKERだとWAVFILEを2ヵ所に記述しないといけないからね。 マクロはMAKERとほぼ同じだね。 この仕様でフルアセンブラなんて凄いね。 DISKへスワップ機能を入れたりUMBCNFGと言い、 MAKE時のFREEMEMORYをよっぽど空けたかったんだろうね。
673 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:22:23 ] >>671 1版を持って無いから買いたい。しかし高いな。 >>672 makeはさすがにスレチ。自重してね。
674 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 20:55:50 ] 素朴な疑問なんだが、makeって何のことを言ってるんだ? 普通makeといったらMakefileを動かす実行プログラムのことを言うと思うんだが。
675 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 21:16:58 ] >普通makeといったらMakefileを動かす実行プログラムのことを言うと思うんだが。 それでokだと思うよ。 kmakeはmakefileを動かすプログラムみたいだね。 それをスクリプトコンパイラやwav圧縮に統合してるみたいだ。 面白いアプローチだし、0.1秒の速度を万単位のファイルの圧縮に使って マスターアップの時間を稼いでるみたいだね。 しかし、エロゲーってwavファイルがマスターアップの直前に来るのか。 少しでもスピードを稼ぎたいのは分かるが、 もっと余裕を持ったスケジュールで作れない物なのかね。
676 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 22:01:09 ] >しかし、エロゲーってwavファイルがマスターアップの直前に来るのか。 ねーよ。 収録完了後2日〜1週間後が納期。Waveでもoggでも注文した形式で作ってくれるよ。 よっぽどアレなスケジュール組んでるんじゃね? スレの内容に即したことをいうなら、Advの演出みたいなやたらと巨大な量になるスクリプトなら、 マクロで計算式を埋め込むことなんかよりも、むしろ計算式をスクリプトから外に出してしまうことをオレなら考えるな。
677 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 01:28:13 ] KENJI氏の所は今年6本だからね。しかも延期は今のところ2本も無いみたい。 ブログ見ても書き方が簡素な演出方法と細かい演出方法を用意している、 よっぽどタイトなスケジュールなんだろう a)1行でロードと表示をする ;Bキャラを左にCキャラを右に表示 ld_cg1 h00bw00,h00cw00 ;BキャラとCキャラを左右に動かし、間にAキャラ出現 ld_cg1m h00bw00,h00aw00,h00cw00 ;BキャラとCキャラはその位置のままでAキャラを消す ld_cg1 h00bw00,cls0,h00cw00 b)ロードと表示をわける ;Bキャラを0番レイヤーにロードし、立ち位置を左(0-4のうち1)にし、表示優先順位を最低(0)にする。 ld_layer 0,h00bw00,1,0 ;Cキャラを1番レイヤーにロードし、立ち位置を左(0-4のうち3)にし、表示優先順位を1にする。 ld_layer 1,h00Cw00,3,1 ;ロードしたBキャラとCキャラをフェードインで表示する putcg 1
678 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 01:29:21 ] ;Bキャラをより左(0-4のうち0)に移動させる move h00b,0 ;Cキャラをより右(0-4のうち4)に移動させる move h00c,4 ;Aキャラを2番レイヤーにロードし、立ち位置を真ん中(0-4のうち2)にし、表示優先順位を2(一番手前)にする。 ld_layer 2,h00aw00,2,2 ;BキャラとCキャラを左右に動かし、間にAキャラ出現 putcg 1 ;Aキャラを2番レイヤーにロードし、立ち位置を真ん中(0-4のうち2)にし、表示優先順位を2(一番手前)にする。 ld_layer 2,cls0,2,2 ;BキャラとCキャラはその位置のままでAキャラを消す putcg 1
679 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 01:31:04 ] 誤)KENJI氏の所は今年6本だからね。しかも延期は今のところ2本も無いみたい。 正)KENJI氏の所は今年6本だからね。しかも延期は今のところ1本も無いみたい。
680 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 01:46:26 ] どうやらバグfixも出てないようだな。 破綻してるスケジュールじゃなくて スクリプトの簡素化とwav納期の短縮でこなしてる。 マクロを使いまくって、バグを出にくくする体制にしてるんだろう。
681 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 02:02:55 ] マクロ自体にバグが入ると酷い事になるけどな
682 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 02:40:02 ] 100本以上、エロゲを作ってるんだから大丈夫だろ。 久々にエロゲ板をみてみたら規制で大変なことになってるみたいだな。
683 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 03:20:56 ] しかし面白そうな言語だ。 全容をみてみたい。
684 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 05:51:46 ] >>672 FREEMEMORYじゃなくてコンベンショナルメモリでしょ。
685 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 06:14:31 ] 構造文すら全命令をマクロ化、MAKE内蔵、実践に即した実装だとLISP信者の俺は思う。
686 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 06:24:09 ] エロゲってバカにしてたけど、中々やるな。 シューティングのキャラの移動にも使える。 と思ったら、17才の時にセーラー服戦士フェリス(ヴァリスのパクリ?)で敵の 移動パターン制御に何かしらの言語を使っていた可能性も有るのか。 21年前か。いまだに現役か。 悪いけど言語仕様は古いと思うが21年前の17才が何かしらの言語を 作ったと考えると、今のマクロ主体のシステムは実測論による今までの集大成か。 素直に凄いと思う。 しかし自分がプログラマーだと思うとオブジェクト指向を入れて欲しい。
687 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 06:29:59 ] 全ての構造文は if not 式 goto,if 式 goto,goto の3命令で表せると実証してるしな。 構造文のサンプルだけでもみたいな。
688 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 07:41:43 ] ソースクレ厨と同じじゃないか うぜえんだよ LISPでもやってろ
689 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 09:47:10 ] しかし、作ってるのがエロゲ屋ってのが、そんなに感銘を受けるものなのかね? 見習うべきは吉里吉里(KAGはちょっと微妙)とか、バンナムの中の人が作ってるXtalとか、 ソースも手に入るんだし、いくらでもあると思うんだが。 採用実績だってXtalはともかく、吉里吉里は相当のものがあるし。 kikyou.info がつながらん...
690 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 10:32:53 ] >>689 > しかし、作ってるのがエロゲ屋ってのが、そんなに感銘を受けるものなのかね? たしかにそこに惹かれてるとしか思えないような糞言語だな。
691 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 10:37:47 ] 各レスの鼻息と具体性がここまで綺麗に反比例してると笑える。
692 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 11:48:00 ] 糞とかいってる奴はもっと良い言語をスクラッチで組めるのか? 俺には無理だ。
693 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 11:55:23 ] HPのフリーツールをみてると何でも水準以上の物を作っているところが凄い。 DOS時代からの生き残りか。
694 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 12:06:25 ] 電卓かなんか?
695 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 12:07:33 ] >>687 見事に全ての構造文を if not,if,goto で記述している _ KENJI ― 2009/11/08 11:53 まずはdo-whileではなく、正しくはdo-endと記述する事を訂正させてください。 それと吉里吉里などもっと凄い言語が公開されていますので、 ソースコードなどはそちらを参考にした方がよいと思います。 switch-caseはテーブルではなくif文の固まりです 文字列はゲーム用スクリプタなのでもちろん"(ダブルクオーテーション)では挟まずベタうちです。 ラベルやプリプロセス命令(#が付く命令)も行頭でなくとも記述できます (sample) while exit_flag==0 sel game_flag,ゲームをスタートさせる,ゲームを終了させる if game_flag==0 ゲームをスタートさせます game_start 1 else sel ans,ゲームを終了させる,キャンセル if ans exit_game 1 end end end 実際のマクロ記述については長いので省略。以下をみてね。 kenjikakera.asablo.jp/blog/2009/11/04/4676336#c
696 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 12:16:54 ] >>695 > 見事に全ての構造文を if not,if,goto で記述している ifとgotoにメモリがあればTuring完全なわけだし。
697 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 12:20:21 ] で、メッセージを英語化して、start game と exit game にする時はどうするの?
698 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 12:21:54 ] >>696 高度なマクロ機能があれば、whileとかforとかswitchとかを 全部ifに変換するようなマクロとか考えられるよね。
699 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 12:30:20 ] コンベンショナルメモリを広く使うため、UMBCNFGとか使ったな。 あの頃はコンベンショナルメモリが広くないと動かないゲームがあったんだよな。 音源ドライバもMSDRVとレコンポーザ互換で複数画面が使えるんで重宝した。 たしか音源ドライバは118音源の2OPモードが使える唯一のDOSドライバだったんだよな。 そして分裂守護神トゥインクルスターと殻の中の小鳥か。 分裂守護神トゥインクルスターはなぜACT2がでなかったか不明だった。 あの変身シーンをまた見たい物だよ。ニコ動にはないんだよな。 殻の中の小鳥はメイドブームの始祖だよな。 それに、よくネタにされるセーラー服戦士フェリスか。 ニコ動でみたけど、当時の98シューティングってこういう感じなのか。 こういったゲーム開発を支えたのがmacro志向言語でmake内蔵か。 LISPの思想を継承してると思ったが、見てみたらプリプロセッサ命令の山。 面白い物だ。
700 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 12:33:49 ] >>697 特攻しました。
701 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 12:33:56 ] ゲ製板にフォークしたいような勢いだな、と思ったんだが、 スクリプト で検索したら既にいくつかスレあるな。過疎ってるしw ゲーム用スクリプトの話題はそっちに分ける?
702 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 12:49:27 ] >>698 いやgoto用ラベル管理が必要になるだけで、 後はCのマクロレベルで問題なし。
703 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 12:55:27 ] >>702 Cマクロレベルだとネストの管理が出来ないだろう。 それに#defineマクロは記述性が悪い。
704 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:06:24 ] 殻の中の小鳥と分裂守護神トゥインクルスターは あの当時の98ユーザーなら知ってるとして、 セーラー服戦士フェリスはパッケージにRPGって書かれてたんだぜ。詐欺だよ。 しかもスピードが速すぎてマシンクロックを落とすか ファンクションキーでスピードを落とさないとゲームにならないんだよ。 フェリスの後継のコズミックサイコは音楽CDが付属していて 今でも高値で売られてるんだよ。
705 名前:700 mailto:sage [2009/11/08(日) 13:07:50 ] _ KENJI ― 2009/11/08 12:52 金曜日から質問攻めが凄いですね。 1人の方なのでしょうか? それともどこかで話題になっているのでしょうか。 どこかで話題になっているようでしたら教えていただけると幸いです。 質問の答えですが、半角英文が先頭に来るメッセージの場合 mes game start と記述するか、#defineでmesをm辺りに定義して m game start とでも記述してください。 半角英文が日本語の中に来るときはそのまま半角文字を記入してokです。 まあしかし、ゲーム中には全角英文字しか使わないので滅多に出番がありませんが。 start_game 1とexit_gane 1はstart_game(1)とexit_game(1)とも記述出来ます。 後はこの場合メインループの外側でstart_game(local)やexit_game(local)の様に外部に登録します。Cとは違い、前方参照も出来ます。
706 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:16:55 ] ここに本人が書いてるみたいなレスは、転載か何かか。
707 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:19:52 ] >>703 ラベルをスタックで管理。> ネスト
708 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:22:17 ] 98ユーザーも結構多いんだな。 こういった内部でしか使われない言語が表に出ると反応が様々で怖いな。 俺がスクラッチから作った言語がこのスレに晒されたらと思うと怖いな。
709 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:23:42 ] >>707 それじゃあ、if not goto,if goto,gotoだけじゃないじゃん。
710 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:24:23 ] 今から>>708 の言語を捜すスレになりました。
711 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:31:40 ] >>709 それはターゲット言語であって、処理系の話じゃないでしょ? その辺はちゃんと区別できないと。
712 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:34:13 ] IBM5100ユーザーも結構多いんだな
713 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:35:27 ] >>707 おいおい、C言語の力を使ったら何だって出来るだろ? マクロだけで実装してるから話題になっているわけで、趣旨が違うぞ。 >>708 フツーの人はそうだよ。言語処理系のソースコード公開するのも怖いし。 吉里吉里の人は特別だよ。
714 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:51:17 ] >吉里吉里の人は特別だよ。 吉里吉里スクリプト自体は、仕様としてはさほど大したものではない。 仕様を真似して似たようなオブジェクト指向スクリプト言語を構築してみたが、 コンパイラ+VMで2週間くらいでできたよ。 吉里吉里がすごいのはKAGというADVゲーム開発環境一式が公開されていることと、 それによる市販ソフトの実績が十分にあるところだな。
715 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:55:40 ] >>713 そのマクロ機能実現に、ラベルのスタック管理が必要だってことでしょ? popしてるじゃん。そのマクロのコード読めてないの?
716 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:01:39 ] >>714 VMの性能はおいといてもコンパイラをスクラッチで2週間で組めるのならあんた十分凄いよ。 吉里吉里というのは自分は知らんが、KAGというのは吉里吉里上のラッパかな? ここに出ているマクロ言語は自分には6人月の仕事だ。
717 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:09:14 ] >>715 いや、だから言語の仕様上だけで実装してるのがすごいんじゃん。 ああ、わかった。#defineマクロ機能を完全にとpop機能を実現するコンパイラを 作れば同じ事が出来るって言いたいんだな。 LISP信者には悪いが可読性の悪いLISPや#defineマクロよりmasm似にたマクロを 使えた方が可読性は増す。 あと、Cの#define中って、#ifdefとか#ifって使えたっけ? 使えるのならCの#defineの実装って結構やっかいそうだな。
718 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:12:10 ] あ、でもだめだ。#defineではlocalなラベルは作れん。
719 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:19:02 ] >>716 最近は48時間な時代だからなあ
720 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:21:54 ] 一つずつ名前をつけるのもめんどくさいほどの大量のフラグとパラメータの 複数スナップショット取れる風な恒久化っていうのはいいね。 俺言語を作ろうとすると文字列のサポートとかマンドクさくなるので こういう状態遷移管理専用言語もおもしろそうだ。 昔、bitか何かで「ある番地(A)からある番地(B)のデータを引いて0になったらある番地(C)へ飛ぶ(だったっけ?)」な 命令が1つあれば、他の命令はこれの組み合わせで実装できるとかあって1つしか命令無いんだから、 A, B, Cのアドレスを並べておくだけでいいとか。
721 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:24:09 ] だーらLispのマクロはマクロプロセッサ的なマクロとは別物だっての。 アセンブラのマクロといえば、NASMのマクロがラベルのプッシュ・ポップとかの 機能をもってたかな。
722 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:30:34 ] うろ覚えで鼻息の荒い奴はいったい何なんだ
723 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:31:05 ] だれもForthのことを思い出してくれない。
724 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:32:15 ] >>715 #calc __cmd_num __cmd_num+1 #define local1 "f_{__cmd_num}" こんな命令が有るようだとさすがに#defineとpush/pop程度の実装では無理だよ。 全ての条件文にユニークなラベルを発効する命令だと思う。 >>721 Lispは高性能なのは分かるが記述性が自分には難点。 Wizerd級になると一瞬で判別できるみたいだけどね。
725 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:34:09 ] >>724 それがラベル管理でしょ。 ワンパスコンパイラのコード読んだことないの?
726 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:37:40 ] 煽るだけの奴が一番頭悪そうだな
727 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:40:37 ] 久々に高純度の自己紹介レスを見た。
728 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:45:21 ] >723 LispはメジャーだけどForthはダメだなぁ。 こういったシナリオ系のスクリプト言語と相性良いと思うんだけどね。Forth。
729 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:46:16 ] 今はJVMで簡単に俺言語を試せて楽だね。 バイトコード吐いてもいいし、 まずはJavaコード生成でもいいし。
730 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:47:31 ] >>715 完全な#define命令とpush/popだけでは無理だよ。いい加減諦めな。 >>719 天才は日本の財産だ。体に気をつけろ。 >>720 >よって、プリプロセッサの大きさに比べてコンパイラの大きさは小さい。 >そして強力な文字置換により、文字セットもプリプロセッサ時、コンパイル時、実行時の3段階で解決される。 文字セットも3種類必用だそうだ。逆にめんどくさくないか? >>721 一時期LISPにはまったが、やみつきになる言語だよな。RPNもやみつきになったな。 >>722 ここも天才だけが来るスレじゃないし、仕方がないんじゃん。 間違えを認められれば先に進めるし、反論だけの奴はその程度の奴だし。 >>723 わりい、忘れてた。 >>724 そんなにいきり立つなよ。言ってることが正論でも相手が受け入れなくなる。 新言語で週末は面白かったけど、特攻は>>697 レベルの事でするのは相手に失礼。 まあ、なんだ。ここは天才が比較的多いんだから、 もっと柔軟に楽しく言語を作ろうぜ。 言語を作るってのはプログラミングにおいてOSを作るのに匹敵し、 神になれるんだからさ。
731 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:50:14 ] >>725 今更ラベル管理を言ってもまあむりだ。 最初の#defineとpush/popだけで実装はどこへ行った。
732 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:51:05 ] >>702 > いやgoto用ラベル管理が必要になるだけで、 > 後はCのマクロレベルで問題なし。
733 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:54:16 ] >>732 おっちゃん、言ってることがどんどん増えて行ってるよ。 あんたの負けだよ。
734 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:54:52 ] >>732 これじゃ言ってることわからん奴もいるわな。
735 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:55:25 ] 過去のレスを「増えていってる」とは言わんのでは。 相手の言ってることのうち都合の悪いところを忘れたもん勝ちの 口喧嘩でもしてるなら別だけど。
736 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:58:33 ] >>698 >>702 は処理系の話だろ? >>696 は実行系の話だろ? >>733 は区別付いてないじゃないの? 作ったことない人は混同しがちだけど。
737 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:59:43 ] >>735 一端ゆっくり考えて、#defineと何が必用だか1つのレスに分かり易くまとめてくれないか。 IDが出ないもんでぶつ切りの主張だと何言っても通用しないぞ。 while-endの仮想コードでも良いよ
738 名前:736 mailto:sage [2009/11/08(日) 15:00:23 ] >>736 > >>698 >>702 は処理系の話だろ? 処理系→翻訳系
739 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:01:23 ] >>737 IDが出ないなら、相手を同一人物だと思わないほうがいいんじゃないの。 735は俺だけど、少なくとも今日は初めて書き込んだぞ。
740 名前:737=733 mailto:sage [2009/11/08(日) 15:02:10 ] 区別は付いてるさ。 ただ、同じ奴が言ったとは分からなかった。
741 名前:737=733 mailto:sage [2009/11/08(日) 15:06:15 ] >>739 すまん。IDがでないと不便だな。
742 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:07:39 ] いや別に不便じゃないよ。 仮想敵と戦わなければいいだけ。
743 名前:737=733 mailto:sage [2009/11/08(日) 15:12:04 ] >>742 了解。 まあなんだ、言語仕様のことだから、レスは2つとかに分けず1つに書くか 名前を明記して欲しかったな。
744 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:17:30 ] じゃあ次はこのC言語がターゲットの片言Algolコンパイラについて話そうか。 catb.org/retro/cfoogol.shar.gz 500行弱だな。
745 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:17:50 ] まぁ、逆に「仮想別人」のケースもあるけどなw やたら興奮気味に、仮想敵だとか見えない敵云々言ってるのがいたら、そいつは 「ズバリ言い当てられけど隠れ蓑があるから上手く逃げてやるぜざまあ見ろ」 的な昂ぶり方をしている可能性もある。
746 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:20:49 ] Algolしらん。FORTHは昔、MZ系PCのOS、S-OSに実装されてなかったっけ。
747 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:27:02 ] >>744 nを初期化し忘れてやがるw > サンプルコード
748 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:29:58 ] みんな凄いんだね。 C/C++でブログのプリプロセッサ並の物を作るとしたら、どれくらい時間がかかる? ラベルはハッシュ管理かね、HPとコンパイルスピードを見る限りは。 大量のラベルが生成されるだどうね。 SAVEデーターとバグFIXで増える文字列はどうやって解決してるのだろう。 あと、未読既読機能。VMの力も使ってるんだと思うけど。
749 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:35:05 ] >>748 C言語で集中的に出来るんなら1週間でマクロの仕様を考えて、1ヶ月でプログラムかな。 C++ならもうちょっと短くできる。
750 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:36:54 ] C言語に落とすのか>foogol エラーがあるとreturnしちゃうのが新鮮かな? ttp://catb.org/retro/ logoはなんとなくSMC-70で使った覚えがあるがpilotってどんなのだっけ?
751 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:36:57 ] C/C++でやろうとするから大変なんじゃないの? PythonとかGCある言語なら二週間くらい。 ただああいうのは言語機能そのものよりも、 ドメインとマッチしているかどうか、 実務支援のリソースが豊富かどうかで 良し悪しが決まってくる。
752 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:41:16 ] >>750 rpilot.sourceforge.net/rpilot.txt
753 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:42:17 ] >>750 focalは「きだあきら版」じゃないか。
754 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:47:37 ] プリプロセッサのプログラム自体は1ヶ月ぐらい(C言語)だけど、 仕様を考える時間が結構かかりそうだな。 3段階の文字列解決とかコンパイラ本体とVMの全ての仕様を同時に考えないといけない。 作りながら仕様変更等もありそうだから、一概には言えないな。
755 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:55:13 ] シナリオを1秒でコンパイルとかwavを0.1秒でコンパイルとかスピードに命を掛けてるみたいだし、 やはりプリプロセッサ、コンパイラ、VMとの兼ね合いがあるから日数は簡単に出せないな。
756 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:06:56 ] 「wavをコンパイル」 こういう用法はやめてくれ
757 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:07:44 ] 正しくはwavを圧縮だな。
758 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:16:34 ] wav変換にかかる時間なんて処理系の出来とは関係ないでしょ?
759 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:26:02 ] いや、音声wavの圧縮が0.1秒というのは相当早い。 多分インラインを使いまくってるんだろう。 そこから推測すると、シナリオファイルのコンパイルと圧縮が1秒というのは コードのチューンに相当時間をかけている。多分インライン使いまくりだろう。 JAVAで良いのであれば1ヶ月もあればプリプロセッサを作れるが、 プリプロセス、コンパイル、VM、その間の仕様決め、 そして最適化となると単純にプリプロセス時間だけを計ってもしょうがない。
760 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:26:16 ] 実用になる言語ってのは、どこかしらに「巨大な〜を高速に〜できる」な実装が必要になると思うんださ 言語仕様では、それらが簡易に記述できれば嬉しいなとか言語ワナビの俺が言うんだから間違いはない >wav変換にかかる時間 コンパイル時間が短ければ、リリースも早くできるんじゃないか?
761 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:26:50 ] Cプリプロセッサ風の何か、なら0.5人月だけど、 標準が定義するところの「プリプロセッサトークン」を正確に認識し、 展開結果に、またマクロが現れるとかそういう場合についてのふるまいを、 正確に標準に定められた通り動作するものを実装しようと思ったら、 どれだけかかるかわからないな。
762 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:32:38 ] 何でも組める天才はいるんだよ。 でも、この人は一度プログラマーを辞めようとしてるんだよな。 酒や薬(安定剤?)、そしていくつもの会社を渡り歩き、今は経営者兼任。 プログラマーとしては天才だが、人生の天才ではないな。 俺なら凡人で良い。 新しい書き込み _ KENJI ― 2009/11/08 16:15 書き忘れましたがインクルードは #include <w95gd.mac> #include "h00win0.mac" として、標準マクロと標準命令はw95gd.mac、 そのゲーム専用のマクロはh00win0.macに記述します。
763 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:34:30 ] >>759 > いや、音声wavの圧縮が0.1秒というのは相当早い。 > 多分インラインを使いまくってるんだろう。 0.1秒はライブラリの仕事じゃないの? 処理系関係ない。 1万ファイルだから外部プログラムの呼び出しコストを下げたいと書いてある。>>670
764 名前:762 mailto:sage [2009/11/08(日) 16:35:16 ] 薬は睡眠薬かもね。イソミタール、ロヒプノールで検索したら、相当強い薬だった。
765 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:35:28 ] >>759 なんも分かってないな。
766 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:41:29 ] >>763 この会社の圧縮はCG,WAV,シナリオ全てオリジナルだよ。 ゲーム分解ツールで見たことがある。 多分、他人のコードが入るのを嫌う、昔気質のオールドタイプだよ。 KMAKEもフルアセンブラだから、インラインも使いまくりだろう。 圧縮に必用なビット演算はアセンブラが一番強いからね。 もしかすると、フルアセンブラかもね。 オールドタイプだから、斬新だけど古めかしいスクリプトコンパイラなのだろう。 推測ばっかだなw
767 名前:759 mailto:sage [2009/11/08(日) 16:43:57 ] >>765 何が分かってないか、教えてくれ。 あまりにも自分の理解力がないのなら、答えなくても良い。 自分の馬鹿さを嘆くから。
768 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:44:56 ] >>766 オリジナルかどうかって事じゃなくて、 インラインだろうが、呼び出しだろうが、ライブラリだよね? >>748 のお題は「ブログのプリプロセッサ並の物」だから別の話。
769 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:47:16 ] >>767 例えば0.1秒もかかる処理1万件、 これの何をインライン展開すると速くなるわけ? 外部プログラム呼び出しを辞めたのは>>670 にある。
770 名前:766 mailto:sage [2009/11/08(日) 16:48:34 ] 話がわき道にそれてすまん。 それだったらCで2ヶ月かな。
771 名前:766 mailto:sage [2009/11/08(日) 16:50:45 ] 767でなくてすまん。 >>769 圧縮自身。
772 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:52:27 ] 圧縮そのものに処理系もインラインも関係ないじゃん。 それともKMAKEで圧縮関数書いてあるの?
773 名前:766 mailto:sage [2009/11/08(日) 16:53:35 ] >>769 >>ALL >>766 で書いたインラインも使いまくりというのはインラインアセンブラ使いまくりの 間違えです。すみません。
774 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:55:18 ] 自前の圧縮ルーチンをインラインアセンブラ使って書いてるって話なら分かる。 ただスレ違いかと…
775 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 17:25:11 ] hashをインラインアセンブラ化して2倍のコンパイルスピードだそうです KENJI ― 2009/11/08 17:13 CG,WAV,シナリオの圧縮はオリジナルです。 昔は全てアセンブラで組んでいましたが、 最近は移植性のため一度C言語で組んでそれをインラインアセンブラ化します。 圧縮のビット操作関係とプリプロセッサとコンパイラのラベル解決のプログラムはC言語版は残したままで1からインラインアセンブラで組み直しています。 インラインアセンブラの採用で圧縮展開は5倍、コンパイラは2倍くらいのスピードになります。 ゲーム本体は展開以外はほぼ同じスピードなので、インラインアセンブラを積極的に使ってません _ KENJI ― 2009/11/08 17:19 未記入様。 ご報告、有難う御座います。 読んでみると自分のせいで荒れているみたいですね。 申し訳ないです。 ここでの質問は紳士的でしたので、問題はありません。
776 名前:775 mailto:sage [2009/11/08(日) 17:29:26 ] もしかしてhashを使っているという前提が違うのかもしれません。 >コンパイラのラベル解決のプログラム というのはHPでhashで説明してますが、hash以上の性能のアルゴリズムって有ります?
777 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 17:36:03 ] >>776 トライがある まあただのトライ木ではないだろうけど
778 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 17:40:45 ] 言葉が抜けてた トライを実装する場合ってことね トライ構造にした上で、シンボル化する シンボルってのは、LISPのアレね こうすると、新規のラベルかどうかはトライでインクリメンタルに、 既成のラベル同士ならアドレスの比較だけで済む
779 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 17:40:59 ] 順当に考えてハッシュだろう。 キーをどうやって生成してるか分からないが、 2倍というのは凄いな。
780 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 17:57:56 ] ハッシュが2倍とは書いてないようだが
781 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 18:00:24 ] おこちゃまだから切り刻むことしか思いつかない
782 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 18:06:39 ] >>778 に補足 一意なんだからアドレスの比較も不要だな ユーザープログラム上で比較する時は、の話
783 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 18:09:38 ] トライは順序構造だから当然文字列の大小も判定できる ハッシュだと一度文字列レベルに落とし込む必要がある 文字列処理にハッシュが使われない理由でもある
784 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 18:40:58 ] 勉強になるよ。
785 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 19:21:27 ] 何でこんな伸びてるの? 三行で頼む
786 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 19:25:15 ] 1行で要約すると 子供がエロゲの作成過程を知って興奮
787 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 19:59:29 ] なんか最近似たようなニュースがあったな
788 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 20:03:27 ] >>786 VHSがアダルトビデオのおかげで普及したという神話もあながち…
789 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 20:45:33 ] >>788 それはうわさじゃなくて事実
790 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 01:00:34 ] 糞とか古いとか言ってた奴の言語を見たいよ。 概要で良いからどれだけ素晴らしい言語を実用レベルにしてるか見て欲しいよ。 こういう事言っても誰もやってくれないんだよな。 口先だけだと思われたくなければやってよ。
791 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 01:10:16 ] なんで自分の力量を証明するためだけに言語を作らないといかんのだ。
792 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 01:14:50 ] 実際に出来るのは理論だけか、 コンパイルスピードの遅い実用的にならない物だけだろ? コンパイルスピードを極限まで早くするためにmakeを内蔵し アセンブラを豊富に使っているプロと比べものになるわけ無いよ。 しかも言語仕様が柔軟でエロゲだけではなく 携帯電話のゲームのコンパイラにもなるんだぜ。 そんなのここのスレの住人の一握りしか出来ないよ。
793 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 01:16:54 ] >>791 今まで作ってきた言語の仕様の一部を晒せば良いんじゃないか? じゃないと糞とか古いとか言っても説得力がない。
794 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 01:19:19 ] 素人はコンパイラジェネレータを使えばok。 コンパイルスピードは目をつぶる。
795 名前:790 mailto:sage [2009/11/09(月) 01:21:53 ] >>791 今までに作った素晴らしい言語の仕様を教えてくれればいいよ。
796 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 01:24:20 ] kimoi
797 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 01:30:13 ] そんな物、作れるのはほんの一握り。 皮肉だと思うが、スレに期待しすぎ。
798 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 01:39:51 ] て言うか何言ってもいちゃもんつけるんだろうなあ… 不毛だこと
799 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 02:00:39 ] さすがにもうゲームの制御ならインタプリタで十分だろうに 未だにコンパイルスピードとか言ってる人もいるんだな
800 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 02:05:43 ] よそから飛んできたんでひょっとしたら799は空気が読めてなかったかもしれない
801 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 02:45:02 ] いや普通の意見 ゲームがらみだからボルテージ上がってる子供がいるだけ
802 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 06:15:43 ] neccdとsmartdrvとatokと入れて この人のコンベンショナルメモリのツール等を使って639kb空けたよなぁ。 この人は何やるにしても究極を求めちゃうんだろうな。
803 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 07:25:48 ] DOS全盛の頃はX68000使ってたからさっぱり判らん
804 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 08:34:12 ] ゲームがらみはゲ製板のスクリプトスレでやれや pc11.2ch.net/test/read.cgi/gamedev/1005114698/l50 pc11.2ch.net/test/read.cgi/gamedev/1012824335/l50
805 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 08:50:42 ] といっても、閑古鳥が鳴いてたスレだからな、ここ。 この話題無くなったらまたシーンとするだけだし、積極的に他へ追いやることもないよ。 誰も居なくなったこのスレを眺めて「よし、俺の仕事によってスレの純度が保たれた!」と 悦に浸ってもしょうがないし。
806 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 09:12:07 ] ボルテージ上がってる人は、KENJIさんご自身が 「それと吉里吉里などもっと凄い言語が公開されていますので、 ソースコードなどはそちらを参考にした方がよいと思います。」 と、おっしゃっていることは都合良く見落としてないかね?
807 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 09:38:49 ] 謙虚なところもいいね。
808 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 09:43:37 ] >>806 ボルテージって言葉が好きなんだね
809 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 10:52:23 ] とにかく、他に機種へクロス移植しやすいように マクロで構文を作りMAKE内蔵のコンパイラが有るって言うのが分かって、 LISP信者の俺は嬉しい。 OHPの方は本当に素人向けに説明しようとして放置しているみたいだな。
810 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 10:55:40 ] 言語それぞれに特徴がある。 だが、それが良い。 特定言語の信者は何故それが分からん。
811 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 12:11:01 ] Hello, wolrdから先に進まないからじゃまいか?
812 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 12:46:48 ] >>810 べつにそれがわからんから信者なわけじゃないだろう。 何故それが分からん。
813 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:15:19 ] いい暇つぶしになった。 巨大なファイル多数を高速にコンパイル、optasmやTurboCを思い出す。 マクロで構文を作るってスピードの面でずいぶん不自由だと思うが、 ゲームで敵の移動アルゴリズムや、 リンカを作ってexe/comファイルの出力だかを多量に高速で出来るのか。 面白そうだし、是非公開して欲しいね。 構造化pic-basic見たいのを作りたいよ。
814 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:21:34 ] HPの方も知り合いのために作ったって書いてあるもんな。 スキルが低い知り合いだったのだろう。 なぜスクリプトコンパイラとスクリプトエンジンの分割をした方が良いとか、 ラベルの前方参照の解決方法とか、このスレじゃ当たり前のことを丁寧に 解説している。 HPも再開して欲しいな。
815 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:23:29 ] >>813 picじゃ逆ポーランドは荷が重すぎないか?
816 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 15:02:13 ] 有難う御座います。 趣味でPICではないですがAVRのリンカを作っています。 その為に、単純比較式 r0==0 とかを1byteで記する命令を作っています。 しかしPICは変数の割り当てが難しいのでVMを作るのは大変だと思います。
817 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 15:46:19 ] >>786 なんか信者的な意見も飛び出してるしなぁ # さっきまで規制食らってたからニヨニヨしてるしか無かったが
818 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 22:24:56 ] 久々の大物だったからな。 構造文もマクロで記述、MAKE内蔵、ハイスピードコンパイル。 これを実装してるんだから良いネタだよ。 それに古いとか糞とか言う奴と賛美している奴がいて楽しかったよ。 おれは古く見えるが、仕様用途にマッチした実装だと思うよ。 このプログラマが何でも組めるというのは事実だけど天才は言い過ぎかな。
819 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 23:50:22 ] Follow集合の計算がわからん 教えてくれ Directorもついでに教えてくれ お願いします
820 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 00:18:16 ] follow集合とdirector集合かな? ググれば分かり易いサイトが結構あるけど。
821 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 00:22:33 ] くそー、規制で祭りに乗り遅れたよ。 このスレにこんなに活気が溢れたのは久しぶりだ。
822 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 01:58:47 ] 楽しかったよ。98時台を思い出して自分も年をとったって感じたけどw
823 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 06:16:03 ] 実践的言語だと思う。面白いから公開して欲しい。ぜひ、PEのEXEを作りたい。
824 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 07:06:46 ] 公開は無理と言われている。自分で作れ。
825 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 07:22:42 ] そうか、残念。自分で作れないことはないんだけど、 他人のコンパイラがはき出すOBJをEXE(PE)にするのが好きなんだよ。 コンパイラよりリンカを作る方が好きなんだ。何故か分からんけど。
826 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 07:30:48 ] おれもLINKつくるのすきだぜ。とは言ってもcomふぁいるれべるだけどw
827 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 08:38:20 ] >>825 変な嗜好だな リソース含めたりDLLとかは厄介だったりするけど、 それも含めて好きなの?俺はごめんだわ
828 名前:825 mailto:sage [2009/11/10(火) 09:09:23 ] DLLは嫌いだけど、リソースは好き。 そう言えばリソースエディタもC/C++とほぼ同じ性能のマクロが記述できるよね。
829 名前:825 mailto:sage [2009/11/10(火) 10:05:51 ] 言語は一度スクラッチで作ってこつを掴んだら、 また新しい言語を作りたくなるよね。
830 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 11:01:55 ] そうだね、色々な言語仕様を考える。 しかし、ここ最近の言語仕様は実践的だな。
831 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 11:17:35 ] ハイスピードコンパイル、ハイスピード圧縮は純粋に凄いけどな。 たぶん、アルゴリズムとインラインアセンブラの力だろう。 現代のコンパイラでも、ビット演算が得意な言語はまず無いからな。 キャリーフラグが無いのも痛い。アセンブラを使って高速化する適材適所だな。
832 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 13:50:32 ] C言語ですらビット操作、キャリーフラグの多用、マクロ機能は アッセンブラには敵わない。 この人はホットスポットを見つけてインラインアッセンブラ化。 昔では当然のことをやっているだけだ。 KMAKEごときも昔の人ならアッセンブラで作る。tasm,turboc,optasm様々だ。 しかし言語体系は面白いし、色々な分野のプログラムを精力的に組んでいるところは評価できる。 でも一度プログラムを辞めたり信念が感じられない。 自信が無いのだろうか。
833 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 16:25:27 ] ブログの最初は自分はNo1と思っていたが、色々あって今の腰の低さになってる。 当時の98エロゲを知るオレには波瀾万丈で面白い人生だと思ったよ。 本人はそう思ってないだろうがw
834 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 17:56:08 ] ブログ読み終わった。PC98時代のじじいだから面白かったけど プログラムの話はほとんど無かったね。 知っているゲームはCALと殻の中の小鳥。 それとPC98時台にエロゲでシューティングが有るって話を聞いてたから3本か。 UMBCNFGの作者さんでもあるんだね。
835 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 18:50:38 ] | ||⊂⊃⊂⊃|| | || ロロロロロロ || がしゃーん | || ・ ・・・ ・・ || | || ロロロロロロ || | || Coca Θ.|| がしゃーん | ||口口口□|| |ミ||====||  ̄ ̄ ̄ ̄ 自動販売機だよ 自動で販売してくれる凄いやつだよ
836 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 19:45:10 ] >>833 40才にもなるオヤジが今まで エロゲーのプログラムしか作ってないんだから 正直、恥ずかしくて市にたくなるレベル
837 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 19:53:21 ] >>834 社員の悪口と暴露話ばかりで 気分が悪くなった
838 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 20:13:57 ] >>836 逆に勿体ないよ。こんな人物がエロゲー会社に埋もれてるなんて。 結局、トップになったから安定を選んだのか。 所であんたは何の仕事してる? 俺は悪名高きコ○ミでサブとツールを作ってる。コンパイラもね。 >>837 エロゲスレやPC-98のスレを見ていてこのブログの存在は知っていたが、 エロゲスレでは英雄、PC-98スレではスタジオトゥインクルからの脱退までは よくぞ話してくれたと言う雰囲気。 スタジオトゥインクルからの脱退は賛否両論で色恋での脱退説が濃厚だった。 その後の殻の中の小鳥を作って以降は同情だったな。
839 名前:838 mailto:sage [2009/11/10(火) 20:17:54 ] エロゲスレ->エロゲ規制スレ。 外圧で陵辱ゲームを規制したソフ倫の理事が規制を無かったことにして暴走中。
840 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 20:25:59 ] えーと、他所でやってくんない?
841 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 20:33:04 ] >>838 コナミってゲーム作るところじゃないの? ゲーム作らせてくれないの?
842 名前:838 mailto:sage [2009/11/10(火) 20:34:31 ] すまん。他人の悪口しか言わない奴を見ると反論したくなってさ。 コ○ミではスクラッチでコンパイラ作ってたよ。 関わったソフトがほんとーにたまたま売れて社長賞とかいうのももらった。 変な会社だよ。
843 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 20:35:42 ] このスレの数字コテのアホさ加減見ればティンとくるはず。 壊れてんだよ。
844 名前:838 mailto:sage [2009/11/10(火) 20:36:54 ] >>841 ゲームは1人で作る物ではないよ。 たとえば敵のアルゴリズムの為のコンパイラとか。 プログラマは企画者の単なる駒だよ。
845 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 20:37:58 ] >>843 嫉妬は醜いよ。
846 名前:838 mailto:sage [2009/11/10(火) 20:42:17 ] >>843 たしかに壊れてる会社だったよ。 しかし給料は良い。 所であなたは何をしてる人?研究者か何かかな?
847 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 20:42:39 ] 会社に友達いるの?
848 名前:838 mailto:sage [2009/11/10(火) 20:46:57 ] もちろん。飲みに行くと会社の悪口やエロゲやアニメの話ばかり。 でも、見た目はスタイリッシュな奴が多いよ。 前の会社のア○ラスでは、オタクっぽい恰好の奴が多かった。
849 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 20:57:21 ] アトラス?のどこが嫌だったん? コナミ?にしたのは何で?
850 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 20:58:53 ] >>836 エロゲと言うだけで一等下に見られるのか。 作ったプログラムで見るべきじゃないのかな。 ここではコンパイラの出来で見ないと自分の品が落ちるぞ。 >>837 悪口なんて書いてないじゃん。どこが悪口?
851 名前:838 mailto:sage [2009/11/10(火) 21:00:33 ] >>849 ヘッドハンティング。給料UP。これ以上言うと身バレするから勘弁。
852 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 21:01:21 ] 悪口は何時も単発だなw
853 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 21:05:10 ] ア(クアプ)ラスかもしれないだろ
854 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 21:08:27 ] >>851 いやもう見る人が見れば特定できると思うけど。 ゲロしちゃいなよ。
855 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 21:10:50 ] 本当は羨ましいんだよ。 98時代はメモリツールで有名で、 思想は古いがコードを組む能力は凄く秀でている。 しかもポルシェ乗り回して2つの会社経営者。 そしてなんと言ってもメイドブームの始祖の殻の中の小鳥のプロデューサー兼プログラマ。 今もここやエロゲ規制スレでは名が通っている。 俺も何か後世に残せる物を作りたかったが、無理だった。 今はケツに火が付いたコンシューマゲーム屋の管理職。 コンパイラのプログラムを日曜にちまちま組むぐらいだ。(土曜も出社)
856 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 21:20:21 ] メイドブームってファミレスが元じゃなかったっけ かなりスレ違いだがw
857 名前:KENJI mailto:sage [2009/11/10(火) 21:22:07 ] もうそろそろプログラムとは関係ない話は辞めて欲しいです。 せっかくの良スレが台無しです。 コンパイラを組める方々が集まってきているスレですので、 自分よりもっと凄い方も多いと思います。 そんな中でスレタイにそった話しは自分が引き合いに出されても しょうがないですが、スレ違いの話は少なくとも自分については あまりしないでいただけると嬉しいです。 かな入力からローマ字入力に切り替えたばかりなので時間がかかるかも しれませんが、自分個人的なことはブログで質問なり罵倒なり していただけると嬉しいです。
858 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 21:24:28 ] >>856 殻の中の小鳥がメイドブームの始祖。 メイド喫茶は殻の中の小鳥の影響を受けたPiaキャロが始祖。
859 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 21:25:09 ] >>857 本人?
860 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 21:30:52 ] 本人かどうかはともかく、ゲームの話はよそでやろうぜ せめて雑談スレとか
861 名前:838 mailto:sage [2009/11/10(火) 21:44:31 ] >>857 (KENJI氏) 1つだけ聞かせて下さい。 なぜ、エロゲー会社にこだわったのですか?
862 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 21:45:38 ] メイドブームは知らないが これまでのメイド萌えを牽引してきたのは雪さんだよ!
863 名前:KENJI mailto:sage [2009/11/10(火) 22:10:10 ] 中学生の頃、ログインなどでゲームソフトが 掲載されて10万とか貰えて嬉しかったのです。 その延長で高校時代にアルバイト紙を見ていたら エロゲー会社の求人が合ったので飛び込んでみました。 しかし、本当はエロゲー制作は学生時代だけにして、 ロボット関連の仕事に就きたかったのです。 でも作っていくうちにユーザーの反応がアンケートハガキやネットで ダイレクトに返ってくるエロゲーのプログラムも面白いと思い、 最終的には成り行きで会社を作ることになってしまいました。 会社の資金を獲得するために、 本当に様々な言語で様々なプログラムを組みましたが、 一番楽しいのはユーザーとの距離が近いエロゲーと言うことを 再確認させられ、未だに会社をやっています。 あと、単純にエロいシチュエーションなどを 考えるのが好きというのもあります。 最後に、スレタイにそった話題として、 エロゲなどの演出では大量にラベルが発生します。 その上、自分のVMはwindows apiのラッパーみたいな物で、 メッセージ1行表示するには20個のlocal label、 簡易版のcgの表示では100個ものlocal labelが生成されます。 ですのでラベル解決には高速なアルゴリズムと高速なプログラムが必用です。 ですので、トライ木をインラインアセンブラで組んでいます。 VMの実装方法はエロゲー会社、各社色々見たいですね。 コンパイラも最初の1文字が#だとcg表示とか、様々なようです。
864 名前:383 mailto:sage [2009/11/10(火) 22:26:13 ] >>863 ご回答、有難う御座います。 好きでやっているんですね。 一番の理由ですね。
865 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 23:37:54 ] >>855 >>863 吐気がする
866 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 00:41:09 ] >>865 何故か一言で罵倒する人が数人いるが、理由は何だ?
867 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 00:45:45 ] 有名税だよ。いちいちきにするな
868 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 00:57:55 ] はいはい、ブログでやりましょうねー
869 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 01:07:31 ] KENJI氏より凄い言語&実装をしているが、会社所属なので表に出せない鬱憤…かもしれない。 しかし、品のない言葉は発言者自身の品格を下げるから、我慢しなよ。
870 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 01:46:12 ] コ○ミの知的財産戦略 ja.wikipedia.org/wiki/%E3%82%B3%E3%83%8A%E3%83%9F#.E3.82.B3.E3.83.8A.E3.83.9F.E3.81.AE.E7.9F.A5.E7.9A.84.E8.B2.A1.E7.94.A3.E6.88.A6.E7.95.A5 こういう会社だから?
871 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 02:46:35 ] 自演くさいレスが異様に続いて 最近変な雰囲気になっていると思ってたら やっぱり本人が来てたな。
872 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 03:56:40 ] はいはい、自作自演自作自演ね、こんな所でしてどうするw エロゲ板のシステムを考えるスレから信者が来たんだと思う ブログも賛美の嵐。 反ソフ倫のよりどころだからな。
873 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 04:12:55 ] 自作自演するならエロゲーネギ板でやるでしょ。 12月に出る、ソフトをより過激に変更してる最中なんだからこんな所で油売ってる暇なんてないでしょ。 まったくもうw
874 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 04:19:53 ] 本人も戸惑ってるみたいだし、忙しい人だからここら辺にしておかないか?
875 名前:838 mailto:sage [2009/11/11(水) 06:05:05 ] おはよう〜。 >>854 そういうの、あんまり気にしない社風。同僚が読んでいたらばれてるだろうな。 飲みの時に自分から話しちゃうから気にしないけど。 以前知り合いがスクエニ辞めてパチンコ/パチスロの下請け会社を作ったんだけ ど、 前は超羽振りが良かったのが少し羽振りが良い程度に落ち着いたから、 パチンコ/パチスロ業界も下火になっていくだろう。 羽振りが良いままなら入れてもらおうかと思ったけど。 >>870 そう言う会社。早く辞めたいけど給料が良い。 シャワーを浴びて会社に行く前にスレでも巡回するか。 自宅だと早起きさせられるのと結婚結婚うるさいのがガンw プログラマ40才限界説って中田先生見てると嘘だなーって思う。 老後のため、まだまだ頑張らねば。
876 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 07:30:04 ] >>862 殻の中の小鳥は10年前はコミケでも コスプレ多数でジャンルとしても確立してたんだよ。 それはもう凄い人気だった。 あいにくブログやスレを読むまで、ヤマトで例えると KENJI氏=西崎、栄夢氏と新井氏=松本レイジって 関係だったとは知らなかったよ。
877 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 09:05:59 ] なんか IGDA の勉強会で顔を見てそうだなw
878 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 09:32:13 ] もうそろそろ勘弁してもらえませんか?
879 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 10:07:43 ] ソフ倫関係者に相当恨まれているらしい。 _ コンパイラスレ住人 ― 2009/11/11 04:41 自作自演、乙。 _ KENJI ― 2009/11/11 09:41 そう取られてもしょうがない流れでした。 迷惑をかけましてすみません。 _ (未記入) ― 2009/11/11 09:54 ソフ倫の裏切り者。
880 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 10:18:40 ] 巣に帰ってください お願いします 興味ないです
881 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 10:24:48 ] >>875 中田先生は凄いですね。 第2版も面白そうなので買います。 内容も今までの集大成と最新技術を合わせたような感じで、期待が高まる。 念のため本屋で立ち読みして、 JBOOK(ポイントが付く)でクレカで買えばクレカポイントも付くしね。 >>879 有名税でしょうね。しかし謙虚で真摯な方だ。 ブログを読んでもメンヘルっぽさは出しているが、他人の悪口なんて言ってない。 やはりソフ倫という機構の方がこのスレに紛れ込んで人格攻撃に出てるんだな。
882 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 10:35:25 ] 言語の大体の仕様と実装方法が解ったから、 この一連の書き込みはもう打ち止めで良いだろう。 相手も迷惑を被っているみたいだし。 しかしそうなるとシーンとなって寂しいか感じがw
883 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 12:39:40 ] 大量の巨大ファイルをコンパイルするのに、 あえてマクロで構文を実装、汎用化も高める。 そしてスピードを補うためにmake内蔵、 ホットスポットのインラインアセンブラ化、 大量のラベル解決のためにトライ木をインラインアセンブラで書く。 チト古くさいが理想と実装を両立した言い言語だったな。 13年も使って、まだ色あせないか。 まとめるとこんな感じかな。これでこのお話はお終い。 HPの方で2部を再開してくれたりソースコードを公開してくれたりしたら テンプレ入りしてもいいわだいだったが、本人にその気がないからお終い。
884 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 12:47:41 ] ( ゚д゚)ポカーン
885 名前:デフォルトの名無しさん [2009/11/11(水) 12:56:33 ] 次の話題は中田先生の本だな。
886 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 13:15:38 ] LLVMのcompiler-rt/BlocksRuntimeのコードを読んでみた。 かなり汎用性が高そうだから、 マルチスレッドの効率を重視した設計の言語(ex. Erlang)実装で、 BlocksとGrand Central Dispatchが流行るかもしれない。 developer.apple.com/mac/articles/cocoa/introblocksgcd.html
887 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 14:16:07 ] GCDがLinuxでも実装されたら来るかも? FreeBSDは始まってるわけだが。
888 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 15:17:40 ] ぶり返して悪いんだけど、K氏の言語ってLL、それともLR?
889 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 17:19:40 ] 電卓を手書きでつ作りました。次に作るのは何がお薦めでしょうか。
890 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 18:33:48 ] (1)パーサジェネレータを使ってみる。 (2)電卓みたいにその場で計算してしまうんではなくて、構文木を作る。 とか。
891 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 19:05:19 ] >>889 UNIXのbcみたいなプチプログラムの書ける電卓
892 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 19:41:56 ] >>890 サンキュウ。 RPNでやってたから機械的にコンバート出来てたから(2)をやってみるよ。 >(2)電卓みたいにその場で計算してしまうんではなくて、構文木を作る。 おまけに面白い記事。 67歳の美少女ゲームメーカー社長に話を聞いた ascii.jp/elem/000/000/418/418376/index-2.html 67才でエロゲー会社社長って凄いね〜。 職業に貴賎は無いんだな。
893 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 20:34:17 ] >>892 機械的にっていうとstackかな? 構文木でやってみるのも違いが分かって良いと思うよ。 ……67才でエロゲー会社社長か。好々爺って感じでほのぼのするねw 確かに職業に貴賊はないね。 次はコンパイラ界の好々爺、中田先生の2版の話をしよう。
894 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 22:55:20 ] いいかげんにエロゲだけの話は勘弁してくれ。 どうせならスクリプトのドメイン特有のノウハウをもっと話題にしてくれ。 実装はあんまり興味無いから構文とかの話の方がいいな。
895 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 23:18:23 ] ついでのダベリ話しもダメか。 その上、実装の話は嫌とかどんな我が儘。 ゆとりか? エロゲはともかく実装の話はスレチじゃないだろう。 スレは君の物じゃ無いんだよ。
896 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 23:33:36 ] Erlangを凌駕した超並列言語を実装したいのですが どうすればいいの?
897 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 23:45:08 ] >895 流れで少しだけならわかるけどさすがに脱線しすぎだろ。 実装の話でもいいけど、ドメイン特有のチューニングの話されてもあんまり面白くないからなあ。 それだったら一般的な最適化の話とか>1とかの話の方が良いわけで。 >896 オブジェクトがそれぞれプロセス/スレッドを持つようにしたらどう? 効率悪そうだけど。
898 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 00:12:01 ] >>896 上に出てるgoとlibdispatchを参考にして考えたら?
899 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 00:23:59 ] >>896 FPGA上で極小CPU同士が通信するとか。
900 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 00:56:10 ] 凌駕 超並列言語 実装 漠然としすぎているから、定義から始めますか
901 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 06:41:57 ] まず、普通の並列と、超並列はどこが違うか?
902 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 07:02:40 ] 超並列マシンを想定した言語ってところですか
903 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 09:12:57 ] FGPAにZ80を入れるプロジェクトって、結構あったね。 現代最大のFPGAにはZ80が何個入るんだろう。 LSI-CやASM80でスレッド間通信すれば、 超並列処理の実行形を自分で作ることも可能だね。 _ KENJI ― 2009/11/12 05:22 ふう、コンパイラスレの方も一段落したみたいです。 もし、私の弁護のために書き込まれた方がいらっしゃたのでしたら ああいう方法は逆効果です。何もせずそっとしておいていただけると嬉しいです
904 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 09:39:28 ] >FGPAにZ80を入れるプロジェクトって、結構あったね。 >現代最大のFPGAにはZ80が何個入るんだろう。 すべてのインストラクションを使うつもりなら 丸ごとCPU入れるのも有りだが 使ってない機能が大半ならスペースがもったいないだけ 自作CPUなり必要な機能部分だけでマルチにする方が効率いいよ
905 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 10:08:14 ] 可哀想だしスレチだからもう辞めてやってくれ。
906 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 10:49:42 ] ランビーか次世代のGPUかだな。
907 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 12:07:23 ] ソフ倫様に楯突くとどこまでも追っていくよ。警告だよ。 KENJI、お前のせいでみんなが迷惑するんだよw
908 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 13:07:45 ] うむ。 もしかして、ワンチップ LINKS-2 とか可能かなw
909 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 18:46:21 ] >>907 何の事情か知らないが、とてつもなくキモイ。消えろ。
910 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 19:14:40 ] >>904 マイクロPlanやSweet16みたいなVMのプロセッサとか昔よくあったスタックマシン系の小さいメモリを効率よく回すタイプのCPUを山のように搭載するのもありなのか?
911 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 19:19:22 ] 少し昔、INTERFACE紙でFPGAを使ったCPUコンテストをやってたな。 最新のFPGAを使えばJAVAVMを乗せたり、CISCを少量乗せたり、 単純なRISCを乗せたり出来そうだね。もちろんインオーダーで。 そうすれば、コンパイラも色々な可能性が出てくるね。
912 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 19:24:08 ] >>910 ありじゃない。x86系はenter/leaveを実装してるけど、 遅いんで実装時には使われていないけど 本来、関数型言語やoopはstackをよく使い相性が良いよね。 >>911 誤)単純なRISCを乗せたり 正)単純なRISCを多量に乗せたり
913 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 19:28:27 ] >>912 ありならOCCAM系で一つ遊んでみたいぜ
914 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 19:54:10 ] >>913 X: ありならOCCAM系で一つ遊んでみたいぜ O: ありならTransputer系で一つ遊んでみたいぜ
915 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 19:56:40 ] >>914 一応スレタイくらい汲んでほしいって配慮じゃないの?
916 名前:911 mailto:sage [2009/11/13(金) 01:10:53 ] Intelの80コアの並列プロセッサ、ランビー、次世代GPUで、 コンパイラの歴史が変わるのは決まってるね。 言語もメニイコア用の言語が出来るんだろうね。楽しみだ。 ソフ倫って奴らは本当にクズ揃いだな。
917 名前:911 mailto:sage [2009/11/13(金) 08:29:06 ] メニイコア用の言語が標準化すれば、スレッド単位の融通性が凄く効く言語になるだろうな。 実行モジュールのループをVMが管理して、走らせているスレッド単位に割り当てるとか。 実装は困難を極めそうだな。 メニーコア用のコンパイラの論文って日本語である? qiufen.bbspink.com/test/read.cgi/hgame/1258009910/137- 漢だ。
918 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 11:33:42 ] いいかげんにしろ
919 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 13:08:53 ] あんまり目くじらを立てるのもどうかと…。 GPUのメニイコア用言語って、 ●Cg(C for graphics) ●HLSL(High Level Shader Language) ●GLSL(OpenGL Shading Language) とかがあるけど汎用性が無いし、 ループの展開を自動割り当てなんてVM、聞いたことがない。 面白い発想だと思うけど。
920 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 13:12:51 ] >>919 GPUはmany coreっていう範疇とは少し違う気がする 演算素子がたくさんあるんだけど、フローの数が少ないと思うの
921 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 22:37:14 ] CUDAに来年JVM搭載されるよ
922 名前:911 mailto:sage [2009/11/14(土) 14:28:28 ] レンホウのせいで世界一の日本のスパコン界も壊滅。
923 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:42:34 ] 世界一だったこともある、だろw 地球シミュレータよりあとは、頂点も裾野もズタボロじゃねーか。
924 名前:911 mailto:sage [2009/11/14(土) 16:40:56 ] イヤ、報道ではそう言ってたんだよ。地球シミュレーター以降、 AMDのクラスタにさえ負けてる。
925 名前:911 mailto:sage [2009/11/14(土) 16:43:04 ] 正確に言うと、 レンホウのせいで世界最高峰レベルの日本のスパコン界も壊滅。 しかしAMDのクラスタにすら負けている状態なので当然か。
926 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 17:53:14 ] 世界スパコン選手権脱落宣言ということか。
927 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 20:21:56 ] 俺はまだよく分かってないが、12年度完成の日本のスーパーコンピュータが 世界最速になる予定だった。 だけどアメリカがそれを上回る速度のものを先にだす予定を組み 日本はアメリカの次になり国別で2位。 でも世界最高峰レベル。 民主党はそれを中止させたという話ではないの?
928 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:15:30 ] 〜〜2006年 アメリカ IBM Blue Gene/L 500TFLOPS 文科省「京速コンピュータつくろうぜ」 民間「おう、世界一目指そうぜ!」 文科省「2千億かかるから民間も半分出せよ」 民間「まあ、しかたねーな」 〜〜2008年 アメリカ IBM Roadrunner 1PFLOPS 〜〜今年5月 NEC「去年3千億の赤字、今年はトントンの予定で 追加の100億が出せそうにない。スマンナ」 (富士通のプロセッサ採用するなら、残ってる意味ないし…) 日立「NECがやめるならうちも降りる」 理研・富士通「白紙から設計し直さなきゃうわああ…」 〜〜今年7月 アメリカ 1EFLOPS級スパコンの研究開始 〜〜今年10月 中国 天河1号完成(理論値1.2PFLOPSに対して、実測値563TFLOPSのお粗末さ) 〜〜今年11月 民主党「gdgdすぎるからもうやめれ」 ←いまこのへん
929 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 02:19:05 ] ν速民はその話で散々ファビョってたな 専門家でもないのに、よく「これで日本のIT技術は終わり」なんて自信満々に言えるよ
930 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 02:25:27 ] 理研って有名なワカメスープ作ってるとこだよね
931 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 02:31:33 ] 科学の発展にスパコンが必要なのは明らかだけど地球シミュレータの利用料高すぎ。 まあ科学予算でスパコンつくってる国が、国防予算でやってる国に張り合えるはずがないんだけどね
932 名前:911 mailto:sage [2009/11/16(月) 08:46:41 ] >>928 ここまでぐだぐだなら、国と大学メンツはおいといて、一度クールダウンする必用があるな。 それだけ金をつぎ込んでNo1に成れないのであれば、メンツも糞もない。 スカラー型とベクトル型でベクトル型に固執する日本。 ピークスピードはベクトル型がまさるがスカラー型の方が平均性能が上。しかも今はピーク時も上。 所詮、莫大な軍事予算を投入するアメリカにはいつまで経っても追いつけない。 アメリカはベクター型と専用機又はスカラー型の組み合わせも考えている
933 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 08:48:28 ] ハードウェア板にスレあるからそっちでやってね。
934 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 08:51:55 ] どうみても老害教授のメンツだよなぁ
935 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 13:33:04 ] アメリカはスピード至上主義でアセンブラでカリカリやるしかなくて それでやっと最高性能だけどけど、 日本はC,Fortranで開発できて使いやすい高性能という方向を 目指しているってことじゃないの?
936 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 15:00:47 ] スカラ型じゃ料金高いスパコンなんて誰も使ってくれないよ。 京速はスカラ・ベクトル型だったからこそ意義があった。
937 名前:911 mailto:sage [2009/11/16(月) 16:31:58 ] >>953 逆じゃね? スカラー型の方がコンパイラを作り最適化するの大変だぞ。 それより難易度の高い遅延分岐命令のコンパイラも ゲーム業界ではいっぱい作られてるから問題ないかもしれないが。
938 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:08:06 ] この数字コテは何の意味があるんだ
939 名前:911 mailto:sage [2009/11/17(火) 03:18:11 ] >>938 うん。同一人物の発言と解って貰いたいから。 2chのシステム上で可能で、違法じゃないことをやって何か悪いことでも?
940 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 05:01:22 ] KYだなと思っただけ
941 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 06:12:03 ] どうぞ数字コテは続けてください
942 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 06:15:24 ] どうせならNGしやすいようにトリップでもつけてくれよ
943 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 07:36:23 ] >>940-942 911氏の発言はクレイバーで問題ないと思うが。 ソフ倫関係の話もついでだし、当時PC98でLSI-Cやエロゲをやっていた者には興味深い。
944 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 07:43:34 ] 941≠942だよ だから数字コテは続けてくださいと言っておろうが
945 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 07:58:57 ] >>941 &>>942 すまん。 911氏も読みたくない奴はNGして欲しいから敢えてやってると思う。 自分も911氏と同じようにベクター型よりスカラー型の方がコンパイラを作りにくいと思う。 manycoreの実行モジュールのループをVMが管理して、走らせているスレッド単位に割り当てるとかスカラー型に有利な発想もしている。
946 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 08:19:59 ] で、トリップ付けろって話は? 911じゃ他のスレでも引っかかるから迷惑だ。 暇そうだしコテハンも付けて有名になれよ。 自意識過剰さんにはぴったりだ。
947 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 08:43:09 ] >>939 喫煙は違法じゃないがどこで吸っても良い訳じゃないだろ?
948 名前:911 mailto:sage [2009/11/17(火) 11:38:07 ] >>946 有名になる気はないし、自意識過剰でもないよ。 コテハン付けるだけで何でそんなことを推測できるか教えて欲しい。 NG設定にするか読み飛ばすかのどちらかにすれば良いんじゃない? >>947 禁止されている場所では吸えませんよね。 しかしここでは禁止されてますか? せめてTPOをわきまえろとでも言って欲しかった。
949 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 12:04:26 ] トリップの意味判ってないのかおい トリップ付けたらそれでNG設定できるの ただの数字コテではNG設定に困るの これで通じますか?
950 名前:911 mailto:sage [2009/11/17(火) 12:09:22 ] 解ってますよ。では何でコテハンと読み飛ばしではダメだか、言ってみてください。 禁止はされていませんよね? 禁止されれば辞めますよ。 スレ違いで周りに迷惑をかけますので、あまり長引かせないでくださいね。
951 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 12:16:50 ] 禁止されてなけりゃ何でもやる人なのか
952 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 12:21:43 ] 放置すべき状態だな
953 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 12:22:33 ] 殺人が禁止されてなかったら隣人を刺す人かしら
954 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 12:30:41 ] あいつを殺したくて殺したくてしょうがないんだが、法律で禁止されてるから我慢している。
955 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 12:30:51 ] 周りの奴らの方がスレを荒らしてるように見えるよ! 他人の言論を封じ込め、色々なレッテルを貼り見苦しいよ。 >>952 放置して、スレタイに準じたことを話してよ。 >>953 スレを無駄に使うことは禁止されていないけど、殺人が禁止されてなかったら隣人を刺す人?
956 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 12:32:23 ] お前の行動が禁止されてるかどうかだけにかかってるからちゃかされるんだよw
957 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 12:37:02 ] つまり数字コテは荒らしを呼び込むからご遠慮願いますということだな
958 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 12:38:01 ] 次スレでも「911」なのかな
959 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 12:39:46 ] >>955 いい加減自演すんなよ おめーのカキコは丸判りなんだよ
960 名前:911 mailto:sage [2009/11/17(火) 12:45:32 ] >>935 >>937 例えるなら、PS3とXBOXで、XBOXの方が(DirectXと言うのもあるが)作りやすく平均的なスピードを出せるが、 CELLのPS3はカリカリにチューンすれば高速だけど、プログラムを組むのが難しい。 >>957 一番説得力がある。
961 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 12:46:18 ] >>958 変なのが常駐してるから次スレはリサイクルでどうだ 次スレ候補 新C言語を作ろう pc12.2ch.net/test/read.cgi/tech/1185010023/
962 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 12:57:17 ] 数字コテの活動 KENJI氏blog無断コピペ ↓ 自称コ○ミ社員 ↓ エロゲ雑談 ↓ 911 最後はテロリズムか。 次スレは911禁止で立てるわ。
963 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 13:00:09 ] なにこのスレの延び方。 …数字コテハンをみんなでいじくってるのか。 スレが無駄だから辞めてくんない?
964 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 13:21:40 ] 数字コテハンが黙れば良いと思うよ
965 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 13:30:33 ] …ったく。好きにすれば。 俺も乗せられてスレを無駄図解したぜ。
966 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 13:39:43 ] 次スレ 「コンパイラ・スクリプトエンジン」相談室14 pc12.2ch.net/test/read.cgi/tech/1258431145/
967 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 13:51:04 ] ……オイオイ、いくら何でも911氏の禁止は無しだろう。 まわりが遊んでただけじゃん。 新スレの削除依頼だしといたわ。
968 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 13:55:52 ] 911氏(笑
969 名前:911 mailto:sage [2009/11/17(火) 13:56:30 ] 良いですよ。 禁止されたのであれば従い、コテ無しに戻るだけですから。
970 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 14:01:02 ] >>969 そうか。俺にはおまいさんに不備が有ったとは感じなかったけどな。 あえて言えば、トリップ付けてればこんな事にならなかっら次からそうしてくれ。
971 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 14:14:39 ] >>969 見えない敵と戦ってただけだよ。スレ全体の意志じゃ無いんだから、 スルーすれば良かったのにバカだな。 こんな時間から2chに張り付き、コンパイラを作るなんて、 バカと天才は紙一重って事だよ。
972 名前:911 mailto:sage [2009/11/17(火) 15:04:44 ] GPUコンピューティングが本格的になってきたね。 NVIDIAはFermi系で、内部のマルチスレッディングやメモリの構造を、 より汎用アプリケーションに最適な形で再編したことになる ttp://pc.watch.impress.co.jp/docs/column/kaigai/20091105_326442.html ttp://pc.watch.impress.co.jp/docs/news/20091116_329409.html >>970 &>>971 気をつけるよ。
973 名前:911 mailto:sage [2009/11/17(火) 15:13:16 ] ついでにNECのスパコン IntelとNEC、スパコン技術の共同開発に合意 NECがベクトル型スパコンの開発で培った経験と、Xeonプロセッサーの性能や機能、 Xeonに搭載される計画のベクトル演算向け拡張命令群「Advanced Vector eXtentions(AVX)」を組み合わせていく。 これにより、Intel Architectureに基づいたスパコンでより高い実効性能を提供する。 ttp://pc.watch.impress.co.jp/docs/news/20091117_329468.html
974 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 15:24:56 ] >>972 ,973 そういうのはこっちへ行けばいいと思うんだ 【スパコン】スーパーコンピュータ関連情報3【HPC】 pc11.2ch.net/test/read.cgi/hard/1255529941/
975 名前:911 mailto:sage [2009/11/17(火) 15:42:55 ] >>974 サンキュウ。 超並列CPUでのコンパイラの話題の一環のつもりで書いた。 並列度が上がれば上がるほど、有効利用の方法が難しくなるね。 チップ密度が高くなりシングルスレッドだと、勿体ないし、 CPUの一部だけが使われてピンポイント発熱の問題も出てくる。 並列度を有効利用するにはOSとコンパイラのサポートが必用になってくるね。 発熱の問題はセンサーで感知し、OS側でCPUの代替コア操作が必用になってくるね。 超並列コンピューティングが中小企業や家庭レベルまで来るのはもう少しだけど、 OSとコンパイラのサポートは当分先になりそう。 それまでは、企業で複数のOSを同時に走らせ、 物理的なコンピューターの数を削減するくらいしか役に立たなさそう。 こんな事はここにいる人ならすぐ思いつく話だと思うけど。
976 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 15:42:57 ] もうある意味テロと救急車にかけたコテ
977 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 15:58:22 ] 俺には君の方が無駄だと思えるんだ。 >>975 動的に、たとえばあなたが言っていたloopの並列化をすればするほど バス・アービトレーションにより無駄が多くなり、リニアに性能は上がらないね。 特に細かく並列化をすればするほど無駄が多くなるね。 データベースやgoogle等のマルチユーザーアプリケーションや 社内クラウドコンピューティングには有利だね。 すべてをクラウド化する事には災害時やサービス会社の倒産時の面から反対だけど。
978 名前:303 ◆pFphp4Ej4w mailto:sage [2009/11/17(火) 16:34:24 ] >>961 若干怒りますよ。 変人を連れこまないで頂きたい。
979 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 18:49:07 ] >>978 おまえみたいな変人が居るスレは俺等もごめんだ
980 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 19:18:58 ] >>978 こらこら。勝手に変な番号名乗るんじゃない。 このスレの303はお前じゃなくてオレだ。
981 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 19:52:21 ] >>980 偽物乙
982 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 19:56:32 ] なんで911はそんなに嫌われっ子なの? 3行でよろしく。
983 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 19:57:32 ] 自己顕示欲の塊でスレ違いの話題を延々と繰り返すから 三行もいらなかった
984 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 19:59:29 ] って言うか、みんな性格悪くね〜?
985 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 20:09:42 ] プログラマは大抵自己顕示欲が強く他人を排斥するもの。 しかもOSやスクラッチでコンパイラを作っている奴らは自分以外のコードを入れたく無かったりして偏屈。 どうしてわかるかって? 俺がそうだから。
986 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 20:26:39 ] そうゆうのは、ろくでもないプログラムしか作れない奴だけだろ。 色々な人が関わってるコンパイラ、OSはいくらでもある。
987 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 20:53:33 ] >>980-981 その「新C言語をつくろう」のスレを参照してみ。
988 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 20:54:48 ] >>980 だけだたorz
989 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 23:25:16 ] 電々板に次スレ立てたのは誰やねん!
990 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 00:10:10 ] >>986 OSをつくろうのひげぽん氏やRUBYのまつもとゆきひろ氏、吉里吉里のW.Dee氏 はどうなの?
991 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 01:03:36 ] リソースとみなすか、自分で作り上げる世界の対象とみなすかは人それぞれ。
992 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 04:01:36 ] 流れが速くてビックリした。しかし911を除外するのは行きすぎだと思う。 一部の独善的な人達が行動に出ただけだと信じたい。 >>986 偏見の固まりですね。事例を挙げて理論的に反論すべき。でないのなら己の品のなさを自ら公言していると言えよう。 コンピュータの黎明期にも、そして今にもそう言った手法を使い、結果を出している方がごまんと居ます。
993 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 04:16:56 ] >>987 そのスレの303氏の発言を見たが実装のことなど考えていないし 既存のプログラマが積極的に移行する価値がない(混乱する)ように思える。 C99、又はD言語からGCを取り去った言語だ。 未だに現場ではC言語が生き残り、 実用的な言語になるのに、多少泥臭くとも巨大なソースを高速にコンパイル出来ることが必用なのに、 実装に精通していない。 例え完成したとしても使い物にならない可能性が高いと私は思う。 私見なのでいくらでも反論をどうぞ。
994 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 05:29:35 ] なんでこのスレは自らの無知をごまかすような1行罵倒レスと 価値ある情報の2つに分類されてるんだ? あと実装を考えない理想論も多いか。
995 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 05:35:51 ] >>994 プログラマーだから
996 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 05:46:22 ] >>994 ごく一部の実践的コンパイラを作った奴と大多数のバカの集まりだから。 しかも大多数のバカが実権を握ってるという矛盾。 だれも自分の言語を公開しない。仕様すら公開しない。 もし、まぐれでオリジナル言語が出来たとしても、 本に載ってたサンプルを改悪した取っつきにくい文法、 実装も>>993 の言うとおり 巨大なソースを高速にコンパイル出来ることが出来ない物しか作れない。 だからここから有名になった人は皆無かほんの一部のみ。
997 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 05:53:21 ] >出来ることが出来ない まあ落ちつけ
998 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 06:32:40 ] ウンコを撒く奴も困りものだが 価値ある情報うんぬんをあんまり強調しすぎるのもクレクレと変わらん 受動的な割にスレの状態を気にする男の方って
999 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 06:40:42 ] >>994 今このスレは酷い自演家とそれに付き合える暇人が集ってるだけだ。 恐らく価値ある情報と思ってるのも君だけじゃないかと。 意図の汲めないスレ違い長文カキコを延々とやられたら居なくなる。 早めにトリップ付けるべきだったね。
1000 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 06:50:15 ] とりあえず911は病院行け
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。