「コンパイラ・スクリプトエンジン」相談室14
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2009/11/17(火) 13:12:25・前スレの911自身の書き込み、またそれに関連した書き込みを禁止致します。
(スレが荒れる原因となります)
プログラミング言語処理系の開発に興味のある人達のスレッドです。
字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換,
CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン,
SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化,
JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。
意味論に関する話題も歓迎です。
過去スレ
1 http://pc.2ch.net/tech/kako/981/981672957.html
2 http://pc2.2ch.net/test/read.cgi/tech/1021136715/
3 http://pc5.2ch.net/test/read.cgi/tech/1070089173/
4 http://pc5.2ch.net/test/read.cgi/tech/1100097050/
5 http://pc8.2ch.net/test/read.cgi/tech/1106129164/
6 http://pc8.2ch.net/test/read.cgi/tech/1115335709/
7 http://pc8.2ch.net/test/read.cgi/tech/1129287390/
8 http://pc8.2ch.net/test/read.cgi/tech/1131273918/
9 http://pc8.2ch.net/test/read.cgi/tech/1135082582/
10 http://pc8.2ch.net/test/read.cgi/tech/1146844753/
11 http://pc11.2ch.net/test/read.cgi/tech/1160879890/
12 http://pc11.2ch.net/test/read.cgi/tech/1188688416/
前スレ 13 http://pc12.2ch.net/test/read.cgi/tech/1233143342/
関連リンクは多分 >>2-10 あたり
0002デフォルトの名無しさん
2009/11/17(火) 13:13:56http://www6.atwiki.jp/compilerandscriptengine/
★コンパイラ一般
・色々なツールの紹介
http://catalog.compilertools.net/
・コンパイラ関連のリンク集
http://www.ulis.ac.jp/~nakai/rel_web_compilers.shtml
・スクリプティング言語資料室(仮) (リンク集)
http://www.kt.rim.or.jp/~kbk/
・Compiler Construction
http://www.ie.u-ryukyu.ac.jp/~kono/lecture/compiler/
・情報システム工学実験 III コンパイラ・コンパイラ
http://math.cs.kitami-it.ac.jp/~fuchino/proin/experimentIII-2000/jikken.html
・OS/Programming 簡単な C コンパイラ
http://www.csg.is.titech.ac.jp/~chiba/lecture/os/
・正規表現
http://hp.vector.co.jp/authors/VA007799/viviProg/doc_regexp.htm
・コンパイラ研究・開発情報の一集積所
http://compilers.cs.uec.ac.jp/
・Links and Selected Readings
http://www.gnu.org/software/gcc/readings.html
・国産のコンパイラ共通インフラストラクチャCOINS
http://www.coins-project.org/
0003デフォルトの名無しさん
2009/11/17(火) 13:15:21・Lex and YACC primer/HOWTO (邦訳)
ttp://www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.html
・Turbo Pascal Lex/Yacc
http://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を同時に使う
http://guppy.eng.kagawa-u.ac.jp/2005/SysProg/both.html
・KITE_ASM (yacc,lex)
http://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
http://www.cs.princeton.edu/~appel/modern/java/ (JLex, CUP)
ttp://www.jflex.de/
・SableCC
ttp://www.sablecc.org/
・¬<><∪∪ (notavacc)LALR(1)
http://ne.cs.uec.ac.jp/~koto/notavacc/
・boost::spirit(C++のテンプレートでEBNFの構文を模倣)
http://spirit.sourceforge.net/
ttp://boost.cppll.jp/HEAD/libs/spirit/index.html(マニュアル日本語化プロジェクト)
ttp://www.fides.dti.ne.jp/~oka-t/cpplab-boost-spirit.html
0004デフォルトの名無しさん
2009/11/17(火) 13:17:00・GC FAQ -- draft
http://www.iecc.com/gclist/GC-faq.html
・A garbage collector for C and C++
http://www.hpl.hp.com/personal/Hans_Boehm/gc/
・一般教養としての Garbage Collection
http://www.is.s.u-tokyo.ac.jp/vu/jugyo/processor/process/soft/compilerresume/gc/gc.html
・Garbage Collection : Algorithms for Automatic Dynamic Memory Management
http://www.amazon.com/exec/obidos/ASIN/0471941484/
★処理系,スクリプト
・kikyou.info (吉里吉里というゲームのスクリプト)
http://kikyou.info/
・tiny C コンパイラ (C)
http://www.watalab.cs.uec.ac.jp/tinyCabs.html
・6809用 Micro C コンパイラ
http://www.axe-inc.co.jp/pds/mc09.html
・Portable Object Compiler (Obj-C >> C のトランスレータ?)
http://users.pandora.be/stes/compiler.html
・自作コンパイラの部屋(PL/1, Pascal等)
http://www.tokumaru.org/
・『Rubyソースコード完全解説』サポートページ
http://i.loveruby.net/ja/rhg/
・『やさしい Lisp の作り方』『やさしい Java インタプリタ の作り方』
http://www.okisoft.co.jp/esc/go.html
・MSによるPEフォーマット仕様書(日本語)
http://www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/intro.html
0005デフォルトの名無しさん
2009/11/17(火) 13:20:59・PLDI http://research.microsoft.com/conferences/pldi06/
コンパイラの研究に関する最新成果を知りたければまずはここ。
・POPL http://www.cs.princeton.edu/~dpw/popl/06/
PLDIよりは理論寄りだが大いに参考になる。
・ICFP http://icfp06.cs.uchicago.edu/
関数型言語に関する学会。とても難しい。
・OOPSLA http://www.oopsla.org/
オブジェクト指向言語に関する学会。最近はやや低調?
・ICCC http://www.st.cs.uni-sb.de/cc/
ヨーロッパ系。派手さはないが堅実。
0006デフォルトの名無しさん
2009/11/17(火) 13:21:55・コンパイラ 原理・技法・ツール 1&2
http://www.amazon.co.jp/exec/obidos/ASIN/4781905854/
http://www.amazon.co.jp/exec/obidos/ASIN/4781905862/
通称ドラゴンブック。バイブル。
・コンパイラ構成法 原田 賢一
http://www.amazon.co.jp/exec/obidos/ASIN/4320029224/
http://www.hara.cs.keio.ac.jp/kCompiler/ (ソース、正誤表のダウンロード)
・プログラミング言語処理系 岩波講座 ソフトウェア科学〈5〉 佐々 政孝
http://www.amazon.co.jp/exec/obidos/ASIN/4000103458/
一冊で済ませたい人へ。
・コンパイラの構成と最適化 中田 育男
http://www.amazon.co.jp/exec/obidos/ASIN/4254121393/
最適化がメインだが、構文解析からコード生成までの基本事項も解説されている。
・コンパイラの仕組み 渡邊 坦
http://www.amazon.co.jp/exec/obidos/ASIN/4254127081/
薄い奴(185p)を読みたい人に。
・21st Century Compilers (Alfred V. Aho, Sethi, Ravi Sethi, Jeffrey D. Ullman, Monica Lam)
http://www.amazon.co.jp/exec/obidos/ASIN/0321131436/
まだ出ていない。
・スモールコンパイラの制作で学ぶプログラムのしくみ
http://www.cbook24.com/bm_detail.asp?sku=4774121770
初心者向けの優しい解説本。
一部圧縮しようとしたが諦めた。
以上。
0007デフォルトの名無しさん
2009/11/17(火) 13:30:37・最新コンパイラ構成技法(Modern Compile Implementation in ML(タイガーブック)の訳)
http://www.amazon.co.jp/dp/4798114685
・ふつうのコンパイラをつくろう
http://www.amazon.co.jp/dp/4797337958
・プログラミング言語を作る
http://www.amazon.co.jp/dp/4774138959
・やさしいインタープリタの作り方入門
・やさしいコンパイラの作り方入門
http://www.amazon.co.jp/dp/487783219X
http://www.amazon.co.jp/dp/4877832203
0008デフォルトの名無しさん
2009/11/17(火) 14:08:21第一版の内容を全部覚えているわけじゃないし、ほんの数ページを見せて貰っただけだけど。
0009デフォルトの名無しさん
2009/11/18(水) 07:24:320010911
2009/11/18(水) 12:38:55本当の俺の力を見せつけるときが来たな。
中田の本で防御してドラゴンブックで攻撃だ!
0011デフォルトの名無しさん
2009/11/18(水) 14:15:33オレオレ言語の実行環境として流用できるだろうか
0012デフォルトの名無しさん
2009/11/18(水) 14:59:200013デフォルトの名無しさん
2009/11/18(水) 15:22:30Windowsプラットフォーム前提であれば、そのとおりだろうな。
0014デフォルトの名無しさん
2009/11/18(水) 16:27:25MAIL蘭。
0015デフォルトの名無しさん
2009/11/18(水) 17:15:21MS社の囲い込み戦術か。JVMの方が汎用性が高いしJVMの地位は落ちないと思う。
0016デフォルトの名無しさん
2009/11/18(水) 17:24:540017デフォルトの名無しさん
2009/11/18(水) 17:25:46そのうちJVMで実行できるエロゲが販売されれば、OSの選択にLinuxと言うのも出てくると思う。
今はKVMでXPを動かしてるけど、JVM版が出ればMS社にOSのライセンス料を払わなくて良くなる。
ビデオテープの原動力がエロだったという事実を考えると、OSは今、officeとエロゲで選ばれてると思うからね。
0018デフォルトの名無しさん
2009/11/18(水) 17:32:190019デフォルトの名無しさん
2009/11/18(水) 17:49:07それ別にJVMじゃなくてもよくね
0020デフォルトの名無しさん
2009/11/18(水) 20:47:27ハードカバーじゃないのか。でも価格は変わっていないんじゃなかった?
>>10
防御力-1(w
>>19
クロスプラットホームのゲームならActionScriptが組みやすいね。
ActionScriptHACKを覚えるのがやっかいだけど。
Fileアクセスの場合はlocalで実行できるけど
httpアクセスの場合、local-http-serverが必用だけど。
saveオブジェクトを作らないといけないのが面倒っちゃ面倒。
0021デフォルトの名無しさん
2009/11/18(水) 20:52:36マジか?
初版大事にしよう
0022デフォルトの名無しさん
2009/11/18(水) 20:55:440023デフォルトの名無しさん
2009/11/20(金) 16:35:530024デフォルトの名無しさん
2009/11/20(金) 16:40:550025デフォルトの名無しさん
2009/11/20(金) 16:54:070026デフォルトの名無しさん
2009/11/20(金) 18:02:090027デフォルトの名無しさん
2009/11/20(金) 19:14:210028デフォルトの名無しさん
2009/11/20(金) 20:27:520029デフォルトの名無しさん
2009/11/20(金) 23:02:49LISp
0030デフォルトの名無しさん
2009/11/21(土) 00:22:54lisp自体が抽象構文木だったんだってね
0031デフォルトの名無しさん
2009/11/21(土) 13:24:44FORTH
ポインタ演算もバッチリ
0032デフォルトの名無しさん
2009/11/21(土) 15:18:06この前のトライ木の実装とかif-then(とラベル管理とstack管理で)関数型言語を定義することが出来る
と言う話の方が断然面白かった。
もっと意味のある話は出来ないかな。
と言うわけで>>24を指示する。
0033デフォルトの名無しさん
2009/11/21(土) 16:43:260034デフォルトの名無しさん
2009/11/21(土) 17:30:00>C++のコードを変換するのに十分な小さい言語
というのは、その言語が(別の何かに)変換するということ?
その言語に変換するということ?
0035デフォルトの名無しさん
2009/11/21(土) 17:32:580036デフォルトの名無しさん
2009/11/21(土) 19:04:550037デフォルトの名無しさん
2009/11/21(土) 19:13:560038デフォルトの名無しさん
2009/11/21(土) 22:18:57必要ないよな
0039デフォルトの名無しさん
2009/11/21(土) 22:20:290040デフォルトの名無しさん
2009/11/22(日) 03:06:53作るだけなら、形式言語理論の知識は必須とは思えないな。
カーニハンの本「UNIXプログラミング環境」を読んでyacc&lexで
C言語風のミニインタプリタを作って遊んだのが最初の経験だ。
当時はC言語の知識しか無かったけど、動く物を作ることはできたよ。
0041デフォルトの名無しさん
2009/11/22(日) 06:50:19ツール類が何をしてるのか理解するには初歩的な言語理論やオートマトンの知識は必要になってくるだろう。
0042デフォルトの名無しさん
2009/11/22(日) 06:54:41知識重要だな。
まぁLALRを使うならLLのための知識はいらないだろうがw
0043デフォルトの名無しさん
2009/11/22(日) 07:02:140044デフォルトの名無しさん
2009/11/22(日) 10:15:03どこでチンコの話が出てきたんだよw
0045デフォルトの名無しさん
2009/11/22(日) 12:35:51むしろ形式主義的な考え方を勉強した方がはるかに役に立つな。メタ数学オモシロス
0046デフォルトの名無しさん
2009/11/22(日) 19:17:56俺も>>45の意見に賛成。逆ポーランドから1歩ずつステップアップするのが吉。
>>41
俺はスクラッチ主義者(スピードを稼ぐため)なんだが、言っていることはその通りだな。
>>36
あんな出来損ないを作ってた奴ら(今はマシだけど)より、ここで定義した方が良い物が出来る予感。
0047デフォルトの名無しさん
2009/11/22(日) 19:39:520048デフォルトの名無しさん
2009/11/22(日) 21:18:17そう、まだ定義も決まってなかった頃の物。
GNUなんてOSも作れず、Linuxを自分たちの功績にして、
GPLでサポート等で金を稼げなんて言う奴ら。
商業ソフト(office等)の正常な商業活動が実質出来なきなくなり
ジャストシステム(エロゲ会社じゃないよw)ももうすぐやばそう。
これはMSの囲い込み政策も関連してるけど。
0049デフォルトの名無しさん
2009/11/22(日) 21:20:37誰とは言わないがGNUの奴らは原理主義が多すぎ。
0050デフォルトの名無しさん
2009/11/22(日) 21:21:23標準のことか?
0051デフォルトの名無しさん
2009/11/22(日) 21:26:46そう、標準のこと。まあ、これ以上はスレチになるから辞めよう。
スレを無駄に使ってスマン。>all
0052デフォルトの名無しさん
2009/11/22(日) 23:39:480053デフォルトの名無しさん
2009/11/22(日) 23:42:07ごめん。
0054デフォルトの名無しさん
2009/11/23(月) 08:24:44少なくともカーネル・ドライバ周辺は
0055デフォルトの名無しさん
2009/11/23(月) 12:22:180057デフォルトの名無しさん
2009/11/24(火) 13:22:10やめようといってるのはライセンスがらみの話のことじゃないの?
0058デフォルトの名無しさん
2009/11/24(火) 17:35:52何をしたいの?
0059デフォルトの名無しさん
2009/11/24(火) 19:38:02俺には理解できない…。
>>24 は >>34 の質問に答えてほしい。
0060デフォルトの名無しさん
2009/11/24(火) 19:44:04小さな言語を定義したいってことじゃないの?別に意味不明だとは思わんかったけど。
たとえば、C++用というわけじゃないけど、C--とかあるよね。
http://www.cminusminus.org/
0061デフォルトの名無しさん
2009/11/24(火) 20:50:22たとえば、がどこに掛かってるのか意味不明なんだが。
C--が何?
中間言語なら既存のものに合わせれば十分じゃないか。
君の意図もさっぱり判らん。
0062デフォルトの名無しさん
2009/11/24(火) 21:02:35なににつっかかってるんだ?
0063デフォルトの名無しさん
2009/11/24(火) 21:05:48006424
2009/11/24(火) 21:13:30今ダウンロードしたファイルを読んでる最中です。
>>60さん、どうもありがとうございます。
0065デフォルトの名無しさん
2009/11/24(火) 21:15:290066デフォルトの名無しさん
2009/11/24(火) 21:27:16すごいなーえすぱーはいたんだなー
0067デフォルトの名無しさん
2009/11/24(火) 22:56:42プログラマがC--でソースコードを直接書き下すことが想定されてるとでも?
ドキュメントと仕様見る限りではとてもそう見えないが。
0068デフォルトの名無しさん
2009/11/24(火) 22:57:52そういう目的には木構造を表現できるS式 or 命令の連なりとして処理できる逆ポーランドが最適だってば。
0069デフォルトの名無しさん
2009/11/24(火) 23:00:16C--はCと同列に扱っちゃだめだってば。少なくとも、Cよりははるかに機械生成されることを
想定してかなり低レベルなところまで扱える仕様になってる。つか、なんでそこで逆ポーランドとか
S式が出てくる?逆ポーランド(記法)とかS式はメタ言語であって、それ自体で何か意味のあるもの
じゃないだろ。
0070デフォルトの名無しさん
2009/11/24(火) 23:18:11>24の字面からメタ言語の話かと思ってた。
0071デフォルトの名無しさん
2009/11/24(火) 23:31:550072デフォルトの名無しさん
2009/11/24(火) 23:47:360073デフォルトの名無しさん
2009/11/25(水) 00:01:26だからまず最初に俺言語Cトランスレーターを作る。可逆でな。
C→俺言語
俺言語→C
これで俺言語の役立たず度が計れる。
作れない→論外
0074デフォルトの名無しさん
2009/11/25(水) 00:23:060075デフォルトの名無しさん
2009/11/25(水) 01:00:51C++テンプレートやLispマクロのようなコード生成を含む機構あると可逆はつらくない?
0076デフォルトの名無しさん
2009/11/25(水) 07:39:22突っ込み所かもね。
0077デフォルトの名無しさん
2009/11/25(水) 08:23:15仕様書を軽く読んでみたけど、面白いね。
C言語は構造化アセンブリ言語だと言われることがあるけど、
人間様がプログラミングすることを意識した高級言語として設計されていた。
でもC--言語は、C言語風の構文だけど、まさしく構造化アセンブリ言語だ。
0078デフォルトの名無しさん
2009/11/25(水) 09:40:48S式は人間がリスト構造を書いてやる、
逆ポは人間がスタックマシンの機械語列を書いてやる、
どちらも機械可読(機械易読)な構造を人間が書いてやるという意味では
>>73
それって、
#define BEGIN {
#define END }
のことを「俺言語」って言ってないか?
ttp://minnie.tuhs.org/UnixTree/V7/usr/src/cmd/sh/mac.h.html
0079デフォルトの名無しさん
2009/11/25(水) 14:12:27予約語が増えるw
0080デフォルトの名無しさん
2009/11/25(水) 15:07:240081デフォルトの名無しさん
2009/11/25(水) 15:49:18Cコンパイラに丸投げするのは悪くない話。
0082デフォルトの名無しさん
2009/11/25(水) 16:01:290083デフォルトの名無しさん
2009/11/25(水) 16:02:550084デフォルトの名無しさん
2009/11/25(水) 16:07:42結局たいして速くならない。
メソッドを動的にディスパッチしたりとかする必要があるのは変わらないから。
0085デフォルトの名無しさん
2009/11/25(水) 16:54:49ところで、漏れは数値と文字列の自動変換て好きくないのだが
文字列しか変数に入らなくって、基本は正規表現風パターンマッチと変換だけの言語って
…面白くないですね。すみません。AWKみたいだし。
0086デフォルトの名無しさん
2009/11/25(水) 18:15:16数値と文字列の自動変換、俺も嫌い。
0087デフォルトの名無しさん
2009/11/25(水) 23:40:40画像も音声もみんなパイプで渡せるようにするか
ファイルに作らせるかすれば、シェルスクリプトで全部できるんじゃね?
っていうか組み合わせればどんどんすごいことになっていかね?
と、石田先生のUnix入門を読んだときは思っていた。
0088デフォルトの名無しさん
2009/11/25(水) 23:51:19大富豪型プログラミングになれは、1Cell=64bitでいいよね。
もっと気張っておく?1Cell=4096byteとか。フラグメントはメモリマッパ任せとか。
0089デフォルトの名無しさん
2009/11/26(木) 13:17:20これ昔実験したけどあんまり早くならないよ
MMU周りのコードにもよるかもしれないけど
0090デフォルトの名無しさん
2009/12/04(金) 19:00:23IF GOTOで全部の構造式が出来るか。当たり前だけど力業だな。
>>89
MMUの全面的な支援がないと難しいんじゃない?
0091デフォルトの名無しさん
2009/12/05(土) 00:42:03R4000系でやったんだけど基本がストールで検出なんでキャッシュがコケまくるんだよね
それだったらキャッシュが十分に効くようにして世代別のGCを普通に実装した方がはやかったんだ。
0092デフォルトの名無しさん
2009/12/05(土) 02:00:100093デフォルトの名無しさん
2009/12/05(土) 23:38:120094デフォルトの名無しさん
2009/12/06(日) 20:50:470095デフォルトの名無しさん
2009/12/06(日) 23:40:270096デフォルトの名無しさん
2009/12/17(木) 20:40:42> (スレが荒れる原因となります)
kwsk
0097デフォルトの名無しさん
2009/12/17(木) 20:52:150098デフォルトの名無しさん
2009/12/18(金) 20:53:220099デフォルトの名無しさん
2009/12/18(金) 21:13:370100デフォルトの名無しさん
2009/12/20(日) 10:53:590101デフォルトの名無しさん
2009/12/20(日) 21:22:180102デフォルトの名無しさん
2009/12/20(日) 23:49:03GIMPLE@gccはどうよ?
0103デフォルトの名無しさん
2009/12/21(月) 19:49:279??の事かw
>対象のC言語の記述はforループによる繰り返し制御構造で、
>特に2重の入れ子構造をもったループを効率的に扱えるという。
>SIMD型アクセラレータ上での実行に適した演算の多くはこの形式で記述できるという
0104デフォルトの名無しさん
2009/12/22(火) 22:13:57変数の依存性でスピードが全然違うんだろうね。
相互に依存しない物ってなんだろう?
例えばクイックソートは依存するよね。
0105デフォルトの名無しさん
2009/12/22(火) 23:25:250106デフォルトの名無しさん
2009/12/23(水) 00:58:040107デフォルトの名無しさん
2009/12/23(水) 13:10:30911の言動は感心できないが、方向性とかはちゃんと見てたな。
そうなるとNECのベクター型とIntelの提携だな。
>>106
911が自分の考えの中にエロゲの事を必ず入れていた。
それがこのスレのエロゲを卑下する人達の逆鱗に触った。
プログラムコードがエロゲ界でも経験豊かで秀逸なコンパイラをスクラッチで作っている人が出てきたら、
40才でエロゲ作ってたら氏ね。とか罵詈雑言。
911と、そのエロゲプログラマが作ったコードでその人を見れないスレ住人の中に確執。
おれは911も悪いと思ったが、コードで人を見れない奴はイヤだな。
0108デフォルトの名無しさん
2009/12/23(水) 13:12:200109デフォルトの名無しさん
2009/12/23(水) 13:25:41……
0110デフォルトの名無しさん
2009/12/23(水) 13:32:31ASCII創成期かと思ったよ。
しかし作者を叩く人は少なく、変な持ち上げ方をしている奴が馬鹿にされただけ。
0111デフォルトの名無しさん
2009/12/23(水) 13:52:14えーなに、GAME(言語)ですか?
0112デフォルトの名無しさん
2009/12/23(水) 14:36:300113デフォルトの名無しさん
2009/12/23(水) 14:42:21その他win3.1/95時代に色々なプログラムで稼いだ金を使って、
エロゲ会社立ててポルシェ乗り回してる成功者だね。
ブログでは引っ越しするからアーロンチェアとか
after effectとか高位物をいろいろみんなに配ってる。
0114デフォルトの名無しさん
2009/12/23(水) 14:43:200115デフォルトの名無しさん
2009/12/23(水) 14:48:22こんな事やっちゃって、この人は自分が妬まれる位置にいることを分かってないね。
0116デフォルトの名無しさん
2009/12/23(水) 14:52:090117デフォルトの名無しさん
2009/12/23(水) 14:52:18どういった用途に使われるコンパイラだろう。
昔、IntelC/C++コンパイラ使ったときは落胆した。VSの方が早いんだもん。
あれはライブラリの料金なのかね。
0118デフォルトの名無しさん
2009/12/23(水) 14:54:15まあそうだけどさ。
表だってやらなきゃ妬まれないのに。
泥棒にも狙われるぞ。
0119デフォルトの名無しさん
2009/12/23(水) 14:56:31田舎だから家だけは広いし。
0120デフォルトの名無しさん
2009/12/23(水) 14:58:08ハマルと早いよ。しかし、クリティカルな部分はV-TUNEでカリカリ書いた方が速い。
0121デフォルトの名無しさん
2009/12/23(水) 15:17:07行のループの間隔で依存するだとか、そういうものを検出する技法はたんとある。
0122デフォルトの名無しさん
2009/12/23(水) 15:22:14そっか。中田氏の最適化の本は斜め読みした程度だけど、
そこまで進んでいるのか。
しかしIntelコンパイラは上手く使いこなせなかった。
PentiumのUVの2パイプを意識して手でASMを組んだ方が速かったな。
そのときはV-TUNEが役に立った。
0123デフォルトの名無しさん
2009/12/23(水) 15:33:160124デフォルトの名無しさん
2009/12/23(水) 16:15:01手でコンパイラ好みのコードに書き直さないと、
ハードウェアの性能は引き出せないけど。
0125デフォルトの名無しさん
2009/12/23(水) 17:39:150126デフォルトの名無しさん
2009/12/23(水) 22:44:480127デフォルトの名無しさん
2009/12/24(木) 02:56:36ちょっと聞きたいんだけど、大量のファイルを高速でコンパイルでき、
構文までマクロで組める汎用コンパイラをスクラッチからあなたは実際に組んだの?
実装は無しなんて言ったら何でもOKだよね?
噛みつきたいんじゃなく、そこまで自信満々だったら見せてよ。
サブセットでもいいからさ。
例の奴の話を蒸し返すのは嫌なんだけど自信満々で言われるとあなたがどれぐらい凄いか興味がある。
0128デフォルトの名無しさん
2009/12/24(木) 03:06:29今細かく見たらマクロの機能もMASM6を超えてんじゃん。
これのどこがASCII創刊時の機能だと言い切れるの?
0129デフォルトの名無しさん
2009/12/24(木) 05:07:09鼻息荒いね。
ここでは実装は軽視される。
ある意味浮世離れしているスレだよ。
その氏のは前スレで言ってることが本当ならば実装は凄いよ。
しかし、エロゲには必要ないがオブジェクト指向とかがこのスレの本分。
あと、ここに来ている全員が凄腕ではなく一部だけだと思うから、
煽りにいちいち反応しない方が良いよ。体に悪い。
0130デフォルトの名無しさん
2009/12/24(木) 05:16:310131デフォルトの名無しさん
2009/12/24(木) 05:18:370132130
2009/12/24(木) 05:21:10ドラゴンブックも古い。
出版不況じゃなければ一般向けの本を出したいよ。
0134デフォルトの名無しさん
2009/12/24(木) 06:19:220135デフォルトの名無しさん
2009/12/24(木) 06:25:54最終的に実行スピードとバグの無さが全てだよ。
オブジェクト指向なんてGCの問題もあるしファイル単位で関数郡をつくればいいし。
構造化で十分だと思ってる。
それを考えると114の言語が現在ではベターだと思う。
0136デフォルトの名無しさん
2009/12/24(木) 06:34:14おまいさんも鼻息荒いな。
某氏のコンパイラはエロゲの現状に即してる。そしてハイスピード、バグを出さない仕様。
FORTRAN,C,JAVA,どれも得意分野違うじゃん。
ここは実装の話だけじゃないんだよ。
しかし
>>110
がどれぐらい出来るかは示して欲しいな。だって他人を卑下したんだから
俺も叶わないスーパープログラマなんだろうな。
0137デフォルトの名無しさん
2009/12/24(木) 07:04:12そんな物組めないの分かってるのに性格悪いなw
0138デフォルトの名無しさん
2009/12/24(木) 09:28:57国内で。やはり東大ですか? orz
0139デフォルトの名無しさん
2009/12/24(木) 09:36:020140デフォルトの名無しさん
2009/12/24(木) 12:01:39本当にそう思ってるのならそんな1行レス辞めなよ。それこそ頭悪そうだ。
0142デフォルトの名無しさん
2009/12/24(木) 12:09:40すんげー遅い(8秒ぐらい)なんですが何とかなりませんか
1秒以下が希望です。
0143デフォルトの名無しさん
2009/12/24(木) 12:09:51はいはい。どこの院生ですか、お坊ちゃま。
あとサンプルあげてよ。口ではいくらでも言えるからね。
0144デフォルトの名無しさん
2009/12/24(木) 12:12:41SEEKが遅いとか?
ホットポイントが明確でないときついな。
0145139
2009/12/24(木) 12:25:59日本語読めないのか? お前の腐った目にどう映ろうが俺は構わないのに、誰がサンプルなんか上げるかw
さあ、あとは「上げられないんだろ」とか好きなだけ妄想して、
「最後にレスした俺が勝ち」ゲームの勝者となりたまえw
0146デフォルトの名無しさん
2009/12/24(木) 12:26:380147デフォルトの名無しさん
2009/12/24(木) 12:28:070148デフォルトの名無しさん
2009/12/24(木) 12:31:53一般的な手順を踏むしかないわな
プロファイラでボトルネックを発見し、そこを何とかできないか考える
ただ、少なくとも今のところ、Rubyはお世辞にも速い言語じゃないので、
頑張ってもどうにもならない可能性は否定できない
0149デフォルトの名無しさん
2009/12/24(木) 12:50:260150デフォルトの名無しさん
2009/12/24(木) 13:52:28ただのプログラムじゃん。
わかんない。田代とかもわかんない。得るものが少ないと思います。
したがってジャンプに載ってる実装をメインテーマにした実装コメントというか
もよくわかりません。ただのプログラムです。
さらにそもそも女子はなぜ実装の話ばかりするのですか。
あまつさえ学校でも実装の話をしたりするのですか。僕は賛成ですが。
いや賛成なのは実装の話が出るからじゃないです。なんとなくいいからです。
僕は女子高生の実装とかそういうものは大好きです。
いや問題なのは女子高生の制服ではなくてパンツです。
パンツが見えててもかまいませんが、布だと思います。
いやそうではなくて、なぜパンツの出るような服を着るかということです。僕は賛成ですが。
すいません。まちがいました。もういいです。
0151デフォルトの名無しさん
2009/12/24(木) 13:52:36テンプレのサイトあちこち潰れててどこも古めかしいんだけど今ならどこ見りゃいいでしょうか
0152デフォルトの名無しさん
2009/12/24(木) 14:16:11その3DCGのファイルフォーマットって具体的には何?
もしそれがXML形式で、標準ライブラリのREXMLを使っているのなら、
代わりにたとえばLibXml(http://libxml.rubyforge.org/)のような
C言語で記述された拡張ライブラリを使いなさい。
もしそれが構造化テキスト形式で、手作業でパーザを書いているなら、
Raccと(標準ライブラリの)strscanを使ってパーザを書き直しなさい。
RaccランタイムとstrscanもC言語で記述された拡張ライブラリです。
速い遅いはデータ量とマシン性能に依存するからあいまいになるけど、
上記の方法なら数キロステップのテキストを1秒以内で読み込みできるよ。
あとは>>148が書いてくれているプロファイラの活用かな。
0153デフォルトの名無しさん
2009/12/24(木) 14:25:46日本語が不自由な方がこんな事を言うなんて…
0154デフォルトの名無しさん
2009/12/24(木) 14:41:17ここまで頭の悪い奴がどんなコードを組むかは興味がある。
0155デフォルトの名無しさん
2009/12/24(木) 15:21:26本物はこんな所に居ない。今までだってちゃちな物ばかりだったし。
>>142
Rubyは重いよ。趣味でやるなら良いけど仕事では用途を選ぶ。
ホットポイントを見つけて最適化という地道な作業と>>152氏の
事をやってみるしかない。後はRubyスレで聞いた方が速いよ。
0156デフォルトの名無しさん
2009/12/24(木) 15:33:03>>155
うさみちゃんだっけ?
0157デフォルトの名無しさん
2009/12/24(木) 15:34:420158デフォルトの名無しさん
2009/12/24(木) 15:45:440159157
2009/12/24(木) 15:54:270160デフォルトの名無しさん
2009/12/24(木) 16:14:47馬鹿はそれを「わかる」と混同しがち。
0161デフォルトの名無しさん
2009/12/24(木) 16:31:31学生が作ってたところとかのきなみ全滅だな。
せっかくwikiがあるし、そっちのまとめを参照ってことにするか次スレから。
0162デフォルトの名無しさん
2009/12/24(木) 19:15:510163デフォルトの名無しさん
2009/12/24(木) 19:26:32BrainfuckとかWhitespaceみたいなやつ?
0164デフォルトの名無しさん
2009/12/24(木) 19:28:130165デフォルトの名無しさん
2009/12/25(金) 00:27:10萌えとかエロとかは、食っていくに必要
0166デフォルトの名無しさん
2009/12/25(金) 13:07:49うまく実行できるとエロい事が起こる
0167デフォルトの名無しさん
2009/12/25(金) 13:43:06> しかし作者を叩く人は少なく、変な持ち上げ方をしている奴が馬鹿にされただけ。
図星のレスで荒れたなw
0168デフォルトの名無しさん
2009/12/25(金) 19:15:470169デフォルトの名無しさん
2009/12/25(金) 20:09:500170デフォルトの名無しさん
2009/12/25(金) 22:03:13普通に Lisp 優位だろうな。それやるとなると
0171デフォルトの名無しさん
2009/12/26(土) 03:46:24A)仕事で使用に耐えうる大量のファイルを高速でコンパイル出来る物を作った人
B)言語をスクラッチで作った人
C)トランスレーターをスクラッチで作った人
D)ツールを使って作った人。
自分はB。構造化言語。
0172デフォルトの名無しさん
2009/12/26(土) 05:00:570173デフォルトの名無しさん
2009/12/26(土) 05:35:30そのツールには、yaccのようなパーサジェネレータを含みますか?
もしYesなら、Bで4つ、Dで5つ作りました。
また、Bの1つとDの2つは仕事で活用しました/しています。
わざわざ新しい言語を作る目的には、高速なコンパイル実行が要求される
場合もあるかと思いますが、扱う問題に応じた計算モデルをベースに
言語を設計した場合、コンパイル速度は大きな課題にはならないことがあります。
自分の作ったミニ言語達は、処理速度は遅いですが、仕事での使用に耐えうる
モデル記述が可能であり、どれも実用性があります。
0174デフォルトの名無しさん
2009/12/26(土) 10:42:19C×1 (NC工作機械制御用にRatforみたいな文法のマクロプロセッサを1つ)、
D×3 (flex/bison使用×1, jflex/cup使用×2)
ただ、最近は言語と一緒に、Eclipse上で動くエディタとデバッガと
カバレッジ測定ツール一緒に作れって要望が割と出るので面倒だ。
0175デフォルトの名無しさん
2009/12/26(土) 10:55:54状態遷移マシンにコンパイルするので当然速い。
その他は省略。
0176デフォルトの名無しさん
2009/12/26(土) 11:13:15大量のファイルを高速でコンパイルできることが必要なときもあるけど、
必要でないときもあるし。まして仕事なら、必要ないのに過剰に実装して
俺スゴイとか言ってるのはただのアホだろ。
しかも、なんでその点が実装の経験を判断する基準になってるの?
ツールを使ったか使ってないかがなぜ問題になるのかも謎。
体育会系の発想かな?
LLなら手書きしても大して変わらないし、LALR(1)とかを手書きしたから偉い
って思うやつがいたりするのか・・・?
楽していいもの作るのが優秀なプログラマだと思うけどね。根本的な
発想の違いがある気がする。
すまんマジレスしてしまった
0177デフォルトの名無しさん
2009/12/26(土) 11:15:370178デフォルトの名無しさん
2009/12/26(土) 12:31:39後手書きは体育会系かな?
0179デフォルトの名無しさん
2009/12/26(土) 12:35:34本来の相談室に戻した方が良いと思うけどネタがないね。
0180デフォルトの名無しさん
2009/12/26(土) 12:38:21本来の相談室に戻した方が良いと思うけどネタがないね。
0181デフォルトの名無しさん
2009/12/26(土) 12:43:51本来の相談室に戻した方が良いと思うけどネタがないね。
0182デフォルトの名無しさん
2009/12/26(土) 17:46:18最近はやりの機能や、言語的に高度な機能は、自作実用言語には
要らないんだよ。 使いたければ既存の言語を使うので十分。
結局、オリジナルな言語が欲しいのは既存の言語でめんどくさい部分を簡略化して
組込みたいor使いたい、だから記述が簡単であり、専門的な目的に強力に特化した
言語を作ってる。だからここの話題とはなじまない。
0183デフォルトの名無しさん
2009/12/26(土) 18:27:58いわゆるDSLでんな
0184デフォルトの名無しさん
2009/12/26(土) 19:02:20flex/bisonでは間に合わないでしょうか?
0185デフォルトの名無しさん
2009/12/26(土) 19:08:330186デフォルトの名無しさん
2009/12/26(土) 21:12:50作った言語自身でセルフコンパイルさせる必要があったので全部手書きしたことある
いまから考えたら第1段階だけyacc使えばよかったとは思うけど
0187デフォルトの名無しさん
2009/12/26(土) 21:58:53宇宙系のやつを作ったことがある。
0188デフォルトの名無しさん
2009/12/26(土) 22:30:53タイガー本の和訳ってどう?読んだ人いる?
帯の宣伝文句で、「実装と理論の卓越したバランス」みたいなことが
書いてあったけど、実際どう?
まぁ和訳を読むくらいなら原書読めばいいじゃんと思わなくはないけど
原書の情報でもいいからおせーてください
0189デフォルトの名無しさん
2009/12/26(土) 22:47:460190デフォルトの名無しさん
2009/12/27(日) 02:13:05GPCPUだかなんだか知らんけど前のスレの奴の言ったとおりの物が出てきたよ。
次はループをタスク間で動的に実行か。VMかOSの力が必用なことも言ってたとおりだなw
俺達は馬鹿と紙一重の奴を相手にしてたのか(自嘲
0191デフォルトの名無しさん
2009/12/27(日) 02:28:530192デフォルトの名無しさん
2009/12/27(日) 08:05:470193デフォルトの名無しさん
2009/12/28(月) 04:11:01言っていることと本人の性格は必ずしてイコールでは無いと言うこと。
結論を述べれば、方向性は合っていて研究中。
0194デフォルトの名無しさん
2009/12/28(月) 15:47:540195デフォルトの名無しさん
2009/12/28(月) 16:37:240196デフォルトの名無しさん
2009/12/28(月) 18:15:400197デフォルトの名無しさん
2009/12/28(月) 20:51:300198デフォルトの名無しさん
2009/12/28(月) 21:03:560199デフォルトの名無しさん
2009/12/28(月) 21:06:450200デフォルトの名無しさん
2009/12/30(水) 01:51:29原因はクロージャとconsなわけであるが
0201デフォルトの名無しさん
2009/12/30(水) 02:51:34Cのシェアを奪えるのかい
0202デフォルトの名無しさん
2009/12/30(水) 14:26:290203デフォルトの名無しさん
2009/12/30(水) 20:59:12consはしょうがないね。定数的に使うか、
破壊禁止にして循環構造を防げば参照カウンタで済む。
カウンタ自体のオーバーヘッド考えるとやりたくないけど。
ただ参照カウンタ式はオーバーフローの対策が要る。
1セル高々16bitにして65535になった時点で例外を投げるか。
0204デフォルトの名無しさん
2009/12/31(木) 00:47:20みんなこんなもん?
0205デフォルトの名無しさん
2009/12/31(木) 01:09:26簡単に使えるクロージャはあるの?
0206デフォルトの名無しさん
2009/12/31(木) 02:20:180207デフォルトの名無しさん
2009/12/31(木) 02:47:02new lispってのがそんな事やってた様な気がするが
0208デフォルトの名無しさん
2009/12/31(木) 03:03:35範囲内のGC起動を抑止するってことは可能だから
機能縮小してまでGCレスにする事もない気がする。
0209デフォルトの名無しさん
2009/12/31(木) 13:52:29実用的には適当なところで打ちきらないとダメ。
stalinみたいに最適化に数時間かかると用途が限られる。
0210デフォルトの名無しさん
2010/01/02(土) 21:27:380211デフォルトの名無しさん
2010/01/03(日) 10:23:53元々Unixの設定ファイルとか、Lispの方からの伝統的なものだが。
0212デフォルトの名無しさん
2010/01/04(月) 06:59:23クリティカルパスを切れば良いんだけどね。
並列コンピュータのコンパイラは今後進歩するのかね。疑問。
>>193や某氏の言う通りになるほど甘くはないと思うんだが。
0213デフォルトの名無しさん
2010/01/04(月) 08:12:440214デフォルトの名無しさん
2010/01/04(月) 23:43:37DSLの英語のページどこだっけ?
0215デフォルトの名無しさん
2010/01/04(月) 23:53:47これどうなのか書評教えてくれ
0216デフォルトの名無しさん
2010/01/06(水) 18:40:08DSLはどうせC++か何かのコードを生成するんだろ
とか、汎用の言語の方が偉いとか。
0217デフォルトの名無しさん
2010/01/15(金) 12:07:430218デフォルトの名無しさん
2010/01/16(土) 12:09:19・明快入門コンパイラ・インタプリタ開発 C処理系を作りながら学ぶ(林晴比古実用マスターシリーズ)
http://www.amazon.co.jp/dp/4797357037
0219デフォルトの名無しさん
2010/01/16(土) 12:13:530220デフォルトの名無しさん
2010/01/16(土) 12:21:08昔は酷かったが成長してるのかもしれんし。
0221デフォルトの名無しさん
2010/01/16(土) 17:15:160222デフォルトの名無しさん
2010/01/17(日) 11:31:56識別子読み込み関数は[A-Z][A-Z0-9_]*を文字をくっつけて返す
"(", ")"はそのまま返す
みたいにS式っぽいものトークン分解しています
"(123ABC)"を "(", 数字, 識別子, ")" てトークン分解
しちゃうんですけど数字と識別子が別れていないので
これはエラーにしたいです (123 ABC)と区別付きません
普通はどうやってこういうのをトークン分解するんでしょうか
0223デフォルトの名無しさん
2010/01/17(日) 12:02:51普通どうするかは知らないが「数字じゃない文字が来るまで」のところで判定すりゃいいだけなんじゃないの?
0224デフォルトの名無しさん
2010/01/17(日) 12:16:300225222
2010/01/17(日) 12:32:55ありがとです
0226デフォルトの名無しさん
2010/01/17(日) 12:35:56まず本を一冊通読すべき。
0227デフォルトの名無しさん
2010/01/17(日) 12:50:05自作のインタプリタ言語用の文法を考えています。
Ruby,Python,JavaScriptあたりを参考にしてクラス系オブジェクト指向言語に
しようと考えていますが、いくつか悩んでいます。ご意見いただければ助かります。
まず、class宣言の文法です。上に挙げた言語の中では、Rubyの物を借りようと考えています。
class MyClass
def my_method(arg)
end
end
という風にしようと思っていますが、
例えば、メソッドが複数ある場合、endが関数宣言の最後なのかクラス宣言の最後なのか、
見分けがつかない事があるように思えます。
これはPythonではもう少しマシですが、クラス宣言が並んでいる場合に、
どのクラスのメソッド宣言なのかわかりにくい所があると思います。
JavaScriptでは、
MyClass.prototype.my_method = function(arg){
}
のように宣言されるので、この問題はないのですが、初学者が理解しにくい点、
メソッドの宣言を一箇所にまとめる事を強制できない点から自分の趣味には合わないと感じます。
そもそも巨大なクラスを宣言すべきでない、という意見もありますが、 -> http://d.hatena.ne.jp/akkt/20080424/1209051266
実際問題、読みにくいコードが多いように思えます。
他の便利な記法をご存知の方はいらっしゃいますか?
また、上記の記法のうちで、どれが好きですか?
ご意見ください。
0228デフォルトの名無しさん
2010/01/17(日) 13:00:40def my_method(arg)
end def
end class
0229デフォルトの名無しさん
2010/01/17(日) 13:08:55古いfortran風にブロックの対応を明示するという記法もあるよ。
#面倒なうえに逆に見難くなるなので嫌い。
class MyClass
def my_method(arg)
end def my_method
end class Myclass
見分けやすさというレベルならもっと単純に
ブロックの対応を表すコメントを追加する方がよいと思う。
有名なエディタを公式環境と決めて、それ用の自動追加マクロを作ればOK。
class MyClass
def my_method(arg)
end //def my_method
end //class Myclass
0230デフォルトの名無しさん
2010/01/17(日) 13:11:48ttp://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%95%E3%82%B5%E3%82%A4%E3%83%89%E3%83%AB%E3%83%BC%E3%83%AB
0231227
2010/01/17(日) 21:19:28>>228
見ていてVBのend subを思いだしました。
end def、end classというのは予約語を増やさないという意味で良いですね。
予約語を増やしてもいいのなら、シェルスクリプト風に
class MyClass
def my_method(arg)
fed
ssalc
というのも簡潔でしょうか。
>>229
コメントで良いという意見ももっともです。
>>230
インデントだけだと、
class Hoge
class Fuga
def foo
// Is here end of function or class?
def bar
のようにネストした時に、どれがどれかわからなくないですか?
0232デフォルトの名無しさん
2010/01/17(日) 22:27:53長くなるとendはあってもなくても変わらないし
0233227
2010/01/17(日) 22:35:10まったくその通りだと思います。
「インデントよりもendの方が良いけど、もっと良いのないですか?」
という質問ではなく、
「インデントも、endも、わかりにくいのですが、もっと良いのないですか?」
という質問のつもりでした。
わかりにくかったのでしたらすみません。
インデントの場合
メソッド宣言は1インデント
メソッドの中身は2インデント
と決めうちで書ければ良いかとも思いましたが、
それはそれでありえないと思いました。
0234デフォルトの名無しさん
2010/01/18(月) 22:10:440235デフォルトの名無しさん
2010/01/19(火) 01:14:24xml風
<class>A
<def>add a b
a+b
</def>
</class>
/def /classはキーワード
class A
class B
def a,b
a+b
/def
/class
def a b
a + b
/def
/class
endじゃなくてe
class A
class B
def add a,b
a+b
edef
eclass
def add a,b
a+b
edef
eclass
とか。
0236デフォルトの名無しさん
2010/01/19(火) 03:26:020237デフォルトの名無しさん
2010/01/19(火) 07:51:05XMLベースなら改行に意味を与えない方がよいよ、とマジレス。
0238デフォルトの名無しさん
2010/01/19(火) 09:17:19A:
- {add(a,b): a+b}
- {sub(c,d): c-d}
B:
...
0239デフォルトの名無しさん
2010/01/19(火) 11:03:57アホか
0240デフォルトの名無しさん
2010/01/19(火) 18:49:07ヒント:クラス系オブジェクト指向言語
0241デフォルトの名無しさん
2010/01/19(火) 19:38:34CLOS
0242デフォルトの名無しさん
2010/01/19(火) 19:54:49インデントでなんて馬鹿げてる。
0243デフォルトの名無しさん
2010/01/19(火) 23:35:14forth 系のアプローチ…だと…
0244227
2010/01/20(水) 00:14:50意味さえ分れば、プログラムは作りやすいですよね。
>>235
XMLありえなす。
edef はどうかと思いましたが、endefはアリかもw
>>238
XMLのと合わせて思ったんですが、
Squeak(smalltalk)の開発環境みたいなUIで表示するのは有ですかね?
まあ、自分のテキストエディタが使えないといけない、
と思う人は特定数いそうですけど。
>>241
不勉強なんですが、
CLOSはプロトタイプベースに近いのではないかと思ったんですが、
どうでしょう?
マルチメソッドだけでがんがれ、という意味であれば、
それはそれでネストしないはずなので、答としてアリな気はしますね。
>>243
構文解析という意味だと、>>235 さんのedefアプローチに近いですね。
わかりやすい予約語を作れればいけそうですね。
0245デフォルトの名無しさん
2010/01/20(水) 00:29:45CLOSはクラスベースだよ。defclassで定義する
カプセル化はしないだけ
0246227
2010/01/20(水) 00:29:52メソッド呼び出しの構文について質問です。
Rubyでは、
my_object.my_method arg1, arg2
のようにメソッド呼び出しの括弧を省略する事ができます。
これはとても便利だと思うので、自作の言語にもこの文法を取り込みたいです。
一方で、JavaScriptのように関数をファーストクラスオブジェクトとして
扱いたいという要求もあります。
window.set_on_exit(object.my_event_handler)
などとして、イベントハンドラを追加できるような文法を考えています。
Rubyでは、
a = my_object.my_method
とした時に、my_methodが呼び出され、実行結果が変数aに代入されます。
しかし、自作の言語の現在の仕様では、メソッド自体が変数aに代入されます。
この差をどう埋めるべきかで悩んでいます。
案としては、
- 特定のメソッドの時には引数は評価されないようにする。
- a = &(object.method) か a = object.&method のように&を必要とする。
などがありますがどれも綺麗ではないです。
個人的に一番良いかなと思っている仕様は、
a = object.method <= methodが返る
a = object.method arg <= methodが実行される
a = object.method() <= methodが実行される
という、引数があれば関数呼び出しで、引数が無い場合は括弧の省略は不可という仕様です。
これは分かりにくいでしょうか?
ご意見頂ければ幸いです。
0247デフォルトの名無しさん
2010/01/20(水) 00:43:05引数を二つ取る関数に引数を一つ渡したらどうなるの?
Curryingとかを調べてみると良いかも。
0248227
2010/01/21(木) 01:24:49場当たりに見えるという事はまだ作り込みが甘いんですね。
>引数を二つ取る関数に引数を一つ渡したらどうなるの?
Rubyでは、呼び出し時にエラーになりますし、
JavaScriptでは、Undefindを渡したのと同じ動作をすると思います。
このどちらかが分りやすいかなと考えています。
>Curryingとかを調べてみると良いかも。
説明が足りなかったですね。
2引数の関数を呼び出す場合には、
hoge(a, b) か
hoge a, b
と書くようになる事を考えています。
カリー化については、構文によるサポートはいらないのではないかと
思っています。
単にカリー化を使いこなせてないだけかもしれませんが、
あまり常用する物とは思えませんし、Haskellのような構文で部分適用を
サポートすると、静的に型を解析しない言語では、
意図せずカリー化を行ってしまい、混乱するのではないかと思います。
逆にカリー化を行いたい場合には、
Rubyのようにメソッドが基本的にオブジェクトではない言語では、
currying_function = currying(method(:hoge), arg1)
curring_function(arg2)
のようにメソッドをオブジェクト化する必要がありますが、
メソッドや関数が初期からオブジェクトであれば、
currying_function = currying(hoge, arg1)
curring_function(arg2)
のように黒魔術(リフレクション)を使わずに簡潔に書けると思います。
0249デフォルトの名無しさん
2010/01/21(木) 04:10:49http://homepage.mac.com/mkino2/oop/messaging.html
メソッドがだとすると、その obj の生成、複製、破棄とか
気になるといえば気になるのにゃあ・・・
0250デフォルトの名無しさん
2010/01/21(木) 15:27:35ネストした時に、どれがどれかわからなくないですか?
0251デフォルトの名無しさん
2010/01/21(木) 15:33:190252デフォルトの名無しさん
2010/01/21(木) 23:36:25形式言語とパーザの勉強して、
「曖昧な文法」ってどんなのがあるか理解しよう。
0253デフォルトの名無しさん
2010/01/22(金) 00:13:45List operators take more than one argument,
while unary operators can never take more than one argument.
Thus, a comma terminates the argument of a unary operator,
but merely separates the arguments of a list operator.
0254デフォルトの名無しさん
2010/01/22(金) 00:18:23神本だった。ここでうだうだ糞文法の質問している奴
読めや
0255デフォルトの名無しさん
2010/01/22(金) 00:19:200256デフォルトの名無しさん
2010/01/22(金) 00:21:06あー?お前誰に命令してるんじゃ?
0257デフォルトの名無しさん
2010/01/22(金) 00:22:43あー? テポドン2号落とすぞコラ
0258デフォルトの名無しさん
2010/01/22(金) 00:24:52おまえ、それかっぱえびせんじゃねえか
0259デフォルトの名無しさん
2010/01/22(金) 02:22:160260227
2010/01/22(金) 03:00:20C#などのように扱い始める時にオブジェクトの生成を行う方法と、
JavaScriptのようにメソッドの定義時に行う方法があると思っていますが、
後者の方が心理モデルを構築しやすく、理解しやすいと思っています。
オブジェクトにはフィールドとメソッドがペタペタくっついてる、と
説明すると、初学者にも理解してもらいやすいのではないでしょうか?
>>250-253
たしかに分かり難い所があるかもしれません。
この点に関しては、>>253 であげられた所ドユメントでも、
> the simple (but occasionally surprising) rule is this:
と書かれています。
Perlは各関数が取る引数の数によってどうパースされるかが変わります。
Rubyでは、"p (1) - 2"というコードで 1.6 と 1.8 で結果が違います。
また、Ruby 1.8 でbヘ、引数の数でb熾マわります。
これらをふまえると、単純に関数名の後ろのスペースの有無で評価結果を
変えるのが良いのではないかと思っています。
私は過去にCなどの言語で関数名の後ろにスペースを入れるべきという主張を
見た事がありませんし、while, for 等の構文と関数呼び出しを
スペースの有無で見わけるという、コーディング規約も一般的だと思います。
そのため、自由度は減りますが、見た目的には良いのではないでしょうか?
>>254
どのような点が良いのでしょうか?
Cのような低いレイヤの処理系を実装するとなるとinline化の判断や
可変長配列サポートの仕方とかが気になりますが、
その辺はまっとうな方法を紹介してますか?
土日に本屋に行って探してみます。
>>255
じゃあ、ABMで。
0261デフォルトの名無しさん
2010/01/22(金) 05:11:45>また、Ruby 1.8 では、引数の数でも変わります。
Ruby作ってる奴ってアホだろ
0262デフォルトの名無しさん
2010/01/22(金) 07:37:29> スペースの有無で見わけるという、コーディング規約も一般的だと思います。
ナンセンス。
エディタと文法と実行モデルを区別しようぜ。
0263デフォルトの名無しさん
2010/01/22(金) 08:52:13a +b と a + b で意味が違うとかな。
アホ扱いされる一面ではある。
>>260
そういう、レキシカルアナライザの挙動が、パーサに左右される状態に依って変わる、
なんていう言語はパーサとレキシカルアナライザを作るのが大仕事になる。
なに考えてるのかわからんが素直に正規表現でトークンを切り出して、LL(1)かLALR(1)で
処理できる文法にしたほうがよい。まずは。
0264デフォルトの名無しさん
2010/01/22(金) 10:13:13> Cのような低いレイヤの処理系を実装するとなるとinline化の判断や
> 可変長配列サポートの仕方とかが気になりますが、
> その辺はまっとうな方法を紹介してますか?
お前、自分のレベルにあった本をまず読めよ。
なんで上から目線なんだw
0265デフォルトの名無しさん
2010/01/22(金) 11:26:130266227
2010/01/23(土) 00:12:26知らなかった。確かに違う。> a +b と a + b で意味が違う
この辺、複雑なルールなのに穴に落ちる事が少なく
普通の使用者は気がつかないようになってるのが、凄いですね。
本当にRubyの作者はアホですね。
このRubyのやつとか、Perlの関数名によってパース結果が変わるのとか、
真似するのはやめるべきですね。シンプルよりも使いやすさを求めるのではなく、
許容できない使いにくさが無い範囲でシンプルな文法を目指したいですね。
>>246 で書いた文法の場合、正確に文法を書くとすると、
関数呼び出し ← id ( '('? (式 ',')+ ')'? / '()' )
参照 ← id
にしようと考えています。( ?は省略可能, /はor, +は一回以上の繰り返し)
要は、idの後ろからその式の終端までに他の式があれば
関数呼び出しとして扱うつもりです。
LL(1)だと、 a(1) と a = 1 が両方パースできません。
PEG文法の範囲の文法が使いやすくて良いと思います。パーサの実装も楽です。
LLだと無限大相当ですが。
0267227
2010/01/23(土) 00:13:47区別できてる気はしませんが、話したいのは文法についてです。
while (true);
myfunc(true);
のように書き分けるコーディング規約は一般的だと思いますが、違いますか?
検索して3番目に出てきたPearライブラリの規約では、
http://pear.php.net/manual/ja/standards.control.php
> 制御構造では、関数コールと区別するために、 制御キーワードと開きカッコの間に空白を 1 つ置きます。
と書かれていました。皆これを当然と思っているのなら、
関数名の後ろにスペースを入れた場合、エラーになるまたは違う解釈をする、
というのは落とし穴にならないのではないでしょうか?
>>264
設計、実装にあたり参考になる本を紹介してもらう事もあるかもしれませんが、
それは、それでよろしくおねがいします。
ちなみにどんなレベルが私に合ってると思いますか?
>>265
私が言うのも何ですが、何でこのスレではそこまで煽られてるんですか?
0268デフォルトの名無しさん
2010/01/23(土) 01:51:17「func a, b,」や「func (a,」が関数呼び出しにマッチしている。
書きたかったのは下のような奴じゃないかと思うんだけど。
関数呼び出し := id ( '()'
/ 式 ( ',' 式 )*
/ '(' 式 ( ',' 式 )* ')' )
で、この文法ってRubyと大差ない複雑さだよ。
「f f, f a, b, c」とか、式の中に裸の「,」が出てきたら困るよね。
0269デフォルトの名無しさん
2010/01/23(土) 02:34:05>>266,267
言っている事が矛盾している気がするヨ。
>>266では、a +b と a + b で意味が違う事を問題としているが、
これはRubyが構文によってセパレータ(字句区切り子)の解釈が異なる事に起因する。
しかし「二項演算子の前後には空白を入れる」という一般的なコーディング規則に
従っていれば実用上の問題は生じない。
対して、>>267ではwhile文と関数呼び出しという二つの構文で、セパレータの
解釈が異なることを問題としていない。それを一般的なコーディング規則であるから、
問題は生じない(落とし穴にならない)と主張している。
Rubyの構文が汚いのは分かるから、>>263が助言しているように、
まずはセパレータでトークンを区切って素直にパーズできる文法で設計することを勧める。
0270デフォルトの名無しさん
2010/01/23(土) 02:48:19ここはこれでも全然煽られてないんだよ。
能力を持った人しか来れないし。
逆にエロゲの人でも能力を持っていればそれほど煽られない(煽られないことはないが)。
君みたいにダメプログラマで上から目線なら、今までだったらもっと煽られて相手にされてないよ。
トークンの切り出し程度で悩んでるなんて、ここに来る資格はない(断言
0271デフォルトの名無しさん
2010/01/23(土) 03:16:080272デフォルトの名無しさん
2010/01/23(土) 03:47:250273デフォルトの名無しさん
2010/01/23(土) 09:48:12>while (true);
>myfunc(true);
>のように書き分けるコーディング規約は一般的だと思いますが、違いますか?
少なくとも、コーディング規約としては一般的ではない。
0274デフォルトの名無しさん
2010/01/23(土) 10:15:290275デフォルトの名無しさん
2010/01/23(土) 10:33:34CのK&RやJavaは、そうやって書き分けるだろ。それが一般的。
GNUが特殊だと思う。
0276デフォルトの名無しさん
2010/01/23(土) 10:34:47そうか?いたって一般的だと思うが
少なくともここにある規約は全部そうなってる
ttp://www.objectclub.jp/community/codingstandard/
0277デフォルトの名無しさん
2010/01/23(土) 12:07:05俺はそれでいいと思う。PythonとRubyの折衷案みたいだね。
r = obj.method1
s = r a, b
obj.method2 c, s, d
こんな3行があったとき、sを使わずにrの結果を直接method2に渡すと
r = obj.method1
obj.method2 c, r a, b, d
となる。
これをパースするのが難しそうな気がする。
0278デフォルトの名無しさん
2010/01/23(土) 13:44:15気にしてなかったけど、意外と多いね。
http://www.google.com/codesearch?q=while++lang:c
空白の有無で意味が変わるのは個人的には気持ち悪いけど、
俺が使う訳じゃないしな。
0279デフォルトの名無しさん
2010/01/23(土) 14:13:45http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Conditionals
http://lxr.linux.no/linux+v2.6.32/Documentation/CodingStyle#L181
http://cvsweb.netbsd.org/bsdweb.cgi/src/share/misc/style?rev=HEAD
> Space after keywords (while, for, return, switch).
http://httpd.apache.org/dev/styleguide.html
> There is a space between the keyword and the opening bracket.
Mozilla, Google, Linux, NetBSD, Apache はキーワードの後ろは
空白を空けるスタイルだった。コーディングスタイルと構文規則
では要求される厳密性が違うけどね。インデントの強制くらいなら
受け入れられ易いとは思うけど。
0280227
2010/01/23(土) 15:47:09その点は見逃していました。
たしかに(人間にとって)パースするのが難しいですね。
試しにRubyで試してみた所、
def a(*x)print"a";p x end;def b(*x)print "b";p x end;a 1,b 2,3
syntax error, unexpected tINTEGER, expecting kDO or '{' or '('
との事です。引数列の中では、関数呼出の括弧は省略不可なのでしょうか?
PEG文法は貪欲なアルゴリズムなので
a 1,b 2,3 は a(1,b(2,3)) になります。
これは罠になる事が多いでしょうか?
このようなコードはとても読みにくいとは思いますが、
そもそも書く方も混乱するので書かれにくく、
プログラムを書く時の罠にはならないかと思います。
>>273, >>275, >>276
GNUのコーディング規約はスペース開けるんですね。知りませんでした。
論点としては、
while の後ろにスペースを開けるのが一般的かどうかではなく、
関数名の後ろにスペースを開けない事が一般的かどうかですね。
これも、func (1)+2 という罠コードを書かないという風にすればいいんですが。
どちらも、RubyのようにWarningを出す等の処理をすれば良いですかね?
0281227
2010/01/23(土) 15:48:12>>268
すみません、適当を書きました。
手元のでは a(0)[1](2) みたいなののサポートも入ってたのですが、
今回は省略です。
>>269
矛盾というか、同じ論法で正反対の結論になってると言いたいわけですね。
それは前提となるコーディング規約が重要なのではないでしょうか?
私は二項演算子の前後に空白を入れるのはそんなに一般的でないと思っています。
皆さんはどうですか?
>>269,>>270
今論じてる、fun(foo,bar)とfun foo,bar の間の話に、
トークナイズ(字句解析)は関係ないと思ってるんですが、私の言葉の使い方は間違ってますか?
"fun(foo,bar);" => ['fun','(','foo',',','bar',')',';'] という処理の事を字句解析と言うと認識してるんですが。
0282デフォルトの名無しさん
2010/01/23(土) 19:05:04fun(foo,bar)とfun foo,barを同居させた奴が前スレにいたよ。
エロゲプログラマだったけど。
0283デフォルトの名無しさん
2010/01/23(土) 19:06:39来れも結構いるよ。
0284デフォルトの名無しさん
2010/01/23(土) 19:14:54>引数があれば関数呼び出しで、引数が無い場合は
>括弧の省略は不可という仕様です
これがおかしい
そんな半端に括弧を省略して何になる
a = call object.method
だろ
文法より意味論をまず確定しろ
0285デフォルトの名無しさん
2010/01/23(土) 19:15:22>少なくともここにある規約は全部そうなってる
>ttp://www.objectclub.jp/community/codingstandard/
それ、みんな
「Java コーディング標準(オブジェクト倶楽部バージョンを〜用に変換したもの・・・」
だから、全部同じスタイルになっててあたりまえだろw
>>279
Open source系は、キーワードの後ろにスペース入れる事が明記されてるのが多いね。
pearもそうだ。
0286デフォルトの名無しさん
2010/01/23(土) 19:36:359??の馬鹿の方がまだ良かったかな。
しかし、こんな素人にみんないつのまに優しくなったんだ?
0287デフォルトの名無しさん
2010/01/23(土) 19:40:290288デフォルトの名無しさん
2010/01/23(土) 19:40:31http://kenjikakera.asablo.jp/blog/2009/11/04/4676336#c
の様に構文を自由に変えられるコンパイラを作ってるんだから、
麻布と京大の名が泣くぞ。ちんこ。
0289デフォルトの名無しさん
2010/01/23(土) 19:47:40その後にマルチスレッドのコンパイラが出たのは、人格と能力はべつもんと知ったな。
0290デフォルトの名無しさん
2010/01/23(土) 19:50:17自己レス
カッコの後ろ->カッコの前。恥ずかしい…orz
0291デフォルトの名無しさん
2010/01/23(土) 19:57:45これが18年前に作られたそうだ。OO的にはダメダメだけどエロゲ程度で作るのなら関数型が分かり易くて良いだろう。
0292デフォルトの名無しさん
2010/01/23(土) 20:00:47makeを内蔵してマスター時のスピードを少しでも上げるんだとさ
0293デフォルトの名無しさん
2010/01/23(土) 20:03:160294デフォルトの名無しさん
2010/01/23(土) 20:03:45ネットでは人格が変わる人もいるから、そっちかもしれんが。
0295デフォルトの名無しさん
2010/01/23(土) 20:06:091 + 2*3
と書くと2*3を先に計算して
1+2 * 3
と書くと1+2を先に計算するって奴。
0296デフォルトの名無しさん
2010/01/23(土) 20:08:31それに比べて>>295は俺にはなじまん。
0297デフォルトの名無しさん
2010/01/23(土) 20:08:45は?
0298デフォルトの名無しさん
2010/01/23(土) 20:13:510299デフォルトの名無しさん
2010/01/23(土) 20:14:390300デフォルトの名無しさん
2010/01/23(土) 20:20:31APLもだっけ?
1 2 3 ADD MULがいいか
MUL(1, ADD(2, 3))がいいか
(MUL 1 (ADD 2 3))がいいか
((1 2 ADD) 3 MUL)
Lisp+Forthも面白いか。
でも世の中にはカンマと小数点が逆の国があるらしくて
そういう国の人はどう思うのだろうというのも時々
0301295
2010/01/23(土) 20:20:33採用している言語もほとんどないしね。
>>297
1+2*3
1 + 2 * 3
のように均等に分けた場合は演算子の優先順位で決まるらしい。
0302デフォルトの名無しさん
2010/01/23(土) 20:25:061 / 2+3 * 4 とか書くの?
空白多すぎて読み辛いよ・・
0303デフォルトの名無しさん
2010/01/23(土) 20:28:39>>302
空白の数で優先度が決まるのかw。
いっそ、空白やTABの数で演算子の種類が略
0304デフォルトの名無しさん
2010/01/23(土) 20:31:140305デフォルトの名無しさん
2010/01/23(土) 20:32:34>にはカンマと小数点が逆の国
フランス、スペイン、イタリア、ドイツあたりがそうらしい。
'.'の代わりにスペースを使う場合もあるとか。
0306デフォルトの名無しさん
2010/01/23(土) 21:01:14今でも慣れない、四則演算は小学校で習うから体に染みついてる
数値演算でバグだすとマジ悩む>>Smalltalk
0307デフォルトの名無しさん
2010/01/23(土) 21:13:02面白いなあと思ってたんだが、アレは元ネタがあるんだろうか
0308デフォルトの名無しさん
2010/01/23(土) 22:10:18二次元に数式置いて、近い順に演算するってのはどう?
三次元に拡張して、上の段が掛け算、下の段が割り算でもいいよ。
この球の中の総和、みたいな。
0309デフォルトの名無しさん
2010/01/24(日) 00:07:000310デフォルトの名無しさん
2010/01/24(日) 02:47:29whitespace
0311デフォルトの名無しさん
2010/01/24(日) 23:43:34http://www.scala-lang.org/node/118
これのこと?
0312デフォルトの名無しさん
2010/01/25(月) 08:32:47trifungeやると
0313デフォルトの名無しさん
2010/01/25(月) 13:54:25おまいは関数型言語をわかっていてそれを関数型と言ってるのか?
どっかのおかしな事典の「C言語は関数型言語」というトンデモを信じてないか?
0314デフォルトの名無しさん
2010/01/25(月) 14:03:040315デフォルトの名無しさん
2010/01/30(土) 07:37:00答えるのは難しい。
0316デフォルトの名無しさん
2010/01/30(土) 07:47:49古い定義だと「subroutine以外にfunctionを使える言語」なんでCを含むんだよね。
0317デフォルトの名無しさん
2010/01/30(土) 09:05:34何かを返す返さないで記述が違うのは
便利な気がする・・・basic
void 使え・・・c
ソース嫁・・・動的型付
0318デフォルトの名無しさん
2010/01/30(土) 09:09:08[要出典]
Cはsubroutineをfunctionと「呼んでいる」言語であって。
0319デフォルトの名無しさん
2010/01/30(土) 09:53:07それらが「関数型言語」と呼ばれていたのは聞いたことがない
0320デフォルトの名無しさん
2010/01/30(土) 10:11:12関数型ではなく実質的に手続き型言語と言えなくもない
0321デフォルトの名無しさん
2010/01/30(土) 10:22:57まあ、聞いたことないのが当たり前だと思う。
自分も最初に聞いたとき訳が分からなかったし。
あと、その訳語として「関数型言語」が主流だったどうかは知らない。
ごめん。
0322デフォルトの名無しさん
2010/01/30(土) 10:32:12具体的にその論文名を。
0323デフォルトの名無しさん
2010/01/30(土) 10:52:26何ぞと思って調べてみたら forth と z80 の解説書だった
俺もどこで見たか忘れたけど、Cを関数言語と呼んでた
記憶が・・・まぁ文脈というか時代背景によるよね > 用語の定義
0324デフォルトの名無しさん
2010/01/30(土) 10:58:59「関数型言語」の項を見てもらいたいのだが...
0325デフォルトの名無しさん
2010/01/30(土) 11:08:31論文は手元にないんで無理。
Webならhttp://www.liv.ac.uk/HPC/HTMLF90Course/HTMLF90CourseNotesnode52.htmlが近いかな。
むしろちょっと疑問なんだけど、
"functional language"に同綴り異義語があった
というのってそんなに興味深いのか。
0326デフォルトの名無しさん
2010/01/30(土) 11:19:10通りすがりの漏れが引用しますよ
p.294 関数型言語 の項より
「関数型言語(functional language) 関数型のプログラミング言語。
LISP、LOGO、APL、BCPL、B、Cなどがある」
0327デフォルトの名無しさん
2010/01/30(土) 11:22:51FORTRAN、COBOLは違うのか?
BASIC? 関数を言語仕様に入れただけで、分類が型が変わるのか?
アセンブラ?
0328デフォルトの名無しさん
2010/01/30(土) 11:58:430329デフォルトの名無しさん
2010/01/30(土) 12:27:44たぶんそれが日本でデマが流行ってる元凶。
時代によって変わったりなどしない。B も C も関数型じゃない。
>>325 も HPC の専門家らしいので、言語屋じゃない。
言語屋が C を functional などと言った例はないはず。
0330デフォルトの名無しさん
2010/01/30(土) 12:52:56ttp://ja.wikipedia.org/wiki/%E9%96%A2%E6%95%B0_%28%E6%95%B0%E5%AD%A6%29
俺解釈だと「処理が関数の変数と値に依存する言語」「独立して書かれている処理は独立している」だな。
0331デフォルトの名無しさん
2010/01/30(土) 13:02:29「その事実は万人が知っていてしかるべきか」という話になってしまっているが
なんにせよCもFortranも関数型言語ではないし
LISPにしても、延々とこんな話を続ける理由になるほど手続き型言語っぽくはない
0332デフォルトの名無しさん
2010/01/30(土) 13:03:14バカ
0333デフォルトの名無しさん
2010/01/30(土) 15:53:39「LISPは関数言語」というデマがいつからか
流行ったのが酷いと思うけど。
0334デフォルトの名無しさん
2010/01/30(土) 16:11:15根本的というのが曖昧すぎて、何とも言えないな。つまりどういう要素が根本的なのか。
0335デフォルトの名無しさん
2010/01/30(土) 16:24:300336227
2010/01/30(土) 17:59:100337デフォルトの名無しさん
2010/01/30(土) 18:22:260338デフォルトの名無しさん
2010/01/31(日) 08:20:21素朴には、すべてのプログラムが数学的な関数だけで構成されていること、だが、
これだとほとんどの言語が失格だな。
0339デフォルトの名無しさん
2010/01/31(日) 08:29:30下手するとHaskellぐらいしか満たせないw
0340デフォルトの名無しさん
2010/01/31(日) 10:14:20A言語をC言語に変換する
コンパイラ・スクリプトエンジンというよりは
テキスト処理の範疇なような気がするけれども
でも欠点があるから、技法として主流足りえない
あれか出力先の言語・ビルド環境による影響大
適用できる範囲が、自然と絞られざるを得ないとか
toy program というような捕らえ方が一般に正しい
反応なような気もする…
0341デフォルトの名無しさん
2010/01/31(日) 10:19:47なれない言葉使おうとするじぶんかっこ悪いorz
0342デフォルトの名無しさん
2010/01/31(日) 10:27:21初期の C++ は、C 言語へのトランスレータだった。テキスト処理で済むような
内容ではなかったけどね。
0343デフォルトの名無しさん
2010/01/31(日) 11:39:44でもCの再解釈分だけオーバーヘッドがある
D&Eを読むと、初期のC++処理系(Cfront)がトランスレータだったいせいで
生成コードの品質が悪いとか、本格的な言語ではないとか誤解されたと書いてあるが
>toy language というような捕らえ方が一般に正しい
真実どうなのかはともかく、多数の認識は今でもそうなのかも?
0344デフォルトの名無しさん
2010/01/31(日) 11:45:36今でもそうなのかは知らないが
0345デフォルトの名無しさん
2010/01/31(日) 11:48:35糞本だった。お前ら責任取れよ
0346デフォルトの名無しさん
2010/01/31(日) 11:55:57どの辺が糞なのか書いてないから責任とってあげない
0347デフォルトの名無しさん
2010/01/31(日) 13:25:000348デフォルトの名無しさん
2010/01/31(日) 13:41:31薄い割に説明はかなり噛み砕いてあるし、
かといって理論的な部分を無視してるわけでもない
もっとも、内容としては構文解析・yacc/lexの最低限の使い方で終わってるから
詳細は別途ドラゴンブックとかを頼らないといけない
その辺も含めて、巻末に関連書籍の紹介が載ってたはず
0349デフォルトの名無しさん
2010/01/31(日) 17:47:18レベルの本だから意味なくね?
0350デフォルトの名無しさん
2010/01/31(日) 18:42:04この本はそのレベルの人には非常に良い本だし、その良き本を糞本扱いできる程高度な知識を持つものなら手にとって数ページ眺めるだけで自分に必要ないことを理解するハズだよね?
それがわからないという事、つまり>>345の中の人は……(以下自粛
0351デフォルトの名無しさん
2010/01/31(日) 19:00:190352デフォルトの名無しさん
2010/01/31(日) 22:09:25真っ先に出てくると思ったのに。
0353デフォルトの名無しさん
2010/02/01(月) 03:45:350354デフォルトの名無しさん
2010/02/01(月) 13:01:04コンパイラの設計法にも関わる事だと思うけどな
そういうのを知らないとRubyみたいに仕様が破綻することになる
0355デフォルトの名無しさん
2010/02/01(月) 13:06:45破壊的リスト操作をラムダ算法で解説できるんですかあなたは?
0356デフォルトの名無しさん
2010/02/02(火) 11:59:29C#はラムダ式があるから関数型言語だ、ということにしたくないんだろうな。
無名関数はPerlにもある。
もう「値を返すサブルーチン」と同じくらい当たり前になってしまった。
0357デフォルトの名無しさん
2010/02/02(火) 12:17:130358デフォルトの名無しさん
2010/02/02(火) 13:26:550359デフォルトの名無しさん
2010/02/02(火) 13:42:28それはlambdaのない言語が言い訳するときのセリフ
0360デフォルトの名無しさん
2010/02/02(火) 17:10:190361デフォルトの名無しさん
2010/02/02(火) 22:19:210362デフォルトの名無しさん
2010/02/02(火) 23:29:26ほとんどの言語はチューリング完全
チューリング完全ということはチューリングマシンと同じ計算能力を持つ
チューリングマシンとラムダ計算は等価
よってほとんどの言語は関数型である
なんてことになって不都合とか
0363デフォルトの名無しさん
2010/02/02(火) 23:31:470364デフォルトの名無しさん
2010/02/03(水) 00:14:36意味の無い概念じゃないですか
還元とか意味が全くないし
0365デフォルトの名無しさん
2010/02/03(水) 08:34:340366デフォルトの名無しさん
2010/02/03(水) 17:06:29上向き構文解析って下向きより遅いの?
0367デフォルトの名無しさん
2010/02/04(木) 06:44:510368デフォルトの名無しさん
2010/02/04(木) 06:56:200369デフォルトの名無しさん
2010/02/05(金) 22:54:420370デフォルトの名無しさん
2010/02/07(日) 15:21:490371デフォルトの名無しさん
2010/02/09(火) 00:39:140372デフォルトの名無しさん
2010/02/10(水) 16:53:190373デフォルトの名無しさん
2010/02/11(木) 19:45:00これ良書かおしえろ
0374デフォルトの名無しさん
2010/02/11(木) 20:43:050375デフォルトの名無しさん
2010/02/13(土) 09:02:14良書です
0376デフォルトの名無しさん
2010/02/13(土) 09:24:04嘘つくんじゃねーよ
ANTLR使い方書いてあるだけの
糞本じゃねーかよ
0377デフォルトの名無しさん
2010/02/14(日) 09:29:240378デフォルトの名無しさん
2010/02/14(日) 09:36:020379デフォルトの名無しさん
2010/02/15(月) 18:41:31> でもCの再解釈分だけオーバーヘッドがある
そんな一般論は言えない。
0380デフォルトの名無しさん
2010/02/16(火) 13:36:59たまたまCanalが悪かっただけさ。
つかANTLRで生成されたコード読めばいいだけじゃないか。
それにコードはdmozなりsf.netなり探せばあるだろ。まったく。
Nils M Holm氏による著書
ttp://www.bcl.hamilton.ie/~nmh/t3x.org/zzz/
Parsing Techniquesで知られるDick Grune氏のサイト
ttp://www.cs.vu.nl/~dick/
ダウンロード先 : ftp://ftp.cs.vu.nl/pub/dick/
これでもbomb!と抜かすなら自分の力量が足りないか考えることだな。
0381デフォルトの名無しさん
2010/02/22(月) 17:10:320382デフォルトの名無しさん
2010/02/26(金) 15:25:43Pythonみたいなインデント指向の言語を字句解析・構文解析するアプローチを教えてください
0383デフォルトの名無しさん
2010/02/26(金) 15:36:09lexierでインデントを見て、begin、end的なダミーのスコープ限定子を出力すればいいんじゃね
0384デフォルトの名無しさん
2010/02/26(金) 15:52:22どの言語だか忘れたが、
一旦、インデント数をひとつのパラメータ付き構文要素として、構文木に埋め込み、
これをもう一度構文解析して、構文木を再構成する実装を見たことがある。
実際はステートとして、現在のインデント数を持っておき、
>>383のように、ソースには現れない隠れ構文要素を構文木に構成しながら、
解析するのが簡単だと思う。
0385デフォルトの名無しさん
2010/02/26(金) 21:41:220386デフォルトの名無しさん
2010/02/26(金) 23:34:26明日会社で自慢しよう
0387デフォルトの名無しさん
2010/02/27(土) 00:08:220388デフォルトの名無しさん
2010/02/27(土) 00:11:28Cにキャリー機能を追加してライブラリと最適化を強化する方が良いのでは?
0389デフォルトの名無しさん
2010/02/27(土) 02:00:25だれでも最初はそう思うんだよね
でも実際やってみるとほとんど問題ないってわかる
0390デフォルトの名無しさん
2010/02/27(土) 02:05:56ちょっと長めのコードをコピペすると…
0391デフォルトの名無しさん
2010/02/27(土) 02:07:510392デフォルトの名無しさん
2010/02/27(土) 02:16:340393デフォルトの名無しさん
2010/02/27(土) 02:28:29ネストが深くなるだけの構造だとキレイだけど。
0394デフォルトの名無しさん
2010/02/27(土) 04:21:33少しでも気楽にコピペで作るときにインデントを気にし、
良いこと少ないね
0395デフォルトの名無しさん
2010/02/27(土) 04:53:40pretty printできないから嫌い
0396デフォルトの名無しさん
2010/02/27(土) 05:25:30pythonはモジュール化が簡単だからそこは問題にならない
>>393
try: except: else: finaly: で問題なし
>>394
お前の能力が低いことはわかった
0397デフォルトの名無しさん
2010/02/27(土) 07:09:58さあ、何から議論しようか。坊や。
人間工学か?
それとも実行スピードを無視した方法か?
0398デフォルトの名無しさん
2010/02/27(土) 07:16:580399デフォルトの名無しさん
2010/02/27(土) 07:18:060400デフォルトの名無しさん
2010/02/27(土) 07:22:300401デフォルトの名無しさん
2010/02/27(土) 07:27:11ちんこの前のエロゲの言語が本分だったな。
0402デフォルトの名無しさん
2010/02/27(土) 07:28:56このスレ、もしかして馬鹿の集まりじゃないかっておもったよw
0403デフォルトの名無しさん
2010/02/27(土) 08:46:140404デフォルトの名無しさん
2010/02/27(土) 08:57:06アーキテクチャによっては無いんじゃなかったっけ?
移植性を落とさないのだろうか
0405デフォルトの名無しさん
2010/02/27(土) 13:02:17コードの字面上の話だから、モジュールは関係無いよ。
コードを書いていて、一つのブロックの行数が多く、ネストも深くなってしまった時に、
処理を別の関数に外出ししようとすれば必ずコピペは発生する物だし、そういう時に
インデントの修正は避けられない。
技術の良い面だけじゃなく、悪い面も認められないとね。
0406デフォルトの名無しさん
2010/02/27(土) 13:41:54try: except: else: finaly: で回避できるの?
ネストしたブロックから抜けるときは依然としてインデントを合わせなきゃいけない気がするけど?
0407デフォルトの名無しさん
2010/02/27(土) 16:04:33そういう意味ではHaskellとかPerlは基地外。
0408デフォルトの名無しさん
2010/02/27(土) 16:06:310409デフォルトの名無しさん
2010/02/27(土) 16:08:300410デフォルトの名無しさん
2010/02/27(土) 16:11:15せめてリスト操作に副作用ありとなしの関数を両方用意して欲しいな。
0411デフォルトの名無しさん
2010/02/27(土) 16:17:14副作用あり:list.reverse 副作用なし: reversed
これでは駄目なのか?
0412デフォルトの名無しさん
2010/02/27(土) 16:17:44全然マンセーじゃないみたいだが…
http://groups.google.com/group/unladen-swallow/browse_thread/thread/4edbc406f544643e
0413デフォルトの名無しさん
2010/02/27(土) 16:26:38when operating at Google's scale
0414デフォルトの名無しさん
2010/02/27(土) 16:44:34読んだけど、元々速度が要求される場面ではPythonは用いてないと思うし、そもそもそれは憶測の域を出ないよね。
0415デフォルトの名無しさん
2010/02/27(土) 16:51:120416デフォルトの名無しさん
2010/02/27(土) 16:54:050417デフォルトの名無しさん
2010/02/27(土) 22:20:22>Cにキャリーをいれるのが最適のアセンブラに成ると思っている。
64bit版TL/1まだ〜?
0418デフォルトの名無しさん
2010/02/28(日) 00:29:23Cには関数GOTOがないんでいまいち
0419デフォルトの名無しさん
2010/02/28(日) 09:00:270420デフォルトの名無しさん
2010/02/28(日) 09:05:50関数GOTOってなんだ? setjump, longjump?
0421デフォルトの名無しさん
2010/02/28(日) 09:08:030422デフォルトの名無しさん
2010/02/28(日) 09:18:13BASICでいうと
GOSUB
GOSUB
RETURN
RETURN
こういう入れ子になるのを
GOSUB
GOTO
RETURN ← この RETURN でいっぺんに戻る
みたいな
0423デフォルトの名無しさん
2010/02/28(日) 09:20:44call a
call b
ret
を
call a
jmp b
ではなくて。これはコンパイラレベルで最適化してくれるよ。
0424デフォルトの名無しさん
2010/02/28(日) 10:02:37C言語の場合、普通、関数の入り口でフレームを伸ばすので、ごく特殊な場合しか
最適化できないのが普通かと。
関数をまたいだGOTOはGCCなら独自拡張のLabels as Valuesを使ってポインタに
してやればできるね。できるってだけで何が起こるかはわからないけど。
0425デフォルトの名無しさん
2010/02/28(日) 10:12:14末尾再帰だけやってくれれば十分。ま、それなら自分でgoto文入れればいいんだけど。
0426デフォルトの名無しさん
2010/02/28(日) 10:35:24え、goto、gosubってbasicじゃなかったの?
0427デフォルトの名無しさん
2010/02/28(日) 11:11:300428デフォルトの名無しさん
2010/02/28(日) 11:16:50コンパイラはそうしてるだろ
0429デフォルトの名無しさん
2010/02/28(日) 11:18:550430デフォルトの名無しさん
2010/02/28(日) 11:22:56CALLは、PUSHとJUMPの短縮表現
8086に至っては、FAR CALLよりもPUSH JUMPの方が速かった
0431デフォルトの名無しさん
2010/02/28(日) 11:38:270432デフォルトの名無しさん
2010/02/28(日) 11:39:570433デフォルトの名無しさん
2010/02/28(日) 14:18:22いろんなスクリプト言語に変換できるという機能に特化した
スクリプト言語を以前見かけたような気がするんだけど、失念してしまった。
誰か知らない?
0434デフォルトの名無しさん
2010/02/28(日) 14:24:120435デフォルトの名無しさん
2010/02/28(日) 19:39:59この前のエロゲの奴?
0436デフォルトの名無しさん
2010/02/28(日) 19:47:20別人
0437デフォルトの名無しさん
2010/02/28(日) 21:21:13haXe?
0438デフォルトの名無しさん
2010/02/28(日) 21:23:56http://pc12.2ch.net/test/read.cgi/tech/1238847817/
すごいな、まだ落ちてないでやんの。
0439デフォルトの名無しさん
2010/03/02(火) 21:03:49>>438
おー、これこれ! サンクス。
.NETにはまだ対応しないんかのう。
ゲームの演出スクリプトをコンバートして.NET FrameworkのDLLにコンパイルするシステムを作ったはいいが、
自動生成して巨大化したクラスの読み込みに秒単位で時間かかって意味ない罠。
まさかJITコンパイラがパフォーマンスの足をひっぱるとは思わんかった。
インタプリタ実装に逆コースだな……とほほ。
0440デフォルトの名無しさん
2010/03/02(火) 21:12:550441デフォルトの名無しさん
2010/03/02(火) 22:05:32つ ngen
0442デフォルトの名無しさん
2010/03/03(水) 04:26:47その用途だと中間言語コンパイラが一番だと思うが。
前スレのエロゲプログラマみたいに一瞬でコンパイル出来るのならインタプリタでも良いが、
前方参照とか、テキストでやってるとホットスポットになるぞ。
0443デフォルトの名無しさん
2010/03/03(水) 20:43:52LCG使えば速いよ
直接IL吐かなくてもDLRのExpression Tree使えば超簡単に使える
0444デフォルトの名無しさん
2010/03/03(水) 21:09:52>>443
ううーん。C#+DLR単体で開発してるならともかく、IronPython込みで使ってるので
IL吐かせたってほとんど意味が無いんだ。
どうせならPythonスクリプトを吐かせて直接実行させた方が早い、ということになる。
いずれにせよクラスの実体の読み込み時にJITコンパイルが実行されて、
しかもコード自体はガベージコレクションされないと来た。
大元のスクリプトから比べたら、JIT化されたコードって5〜6倍のサイズになってるんだぜ。
0445デフォルトの名無しさん
2010/03/03(水) 21:24:38IronPythonだったらプリコンパイルしたってどうせランタイム同梱しないと動かないでしょ
それならコードはちゃんとGCされるし
0446デフォルトの名無しさん
2010/03/03(水) 22:06:30それはインタプリタと一体どう違うのよ。
0447デフォルトの名無しさん
2010/03/03(水) 22:32:09ILにコンパイルされたあとJITで実行されるから実行速度はDLLにプリコンパイルしておくのと変わらない
動的にコンパイルするなら一度に全部読みこむ必要はないからILへのコンパイルのコストも
そんなに問題にはならないんじゃないかな
0448444
2010/03/03(水) 22:37:04今のところ、構造化したデータをシリアライズしてDBに入れておき、
読み込み時にデシリアイズしながら固定的なコードで動けるようにしようと思ってる。
元々自動生成してたコードは非常に定型的なものだったからね。
0449デフォルトの名無しさん
2010/03/03(水) 23:49:08ずいぶん前にコンシューマ用で同じような事をした
そのときはメモリのフットプリントを最小にするのが目的だったのでスクリプト->バイトコードコンパイラでバイトコードインタプリタを実装って方式だった
バイトコードの環境をPC上でエミュっておくとスクリプターのコンソールでテストやデバッグができるので開発時間の短縮もできた
今時のマシンだったらその場でコンパイルしても良いのじゃないかとおもったりするんだけどどうなんだろう?
0450デフォルトの名無しさん
2010/03/04(木) 00:00:29用途に応じてコンパイラを作り直せば、
1つのゲームスクリプトでマルチプラットフォームに対応できる。
今回はPC向けだからRDB化するけど、DS向けとかだったら
バイトコードっぽくコンパクトなバイナリ構造にするのがいいと思う。
もちろんコンパイラもコンパイルされたスクリプトの実行環境も
全部自分で用意するんですがねorz
0451デフォルトの名無しさん
2010/03/04(木) 00:25:58全て解決するらしいし
難しいことを考えるのはバカが
頭のいいところを見せようとしているだけだな
0452デフォルトの名無しさん
2010/03/04(木) 01:51:150453デフォルトの名無しさん
2010/03/05(金) 02:13:340454デフォルトの名無しさん
2010/03/05(金) 02:24:32表記式も簡略化して、r20>=10とかr5==r10だけにして、
式もLET、or、not、sub、add、sto、lodの命令にしちゃえば楽。
評価式と式は逆ポーランドで書けるようにしても、そんなに大変じゃない。
0455デフォルトの名無しさん
2010/03/05(金) 03:26:06それじゃBASE-x86や。
0456デフォルトの名無しさん
2010/03/05(金) 05:25:11マクロを実装して欲しいとのことだが、MASM並の者を要求してきてる。
プログラマ上がりのプロデューサーだから仕方ないが、
MASM並のマクロがどれだけ大変か分かっていない。
文字セットの問題もあるし。ヘタに知識があると手に負えない。
しょうがないのでダメ元でこの前のエロゲプログッラマにプリプロセッサのソースを
売って貰えないか聞いてる最中。
0457デフォルトの名無しさん
2010/03/05(金) 06:41:25コンパイルスピードは5万行を1秒だってさ。
0458デフォルトの名無しさん
2010/03/05(金) 19:29:52マクロも先読みして展開を繰り返している。
凄く速い。50万行1秒くらいのコンパイルスピードだった。
とにかく凄い。このまま自社用に改造していただけるか交渉中。
0459デフォルトの名無しさん
2010/03/05(金) 19:37:000460デフォルトの名無しさん
2010/03/05(金) 21:29:060461デフォルトの名無しさん
2010/03/05(金) 21:33:550462デフォルトの名無しさん
2010/03/05(金) 22:31:37C#のように機械的に処理できる定型的な構文を用意して
分割コンパイルできるように考えるのが本道なんじゃないか。
0463デフォルトの名無しさん
2010/03/05(金) 22:35:360464デフォルトの名無しさん
2010/03/05(金) 22:39:54> C#のように機械的に処理できる定型的な構文を用意して
意味分からん
0465デフォルトの名無しさん
2010/03/05(金) 22:53:310466デフォルトの名無しさん
2010/03/05(金) 22:58:51アセンブラなんかでカリカリにチューンするのが大事なのではなく、
コンパイルしやすい構文を用意することが大事だ、ということ。
0467デフォルトの名無しさん
2010/03/05(金) 23:08:06コンテキストキーワードだらけだし
0468デフォルトの名無しさん
2010/03/05(金) 23:28:530469デフォルトの名無しさん
2010/03/06(土) 00:12:080470デフォルトの名無しさん
2010/03/06(土) 00:16:48パースが簡単なのは、PASCALやBASIC、LISP。
0471デフォルトの名無しさん
2010/03/06(土) 00:28:390472デフォルトの名無しさん
2010/03/06(土) 01:04:27普通じゃないっぽいけど、実装は簡単なの?難しいの?
0473デフォルトの名無しさん
2010/03/06(土) 01:12:09その都度マッチングすれば良いだけじゃないの。
0474デフォルトの名無しさん
2010/03/06(土) 01:42:10あー、あれか?途中でSQLやXMLなどが書けるからとか?
0475デフォルトの名無しさん
2010/03/06(土) 02:12:19あと、俺はエロゲじゃない。
macroは#define程度にして自分で作ることにした。
0476デフォルトの名無しさん
2010/03/06(土) 02:14:31ゴメン間違えた。
0477デフォルトの名無しさん
2010/03/06(土) 02:17:410478デフォルトの名無しさん
2010/03/06(土) 02:19:250479デフォルトの名無しさん
2010/03/06(土) 02:31:370480デフォルトの名無しさん
2010/03/06(土) 07:11:190481デフォルトの名無しさん
2010/03/06(土) 11:06:14やはり簡易式で作ろうと思う。マクロも完全置換の#defineで。
みなさん、#defineを実装するときには文脈を見てますか?
0482デフォルトの名無しさん
2010/03/06(土) 11:07:16すまん。
0483デフォルトの名無しさん
2010/03/06(土) 22:19:57>>481
m4マクロを先に勉強しといたら?
0484デフォルトの名無しさん
2010/03/06(土) 23:50:14後方互換>>>バージョン管理>>>>>(越えられない壁)>>>>>>>>言語仕様の簡潔さ
だから仕方ない
0485デフォルトの名無しさん
2010/03/06(土) 23:55:06m4マクロのソースならどうにかなりそうです。ありがとう御座いました。
0486デフォルトの名無しさん
2010/03/07(日) 00:17:37大規模開発に耐えるよう厳格な規格で作られたC#やJavaのような言語の仕様が簡潔なものに収まるはずがない。
でもC#の開発効率の良さやコンパイラの鬼速さは本物。
あれはいいものだ。
0487デフォルトの名無しさん
2010/03/07(日) 00:28:19C#の文法が複雑なのは既存のコードの互換性を維持しながら無理矢理拡張しまくってるから
0488デフォルトの名無しさん
2010/03/07(日) 00:32:33> C#の文法が複雑なのは既存のコードの互換性を維持しながら無理矢理拡張しまくってるから
C#のどこらへんが複雑? パースが難しいところもあるが、文法自体は単純だと思うが。
0489デフォルトの名無しさん
2010/03/07(日) 00:41:030490デフォルトの名無しさん
2010/03/07(日) 00:41:240491デフォルトの名無しさん
2010/03/07(日) 00:47:44IDEでの話か?
0492デフォルトの名無しさん
2010/03/07(日) 00:55:210493デフォルトの名無しさん
2010/03/07(日) 01:03:180494デフォルトの名無しさん
2010/03/07(日) 01:03:360495デフォルトの名無しさん
2010/03/07(日) 01:33:59>C#のspaced keywordは正気の沙汰とは思えない。
spaced keywordってなんじゃらほい
名前空間周りの実装のことかな…
http://ufcpp.net/study/csharp/sp_namespace.html
0496デフォルトの名無しさん
2010/03/07(日) 07:16:59理解できるかどうかわからんがこことか。
http://blogs.msdn.com/slippman/archive/2003/12/03/58443.aspx
0497デフォルトの名無しさん
2010/03/07(日) 07:32:01C#で具体的にどこ?
0498デフォルトの名無しさん
2010/03/07(日) 08:53:35�dくす。元々はmixinみたいなことをやりたかった
>At the same time, it allows users of the new functionality to have a
>first-class experience of the additional language feature something
>we felt was missing from the original language design.
#define value class class
けど副産物として
>It literally pairs an existing keyword with a contextual modifier separated
>by a space. The pair is treated as a single unit, such as value class, rather
>than as two separate keywords.
spaced keyword も考案されたと、ふむ
0499デフォルトの名無しさん
2010/03/07(日) 09:02:57http://msdn.microsoft.com/ja-jp/library/88c54tsw(VS.80).aspx
>シール メソッドは基本クラスのメソッドをオーバーライドしますが、それ自体は
>どの派生クラスでもオーバーライドされません
多重継承周りの話だろうおそらく...
0500デフォルトの名無しさん
2010/03/07(日) 11:57:450501デフォルトの名無しさん
2010/03/08(月) 00:09:34そういった意味では構文の拡張そのものは大したこと無さそうだね>spaced keyword
むしろ拡張されるまで従来aliasやyieldが変数名として認められてたので
そういったレガシーなコードとの共存が大変そうだ。
0502デフォルトの名無しさん
2010/03/08(月) 00:33:02予約語を増やすことがあるJavaとは違ってC#の言語使用を拡張する際は
過去のコードがそのままコンパイルできることが最優先されるので
予約語を増やさずにキーワードを増やすという無茶な事をしている結果
0503デフォルトの名無しさん
2010/03/08(月) 00:37:310504デフォルトの名無しさん
2010/03/08(月) 00:41:22馬鹿相手の商売はそれでは済まない。
0505デフォルトの名無しさん
2010/03/08(月) 12:02:03foreach (var var in in) { yield return in.yield; }
試してないけど多分通る
0506505
2010/03/08(月) 12:04:530507デフォルトの名無しさん
2010/03/08(月) 12:05:030508デフォルトの名無しさん
2010/03/08(月) 18:38:110509デフォルトの名無しさん
2010/03/12(金) 20:34:53挙動が変。cursorが進まず無限ループになったりする。もう限界。
どこかサンプルあったら教えてください。
0510デフォルトの名無しさん
2010/03/12(金) 20:54:010511509
2010/03/13(土) 09:03:33BOMなしだと動いた。3日悩んだ。
0512デフォルトの名無しさん
2010/03/13(土) 17:58:080513デフォルトの名無しさん
2010/03/19(金) 00:22:420514デフォルトの名無しさん
2010/03/19(金) 07:06:310515デフォルトの名無しさん
2010/03/19(金) 08:33:340516デフォルトの名無しさん
2010/03/19(金) 08:39:03元ソースや中間データとしてならともかく、
プレーンテキストでもメガ単位になるんだぞ、あれ。
0517デフォルトの名無しさん
2010/03/19(金) 08:43:110518デフォルトの名無しさん
2010/03/19(金) 08:46:310519デフォルトの名無しさん
2010/03/19(金) 08:49:320520デフォルトの名無しさん
2010/03/19(金) 10:10:520521デフォルトの名無しさん
2010/03/19(金) 10:16:180522デフォルトの名無しさん
2010/03/19(金) 10:32:38なんかド素人のゲーヲタ視点っぽい。
0523デフォルトの名無しさん
2010/03/19(金) 20:39:54XMLのパーザ簡単じゃないと思うけどなぁ。
セパレーターを調整したS式が一番良いと思う。
0524デフォルトの名無しさん
2010/03/19(金) 22:03:160525デフォルトの名無しさん
2010/03/19(金) 22:15:40wikiやTeXぐらいの記法が限界なんだろうか?
0526デフォルトの名無しさん
2010/03/19(金) 22:36:02汎用のパーサを使わなくても(デ)シリアライザに直接食わせられるのが魅力かも。
オレはスクリプト記述の用途としては使わないが、
スクリプトの文法定義にXMLをコンパイラの設定ファイルとして使ってるよ。
S式はどーだろ?
0527デフォルトの名無しさん
2010/03/19(金) 23:46:36ライブラリが充実していればそうだけど、パーザを自分で組むとしたらXMLは無駄に複雑過ぎるよ。
要素と属性値みたいに無駄に種類が多かったり、終了タグに名前を書かなきゃいけないとか……
S式が嫌われているのは
・グループ化で使っている()が字面として強い
・セパレータとしてスペースが使われているから、普通の英文と相性が悪い
辺りだと思うんだけど、これを改善すればずいぶんと受けが良くなるんじゃないのかな?
昔こんなの作ったけど、なかなか悪くなかったと思う。XMLと相性も良かったし。
|要素名;要素の中身|:
(|を表現するときは||を使う)
0528デフォルトの名無しさん
2010/03/20(土) 00:23:25そもそもXMLはシリアライザやテンプレートエンジンに
吐かせるかしかせず、手では触らないことにしている。
XMLは静的型付き言語、JSONやYAMLは動的型付言語と相性がいいという印象。
>|要素名;要素の中身|:
悪くないんじゃないかな。縦棒は比較的使用頻度が少ない記号だし。
オレは
[コマンド名 param1=arg1 param2=arg2]
の形式にしてる。計算式は原則としてスクリプト中では使用させない。
これでも案外実用になる。
0529デフォルトの名無しさん
2010/03/20(土) 01:10:13> 要素と属性値みたいに無駄に種類が多かったり
冗談だろ?
0530デフォルトの名無しさん
2010/03/20(土) 01:35:13マジ、マジ。属性値は本質的に制限付き要素なんだけど、わざわざ構文分けて別物にするほどのものじゃ無いよ。
『<element>属性値</element>なんて書きたくないよ』なんて思うかもしれないけど、それは要素の表記が
重すぎるのが問題なわけで。
0531デフォルトの名無しさん
2010/03/20(土) 01:42:37plistみたいにやりたければ、どんどんやればいい。
XMLの問題は「構文が単純すぎて」冗長になること。
組み込みタイプとリテラル表現がないのも一因。
0532デフォルトの名無しさん
2010/03/20(土) 02:10:00やっぱりXML使うんだったらライブラリ必須じゃない?
0533デフォルトの名無しさん
2010/03/20(土) 07:21:11「=」を「:」にすればObj-Cだな。
0534509
2010/03/20(土) 08:24:31re2c+bisonでAST作成までだいたい出来たところまで来ました。
この先の最適化ってところが、まだ良くわかりません。
解説しているサイトとか、参考になりそうな所を教えてください。
(constant同士の演算くらいしか思いつきません)
0535デフォルトの名無しさん
2010/03/20(土) 09:13:01とりあえず中田先生の「コンパイラの構成と最適化」は見た?
0536デフォルトの名無しさん
2010/03/20(土) 09:18:480537デフォルトの名無しさん
2010/03/20(土) 09:55:28最適化は後回しにした方がいいと思うけど、いずれにせよASTから中間言語に直す方がいいな。
命令型言語なら3番地コード
大体どの教科書にも最適化は三番地コードに対するアルゴリズムとして書いてある
0538デフォルトの名無しさん
2010/03/20(土) 11:23:49どうせ最初から作り直しになるんだけど
0539デフォルトの名無しさん
2010/03/20(土) 11:35:21最適化なんかやりようがない
0540509
2010/03/20(土) 12:04:43>535
>コンパイラ作ってるの?
いえ、今考えているのは仮想マシン書いてバイトコード実行、って
感じのスクリプトエンジンです。スタックマシンていうのが小さく
書けるみたいくらいの知識しかなくて・・・
なるほど・・・。とりあえず本買ってみます。
0541デフォルトの名無しさん
2010/03/20(土) 12:11:590542デフォルトの名無しさん
2010/03/21(日) 02:03:33中間言語のニーモニックを多少最適化することより、
仮想マシン自体の性能アップの方が遥かに大事だよ。
ニーモニックの最適化が重要になるのは、吐き出すのがネイティブコードの場合だね。
0543513
2010/03/21(日) 22:55:18XMLでスクリプト書く場合の負荷については
能力の低いマシンならともかく、PC上でのプログラムだからそんなに性能を気にすることはなかった。
パーサーは自作なんて無理なので既成のを使用。
XML全体と同じ内容の木構造データにして実行する方式
(バイトコードとか仮想マシンを作るような知識はないので)
なので、実行はそれなりに速いと思うけど
ファイルサイズが大きくなると、最初の読み込みに時間がかかってしまいそう。
メリットは妥当性検証のあるエディタが使える事。実行する前にエラーが分かるのって大きい。
0544デフォルトの名無しさん
2010/03/21(日) 23:14:43>ファイルサイズが大きくなると、最初の読み込みに時間がかかってしまいそう。
試してないのかね。
5MBぐらいのスクリプト作って読ませてみれ。
0545513
2010/03/21(日) 23:58:08そんな大きいのは試した事ない・・これから作って試すわ。
150KBぐらいのがあるけど、それだとCeleron 1.4Ghzで40msぐらい。
150KBで単純に40msずつ増えていくとして、5MBだと1350msぐらいかな。
こんな感じの構造にしているんだけど、block直下にある要素をコマンドとして実行させたり、
クリック待ちなどで中断するのは簡単なんだけど(要素のインデックスを保存して行ってる)、
ifの中でクリック待ちで中断するような時はどうすりゃいいんだろう・・
if文の中まで実行しなくちゃいけないし、セーブで途中の要素から実行しなくちゃいけないときはどうするんだろう。
中断すること考えなければ簡単なのに。
読み込み時に、XMLの要素全部にIDを割り当てて、ロード時はそれをもとに再開するとかだろうか。
<function name="main">
<element param="1"/>
表示するテキスト
<if expr="a=6">
変数aが6のときの処理
<else>そうでないとき</else>
</if>
</function>
0546デフォルトの名無しさん
2010/03/22(月) 06:17:07今のプログラマはアリモノを使いすぎるんじゃない?
0547デフォルトの名無しさん
2010/03/22(月) 07:59:270548デフォルトの名無しさん
2010/03/22(月) 08:08:42はまったときや改編時は、自己コードじゃないと大変そうだね。
あと、実行スピードはスクラッチに負けるよね。
JAVAとか使ってると遅くて敵わないね。
0549デフォルトの名無しさん
2010/03/22(月) 08:20:35多数の人間が使っているコードなら実行スピードもむしろ最適化
されてると思うけど。実装スピードは格段に速くなる訳だし、
自前主義に拘る理由は無いでしょ。
0550デフォルトの名無しさん
2010/03/22(月) 08:30:06基礎ができている/できてないことと、有りモノを使うかどうかの判断は
関係ありませんね。
材木を山で切ってくることから始める大工しか、基礎ができてない、
なんて考える人のことを「バカ」と言います。
> JAVAとか使ってると遅くて敵わないね。
使ってない奴の妄想だから相手にしないほうがいいよ。
0551デフォルトの名無しさん
2010/03/22(月) 08:35:48ブラックボックスで困るのは事実だろ。
あとJAVAがいくら頑張っても前のエロゲプログラマのスピード(50000行を1秒でコンパイル)には敵わないだろ。
エロゲプログラマにコンプレックスでも持ってるのか?
今は遅いネットブックが2割をしめるんだぞ。
0552デフォルトの名無しさん
2010/03/22(月) 08:37:400553デフォルトの名無しさん
2010/03/22(月) 08:40:20>ブラックボックスで困るのは事実だろ。
オープンソースの物を使うという発想は無いのかな
ちゃんとドキュメントも整備されている物もあるよ
0554デフォルトの名無しさん
2010/03/22(月) 08:44:530555デフォルトの名無しさん
2010/03/22(月) 08:47:19あれが単純な言語仕様に見えたのなら、お前の目は節穴だよ。
>>553
そろってるものもある、だろ?
無い物はソースから読み直しだ。それでも効率はブラックボックスの方が上だと思うが、
至高のコンパイラスレで技術力を言及しないのはどうしてだ?
前のエロゲ屋は音声も画像もシナリオも独自圧縮と書いてたぞ。
それでも既存の物を使う方が優秀というのか?
0556デフォルトの名無しさん
2010/03/22(月) 08:49:560557デフォルトの名無しさん
2010/03/22(月) 08:53:560558デフォルトの名無しさん
2010/03/22(月) 09:06:47それと、エロゲの人は低スペックでも動くようにチューンしてるだけだと思う。
様は適材適所で、スピードを求められないのならYACCとLEXを使えば良いだけだと思う。
たしかに技術力の向上のためにスクラッチから作るのも趣味としてはありだとは思うけど、
開発効率と実行スピードのどちらが求められるかは現場次第。
0559デフォルトの名無しさん
2010/03/22(月) 09:11:190560デフォルトの名無しさん
2010/03/22(月) 09:13:27コンパイラにとっての言語の単純さってのは
人間の感じるものとは異なるということさ
0561デフォルトの名無しさん
2010/03/22(月) 09:15:48>至高のコンパイラスレで技術力を言及しないのはどうしてだ?
技術は『使いどころ』が重要だから。
何にでも技術力を投入すれば良いという物でもない。
0562デフォルトの名無しさん
2010/03/22(月) 09:37:45でも、圧縮関連の技術を自社開発にしているところは純粋に凄いな。認めるべきだと思う。
>>561
この人はそこが技術の使い所と思ったんだろう。
>>560
前のエロゲ屋のコンパイラは十分複雑だと思うが。
0563デフォルトの名無しさん
2010/03/22(月) 09:40:26自前でやる意味があるのは枝葉末節の細かい部分だけ。
0564デフォルトの名無しさん
2010/03/22(月) 09:41:55スレの内容を逸脱してる。
0565デフォルトの名無しさん
2010/03/22(月) 09:43:180566デフォルトの名無しさん
2010/03/22(月) 09:44:06ロースペックなマシンに合わせて展開スピードをあげ、マスターに向けて圧縮スピードを上げている。
このエロゲ会社独自だろ?
0567デフォルトの名無しさん
2010/03/22(月) 09:47:12どうしてそれだけで独自だと分かるの?
既存の技術を組み合わせることで圧縮効率を上げるってのはよくあることだけど
0568デフォルトの名無しさん
2010/03/22(月) 09:49:05その通り。
>>566
長いエロゲ屋歴でそういう風にしたんだろ。
去年は新作6本、DL12本(?)作ってる会社だから、他の会社に当てはめられない。
0569デフォルトの名無しさん
2010/03/22(月) 09:50:57本人かブログかで独自圧縮といってただろ。
信じるか信じないかは自由だが。
0570デフォルトの名無しさん
2010/03/22(月) 09:52:10そんなに作ってるのか?
0572デフォルトの名無しさん
2010/03/22(月) 09:59:21たとえば gzip の -1, -2, ..., -9 オプションですな。
圧縮処理の対象とするブロックの大きさを加減することにより、必要とするメモリ量+計算量と、
圧縮性能のトレードオフを加減する。
情報理論的にごくあたりまえの話ですが何か?
0573デフォルトの名無しさん
2010/03/22(月) 10:00:00そりゃ本数出すためならプログラむくむわな。
0575デフォルトの名無しさん
2010/03/22(月) 10:04:180576デフォルトの名無しさん
2010/03/22(月) 10:06:00単純にもっと昔に理論は確立してたからじゃないか?
実装もASMとC++だったよな。古い言語だ。
0577デフォルトの名無しさん
2010/03/22(月) 10:07:15し続けてるのはすごいな。
OpenBSD が「半年ごとにリリース版を出す」を10年続けているのを知った時も
すごいと思ったが。
0578エロゲ屋
2010/03/22(月) 10:08:48うるさいw
でも、この会社の評判は流通が必ず言ってくるくらい良いんだよな。
マスターが確実でバグはないって。延期とバグがつきものの俺らはいつも言われるw
0579デフォルトの名無しさん
2010/03/22(月) 10:11:38やっぱり流通って口出してくるんですね。
エロゲ界の摩訶不思議です。
どういう仕組みなんですか?
0580デフォルトの名無しさん
2010/03/22(月) 10:11:480581デフォルトの名無しさん
2010/03/22(月) 10:13:570582デフォルトの名無しさん
2010/03/22(月) 10:15:02すまん。
昔提案のあった、TinyCの定義でもしないか?
0583デフォルトの名無しさん
2010/03/22(月) 10:23:24- 型はintだけ。void型やポインタ・配列はなし
- 演算子は論理和積、加減乗除、比較だけ
- 制御文はif, while, returnだけ
手習いにはちょうどいいサイズだったと思う
0584デフォルトの名無しさん
2010/03/22(月) 10:23:470585デフォルトの名無しさん
2010/03/22(月) 10:25:240586デフォルトの名無しさん
2010/03/22(月) 10:26:580587デフォルトの名無しさん
2010/03/22(月) 10:31:09スコープの厳密さは良いと思うけど。
0588デフォルトの名無しさん
2010/03/22(月) 10:32:290589デフォルトの名無しさん
2010/03/22(月) 10:35:40たしかにエラー処理が楽ですね。
0590デフォルトの名無しさん
2010/03/22(月) 10:35:52最初は C with Classes という名前だった処理系を作った人の
「C++の設計と進化」の最初のあたりだけとか読んでみたら?
0591デフォルトの名無しさん
2010/03/22(月) 10:36:370592デフォルトの名無しさん
2010/03/22(月) 10:39:13コンストラクタとデストラクタのことではない。
ウィキペディアからの引用になるが、
(引用者注: C++では)自動変数がスコープを離れるときデストラクタが呼ばれるため、
変数の寿命が終わるとすぐに資源が返却されることが保障できるようになった。これは
例外が起こったときでも同様であるため、RAIIは例外安全なコードを書くための鍵となる
概念となった (Sutter 1999)。
0593デフォルトの名無しさん
2010/03/22(月) 10:43:44Javaはこれができないから困る
0594デフォルトの名無しさん
2010/03/22(月) 10:50:18いいんだろうけど、そういうものは提供しないポリシなんじゃないかな?
メソッドの設計で抽象化するか。
0595デフォルトの名無しさん
2010/03/22(月) 10:51:19ポリモーフィズムが使えるだけで随分差が出てくると思う
0596デフォルトの名無しさん
2010/03/22(月) 11:14:52名前に反して初期化時のリソース確保は重要じゃないよね。
0597デフォルトの名無しさん
2010/03/22(月) 11:17:18言語仕様を単純化したいんじゃないかね
せっかくGCがあるんだから、
全てのオブジェクトの寿命は無限ということにすれば話が単純になる
0598デフォルトの名無しさん
2010/03/22(月) 11:19:22正直そこはどうでもいいよね
0599デフォルトの名無しさん
2010/03/22(月) 11:22:56RAIIに必要なのはオブジェクトの寿命管理じゃなくて
あくまでオブジェクトの持ってるリソースの寿命管理だから
オブジェクトは死ぬ必要ないのよ。
C#だってそう
0600デフォルトの名無しさん
2010/03/22(月) 13:01:04ガベコレを搭載してる実装系ではガベコレがアプリ本体と別スレッドで動いていることすらある。
すると削除するタイミングなんかは全く保証されないから、
デストラクタ自体を書かないのが推奨される作法になる。
0601デフォルトの名無しさん
2010/03/22(月) 13:08:20RAIIはガベコレを通さないんだが
0602デフォルトの名無しさん
2010/03/22(月) 13:11:25終了処理をメモリ破棄のタイミングより早く行えばいいだけ
0603デフォルトの名無しさん
2010/03/22(月) 13:14:05全く問題ないわな
0604デフォルトの名無しさん
2010/03/22(月) 13:41:31>>600が言ってるのは後者で、RAIIで使うのは前者
0605デフォルトの名無しさん
2010/03/22(月) 21:52:52典型的なのがファイルのclose。
GCとRAIIは共存できる。
>>600は無知。
0606デフォルトの名無しさん
2010/03/22(月) 22:09:22なるべく自前でcloseした方がいいんだけどね
ネットワークドライブ上のファイルとか
0607デフォルトの名無しさん
2010/03/23(火) 00:36:370608デフォルトの名無しさん
2010/03/23(火) 07:58:24以後の動作を保証できないとしてアプリを異常終了させるぐらい?
0609デフォルトの名無しさん
2010/03/23(火) 08:27:120610デフォルトの名無しさん
2010/03/23(火) 16:32:200611デフォルトの名無しさん
2010/03/23(火) 16:40:070612デフォルトの名無しさん
2010/03/23(火) 17:58:410613デフォルトの名無しさん
2010/03/23(火) 18:02:55気がついたらファイルハンドルが足りないかもしれない。
0614デフォルトの名無しさん
2010/03/23(火) 19:13:12明示的に呼び出せばいいじゃないか
System::gc(System::GC_FULL);
とか
0615デフォルトの名無しさん
2010/03/23(火) 19:30:22実装によってはFalse Pointerの影響で回収しきれない可能性とかもあるしなー
GCに完全に任せきってしまうってのはこわいよ
0616デフォルトの名無しさん
2010/03/23(火) 23:53:03(>>6の本の一番上の奴の改訂版)
http://www.saiensu.co.jp/?page=book_details&ISBN=ISBN978-4-7819-1229-5&YEAR=2009
0617デフォルトの名無しさん
2010/03/24(水) 00:20:19表紙が派手になった
最新のコンパイラ技術に基づいて若干修正されている
初版を読了後に論文誌を漁っている人は買わなくてもOK
言語処理系に興味があって初版知らない人は読むべき
0618デフォルトの名無しさん
2010/03/24(水) 01:02:55訳語も現代語により近く、読みやすくなった気がする
本質的な部分ではないかもしれんが、こういう改良は大切だと思う
0619デフォルトの名無しさん
2010/03/24(水) 04:40:370620デフォルトの名無しさん
2010/03/24(水) 04:47:560621デフォルトの名無しさん
2010/03/24(水) 04:59:00医療関係のプログラムを組んでるけど、複数のドクターが言うには簡単にそんな診療、簡単にできないし、
相手が傷ついて、まともな論争に出来ないという。
相手の反論を封じるために、言っている、自己中心者が多くて困ってると複数のドクターが言っている。
0622デフォルトの名無しさん
2010/03/24(水) 05:05:09英語のソフトカバー版買ったら表紙がちっともドラゴンじゃなくて後悔してるw
0623デフォルトの名無しさん
2010/03/24(水) 05:07:06>>620
まあ、枯れた技術だけど、実装には興味がある。
OSとコンパイラはプログラミングの中でも特別視されるしね。
少ししか進まなくとも議論の余地がある。
次はmanycoreの時代だし、議論の余地はいっぱいあるよ。
しかし、ネットッブックのおかげで、ボトムが4-5年前に戻ってしまったのが不幸。
ネットブックだとJAVAは凄く重い。
こんなのが2-3割の市場だとすれば、進化は遠のく。
0624デフォルトの名無しさん
2010/03/24(水) 05:37:200625デフォルトの名無しさん
2010/03/24(水) 05:49:41ネットブックで使いたくなるようなJavaアプリケーションなんてあるの?
0626デフォルトの名無しさん
2010/03/24(水) 05:56:30メニーコア前提の言語や処理系が出てきてもそれが生かせない貧弱な
プラットフォーム(ネットブック)が一定のパイを持ってるのは足かせになって
不幸って話だと思うぞ
0627デフォルトの名無しさん
2010/03/24(水) 06:00:29図体のでかいスマートフォン程度とおもっとればいいんだけど、
問題はPCと思って買っちゃう残念な消費者が殆どなこと
0628デフォルトの名無しさん
2010/03/24(水) 06:45:420629デフォルトの名無しさん
2010/03/24(水) 06:46:240630デフォルトの名無しさん
2010/03/24(水) 07:40:59↑典型的な議論封鎖ではある。
0631デフォルトの名無しさん
2010/03/24(水) 09:47:15もっと無茶できる
t-01a, nexus one 眺めながら
0632デフォルトの名無しさん
2010/03/24(水) 14:32:470633デフォルトの名無しさん
2010/03/24(水) 18:20:42じゃあ、あなたもそうなるよw
0634デフォルトの名無しさん
2010/03/24(水) 19:39:210635デフォルトの名無しさん
2010/03/25(木) 00:05:00良い処理系作れれば
0636デフォルトの名無しさん
2010/03/25(木) 00:10:160637616
2010/03/25(木) 00:41:36ありがと、実は大学時代にお世話になった先生が訳した本なんで気になってたんだ。
昨日、図書館でドラゴンブックの第二版を借りてきたんで
初めの方をじっくり読んで、買おうかどうか決めたいと思います。
0638デフォルトの名無しさん
2010/03/25(木) 00:44:490639デフォルトの名無しさん
2010/03/25(木) 01:35:570640デフォルトの名無しさん
2010/03/25(木) 01:44:590641デフォルトの名無しさん
2010/03/25(木) 01:59:300642デフォルトの名無しさん
2010/03/25(木) 15:41:11たぶんアスペルガーだから問題無し。
0643デフォルトの名無しさん
2010/03/26(金) 08:43:19エロゲばっかやってるとこうなるのか?
0644デフォルトの名無しさん
2010/03/26(金) 09:30:220645デフォルトの名無しさん
2010/03/26(金) 09:31:560646デフォルトの名無しさん
2010/03/26(金) 09:37:50こなれた汎用スクリプト言語を埋込みで使った方が楽だからな。
0647デフォルトの名無しさん
2010/03/26(金) 09:39:24他の会社はXMLか。それも凄いな。
エロゲ、侮れない。
0648デフォルトの名無しさん
2010/03/26(金) 09:42:270649デフォルトの名無しさん
2010/03/26(金) 10:17:340650デフォルトの名無しさん
2010/03/26(金) 12:50:130651デフォルトの名無しさん
2010/03/26(金) 12:59:400652デフォルトの名無しさん
2010/03/26(金) 13:17:250653デフォルトの名無しさん
2010/03/26(金) 15:35:040654デフォルトの名無しさん
2010/03/26(金) 15:36:4765C02拡張のPC-Engineは作ってて楽しかった
65816のスーファミはVDPが楽しいけどCPUはいまいちだった
今だとARMプロセッサ向けのコンパイラ作るのが割と楽しい
86系だと自力でコード出さないでCとかを中間言語にしてintelCにコンパイルさせるような形の方がいいコードできるから
0655デフォルトの名無しさん
2010/03/26(金) 15:44:470656デフォルトの名無しさん
2010/03/26(金) 15:50:14勢いがあるのもあるが
ARMのアーキテクチャがstackマシンの素性からそんなに離れていないのでJITのコード変換がすごくやりやすい
マルチスレッドでGC付きの言語をJITで落とし込む際にクリティカルセクションなしでもコンパクションGC作ったりできるような事とかができておもしろすぎる
X86みたいに命令が複雑多岐じゃないせいでもあるけど、実装自体が楽しいのは本当に久方ぶりだよ
0657デフォルトの名無しさん
2010/03/26(金) 20:35:570658デフォルトの名無しさん
2010/03/28(日) 02:38:47日付/時間とか、スレッドとか、ネットワークとか、いろいろ
自前でマルチプラットフォームにする気は起きないし、
ライセンスの問題もあるから難しいよな。
wxはいいけどC++になっちゃうし、glibだとGPL食らうし
0659デフォルトの名無しさん
2010/03/28(日) 02:43:320660デフォルトの名無しさん
2010/03/28(日) 03:50:470661デフォルトの名無しさん
2010/03/28(日) 04:11:060662デフォルトの名無しさん
2010/03/28(日) 04:57:280663デフォルトの名無しさん
2010/03/28(日) 05:45:310664デフォルトの名無しさん
2010/03/28(日) 06:46:51>製造、販売が可能になります。
DLLに固めて使うなら大丈夫でなかたっけか…lgpl ver2.1+だっけ…
まるまるスタティックとかOSごと積むとかは
また違うとは思う。でもできれば自前が一番いい
0665デフォルトの名無しさん
2010/03/28(日) 07:04:30何かあっても外部DLLのソースの公開だけで済む。
0666デフォルトの名無しさん
2010/03/28(日) 07:06:57コンパイラ組めるなら自前で全部出来るだろう。
0667デフォルトの名無しさん
2010/03/28(日) 08:27:320668デフォルトの名無しさん
2010/03/28(日) 16:31:01一番注力したいところに集中的に投入するのが良い。
0669デフォルトの名無しさん
2010/03/28(日) 16:34:01そりゃ何だって自分でできるさ。
自分の家だって時間さえあれば自分で作ってみせる。
0670デフォルトの名無しさん
2010/03/28(日) 16:43:35せいぜい2週間しかかからないよ。
0671デフォルトの名無しさん
2010/03/28(日) 17:00:020672デフォルトの名無しさん
2010/03/28(日) 17:40:570673デフォルトの名無しさん
2010/03/28(日) 18:51:260674デフォルトの名無しさん
2010/03/28(日) 19:15:56「秘すれば花なり、秘せずば花なるべからず」
0675デフォルトの名無しさん
2010/03/28(日) 19:55:54そりゃフリーな実装ならいいけどさ
バイナリ納品でメンテ契約あり、ようするにソースコードでの自社のノウハウは出したくないとかあるときはGPLは使えないだろ
0676デフォルトの名無しさん
2010/03/28(日) 21:46:21いままで請求されたことないし
ぶっちゃけ、ソース出てもノウハウは出ないってw
0677デフォルトの名無しさん
2010/03/29(月) 00:12:46すべてにおいて
0678デフォルトの名無しさん
2010/03/29(月) 03:27:14armはcpuは普通につかえるが
ペリフェラルが使いにくいのが多いんよね
0679デフォルトの名無しさん
2010/03/29(月) 09:36:51組み込みのCPUはDMA,IRQ以外って高機能なデバイスを無理矢理つっこんでるのでレジスタの設定がメチャクチャめんどくさかったりするけど
そういう意味の使いにくいってことかな?
0680デフォルトの名無しさん
2010/03/29(月) 11:54:11PICのレジスタは地獄。PIC16でようやくまともになった。
0681デフォルトの名無しさん
2010/03/29(月) 11:55:02ARM使えよ
0682デフォルトの名無しさん
2010/03/29(月) 17:13:01毎回チェーン使うのは無駄くさい
0683デフォルトの名無しさん
2010/03/29(月) 17:46:12外部ピンがMuxされてるから
余計にめんどいんだよな
0684デフォルトの名無しさん
2010/03/29(月) 18:13:37ポーリングするのかw
PIOで素直に転送した方がましだねw
0685デフォルトの名無しさん
2010/03/29(月) 20:53:56よせよ、CPUもったいねぇじゃねぇか
0686デフォルトの名無しさん
2010/03/29(月) 20:58:300687デフォルトの名無しさん
2010/03/30(火) 02:26:120688デフォルトの名無しさん
2010/03/30(火) 08:56:33最大32回をチェーンでつないだら
たくさん送ってくれるから
PIOよりゃましだがチェーン必須はめんどいw
0689デフォルトの名無しさん
2010/03/30(火) 12:56:22基本的な機能を備えた言語で論理的な部分からどの様な最適化が一般に可能か、について調べています。
定価が10000円だったみたいですが、そんなに特別な本なのでしょうか?
0690デフォルトの名無しさん
2010/03/30(火) 13:59:17ドラゴンブックくらいしか。
0691デフォルトの名無しさん
2010/03/30(火) 14:21:230692デフォルトの名無しさん
2010/03/30(火) 14:24:260693デフォルトの名無しさん
2010/03/30(火) 18:17:370694デフォルトの名無しさん
2010/03/30(火) 22:13:420695デフォルトの名無しさん
2010/03/31(水) 03:55:47りんご園とか
0696デフォルトの名無しさん
2010/04/03(土) 19:50:020697デフォルトの名無しさん
2010/04/03(土) 20:11:27スモールコンパイラの制作で学ぶプログラムのしくみ
0698デフォルトの名無しさん
2010/04/03(土) 21:05:420699デフォルトの名無しさん
2010/04/03(土) 23:10:25あれは監修だけだから中田本とは違うんじゃ?
0700デフォルトの名無しさん
2010/04/04(日) 03:12:48--中田氏推薦の言葉はこの一文から始まる。
この言葉に魅力を感じつつ、実際に購入して読んでみたが、
読み進むにつれ、この言葉の皮相さがだんだんと理解されてる
ことになる。
どうやら、ここで言う「文系のセンス」とは、
1.「ストーリー仕立て」でとっつきやす「そうな」文章、
2.全編を通して出てくるリンゴの比喩
主としてこのことを指しているようだ。
しかし、まったくもって残念ながら、
1.は決して名文とはいえない拙い言い回しが散見されるところどころ設定に無理がある稚拙な「ストーリー」であり、
2.はかならずしも的を得た比喩とはいいがたい代物で読み進めるにあたってかえって理解の邪魔になるといったものだ。
とりわけ2.を称揚しているかにも見える「推薦の言葉」は少なからぬ問題を孕んでさえいると思う。
比喩において、喩えられる対象と喩えそのものにおいては、
互いの概念の抽象度合い(というか抽象化のレベル)がきちんと符合しているべきである。しかしながら本書においては、そのレベルがまちまち、バラバラであり、必ずしも適切な比喩でないものが実に多い。
読み進むにつれ、拙い比喩表現を「文系のセンス」などと言ってしまう無神経な理系の教授と、「文系の持ち味を生かした」と悦に入っている無神経な文型の学生。どうしてもそういう印象がもたれてならないのだ。
本来よい比喩のための「センス」に文系も理系もないのであり、あるのは明晰な概念把握、適切な抽象化、適切な想像力これらに関する「センス」があいまってはじめてよい比喩表現が可能になるのだと思う。
そしてよい比喩表現だけが、複雑な物事を理解する助けとなるのである。
「ただ単にたとえればいいってもんじゃないんだ!」と声を大にして言いたい。
0701デフォルトの名無しさん
2010/04/04(日) 03:46:26どの本の推薦文?
0702デフォルトの名無しさん
2010/04/04(日) 03:57:550703デフォルトの名無しさん
2010/04/08(木) 18:48:14教科書の丸写しに訳の分からない説明を加え
JAVAで書き直した。そんな本
0704デフォルトの名無しさん
2010/04/08(木) 19:50:32比喩を排除するために数学的記述があるのだから。
0705デフォルトの名無しさん
2010/04/08(木) 20:28:39監修しちゃった以上責任はあるだろw
推薦の言葉なんて書いてる場合じゃなくて出版止めるべきだったとしか思えないレベル
0706デフォルトの名無しさん
2010/04/08(木) 20:47:32学術書じゃなくて一般人向けの本に何を期待したんだ?
0707デフォルトの名無しさん
2010/04/09(金) 09:27:520708デフォルトの名無しさん
2010/04/09(金) 09:40:14分量はたいしたことないけど後ろの方にあった
最近和訳出てたよね?
0709デフォルトの名無しさん
2010/04/09(金) 21:15:14MSRのサイモン・ペイトン・ジョーンズのページも見て。
http://research.microsoft.com/en-us/um/people/simonpj/papers/papers.html
0710デフォルトの名無しさん
2010/04/09(金) 22:37:20少し違ってModern Compiler Implementation in MLのことだろうか。
その翻訳本の「最新コンパイラ構成技法」を見てきたけど1章が関数型に費やされてたわ。
まあでも頁数のためか、思いつくような事が難しく高級に書いてある感じで終わってたが
0711デフォルトの名無しさん
2010/04/14(水) 22:10:11俺も立ち読みしたけど、訳が悪いと思うなぁ。
いや、悪くはないんだけど、堅い。
原文はそんなに難しい英語ではないし、学部生向けの教科書
だと思った
0712デフォルトの名無しさん
2010/04/25(日) 20:23:06どんな解析がされたのかがわからなくて辛いです(。>д<。)
今はConsole.Writeを実行して、どのような解析がされたかを確認してます。
お忙しいところ申し訳ありませんが、どなたかよろしくお願いいたします。
0713デフォルトの名無しさん
2010/04/25(日) 20:24:02俺の研究室の学生っぽいからダメ
0714デフォルトの名無しさん
2010/04/25(日) 21:13:000715デフォルトの名無しさん
2010/04/25(日) 21:56:39HTML吐かせたりできたはず
0716デフォルトの名無しさん
2010/04/25(日) 22:16:06(。>д<。 )
( ゚д゚ )
0717デフォルトの名無しさん
2010/04/28(水) 00:45:08でも、大変そう(w
http://plas.fit.qut.edu.au/gppg/files/gppg.pdf
ドキュメントってこれっすよね。きっと
上から眺めたらそれっぽいのを見つけられたよ。
一字一句を訳してると死ぬほど時間掛かるから、ざっくり眺めてみるといいのでは?
htmlとかなんとかって書いてあったのでたぶんこれだろう。
34ページしかないので、10分くらい眺めてみては?
0718デフォルトの名無しさん
2010/04/29(木) 03:26:08そのうち斜め読み出来るようになるし
0719712
2010/04/29(木) 12:47:45GW中に調べてみますv(^ ^
ちなみに、私はサラリーマンなので713さんの後輩ではないと思いますよ。
私の場合は自力で調べてみますが、後輩には優しく教えてあげてくださいね。
0720デフォルトの名無しさん
2010/04/29(木) 14:13:39突き放した方が良い場合もある(そっちの方が多い)んじゃないか
0721デフォルトの名無しさん
2010/04/29(木) 14:16:04要は主体的に動かすための動機づけが重要なんだよ。
手取り足取り何もかも用意してやるのも害になるし、
突き放して何も与えないのも害になる。
さじ加減が重要だよ。
0722デフォルトの名無しさん
2010/04/29(木) 14:18:28人それぞれさじ加減を変えないとうまくいかないんだよ。
0723デフォルトの名無しさん
2010/05/01(土) 00:57:300724デフォルトの名無しさん
2010/05/01(土) 01:09:32【Lua】組み込み系言語総合 その3【Squirrel】
http://pc12.2ch.net/test/read.cgi/tech/1272643397/
0725デフォルトの名無しさん
2010/05/08(土) 02:33:42JAVAも初心者なんですが、日本語(UTF-8)のコメントが入った*.gを
ANTLRにかけるとエラーが出るんですが、何とかならないでしょうか?
0726デフォルトの名無しさん
2010/05/08(土) 07:05:26options 節でcharVocabularyの範囲を指定すると通るよ
charVocabulary = '\u0000' .. '\uFFFE';
0727725
2010/05/09(日) 21:54:07charVocabularyの指定ではダメでした。
後出しですいませんが、使っているのはANTLR3で、
何となく、ANTLR3から使えないような気もします。
0728デフォルトの名無しさん
2010/05/21(金) 20:08:201 + 2 * 3 + 4 / 5
1 2 3 * + 4 5 / +
を
1
2 3
あれ?
0729デフォルトの名無しさん
2010/05/21(金) 20:24:181 2 3
*
+ 4 5
/
+
0730デフォルトの名無しさん
2010/05/22(土) 00:25:27積んでから帰ってくるとか消費して帰ってくるのとかがキモく見えるだけじゃないか?
今まで通りスタックの伸縮についてコメントで記す方式で十分な気がする
だいたいわかんなくなる位巨大なワード組まないようにすべきだと思うし
0731728
2010/05/22(土) 17:56:421 2 3 4 5
+
で、(1+2+3+4+5)が計算できると、いいかと思ったんだ。
このスタック位置まで繰り返しみたいな。
0732デフォルトの名無しさん
2010/05/22(土) 18:02:26ただ計算だけできればいいならなにかインタプリタを使えばいい。
個人的にBooをおすすめしておく。
コンパイラにインタプリタに標準ライブラリまでついて1.45MBと軽くていい。
0733デフォルトの名無しさん
2010/05/22(土) 18:54:05検討したことあるけど、後置のメリットをダメにするから止めたほうが良い。結局カッコ付けるのと変わらなくなるし。
0734デフォルトの名無しさん
2010/05/22(土) 18:57:09とかしたらいいんじゃない
0735デフォルトの名無しさん
2010/05/22(土) 21:02:29それ括弧でくくってから呼び出し関数の名前を最初に書いたら単なるLISPじゃないのかな?
0736デフォルトの名無しさん
2010/05/23(日) 16:18:33>それ括弧でくくってから呼び出し関数の名前を最初に書いたら単なるLISPじゃないのかな?
しー!、黙っていればわからないって!
見た目がPython風にならないかと思っただけ。
>>730
>今まで通りスタックの伸縮についてコメントで記す方式で十分な気がする
これで、IDEでワードを打ち込むと、前のキーワードの色が変わったりすると便利だな
でも、深さが任意のキーワードとかがあったらだめだろうけどな。
0737デフォルトの名無しさん
2010/05/25(火) 23:57:020738デフォルトの名無しさん
2010/05/26(水) 01:40:550739737
2010/05/26(水) 12:48:47あれがどうもやりにくいというかピンとこないというか。
対話型でスクリプトを入力するようなやつ(ぶっちゃけるとlisp)で
単純に改行を入力の終わりと出来ないやつは一体いつ終了トークンをプッシュするんだと。
「全ての左括弧と右括弧が対応したかを自分で検査してtoken_eofをプッシュ」ってやんのかな?あれ?
0740デフォルトの名無しさん
2010/05/26(水) 21:47:01あと、プッシュ型パーサは字句解析と構文解析の間で小細工できるのが便利だと思う
0741jonigata
2010/05/26(水) 21:56:43スペース的なトークンを用意したら
なんとかなったりしないかな?
それはそれで文法作るの面倒かしら
あるいは、改行のところでパーサのインスタンスを保存して、
改行にあわせて無理やりeof打ち込んで、
エラーになったら保存したインスタンスを復帰してどうにかするってのは
どうでしょう
0742737
2010/05/26(水) 23:46:56> それでいいんじゃね、字句解析機でネストレベルを覚えとくのは普通にやる。
即効性で言っても多分それが一番かなぁ。
>>741
> スペース的なトークンを用意したら
> なんとかなったりしないかな?
外側の都合が文法に影響するのはなんとなく気持ち悪い気が…。
> あるいは、改行のところでパーサのインスタンスを保存して、
> 改行にあわせて無理やりeof打ち込んで、
> エラーになったら保存したインスタンスを復帰してどうにかするってのは
概念的には一番わかりやすいと思うけど、
括弧が閉じられた後、改行が来るまでに別のトークンが来ないとも限らないのが…。
(defun foo ()
5) (foo)
とかだったら
==> foo
==> 5
みたいにfooの定義とfoo呼び出しの戻り値5が返って欲しいし。
0743jonigata
2010/05/27(木) 00:15:48それも気持ち悪いor実はそんなことじゃ解決しない
ということであれば、何をどうできればいいかなあ
eofを仮にpostしてacceptするかどうかだけ判定する
メソッドとか?
一切コーディングせずに妄想だけで言ってるけど!
0744737
2010/05/27(木) 08:56:44あ、なるほど。そう考えたら「パーサのインスタンスを保存して〜」で問題ないのかな…。
まだやってないけどメソッドの追加はいらなさそうな気がします。
実際試すまでちょっと間が空くかも知れないけどまた報告に来ます。
0745737
2010/05/30(日) 14:46:41まず、字句解析器から受け取ったトークンをcaperにプッシュするループのところに以下の部分を挟みました。
if( token == token_LINE_FEED ){
Parser< Value, SemanticAction > backup = parser;
if( parser.post( token_eof, 0 ) ){
break;
}
parser = backup;
}
と、backupを書き戻そうとしたところでoperator=使えないというエラーが。
で、Parserクラスに代入演算子を入れました。
public:
self_type& operator!=(const self_type& other)
{
if (this != &other) {
accepted_ = this->accepted_;
error_ = this->error_;
accepted_value_ = this->accepted_value_;
stack_ = this->stack_;
}
return *this;
}
};
これでエラーは無くなりました。
(つづく)
0746デフォルトの名無しさん
2010/05/30(日) 14:46:58入力困るけど。
0747737
2010/06/01(火) 10:44:02Top<int> : []
| [] Top Datum(0)
;
とここでふと疑問が。
・全体をS式の列として受理するとして、スタックに積む値の型はどうなるの?
typedef boost::variant<std::string, int, bool, Sexp *> Value;
となっていたのが
typedef boost::variant< std::string, int, bool, Sexp *, std::list< boost::variant< std::string, int, bool, Sexp * > > > Value;
とでもなるのかな?えー。
…SemanticAction内でYYACCEPTに相当する何かを行った時にも
postでtrueを返せばbisonの置き換えが楽そうな気がするんだけど。
0748デフォルトの名無しさん
2010/06/04(金) 17:43:520749デフォルトの名無しさん
2010/06/04(金) 18:54:51ちょっと自分で調べといて
おれ忙しいから
0750デフォルトの名無しさん
2010/06/04(金) 22:12:22新刊でたの?、それとも改訂版?
0751デフォルトの名無しさん
2010/06/04(金) 22:21:56ちょっと自分で調べといて
おれも忙しいから
0752デフォルトの名無しさん
2010/06/04(金) 22:24:16そんなこと書き込んでる間に調べられるだろう
0753デフォルトの名無しさん
2010/06/05(土) 13:31:542版が出た
0754デフォルトの名無しさん
2010/06/05(土) 17:06:45型に関しては、単にリストをオブジェクトを用意すればよいのではないかな?
代入演算子とかはこれから実装しますです
YYACCEPT云々についてはちと考えます。
0755デフォルトの名無しさん
2010/06/05(土) 19:48:520756デフォルトの名無しさん
2010/06/25(金) 14:21:55コード生成よりも字句解析・構文解析に重点を置き、チュートリアル形式の本ではなく学問よりの本で勉強したいと思っています。
0757デフォルトの名無しさん
2010/06/25(金) 16:03:116の中なら「ドラゴンブック」と「コンパイラの構成と最適化」
高くて困るのなら
オーム社からでてる[新コンピュータサイエンス講座]シリーズの「コンパイラ」ってのが割とお勧め
0758デフォルトの名無しさん
2010/06/25(金) 16:24:140759デフォルトの名無しさん
2010/06/25(金) 19:42:49いつもDirectCodeを出力させてるんだけど、日曜プログラマだからわざわざオートマトン構築する理由がわかんないです(><*)
0760デフォルトの名無しさん
2010/06/26(土) 02:12:13まぁ理論的にはオートマトンと等価だが、たぶん>>759の言う意味で
オートマトンを構築しているやつはいないと思われ
0761デフォルトの名無しさん
2010/06/26(土) 02:47:390762デフォルトの名無しさん
2010/06/26(土) 13:22:410763デフォルトの名無しさん
2010/06/26(土) 13:46:52適切な処理の実装を練習問題として読者に委ねています。
そこで考えたんですが、例えば "Exp_0/Exp_1" という式を解析対象 str = c_0 c_1 c_2 ... c_n に適応する場合はまずExp_1を c_0 を始点としたstrに適応していき、
マッチが成功したら今度は c_1 を始点として解析、同じようにマッチが失敗する m まで c_m を次々に始点として解析してmを決定し、
次は c_0 〜 c_(m-1) = str' を Exp_0 でマッチするかどうかを調べ、Exp_0のマッチ終了まで入力を戻せばいいんでしょうか?
0764デフォルトの名無しさん
2010/06/26(土) 14:02:00ちなみに一緒に買ったキスシスを読んでたらチンコが濡れてしまった。
0765デフォルトの名無しさん
2010/06/26(土) 14:04:120766デフォルトの名無しさん
2010/06/26(土) 14:05:210767デフォルトの名無しさん
2010/06/26(土) 14:16:000768デフォルトの名無しさん
2010/06/26(土) 14:56:38どうもありがとうございます。ちょっと書店で見てきます。
0769デフォルトの名無しさん
2010/06/26(土) 15:26:090770デフォルトの名無しさん
2010/06/26(土) 18:30:400771デフォルトの名無しさん
2010/06/26(土) 18:51:29コピーがネットで共有される現状を考えたら今の著作権は古い概念だ。
人がコピーできることを望んでいるのだから著作権もそれにあわせて変えるべきだね。
0772デフォルトの名無しさん
2010/06/26(土) 18:59:010773デフォルトの名無しさん
2010/06/26(土) 19:21:03変えるべきだね、と言っているんだよ。
俺が著作権を今風に変えるべきだと言っているのに対して、君は著作権を全否定していると受け取ったんだよ。
0774デフォルトの名無しさん
2010/06/26(土) 19:49:240775デフォルトの名無しさん
2010/06/26(土) 19:51:220776デフォルトの名無しさん
2010/06/26(土) 20:24:15つーか板違いだしどっか行けよ池沼
0777デフォルトの名無しさん
2010/06/26(土) 20:31:510778デフォルトの名無しさん
2010/06/26(土) 20:39:330779デフォルトの名無しさん
2010/06/26(土) 21:12:390780デフォルトの名無しさん
2010/06/26(土) 21:16:30マジレスだけど、
そういうソフトウェアは将来的に認められていくと思うよ。
0781デフォルトの名無しさん
2010/06/26(土) 21:19:300782デフォルトの名無しさん
2010/06/26(土) 21:20:330783デフォルトの名無しさん
2010/06/26(土) 23:04:170784デフォルトの名無しさん
2010/06/30(水) 11:14:400785デフォルトの名無しさん
2010/06/30(水) 11:19:520786デフォルトの名無しさん
2010/06/30(水) 11:46:570787デフォルトの名無しさん
2010/06/30(水) 14:13:58方法でヨロ
0788デフォルトの名無しさん
2010/07/01(木) 22:26:42なんと左再帰を気にしなくて良い
0789デフォルトの名無しさん
2010/07/01(木) 22:38:560790デフォルトの名無しさん
2010/07/02(金) 09:45:480791デフォルトの名無しさん
2010/07/02(金) 15:56:280792デフォルトの名無しさん
2010/07/02(金) 17:23:05ふつパイラで名前だけ挙がってるぐらいだろ。
0793デフォルトの名無しさん
2010/07/02(金) 20:58:30文法を宣言的に書く旧来のやり方の方が美しく感じるんだけど
0794デフォルトの名無しさん
2010/07/02(金) 21:13:050795デフォルトの名無しさん
2010/07/02(金) 22:42:44そんなことできるのか。packratだかコンビネータパーサっておもしろそうですね。
勉強したい。
0796デフォルトの名無しさん
2010/07/02(金) 23:07:44要するに手書きのパーサなんだから、なんだってできるのは当然
0797デフォルトの名無しさん
2010/07/03(土) 01:23:33宣言的に書けるよ。
ただオペレータオーバーロードのない言語ではきつい。
0798デフォルトの名無しさん
2010/07/03(土) 07:38:28Exp ::= Num | Var | Exp + Exp | Exp * Exp
ただし優先順位は* > +
をコンビネータパーサで宣言的に書くとどうなるの?
0799デフォルトの名無しさん
2010/07/03(土) 11:09:03Term ::= Term * Fact | Fact
Fact ::= Num | Var | ( Exp )
0800デフォルトの名無しさん
2010/07/03(土) 16:39:140801デフォルトの名無しさん
2010/07/03(土) 18:59:26節子、それコンビネータパーサちゃう。
BNFや。
0802デフォルトの名無しさん
2010/07/05(月) 15:51:22英語でいいです。
0803デフォルトの名無しさん
2010/07/05(月) 16:07:000804デフォルトの名無しさん
2010/07/05(月) 16:42:07Parsecの論文読んで。
0805デフォルトの名無しさん
2010/07/05(月) 22:47:04一通り読んだし、ライブラリもよく使ってるが>798を宣言的に書く方法は知らない
0806デフォルトの名無しさん
2010/07/06(火) 11:31:280807デフォルトの名無しさん
2010/07/06(火) 12:06:13だから読んでね。
0808デフォルトの名無しさん
2010/07/06(火) 13:06:230809デフォルトの名無しさん
2010/07/06(火) 21:57:01ACMの電子図書契約しとくと楽だよ
0810デフォルトの名無しさん
2010/07/07(水) 12:06:000811デフォルトの名無しさん
2010/07/07(水) 12:29:270812デフォルトの名無しさん
2010/07/07(水) 12:34:350813デフォルトの名無しさん
2010/07/07(水) 19:03:08まあ,parsecの論文を読んでも>798の疑問は解決しないが
0814名無しさん@そうだ選挙に行こう
2010/07/10(土) 10:53:050815名無しさん@そうだ選挙に行こう
2010/07/10(土) 10:54:26こんどはこれで変数機能付き電卓作りゅー
0816名無しさん@そうだ選挙に行こう
2010/07/10(土) 17:49:34%token YToken.AA "aa"
とかで
YToken.AA の別名として"aa"使うこと出来ないの?
0817名無しさん@そうだ選挙に行こう
2010/07/10(土) 20:11:58キャストの例外出るからおかしいと思ったら文字列に変換したものをvalue()で返してた…
あほすぎる
0818名無しさん@そうだ選挙に行こう
2010/07/11(日) 05:11:430819名無しさん@そうだ選挙に行こう
2010/07/11(日) 08:15:45つまり道のりは遠いと
0820デフォルトの名無しさん
2010/07/13(火) 12:59:460821デフォルトの名無しさん
2010/07/13(火) 14:46:57それよりコンパイラ生成系作ったらやる事がなくなった。
死のう。
0822デフォルトの名無しさん
2010/07/13(火) 15:21:31電卓つくったんじゃないの?
0823デフォルトの名無しさん
2010/07/13(火) 17:05:25死ぬ前に>>800お願いします。
0824デフォルトの名無しさん
2010/07/13(火) 18:57:03読まなくても問題ないけど金に余裕があるなら買っておいても良いというレベル。
ドラゴンブックからはじめて問題ない。
じゃあ。ノシ
0825デフォルトの名無しさん
2010/07/13(火) 20:40:29菊
0826デフォルトの名無しさん
2010/07/17(土) 16:07:480827デフォルトの名無しさん
2010/07/18(日) 01:05:050828デフォルトの名無しさん
2010/07/18(日) 10:01:210829デフォルトの名無しさん
2010/07/20(火) 22:05:20関数とその引数、関数のローカル変数を実装する場合、
下のような感じでいいのかな?呼び出し規約はcdeclのみです。
ヒープと共有するために末尾から伸ばすべきかな。
Stack
← StackPointer(SP)
-------
local-var2 (BP+2)
-------
local-var1 (BP+1)
-------
local-var0 (BP+0) ←BasePointer(BP)
-------
return-addr (BP-1)
-------
arg0 (BP-2)
-------
arg1 (BP-3)
-------
0830デフォルトの名無しさん
2010/07/20(火) 22:30:32BPって要らなくね?SPに統合しちゃえばいいと思うんだけど
0831デフォルトの名無しさん
2010/07/20(火) 22:54:51alloca的なのやサイズ未定のローカル配列を使うみたいな言語なら
SP相対よりフレームポインタ相対でアクセスする方が管理が楽でしょ
0832デフォルトの名無しさん
2010/07/20(火) 22:57:54BPないと頭がパンクしそうです
暑さで既に思考に異常が・・
0833デフォルトの名無しさん
2010/07/21(水) 03:06:10レジスタマシンならmov使うところを全部PUSHでやることになるね。
大雑把に定数、絶対アドレスの変数、相対アドレスの変数。
あとは条件ジャンプ周りだだ
0834デフォルトの名無しさん
2010/07/21(水) 06:49:360835デフォルトの名無しさん
2010/07/21(水) 12:57:040836デフォルトの名無しさん
2010/07/21(水) 21:13:48何かの判断基準を上回った関数のみBPを併用
0837デフォルトの名無しさん
2010/07/21(水) 21:21:430838デフォルトの名無しさん
2010/07/21(水) 21:36:050839デフォルトの名無しさん
2010/07/21(水) 21:41:50あとはぱーさ・・はすぐできた
終わり
0840デフォルトの名無しさん
2010/07/21(水) 22:06:500841デフォルトの名無しさん
2010/07/21(水) 22:18:38オレはセクションごとにSQLiteのレコードにシリアライズして放り込んでるんだが。
0842デフォルトの名無しさん
2010/07/24(土) 13:47:22PDFで英語版のエイホのやつ読んでみたら
日本語版にのエイホのやつ買っておけばよかったと後悔してしまった。
0843デフォルトの名無しさん
2010/07/24(土) 16:43:24どんな点で?
0844デフォルトの名無しさん
2010/07/24(土) 20:09:320845デフォルトの名無しさん
2010/07/25(日) 04:40:29ってことだろ
0846デフォルトの名無しさん
2010/07/25(日) 10:41:280847デフォルトの名無しさん
2010/07/31(土) 16:36:35詳しいから。
0848デフォルトの名無しさん
2010/08/07(土) 23:31:13構造体や多値をスタックで返したいけど、その型は事前に判りません。
今は別の戻り値スタックに置いて、
その頭に関数が返した型の情報を置いてます。(スタックを1本にしたい)
| SP ↑ヒープ
-------------------
|local2 BP-3
-------------------
|local1 BP-2
-------------------
|local0 BP-1
-------------------
|親BP BP+0
-------------------
|関数戻りaddr BP+1
------------------- ←関数リターン後のSPの位置(cdecl)
|arg0 BP+2
-------------------
|arg1 BP+3
-------------------
事前に型が判ってればarg0の上に呼び出し側で空きを作れますが、
判らない場合は、SP上の戻り値情報の位置を入れるスペースを作って、
0なら戻り値なし、0以外(N)ならSP-Nの位置に戻り値があるとかかなあ?
スタックトップ以降にも有効な値があるってのはどうなんだろう。
0849デフォルトの名無しさん
2010/08/08(日) 00:46:50COMのVARIANTのようにするのが簡単だろうね。
0850デフォルトの名無しさん
2010/08/08(日) 14:33:37データとサイズををプッシュしる
さっき取っておいたアドレスにジャンプする
っていうのはどうだろうか。
0851デフォルトの名無しさん
2010/08/09(月) 04:25:05> スタックトップ以降にも有効な値があるってのはどうなんだろう。
戻値がスタックトップの上にあるか、下にあるかってのは、
意識の問題に過ぎないのでは?
有効な値のある場所をスタックトップと思えばいい。
0852デフォルトの名無しさん
2010/08/14(土) 20:35:49というより、ガード部での単一化、コミットとチョイスをどうやって実装するのかが一番謎で……
0853デフォルトの名無しさん
2010/08/15(日) 20:27:23セオリーは知らないけどSTMでやってみたら?
0854デフォルトの名無しさん
2010/08/19(木) 11:33:100855デフォルトの名無しさん
2010/08/19(木) 12:05:090856デフォルトの名無しさん
2010/08/21(土) 19:34:46セオリーがあるほど処理系はないのではないかと思います。あるとしたら、
www.klic.org にある Inside KLIC ドキュメントと KLIC 処理系がそうでしょうか。
KLIC が生成する C ソースを見てみるのが一番早いかもしれません。
> ガード部での単一化、コミットとチョイスをどうやって実装するのかが一番謎で……
ガード部の「単一化」という言葉に引きずられるとわかりにくいですが、
要するに一致するかしないかチェックすればよいのだと思います。
例えば、
foo([A|B], C) :- A = 1, list(B) | C = 2.
みたいなホーン節があったら、このガード節を
1. 第一引数がリストかチェックする
2. 第一引数に与えられたリストの CAR/CDR をそれぞれローカル変数 A, B に入れる
3. A が数値 1 かチェックする
4. B がリストかチェックする
のような手続きに書き換えれば良いのではないかと。
これら全部のチェックに通ったら、ガード部単一化成功と看做して
ボディ部の単一化を実行します。
どれかのチェックにひっかかったら、ガード部単一化失敗ということになります。
foo/2 のホーン節定義が複数あったら、各ホーン節定義についてチェックを行い、
チェックに失敗したら次のホーン節定義のチェックにジャンプする、という格好に
なります。
0857デフォルトの名無しさん
2010/09/03(金) 15:26:56アクションってのが設定出来ますが
バックトラックが起きると、
アクション時に追加したデータは残ったままになてしまいますよね
こういう時ってどういう風に対応するのが普通なんでしょうか
(そもそもバックトラックしない文法にする以外で)
パーサは手書きで作ってるんですが
全てのパース関連の関数に、
バースが失敗したら、その関数での構文木への追加を消して
巻き戻すような処理を入れる、みたいなのでいいんでしょうか
0858デフォルトの名無しさん
2010/09/10(金) 02:03:57パーサーが参照するスキャナ(トークナイザ)にトークンを消費しないPeekTokenみたいな
メソッドを追加して。それを使って必要な分だけトークンを先読みさせてた。まぁ、いわいる。LL(∞)の文法に
対応できるよう。
0859デフォルトの名無しさん
2010/09/11(土) 22:23:14文法に合致すれば、こんどはアクションありでやり直す。
LL(k)の部分はそんなことしなくてもいいけど。
Antlrとかはそんな感じ。
途中までの結果を記憶して効率化してるけど。
0860デフォルトの名無しさん
2010/09/11(土) 22:25:19英語だしJavaだしAntlrの話題も多いけど。
0861デフォルトの名無しさん
2010/09/12(日) 07:27:530862デフォルトの名無しさん
2010/09/13(月) 07:14:560863デフォルトの名無しさん
2010/09/13(月) 07:17:020864デフォルトの名無しさん
2010/09/13(月) 15:05:480865デフォルトの名無しさん
2010/09/13(月) 15:07:120866デフォルトの名無しさん
2010/09/13(月) 19:38:290867デフォルトの名無しさん
2010/09/13(月) 19:45:130868デフォルトの名無しさん
2010/09/13(月) 19:57:100869デフォルトの名無しさん
2010/09/15(水) 05:09:150870デフォルトの名無しさん
2010/09/25(土) 10:07:170871デフォルトの名無しさん
2010/10/27(水) 08:59:070872デフォルトの名無しさん
2010/11/02(火) 15:39:530873デフォルトの名無しさん
2010/11/05(金) 00:31:290874デフォルトの名無しさん
2010/11/05(金) 01:07:260875デフォルトの名無しさん
2010/11/05(金) 02:12:290876デフォルトの名無しさん
2010/11/05(金) 08:03:58C,BNF でググって出てくる奴じゃダメってことか?
http://wiki.kldp.org/wiki.php/TinyCInLexYacc
http://www.devincook.com/goldparser/grammars/index.htm
0877デフォルトの名無しさん
2010/11/16(火) 16:20:48Tiny C Compiler
http://bellard.org/tcc/
0878デフォルトの名無しさん
2010/11/27(土) 16:16:330879デフォルトの名無しさん
2010/12/02(木) 12:28:16まずはそのスクリプトとやらがチューリング完全である必要があるか否かとか。
0880デフォルトの名無しさん
2010/12/02(木) 12:48:57スクリプト言語に求める要件は以下です。
�@既にサーバー側に定義されている変数のみを使用し、スクリプト内では変数の定義を行わない。
�Aメモリ削減のため、命令が行単位で表現されるインタプリタ
�B分岐と行のジャンプを持つこと。
�Cゲームのシナリオ進行に必要な内容を搭載できること。
が、現在求めているものです。
今�Bの部分の実行の効率について悩んでいます。それ以外は大丈夫です。
>>879
上記の事から、チューリング完全である必要はないです。
あちらではお手数をかけてすみませんでした。
0881デフォルトの名無しさん
2010/12/02(木) 12:53:190882デフォルトの名無しさん
2010/12/02(木) 12:56:11アセンブラのマクロとして命令を定義して、ラベル処理はアセンブラに押しつけるって手がある
0883デフォルトの名無しさん
2010/12/02(木) 13:27:18仕様が全然わからん。
変数の値変更は可能なのか?
利用できる型は何か?
データの動的生成はあるのか?
中間表現は許容するのか?
0884デフォルトの名無しさん
2010/12/02(木) 13:27:26あっ、実は言い忘れていたことがありまして、
�Cゲームのシナリオ進行に必要な内容を搭載できること。
で、主に文章を扱うことになるんです。
なので、アセンブラだとちょっと厳しいかもしれません。
あと、言語を書き忘れていましたが現在実装に使用しているのはC++です。
そして、スクリプト言語の仕様を自作して、
今分岐やラベルなどの処理の無駄と記述のし難さに悩んでます。
0885デフォルトの名無しさん
2010/12/02(木) 13:29:44インデックスをジャンプ指標にしてオシマイじゃないの?
0886デフォルトの名無しさん
2010/12/02(木) 13:33:31>変数の値変更は可能なのか?
変数の値変更は可能ですが、新しく宣言することができません。
>利用できる型は何か?
サーバー側が使える型なら、なんでもOKです。
>データの動的生成はあるのか?
それは、サポートしない予定です。やろうと思えばできるでしょうけれど。
>中間表現は許容するのか?
なにの中間表現かはわかりませんが、
テキストを変換して、実行しやすいバイナリにします。
中途半端な説明ばかりで申し訳ありませんorz
0887デフォルトの名無しさん
2010/12/02(木) 13:37:13そうしたいのですが、
飛ぶ場所などの情報が、スクリプトの編集中にあまりにも扱いにくいので、困ってます。
変換するコードの問題かもしれませんが・・・。
0888デフォルトの名無しさん
2010/12/02(木) 13:43:310889デフォルトの名無しさん
2010/12/02(木) 13:50:01ソースでは名前、「実行しやすいバイナリ」ではインデックスにすればいいんでしょ。
後方参照は後からスロット埋めればいい。
0890デフォルトの名無しさん
2010/12/02(木) 13:55:55今のままだといろいろ想像の余地がありすぎて曖昧な答えになりそう。
>>880が考えた書式自体がまずいって可能性もあったりして。
0891デフォルトの名無しさん
2010/12/02(木) 14:00:15プログラムが全てジェントルであると仮定しない限り、
ゴミ集めを実装しなくてはならない。
そうしないとDoSを食らう。
0892デフォルトの名無しさん
2010/12/02(木) 14:33:49MMOのサーバーとやらが何で実装されてるのかによるが、
一般的にはLuaがおすすめ。
最近ならmod_luaでapacheの中までいじれる。
JavaならGroovyとか。
0893880
2010/12/02(木) 15:21:59コードですか・・・。
理論モデルなので、まだこれといった明確な形がありません。
なので、簡単なソースも出せません。
ですが、用途はMOBやNPCの移動と行動の内容記述などや、イベント全般の進行順の記述ですね。
計算部分や複雑な検索はホスト側にすべて任せますので、
スクリプト側には四則演算もいらないレベルです。
最初から、インデックスを作ったモデルを考えていますが、
どんな記述法則をすれば、編集しやすくなるかがわからない状態です。
出力したバイナリの実行方法(仮想マシーンの仕様)ならほぼ固まっていますけど。
>>891
はい。なので、プログラム全体の必要な初期メモリ確保以外は、
newによる動的なメモリの取得をしていません。
>>892
このサーバーにLuaは、ちょっと無理ですね。
MOBの1つ1つに仮想マシンをつくると、メモリ資源があっという間に枯渇します。
Luaの記述では長すぎて、サーバー用の機能を盛り込むとさらに冗長さが・・・。
それに、動的なメモリ取得はメモリリークになる可能性があるので避けたいです。
0894デフォルトの名無しさん
2010/12/02(木) 15:36:07それともMMOでは一般的なアーキテクチャなのかな
0895デフォルトの名無しさん
2010/12/02(木) 15:40:08ありがちな記述は上で誰かが書いたマクロで。
0896880
2010/12/02(木) 15:51:27えーと、Luaだと、キャラ毎に仮想マシーンが必要ですね・・・。
違う内容を並列処理させるには、今考えているようなものが必要で、Luaだけではどうにも・・・。
今考えているやつだと、実行中の部分のカウンタだけ保持してればOKなので・・・。
>>895
ですね、実行用バイナリは、まるっきり機械語のような姿ですし・・・。
アセンブラ的な記述を挟んで、Basic的なテキストを入力側言語に・・・。
0897880
2010/12/02(木) 16:00:09・・・・なんとか、上手くいきそうです。
みなさんどうもありがとうございました orz
0898デフォルトの名無しさん
2010/12/02(木) 16:00:34LuaのVMってワークエリアは数KBだよ。
仮に多めに見積もって50kb程度だとして、
これに5000ユーザーつないでも250MB。余裕じゃん。
この程度のメモリ量を捻出できないってどんだけチープなサーバーだ。
0899880
2010/12/02(木) 16:20:51MOB 1万とNPC 100も忘れないでください。
あと、全員分のLuaのコードをキャッシュしないといけないので、
Luaコードのキャッシュだけで1GB超えることもありえます。
スペックアップを予定しているけど、現状は利用可能RAMは680MBくらいです。
忘れているようですが、クライアントのオブジェクトは、LuaのVMだけではありません。
そして、仮想マシーンを作るたびに動的に作成されるメモリの行き先のことも忘れずに・・・。
5000ユーザーといいますが、実際には枠内で絶えず入れ替わるので、最大の見積りも一週間という時間の前には・・・。
0900デフォルトの名無しさん
2010/12/02(木) 16:35:29俺達はお前の無料コンサルタントじゃねえ。情報を後出しにすんな。
インスタンス1万なんて今はじめて書いてるじゃないか。
>既にサーバー側に定義されている変数のみを使用し、スクリプト内では変数の定義を行わない
って言ってるんだからスクリプトやらテキストやらはC++側で共通にもたせたらいいじゃないか。
別に全部LuaVMに持たせる必要はない。
サーバー本体側からVM側にAPIを用意しといて、適宜読むようにすればいい。
それからインスタンスごとにVMを分けるのは
全体をリエントラントにしてスケービリティーを確保したいからで、
他の制限事項があるならVMを使い回すなりして節約すればいい。
0901880
2010/12/02(木) 16:49:37えーと、そちらが言い出したユーザー5000と仮定すると、MOBの量も1万〜2万と考えられるのではないでしょうか?
システムとして全体があるのですから、ある程度現実的なユーザーの数字を上げるなら、
それくらいのMOBの量を考えての発言だと思いましたが・・・。
基本、性悪説で実装していますので、Luaの仕様がメモリリークなしでも、
私には信じる気にはなれませんので、危険な事になる可能性があるならすべて排します。
Luaの便利さが、私の心をくすぐって危険なコードを書いてしまわないように・・・。
0902デフォルトの名無しさん
2010/12/02(木) 17:00:48意味がわからんMMPサーバーのサポートユーザー量なんて開発側が自分で決めることだろ。
外野が仮に出した数字を真に受けてどうする。
0903880
2010/12/02(木) 17:19:18あなたの試算に合わせたから、この数字での計算なのに・・・。
あなたへの反論だから、あなたの数字を適用したまでです。
設計では、最大限のサポートユーザーになるように設計を切り詰めるでしょう?
そして、実際の数値は、スペックに合わせての可変でしょう。
それは、こちらが決めたことではなく、必然的な数値ではないでしょうか?
そのため、こちら側の考えているサポート人数の予定なんて無意味です。
結局のところ私は、あなたの考える数値で反論するほかありません。
0904デフォルトの名無しさん
2010/12/02(木) 18:58:21技術的な本論なら言い合いになっても面白いけど。
0905デフォルトの名無しさん
2010/12/02(木) 18:59:33プロトタイプをmod_luaで作ってみるのもいいんじゃないかな。
0906デフォルトの名無しさん
2010/12/02(木) 21:28:220907880
2010/12/03(金) 08:07:42最初は、私もそう思ったのですが、Luaだと記述が長い上に、
自作でスクリプトを規格した場合と同じ位の工数なので、やめたんです。
いつも使っている自作のプロトコルを改造して作った、バイナリタイプの
自作スクリプトを走らせるほうが速度もフィット感もよかったので、なおさらでした。
あと、この質問は、多分、最初から導きだされた苦渋の結論があって、
それよりいいものを探そうと悪あがきしていただけかもせれません。
やっぱり、バイナリをインデックス付きで、それに沿ったコンパイラが必要だった。
あの結論からは、逃れられませんでしたね・・・。どうも、お騒がせしました。
0908デフォルトの名無しさん
2010/12/03(金) 17:11:29その程度の「コンパイラ」は付いていたしね。
0909デフォルトの名無しさん
2010/12/03(金) 18:20:14Luaインタプリタの性能を過小評価してる嫌いがあるな。
今回の課題の場合は大半の機能を本体側に持たせてAPI化し、
Lua側はそれを順番に呼んでいく、という実装法が適切で、単純かつ軽くなるだろう。
とはいえ自作に固執するなら止めはしない。
元々このスレの連中は自作ダイスキーなわけだしな!
0910880
2010/12/04(土) 13:05:15サーバーのスペックアップが決まったので、Luaを試す余裕ができそうです。
APIは、サーバー側の関数を呼ぶ形式にしたらいいのかな?
ところで、頻繁に一時停止をするのですが、同期どうすればいいんでしょうか?
0911880
2010/12/04(土) 18:07:27Luaでダメだったら、また来るかもしれません。
0912デフォルトの名無しさん
2010/12/25(土) 11:50:58「プログラミング言語を作る」は
このスレ的にはどの様な評価になるのでしょうか?
Amazonのレビューも1件しかないので購入しようか迷っています。
0913デフォルトの名無しさん
2010/12/25(土) 13:01:52竜本と虎本買っとけ。
0914デフォルトの名無しさん
2010/12/25(土) 13:17:080915デフォルトの名無しさん
2010/12/25(土) 13:38:33私のレベルは気にせずに貴方の評価を聴かせてください。
0916デフォルトの名無しさん
2010/12/25(土) 13:59:480917デフォルトの名無しさん
2010/12/25(土) 18:24:17>>912は書評を求めているだけなのだから相手のレベルとか関係なくね?
0918デフォルトの名無しさん
2010/12/25(土) 19:21:25それなら過去スレ見れば良い。
話題にもなっていなかったんじゃね?
0919デフォルトの名無しさん
2010/12/25(土) 19:23:580920デフォルトの名無しさん
2010/12/25(土) 19:34:21話題になってないんじゃ過去スレ見る意味ねーだろw 頭大丈夫か?
読んでない・評価できないやつは黙っててやれよ
0921デフォルトの名無しさん
2010/12/25(土) 20:25:36話題にもならなかった程度ということだろ
0922デフォルトの名無しさん
2010/12/25(土) 21:21:21それともしたり顔したいだけか?
0923デフォルトの名無しさん
2010/12/25(土) 23:35:54とりあえず著者のサイトくらい見ろよ。amazonに書いてあるだろ。
0924デフォルトの名無しさん
2010/12/25(土) 23:49:19著者のサイトは見ています。
このスレの住人で本を読んだ人はいないのですか?
0925デフォルトの名無しさん
2010/12/26(日) 07:29:51悪くないと思うよ、と言ってもらいたいわけ?
それで期待したものと違ったとか言って逆恨みされるわけ?
0926デフォルトの名無しさん
2010/12/26(日) 08:28:470927デフォルトの名無しさん
2010/12/26(日) 09:59:540928デフォルトの名無しさん
2010/12/26(日) 11:57:01マジキチだよなw
書評を聞いただけでババを引いた>>912が気の毒だ
0929デフォルトの名無しさん
2010/12/26(日) 15:19:25中田本でも良いかもしれんが。
リンゴ本と同じ方向性の本だから、立ち読みして良かったら買えば?
0930デフォルトの名無しさん
2010/12/26(日) 16:28:43なんで買う必要があるのか分からんし、
自分で判断できない理由も分からない。
網羅的な知識を学ぶ本ではなくて、実装本なので、
自分で買いたいと思えば買えばいい。
何度も読む本ではないのだから。
0931デフォルトの名無しさん
2010/12/26(日) 20:32:21いまは、疑問が出たら、とりあえず聞いてみる時代ですよ。
聞いといて、待ち時間にぐぐったりして情報収集すれば並行処理できるし。
0932デフォルトの名無しさん
2010/12/26(日) 20:53:02分からないなら黙ってろよ。誰かお前に質問したのか? 黙ってろよ。
0933デフォルトの名無しさん
2010/12/26(日) 21:24:330934デフォルトの名無しさん
2010/12/26(日) 22:58:040935デフォルトの名無しさん
2010/12/26(日) 23:59:39>931
聞くにしたって効率の良い聞き方というのがあるだろうに。
それに>912は単なるネタだろ? 投げっぱなしで真面目にコミュニケーションしてないし。
0936デフォルトの名無しさん
2010/12/27(月) 00:20:14まともにコミュニケーションする相手もいなかった
いたのはマジキチだけ
0937880
2010/12/27(月) 01:29:48ちょっと色々やってみたのですが、Luaだと実行途中でVMを保ったまま強制終了しにくいのと、
あまりにも実行部分で融通がきかないので、自分で言語を作ることにしました。
0938デフォルトの名無しさん
2010/12/27(月) 07:47:380939デフォルトの名無しさん
2010/12/27(月) 09:05:09最悪?
技術書じゃなく一般向け書籍っしょ?
0940デフォルトの名無しさん
2010/12/27(月) 11:42:580941デフォルトの名無しさん
2010/12/28(火) 20:24:18実装解説の本で、人に勧められるのは、虎本とGCの本くらいだろ。
0942デフォルトの名無しさん
2010/12/28(火) 20:27:11アホとしかおもえないわ
0943デフォルトの名無しさん
2010/12/28(火) 20:31:42GC本って本棚の表紙のやつか?
0944デフォルトの名無しさん
2010/12/30(木) 16:22:56虎本
田中本(高くね?)
リンゴ農園(田中本2)
0945デフォルトの名無しさん
2010/12/31(金) 19:39:03・明快入門コンパイラ・インタプリタ開発
という本で実行エンジンの実装まで学べますか?
他にいい本があれば教えてください。
よろしくお願いします。
0946デフォルトの名無しさん
2010/12/31(金) 21:53:18その本はしらないので何ともいえないしおまえさんの技能がどこまであるのかもわからないので示唆も与えられない
極々原始的な実装なら昔の8bit機の書籍が参考になる
モダンな実装を自分のものにしたいなら今のおまえさんには内容が理解できないような本を繰り返し読み下す努力をしたほうがよいので中途半端な本は薦めたくない。
0947デフォルトの名無しさん
2010/12/31(金) 23:14:04まずは>6を見ろ。
インタプリタの勉強ということならばforthお勧め。
ttp://www.bradrodriguez.com/papers/moving1.htm
0948デフォルトの名無しさん
2011/01/01(土) 19:26:40その本を読んで簡易コンパイラを作ってみた者です。
その本のインタプリタは、その前段階で作ったコンパイラが出力した
VMのマシンコードを実行するだけのものだから、
インタプリタとしてはあまり参考にならないと思う。
インタプリタ制作の本当に初歩の初歩でいいなら
>>7 の「やさしいインタープリタの作り方入門」がオススメ
0949デフォルトの名無しさん
2011/01/02(日) 15:45:50> その前段階で作ったコンパイラが出力した
> VMのマシンコードを実行するだけのものだから、
最近のインタプリタってこんなんばっかりでしょ。
0950デフォルトの名無しさん
2011/01/02(日) 18:05:28つーか素朴なインタプリタの方がむしろ例外なんじゃね
0951デフォルトの名無しさん
2011/01/02(日) 21:06:27perlやrubyみたいなスクリプト言語ってインタプリタじゃないの?
0952デフォルトの名無しさん
2011/01/02(日) 22:38:08rubyも最近のはそうなってるらしい
0953デフォルトの名無しさん
2011/01/03(月) 03:39:150954デフォルトの名無しさん
2011/01/03(月) 07:23:59もっと新しくて便利なツールが普及してたりしますか?
0955デフォルトの名無しさん
2011/01/03(月) 07:26:51慣れるまでは大変かもしれない
0956デフォルトの名無しさん
2011/01/03(月) 08:34:03ありがとう。Boost::Spiritでググってきます。
0957デフォルトの名無しさん
2011/01/03(月) 13:04:13最近は、
「実行時にコードがテキスト表現で保持されている処理系」
としか言いようがないね。
実行する時は常にマシン語にJITするv8も含まれてしまうが。
>>956
ここにBoost::Spiritで書いたLuaのパーザある。
http://lua-users.org/wiki/LuaGrammar
0958デフォルトの名無しさん
2011/01/03(月) 13:17:450959デフォルトの名無しさん
2011/01/03(月) 18:54:32「インタプリタ(interpreter)とは、プログラミング言語で書かれたソースコード、
ないし中間表現を逐次解釈しながら実行するプログラムのこと」
0960デフォルトの名無しさん
2011/01/03(月) 21:27:240961デフォルトの名無しさん
2011/01/03(月) 21:32:29英語版のwikipediaみてみ
0962デフォルトの名無しさん
2011/01/03(月) 21:39:30バイトコードを実行するのがインタプリタ。
というものもある。
0963デフォルトの名無しさん
2011/01/04(火) 08:39:34自分自身で実行するなら内部で何に変換していようがインタプリタじゃないのか。
0964デフォルトの名無しさん
2011/01/04(火) 13:48:20javaがインタプリタ
0965デフォルトの名無しさん
2011/01/04(火) 14:09:420966デフォルトの名無しさん
2011/01/04(火) 15:55:370967デフォルトの名無しさん
2011/01/04(火) 16:52:520968デフォルトの名無しさん
2011/01/04(火) 17:21:090969デフォルトの名無しさん
2011/01/04(火) 17:26:280970デフォルトの名無しさん
2011/01/04(火) 17:31:070971デフォルトの名無しさん
2011/01/04(火) 18:03:180972デフォルトの名無しさん
2011/01/04(火) 18:28:150973デフォルトの名無しさん
2011/01/08(土) 12:10:570974デフォルトの名無しさん
2011/01/09(日) 04:36:230975デフォルトの名無しさん
2011/01/09(日) 08:53:040976デフォルトの名無しさん
2011/01/18(火) 00:46:353つの基本ブロックが下図のように繋がっているとき、
immediately dominate は
1:なし
2:1
3:1
になると思うのですが、Dominance frontier はどうなるでしょうか?
'A Simple, Fast Dominance Algorithm' の方法で試したら
1:なし
2:2、3
3:なし
となりましたが、2のDFに2が含まれるのはアリなんでしょうか?
1──┐
↓ │
2←┐│
2 ││
2─┘│
↓ │
3←─┘
※作図の都合で2が3行になっています
0977デフォルトの名無しさん
2011/01/18(火) 22:25:03DFの定義通りです。
0978デフォルトの名無しさん
2011/01/18(火) 23:42:19お答えありがとうございます。
おかげさまで定義をよく読み返して理解できました。
0979デフォルトの名無しさん
2011/01/19(水) 12:29:230980デフォルトの名無しさん
2011/01/21(金) 14:16:40DynCall - 仮想マシンを経由するC関数呼び出しライブラリ(元々はR向けに開発されたもの)
ttp://dyncall.org/
0981デフォルトの名無しさん
2011/01/26(水) 20:41:45Rubyの表記がRubbyとなってるのが気になる。
もしかしてRubbyという言語があるの? それとも誤植?
0982デフォルトの名無しさん
2011/01/26(水) 21:04:03自己レスだけど、翻訳者の原田賢一さんって経歴から察するに60歳から70歳くらいのお年なのね。
こういう翻訳のお仕事はできれば若い方に譲ってもらいたいなー。
随所に引っかかる訳が多い。More Effective C++の訳を思い出す感じがイヤ。
「メモリ漏れ」よりかは「メモリリーク」の方が分かりやすいでしょ。
伝統的な工学系の翻訳も今の時代にあわない気がする。
正直、字句や構文、意味に関してはトークン、シンタックス、セマンティクスの方が分かりやすくね?
「系」とか「器」もなんだかなー。
「前処理系」よりもプリプロセッサ。
「解析器」よりもアナライザ。
「通訳系」よりもインタプリタの方が分かりやすい。
まあ、原著を読めって話か。
0983デフォルトの名無しさん
2011/01/26(水) 21:42:240984デフォルトの名無しさん
2011/01/26(水) 23:03:530985デフォルトの名無しさん
2011/01/27(木) 00:48:00シンタックスやセマンティクスは分かりにくい
0986デフォルトの名無しさん
2011/01/27(木) 11:10:200987デフォルトの名無しさん
2011/01/27(木) 13:54:15おっしゃることはもっともだと思うので、勝手に添削してみた。
>セルフレスだけど、トランスレータのミスター原田賢一ってヒストリーから察するに
>60歳から70歳くらいのエージなのね。
>こういうトランスレーションのワークはできればヤングメンに譲ってもらいたいなー。
自分のような今時のナウイヤングマンからすると、こっちの方が分かりやすくね?
0988デフォルトの名無しさん
2011/01/27(木) 17:39:25用語選択の問題くらいじゃ。若いだけじゃ困るし。
0989デフォルトの名無しさん
2011/01/27(木) 19:09:49俺は年取ってるせいかメモリリークよりメモリ漏れの方がしっくりするな
ガベージコレクションをゴミ集めっていうのはちょっと抵抗あるんだけど、和田先生とかがゴミ集めって言ういいかたしてたの思い出したらそうでもないかも
0990デフォルトの名無しさん
2011/01/27(木) 19:58:340991デフォルトの名無しさん
2011/01/27(木) 20:50:00章のタイトルなんかだと文字の大きさ自体が変わりそう
個人的には「字句(token)」みたいな最初の登場時のみ原典補足するスタイルが一番好みだし後々便利だ
どうしてもやるならいっそカタカナなしで原典表記のみの方がいいな
0992デフォルトの名無しさん
2011/01/27(木) 22:20:370993デフォルトの名無しさん
2011/01/28(金) 18:56:30が、男らしい!!!
0994デフォルトの名無しさん
2011/01/28(金) 20:11:510995デフォルトの名無しさん
2011/01/28(金) 20:12:340996デフォルトの名無しさん
2011/01/28(金) 20:13:240997デフォルトの名無しさん
2011/01/28(金) 20:14:390998デフォルトの名無しさん
2011/01/28(金) 20:19:150999デフォルトの名無しさん
2011/01/28(金) 20:36:17「コンパイラ・スクリプトエンジン」相談室15
http://hibari.2ch.net/test/read.cgi/tech/1296214398/
1000デフォルトの名無しさん
2011/01/28(金) 21:42:0510011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。