- 1 名前:デフォルトの名無しさん mailto:sage [04/11/10 23:30:50]
- 言語仕様や処理系の話題に関するスレッドです。
字句解析・構文解析から,データフロー解析,ループ並列化,タスク並列化,SSA変換,CPS変換, レジスタ割付,命令スケジューリング,ソフトウェアパイプライン等各種最適化,それに VM,GC,JIT,リンク時最適化,動的バイナリ変換などなど。 前スレ 1 pc.2ch.net/tech/kako/981/981672957.html 2 pc2.2ch.net/test/read.cgi/tech/1021136715/ (dat落ち) 3 pc5.2ch.net/test/read.cgi/tech/1070089173/ (前スレ) 関連リンクは多分 >>2-10 あたり
- 740 名前:デフォルトの名無しさん mailto:sage [05/01/02 02:00:21]
- Rubyなんてプッて感じ。
ブロック扱うためにイテレータとか言って特殊構文導入しちゃって必死すぎw それでも全然自己記述出来ないのな。Lispには遠く及ばないな。 Smalltalkの統一性にも全然及ばないwww ユーザーも各スレ荒らしまくって最悪だしな。
- 741 名前:738 mailto:sage [05/01/02 02:02:43]
- >>739
そうです。 なんか、「他の言語からも使ってもいいよ」みたいなことが書いてあったので、 どんなもんかなと思ったんですが。
- 742 名前:デフォルトの名無しさん mailto:sage [05/01/02 02:10:32]
- >>741
不勉強にして知らなかったからちょっと調べてみた。 www.namikilab.tuat.ac.jp/~sasada/prog/parrot-intro.html とりあえずPerl用に作られたVMなんすね。 この種のものってJVMじゃダメなのかな… 面白そうなのでもうちょっと調べてみます。いい拾い物をしたw
- 743 名前:デフォルトの名無しさん mailto:sage [05/01/02 02:15:44]
- > 現在の Perl 5 の VM はスタックマシンだ(訳注:そうだったんだー)
そうだったんだ…
- 744 名前:デフォルトの名無しさん mailto:sage [05/01/02 02:24:49]
- >print "String" とか、レジスタの値を表示するためにprint I3 とか、書けるけど、
>Parrot の演算は多態(polymorphic)ではない。 >アセンブラがちょっとトリッキーなことやって対応してる。 こういう変なHack入れるとグダグダになりそうな気がするんだけどなあ…
- 745 名前:デフォルトの名無しさん mailto:sage [05/01/02 02:29:59]
- >>744
ただオペランドの種類で命令をリダイレクトしてるだけとちゃうの? その程度ならさほど問題にはならなそうだけど
- 746 名前:デフォルトの名無しさん mailto:sage [05/01/02 02:32:17]
- >>745
うん、ちょっと読み進めたらまさにそう書いてあったorz
- 747 名前:738 mailto:sage [05/01/02 02:41:58]
- www.parrotcode.org/
俺の受けた印象では、Groovyとか、違う言語からJavaバイトコードを 使おうってのとか、.NETのCLRとかも含めて、そういう ものと似た動きに見えるんですがどうですか? ならまじめに勉強して損はないかなと思うんですが。 最近そういう動きが盛んだな…
- 748 名前:デフォルトの名無しさん mailto:sage [05/01/02 03:01:23]
- アプリケーションからハードは一切触らない、みたいな。それこそ
単純な加算などでさえも。
- 749 名前:デフォルトの名無しさん mailto:sage [05/01/02 03:05:37]
- Parrot入れてみたんだが、SDLも既にバインドされてたりするのね…
- 750 名前:デフォルトの名無しさん mailto:sage [05/01/02 03:10:26]
- これって出て来た?
www.namikilab.tuat.ac.jp/~sasada/prog/parrot-intro.html
- 751 名前:デフォルトの名無しさん mailto:sage [05/01/02 04:31:04]
- >>750 >>742
- 752 名前:デフォルトの名無しさん mailto:sage [05/01/02 12:50:19]
- C/C++で日本語プログラム作らないんだな、
- 753 名前:デフォルトの名無しさん mailto:sage [05/01/02 12:53:20]
- 、
- 754 名前:デフォルトの名無しさん mailto:sage [05/01/02 14:53:29]
- parrotなんか糞
perl6はrubyの劣化コピー
- 755 名前:デフォルトの名無しさん mailto:sage [05/01/02 16:27:28]
- Parser を正しく発音すると「パーサー」「パーザー」のどっち?
- 756 名前:デフォルトの名無しさん mailto:sage [05/01/02 16:31:55]
- 米語発音がパーサー。どっちも正しい
- 757 名前:デフォルトの名無しさん mailto:sage [05/01/02 16:33:18]
- >755
dictionary.goo.ne.jp/search.php?MT=parse&kind=ej&mode=0&base=1&row=0
- 758 名前:デフォルトの名無しさん mailto:sage [05/01/02 17:24:33]
- pythonの言語仕様は素晴らしいと思う。
- 759 名前:デフォルトの名無しさん mailto:sage [05/01/02 18:26:43]
- >>758
言語仕様と開発論法 pc5.2ch.net/test/read.cgi/tech/1104394930/ こちらへどうぞ
- 760 名前:デフォルトの名無しさん mailto:sage [05/01/02 19:30:46]
- >>747
流行ってるわけでも無いVMの勉強って 損得で言ったらどっちになるか微妙だとおもうぞ。
- 761 名前:デフォルトの名無しさん mailto:sage [05/01/02 22:03:31]
- コンパイラ作る練習にいいかも
- 762 名前:デフォルトの名無しさん mailto:sage [05/01/02 22:40:11]
- >>754
つInline::Ruby
- 763 名前:デフォルトの名無しさん mailto:sage [05/01/03 11:29:03]
- >>760
やっぱ、やるならjavaのVMでつか?
- 764 名前:デフォルトの名無しさん mailto:sage [05/01/03 16:44:26]
- どういう目的でVMの勉強したいのかわからんが
とりあえずJavaが無難じゃない?
- 765 名前:デフォルトの名無しさん mailto:sage [05/01/03 17:25:44]
- いきなりJVMやるならアセンブラでも覚えたほうがいい
- 766 名前:デフォルトの名無しさん mailto:sage [05/01/03 17:44:32]
- ここはやるスレじゃなくて作るスレなんで
- 767 名前:デフォルトの名無しさん mailto:sage [05/01/03 18:22:40]
- 作る前にやらんと意味わからん
- 768 名前:デフォルトの名無しさん mailto:sage [05/01/03 18:23:39]
- そらそうだ
- 769 名前:デフォルトの名無しさん mailto:sage [05/01/03 18:30:47]
- ここは作るスレじゃなくて相談室なんで
- 770 名前:デフォルトの名無しさん mailto:sage [05/01/03 19:58:29]
- おまいら会話がエロすぎます。
- 771 名前:デフォルトの名無しさん mailto:sage [05/01/03 21:26:12]
- 作っちゃった時の相談もここ?
- 772 名前:デフォルトの名無しさん [05/01/04 01:09:27]
- VBやDelphiなどの言語のコンパイラを
勝手に作ったら特許とかに引っかかりますかね?
- 773 名前:デフォルトの名無しさん mailto:sage [05/01/04 01:10:53]
- >>772
先ず作ってから心配しろ。
- 774 名前:デフォルトの名無しさん mailto:sage [05/01/04 01:11:52]
- >>773
作った後に駄目だったらキツイでしょ?
- 775 名前:デフォルトの名無しさん mailto:sage [05/01/04 01:29:06]
- >>772
A.言語仕様自体は特許にならないから大丈夫。 ただし、付属しているライブラリは特許・著作権で保護されるので そっちの回避法を考えておかないと駄目。
- 776 名前:デフォルトの名無しさん [05/01/04 01:37:27]
- 質問です。
コンパイラ本に良く載ってる実行時環境(スタックマシンとかレジスタマシンとか)っていうのは 何のためにあるんですか?最適化をしやすくするため? 実行時環境とか用意しなくても直接構文木を記号表と照らし合わせながら 実行コードに変換していく様な事はできないんですか?
- 777 名前:デフォルトの名無しさん mailto:sage [05/01/04 02:16:26]
- ↑自己解決しました。勘違いでした。
- 778 名前:デフォルトの名無しさん [05/01/04 02:23:09]
- HSPくらいの言語なら簡単に作れますか?
- 779 名前:デフォルトの名無しさん mailto:sage [05/01/04 02:24:06]
- >>778
あなたには無理です
- 780 名前:デフォルトの名無しさん mailto:sage [05/01/04 02:24:16]
- 最適化をあまり気にしなければ。
- 781 名前:デフォルトの名無しさん mailto:sage [05/01/04 02:26:11]
- >>776
ただ単純に説明を楽にするためじゃないの? 「勘違いでした」って何を?
- 782 名前:デフォルトの名無しさん mailto:sage [05/01/04 06:04:48]
- >>781
仮想マシンのスタックマシンと、CとかPascalのスタックベースメモリ割り当てを勘違いしてました。
- 783 名前:デフォルトの名無しさん mailto:sage [05/01/04 11:38:53]
- >>775
ありがとうございます。 とりあえず勉強を兼ねてVBコンパイラ作ってみます。
- 784 名前:デフォルトの名無しさん mailto:sage [05/01/04 16:17:36]
- LSI C-86 試食版
で、コンパイラをつくってみよ〜
- 785 名前:デフォルトの名無しさん [05/01/04 20:40:08]
- 質問させていただきます。
bnfを使って出来ることって字句解析、構文解析までですよね? 意味解析、中間コード生成までを定義できるようなbnfにしたいのですが、 そのような拡張がされたbnfの構文というのはあるのでしょうか?
- 786 名前:デフォルトの名無しさん mailto:sage [05/01/04 20:54:45]
- >>785
とりあえず属性文法を学ぶのが良いと思う。
- 787 名前:デフォルトの名無しさん mailto:sage [05/01/04 21:31:27]
- >>785
わりと参考になった本を紹介しときます。(関係者じゃないですよ、念のため。) www.amazon.co.jp/exec/obidos/ASIN/4320027981/249-0278157-3285121
- 788 名前:デフォルトの名無しさん mailto:sage [05/01/04 21:57:33]
- Rie 属性文法
ftp://ftp.is.titech.ac.jp/pub/Rie/
- 789 名前:デフォルトの名無しさん mailto:sage [05/01/05 05:27:11]
- なるほど属性文法ですか。
手元の本でちょっと調べてみましたが 意味解析以降は格段に難易度上がりますね。 ちょー難い!
- 790 名前:デフォルトの名無しさん mailto:sage [05/01/05 06:15:19]
- 属性文法(((( ;゚Д゚)))
- 791 名前:デフォルトの名無しさん mailto:sage [05/01/05 22:42:48]
- 普通は、構文解析以降は手書きじゃ???
- 792 名前:デフォルトの名無しさん mailto:sage [05/01/05 22:57:49]
- 何が普通なんだか…
- 793 名前:デフォルトの名無しさん mailto:sage [05/01/05 23:24:54]
- >>791
つまり、bnfのような定義ファイルにはできないってこと?
- 794 名前:デフォルトの名無しさん mailto:sage [05/01/05 23:33:32]
- すぐ上にあんじゃねーか
- 795 名前:デフォルトの名無しさん [05/01/05 23:45:45]
- YACCに限界を感じて、そろそろというプロジェクトはいくつかあるが、
パーサ手書きというのは、実用的なソフトではほとんどナイ。
- 796 名前:デフォルトの名無しさん mailto:sage [05/01/05 23:55:10]
- >>794
属性文法の書式を例を踏まえて教えれ。
- 797 名前:デフォルトの名無しさん mailto:sage [05/01/06 00:05:13]
- >>795
最近のgccは手書き。 次期rubyも手書きの予定。
- 798 名前:デフォルトの名無しさん mailto:sage [05/01/06 00:16:18]
- >>794
ftp://ftp.is.titech.ac.jp/pub/Rie/more-examples/pascal-S/pascal-S.rie
- 799 名前:デフォルトの名無しさん mailto:sage [05/01/06 00:39:55]
- 属性文法使ってる処理系なんて聞いたことないぞ。
lexやyaccまでなら聞くけど。 構文解析以降は手書きじゃないか?
- 800 名前:デフォルトの名無しさん mailto:sage [05/01/06 00:48:02]
- 日本語の不自由な方がおらっしゃられるようです
- 801 名前:デフォルトの名無しさん mailto:sage [05/01/06 01:02:19]
- Rieくらいは聞いたことあるんじゃないか?市販の製品に使われたって
言うのは聞かないけれども。
- 802 名前:デフォルトの名無しさん mailto:sage [05/01/06 01:04:04]
- 藻前らはコンパイラ作って市販するつもりなのか?
- 803 名前:デフォルトの名無しさん mailto:sage [05/01/06 01:05:07]
- コンパイラ屋くらいだろうな、そんなことするの。
- 804 名前:デフォルトの名無しさん mailto:sage [05/01/06 01:05:50]
- 理恵タソ(;´Д`)ハァハァ
- 805 名前:デフォルトの名無しさん mailto:sage [05/01/06 08:04:07]
- 現場ではどうなのかわからないけれども、最適化ステージと
コードジェネレータを全部手書きってのは無いんじゃないかなあ。 最適化とコードジェネレーションについては、 Muchnick: Advanced Compiler Design & Implementation, Morgan Kaufmann, 1997 が実践的で参考になった。
- 806 名前:デフォルトの名無しさん mailto:sage [05/01/06 09:29:25]
- カウフマンつーとサイレントヒルだな
医者。仮眠明けで起きると誰も居ないでモンスターだらけと説明。
- 807 名前:デフォルトの名無しさん mailto:sage [05/01/06 10:46:42]
- コンパイラ作る時のお勧めの中間コードは何ですか?
- 808 名前:デフォルトの名無しさん mailto:sage [05/01/06 11:00:29]
- 中間コード?
1パスにそんなもん必要ない
- 809 名前:デフォルトの名無しさん mailto:sage [05/01/06 11:04:20]
- 1パスでレジスタ割り当てとかの最適化まで出来るのですか?
- 810 名前:デフォルトの名無しさん mailto:sage [05/01/06 14:17:14]
- どんな最適化を実装するつもりか自分でわかっているなら、
おのずと適切な中間コードもわかるはず。それが分かっていない >>807にはどうせ非最適化コンパイラも作れない罠。
- 811 名前:デフォルトの名無しさん [05/01/06 22:54:47]
- 上の張ってある書籍ですが、読む順番はあるんですか?
ちなみに私は、Cをはじめてまだ1ヶ月です。
- 812 名前:デフォルトの名無しさん mailto:sage [05/01/06 22:56:16]
- >>811
プログラミングを初めて1ヶ月?
- 813 名前:デフォルトの名無しさん mailto:sage [05/01/06 22:57:10]
- 先にCを完全にマスターして下さい。
どの本も何らかのプログラミング言語をマスターしている事を前提に書かれてます。
- 814 名前:デフォルトの名無しさん [05/01/06 23:15:09]
- Cマガでコンパイラの特集が組まれてたのって何年何月号だか
ご存知の方いらっしゃいますか?
- 815 名前:デフォルトの名無しさん [05/01/06 23:33:05]
- >812
そうです。 >813 マスターですか。。。。 K&Rがスラスラ読めるレベルでしょうか? 頑張ります。
- 816 名前:デフォルトの名無しさん mailto:sage [05/01/06 23:44:02]
- >>814
手持ちでは…2003年8月号に 「コンパイラの仕組みを理解しよう」って特集があるけど、 そこまで突っ込んでは書いてない。
- 817 名前:デフォルトの名無しさん mailto:sage [05/01/07 00:05:22]
- >>816
情報ありがとうございます。 私の手持ちで2003年1月号に「コンパイラの作成」 というそのものズバリの物がありました。
- 818 名前:デフォルトの名無しさん mailto:sage [05/01/07 00:07:54]
- >>817
見事にその号が抜けてる orz どのあたりまで書いてありますか?
- 819 名前:デフォルトの名無しさん mailto:sage [05/01/07 00:52:08]
- Cマガの特集レベルなんてたかが知れてる
昔のインターフェース誌は濃かったなあ
- 820 名前:デフォルトの名無しさん mailto:sage [05/01/07 00:55:04]
- インターフェースもCマガみたくバックナンバーをPDFにして売ってくれたりしないのかなぁ
- 821 名前:デフォルトの名無しさん mailto:sage [05/01/07 01:02:21]
- >>820
しているじゃないか。
- 822 名前:デフォルトの名無しさん mailto:sage [05/01/07 01:12:37]
- >>821
うお、知らなかった…_| ̄|○ 01年までですか…。90年代のやつがもう一度読みたいんだけどなぁ
- 823 名前:デフォルトの名無しさん mailto:sage [05/01/07 12:44:16]
- >>818
字句解析、構文解析、意味解析、コード生成までが 非常に分かりやすく書かれてます。 20ページくらいでソース付きです。
- 824 名前:デフォルトの名無しさん mailto:sage [05/01/07 14:43:10]
- >822
ttp://www.sbpnet.jp/shop/art.asp?newsid=1403
- 825 名前:824 mailto:sage [05/01/07 14:44:52]
- ごめん、インタフェースも、か。読み間違えた。
- 826 名前:デフォルトの名無しさん mailto:sage [05/01/07 17:31:22]
- www.csg.is.titech.ac.jp/~chiba/lecture/os/index.html
- 827 名前:デフォルトの名無しさん [05/01/08 03:28:16]
- ●プログラミング言語処理系 岩波講座 ソフトウェア科学〈5〉 佐々 政孝
上記の本を買おうと思ったら、中身パスカルだったぞ。 他のコンパイラの本もパスカル+Cって内容だった。 Cのみの本はないのか?
- 828 名前:デフォルトの名無しさん mailto:sage [05/01/08 03:32:21]
- >>827
その本俺も持ってるし、俺はCしか書けないけど、大体読めるから自分で 書き直せるっしょ。元々そういう意図があるから複数の言語で書いてないん じゃないの?
- 829 名前:デフォルトの名無しさん mailto:sage [05/01/08 07:40:38]
- >827
なぜCのみである必要が? パスカルのみでも読めるでしょ 逆に読めないなら問題
- 830 名前:デフォルトの名無しさん mailto:sage [05/01/08 16:25:31]
- 今の人には読めない読めない
無理も無い パシカル本は今の本屋にどこにも置いてないからね もしCより簡単だと言われても敬遠するだろう パスカルで書かれているという事は大抵古い本で、 ポインタ記法とか本ごとに違ってたりするし 構文なのか演算子なのかわからない物もある .の置き方に一貫性ないし 読んでもただ、混乱するだけである
- 831 名前:デフォルトの名無しさん mailto:sage [05/01/08 16:31:00]
- Pascalの方が綺麗でしょ。
Cみたいにメモリ周りの汚さはなくて、純粋にアルゴリズムを記述しやすい。
- 832 名前:デフォルトの名無しさん mailto:sage [05/01/08 16:39:23]
- 綺麗・汚いの話をしてるわけではない
- 833 名前:デフォルトの名無しさん mailto:sage [05/01/08 16:43:55]
- >>832
綺麗なら読みやすいだろう。 言語を覚えるコストよりもソースを読み解いたり書いたりするコストの方が遥かに高い。
- 834 名前:デフォルトの名無しさん mailto:sage [05/01/08 17:13:11]
- 読みやすさの話をしてるわけではない
綺麗ならSchemeの方が良い
- 835 名前:デフォルトの名無しさん mailto:sage [05/01/08 17:17:09]
- >>834
では何の話なの?わかりやすく教えて。
- 836 名前:デフォルトの名無しさん mailto:sage [05/01/08 17:18:18]
- 本がないという理由なら、WEB上のリソースでも十分だけど。
- 837 名前:デフォルトの名無しさん mailto:sage [05/01/08 17:32:26]
- なぞなぞです
- 838 名前:デフォルトの名無しさん mailto:sage [05/01/08 17:36:59]
- >>834
関数型言語と手続き型言語では、さすがにプログラミングの定石からして 全く違うだろ。 記法が書籍毎に異なるなんてのは、良くある話。コンパイラ系の書籍だと BNF 記法が良く出てくるが、あれも書籍毎に微妙に違ったりするし。その あたりを自分で吸収できないようだと、専門書と取り組むのは難しい。
- 839 名前:デフォルトの名無しさん mailto:sage [05/01/08 18:10:28]
- 記法が多少違うなんてのはコンピュータに限らず、
大学で勉強すれば大抵でくわす話。
- 840 名前:デフォルトの名無しさん mailto:sage [05/01/09 09:13:32]
- >>829
それはあんたはすでにパスカルを知っているから。 またはあんたが十分かしこいから。 よのなかの人間はあんたほど賢くないんだよ。 >>830 はげどう。 Javaが広まった理由のひとつが、「CやC++と見た目が似てるから」。 そのくらい、自分の知ってる言語に似ているかどうかは重要。かしこくない人間にとっては。
|

|