5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

「コンパイラ・スクリプトエンジン」相談室14

1 :デフォルトの名無しさん: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 あたり

2 :デフォルトの名無しさん:2009/11/17(火) 13:13:56
Wikiのまとめページ
http://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/

3 :デフォルトの名無しさん: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

4 :デフォルトの名無しさん: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

5 :デフォルトの名無しさん: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/
 ヨーロッパ系。派手さはないが堅実。

6 :デフォルトの名無しさん: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
 初心者向けの優しい解説本。

一部圧縮しようとしたが諦めた。
以上。

7 :デフォルトの名無しさん: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

8 :デフォルトの名無しさん:2009/11/17(火) 14:08:21
中田先生の第2版、取り次ぎに来たから少しだけ読ませて貰ったけど良い感じだった。
第一版の内容を全部覚えているわけじゃないし、ほんの数ページを見せて貰っただけだけど。

9 :デフォルトの名無しさん:2009/11/18(水) 07:24:32
go最強だな

10 :911:2009/11/18(水) 12:38:55
よう、愚民ども。911様とあがめろ。
本当の俺の力を見せつけるときが来たな。
中田の本で防御してドラゴンブックで攻撃だ!

11 :デフォルトの名無しさん:2009/11/18(水) 14:15:33
.NET Micro Framework 4.0がApache License 2.0のオープンソースになると発表されたらしいが
オレオレ言語の実行環境として流用できるだろうか

12 :デフォルトの名無しさん:2009/11/18(水) 14:59:20
よっぽど物好きでない限りCLIの上にのせる方が汎用性高くなるとは思うが

13 :デフォルトの名無しさん:2009/11/18(水) 15:22:30
>>12
Windowsプラットフォーム前提であれば、そのとおりだろうな。

14 :デフォルトの名無しさん:2009/11/18(水) 16:27:25
>>10
MAIL蘭。

15 :デフォルトの名無しさん:2009/11/18(水) 17:15:21
>>11
MS社の囲い込み戦術か。JVMの方が汎用性が高いしJVMの地位は落ちないと思う。

16 :デフォルトの名無しさん:2009/11/18(水) 17:24:54
JVMの方が汎用性が高い(キリッ

17 :デフォルトの名無しさん:2009/11/18(水) 17:25:46
エロゲの話で恐縮だが、体験版をEXEではなくFLASHで遊ばせてくれる所が出てきた。
そのうちJVMで実行できるエロゲが販売されれば、OSの選択にLinuxと言うのも出てくると思う。
今はKVMでXPを動かしてるけど、JVM版が出ればMS社にOSのライセンス料を払わなくて良くなる。
ビデオテープの原動力がエロだったという事実を考えると、OSは今、officeとエロゲで選ばれてると思うからね。

18 :デフォルトの名無しさん:2009/11/18(水) 17:32:19
中田先生の本、新版はハードカバーじゃないのか。本屋で見てきた。

19 :デフォルトの名無しさん:2009/11/18(水) 17:49:07
>>17
それ別にJVMじゃなくてもよくね

20 :デフォルトの名無しさん:2009/11/18(水) 20:47:27
>>18
ハードカバーじゃないのか。でも価格は変わっていないんじゃなかった?

>>10
防御力-1(w

>>19
クロスプラットホームのゲームならActionScriptが組みやすいね。
ActionScriptHACKを覚えるのがやっかいだけど。
Fileアクセスの場合はlocalで実行できるけど
httpアクセスの場合、local-http-serverが必用だけど。
saveオブジェクトを作らないといけないのが面倒っちゃ面倒。

21 :デフォルトの名無しさん:2009/11/18(水) 20:52:36
>>18
マジか?
初版大事にしよう



22 :デフォルトの名無しさん:2009/11/18(水) 20:55:44
IronActionScript

23 :デフォルトの名無しさん:2009/11/20(金) 16:35:53
スレが進まない。誰か話題をプリーズ。

24 :デフォルトの名無しさん:2009/11/20(金) 16:40:55
C++のコードを変換するのに十分な小さい言語を定義しない?

25 :デフォルトの名無しさん:2009/11/20(金) 16:54:07
目新しさが無いな。

26 :デフォルトの名無しさん:2009/11/20(金) 18:02:09
俺はすごく興味ある。スレ立ててみようよ。

27 :デフォルトの名無しさん:2009/11/20(金) 19:14:21
すぐ過疎るよ

28 :デフォルトの名無しさん:2009/11/20(金) 20:27:52
型推論でもどうよ

29 :デフォルトの名無しさん:2009/11/20(金) 23:02:49
>>24
LISp

30 :デフォルトの名無しさん:2009/11/21(土) 00:22:54
コンパイラの抽象構文木の出力がlispのソースコードっぽくなるなと思っていたら
lisp自体が抽象構文木だったんだってね

31 :デフォルトの名無しさん:2009/11/21(土) 13:24:44
>>24
FORTH
ポインタ演算もバッチリ

32 :デフォルトの名無しさん:2009/11/21(土) 15:18:06
うーん、話がつまらない。
この前のトライ木の実装とかif-then(とラベル管理とstack管理で)関数型言語を定義することが出来る
と言う話の方が断然面白かった。

もっと意味のある話は出来ないかな。
と言うわけで>>24を指示する。

33 :デフォルトの名無しさん:2009/11/21(土) 16:43:26
それってまるっきりLISPの1実装の話なんですケド

34 :デフォルトの名無しさん:2009/11/21(土) 17:30:00
>>24
>C++のコードを変換するのに十分な小さい言語
というのは、その言語が(別の何かに)変換するということ?
その言語に変換するということ?

35 :デフォルトの名無しさん:2009/11/21(土) 17:32:58
Cでいいだろ

36 :デフォルトの名無しさん:2009/11/21(土) 19:04:55
GNUですな。

37 :デフォルトの名無しさん:2009/11/21(土) 19:13:56
ぐぬぅ

38 :デフォルトの名無しさん:2009/11/21(土) 22:18:57
コンパイラ作るのに、オートマトンとかFIRST集合とかの知識ってまったく
必要ないよな

39 :デフォルトの名無しさん:2009/11/21(土) 22:20:29
形式言語理論の知識は必須だろ。

40 :デフォルトの名無しさん:2009/11/22(日) 03:06:53
自分の過去の経験からすれば、言語処理系(コンパイラ or インタプリタ)を
作るだけなら、形式言語理論の知識は必須とは思えないな。
カーニハンの本「UNIXプログラミング環境」を読んでyacc&lexで
C言語風のミニインタプリタを作って遊んだのが最初の経験だ。
当時はC言語の知識しか無かったけど、動く物を作ることはできたよ。

41 :デフォルトの名無しさん:2009/11/22(日) 06:50:19
まあ動けばいいってだけなら本読んでコンパイラジェネレータの使い方覚えればなんとかなるだろうが、
ツール類が何をしてるのか理解するには初歩的な言語理論やオートマトンの知識は必要になってくるだろう。

42 :デフォルトの名無しさん:2009/11/22(日) 06:54:41
うまくいかない時にどうしてうまくいかないか、を探るには
知識重要だな。

まぁLALRを使うならLLのための知識はいらないだろうがw

43 :デフォルトの名無しさん:2009/11/22(日) 07:02:14
自分には必要ないからという理由で他人のチンコをちょん切りに行くのはどうかと思うんだ

44 :デフォルトの名無しさん:2009/11/22(日) 10:15:03
>>43
どこでチンコの話が出てきたんだよw

45 :デフォルトの名無しさん:2009/11/22(日) 12:35:51
俺も最初は形式言語の知識は不要だと思う。最初は逆ポーランドかS式を使うべきだと思う。

むしろ形式主義的な考え方を勉強した方がはるかに役に立つな。メタ数学オモシロス


46 :デフォルトの名無しさん:2009/11/22(日) 19:17:56
良い感じになってきたね。
俺も>>45の意見に賛成。逆ポーランドから1歩ずつステップアップするのが吉。

>>41
俺はスクラッチ主義者(スピードを稼ぐため)なんだが、言っていることはその通りだな。

>>36
あんな出来損ないを作ってた奴ら(今はマシだけど)より、ここで定義した方が良い物が出来る予感。

47 :デフォルトの名無しさん:2009/11/22(日) 19:39:52
出来損ないってバージョン1の頃のGCCのことを言ってるのか?

48 :デフォルトの名無しさん:2009/11/22(日) 21:18:17
>>47
そう、まだ定義も決まってなかった頃の物。
GNUなんてOSも作れず、Linuxを自分たちの功績にして、
GPLでサポート等で金を稼げなんて言う奴ら。

商業ソフト(office等)の正常な商業活動が実質出来なきなくなり
ジャストシステム(エロゲ会社じゃないよw)ももうすぐやばそう。
これはMSの囲い込み政策も関連してるけど。

49 :デフォルトの名無しさん:2009/11/22(日) 21:20:37
もちろん、GPLライセンスの功績は認めてるけど、
誰とは言わないがGNUの奴らは原理主義が多すぎ。

50 :デフォルトの名無しさん:2009/11/22(日) 21:21:23
定義って何だ?

標準のことか?

51 :デフォルトの名無しさん:2009/11/22(日) 21:26:46
>>50
そう、標準のこと。まあ、これ以上はスレチになるから辞めよう。
スレを無駄に使ってスマン。>all

52 :デフォルトの名無しさん:2009/11/22(日) 23:39:48
標準って何の?


53 :デフォルトの名無しさん:2009/11/22(日) 23:42:07
ああ、言語の標準の話か。
ごめん。

54 :デフォルトの名無しさん:2009/11/23(月) 08:24:44
LinuxがBSDライセンスだったら今よりも良い状態だったかも
少なくともカーネル・ドライバ周辺は

55 :デフォルトの名無しさん:2009/11/23(月) 12:22:18
言い出しっぺがやめようと言ってる話題をひきずるなよ。

56 :24:2009/11/23(月) 21:28:33
>>51は私じゃないし…

57 :デフォルトの名無しさん:2009/11/24(火) 13:22:10
>>56
やめようといってるのはライセンスがらみの話のことじゃないの?

58 :デフォルトの名無しさん:2009/11/24(火) 17:35:52
つーか24も意味不明なんだが。
何をしたいの?

59 :デフォルトの名無しさん:2009/11/24(火) 19:38:02
みんな >>24 に書かれていることを理解できてるのかな?
俺には理解できない…。

>>24>>34 の質問に答えてほしい。

60 :デフォルトの名無しさん:2009/11/24(火) 19:44:04
>>24の言いたいのは、C++コンパイラ用の中間言語として十分な仕様を持った
小さな言語を定義したいってことじゃないの?別に意味不明だとは思わんかったけど。
たとえば、C++用というわけじゃないけど、C--とかあるよね。
http://www.cminusminus.org/

61 :デフォルトの名無しさん:2009/11/24(火) 20:50:22
>>60
たとえば、がどこに掛かってるのか意味不明なんだが。
C--が何?
中間言語なら既存のものに合わせれば十分じゃないか。
君の意図もさっぱり判らん。

62 :デフォルトの名無しさん:2009/11/24(火) 21:02:35
「既存のもの」のひとつとしてたとえばC--がある、と思うのだが?
なににつっかかってるんだ?

63 :デフォルトの名無しさん:2009/11/24(火) 21:05:48
C--は中間言語じゃないし

64 :24:2009/11/24(火) 21:13:30
私が言いたかったのは、まさにこの様な言語の事です。
今ダウンロードしたファイルを読んでる最中です。
>>60さん、どうもありがとうございます。

65 :デフォルトの名無しさん:2009/11/24(火) 21:15:29
え?

66 :デフォルトの名無しさん:2009/11/24(火) 21:27:16
なんてこった!
すごいなーえすぱーはいたんだなー

67 :デフォルトの名無しさん:2009/11/24(火) 22:56:42
>>63
プログラマがC--でソースコードを直接書き下すことが想定されてるとでも?
ドキュメントと仕様見る限りではとてもそう見えないが。

68 :デフォルトの名無しさん:2009/11/24(火) 22:57:52
Cのリテラルは対称性無さすぎ/再帰効かなすぎだから中間言語化なんて考えない方が……
そういう目的には木構造を表現できるS式 or 命令の連なりとして処理できる逆ポーランドが最適だってば。

69 :デフォルトの名無しさん:2009/11/24(火) 23:00:16
>>68
C--はCと同列に扱っちゃだめだってば。少なくとも、Cよりははるかに機械生成されることを
想定してかなり低レベルなところまで扱える仕様になってる。つか、なんでそこで逆ポーランドとか
S式が出てくる?逆ポーランド(記法)とかS式はメタ言語であって、それ自体で何か意味のあるもの
じゃないだろ。

70 :デフォルトの名無しさん:2009/11/24(火) 23:18:11
そう言われてみればそうかもね。
>24の字面からメタ言語の話かと思ってた。

71 :デフォルトの名無しさん:2009/11/24(火) 23:31:55
メタ言語ってすごく意味の薄い言葉だね。

72 :デフォルトの名無しさん:2009/11/24(火) 23:47:36
S式と逆ポを一括りにされると違和感が



73 :デフォルトの名無しさん:2009/11/25(水) 00:01:26
結局俺言語作っても使わない。
だからまず最初に俺言語Cトランスレーターを作る。可逆でな。
C→俺言語
俺言語→C
これで俺言語の役立たず度が計れる。
作れない→論外

74 :デフォルトの名無しさん:2009/11/25(水) 00:23:06
俺言語で俺言語をビルドできれば神

75 :デフォルトの名無しさん:2009/11/25(水) 01:00:51
>>73
C++テンプレートやLispマクロのようなコード生成を含む機構あると可逆はつらくない?

76 :デフォルトの名無しさん:2009/11/25(水) 07:39:22
作る価値の薄い「パワーの無い」言語ほど>>73を実現しやすいのが
突っ込み所かもね。

77 :デフォルトの名無しさん:2009/11/25(水) 08:23:15
>>60
仕様書を軽く読んでみたけど、面白いね。
C言語は構造化アセンブリ言語だと言われることがあるけど、
人間様がプログラミングすることを意識した高級言語として設計されていた。
でもC--言語は、C言語風の構文だけど、まさしく構造化アセンブリ言語だ。

78 :デフォルトの名無しさん:2009/11/25(水) 09:40:48
>>72
S式は人間がリスト構造を書いてやる、
逆ポは人間がスタックマシンの機械語列を書いてやる、
どちらも機械可読(機械易読)な構造を人間が書いてやるという意味では

>>73
それって、
#define BEGIN {
#define END }
のことを「俺言語」って言ってないか?

ttp://minnie.tuhs.org/UnixTree/V7/usr/src/cmd/sh/mac.h.html

79 :デフォルトの名無しさん:2009/11/25(水) 14:12:27
>>78
予約語が増えるw

80 :デフォルトの名無しさん:2009/11/25(水) 15:07:24
Cから俺言語はともかく、初めから俺言語をCに変換する手段はあるといいね

81 :デフォルトの名無しさん:2009/11/25(水) 15:49:18
バイナリを吐くだの最適化だのといったことを
Cコンパイラに丸投げするのは悪くない話。

82 :デフォルトの名無しさん:2009/11/25(水) 16:01:29
移植やクロスも楽そうだしな

83 :デフォルトの名無しさん:2009/11/25(水) 16:02:55
Rubyもそれで作ってれば馬鹿にされずに済んだのに。

84 :デフォルトの名無しさん:2009/11/25(水) 16:07:42
Ruby to Cのそういうものを作った例はあるよ。かなり昔だけど。
結局たいして速くならない。

メソッドを動的にディスパッチしたりとかする必要があるのは変わらないから。

85 :デフォルトの名無しさん:2009/11/25(水) 16:54:49
ライブラリ作るのめんどくさい。
ところで、漏れは数値と文字列の自動変換て好きくないのだが
文字列しか変数に入らなくって、基本は正規表現風パターンマッチと変換だけの言語って
…面白くないですね。すみません。AWKみたいだし。


86 :デフォルトの名無しさん:2009/11/25(水) 18:15:16
ライブラリの性能で全てが決まるよ。ガンバレ。
数値と文字列の自動変換、俺も嫌い。

87 :デフォルトの名無しさん:2009/11/25(水) 23:40:40
もうライブラリを細かく実行ファイルにしちゃって
画像も音声もみんなパイプで渡せるようにするか
ファイルに作らせるかすれば、シェルスクリプトで全部できるんじゃね?
っていうか組み合わせればどんどんすごいことになっていかね?
と、石田先生のUnix入門を読んだときは思っていた。


88 :デフォルトの名無しさん:2009/11/25(水) 23:51:19
64bit浮動小数点のINFとNaNの間に文字型とか入らないかな?50bitくらい使えそうなのだけど。
大富豪型プログラミングになれは、1Cell=64bitでいいよね。
もっと気張っておく?1Cell=4096byteとか。フラグメントはメモリマッパ任せとか。

89 :デフォルトの名無しさん:2009/11/26(木) 13:17:20
>フラグメントはメモリマッパ任せとか。
これ昔実験したけどあんまり早くならないよ
MMU周りのコードにもよるかもしれないけど

90 :デフォルトの名無しさん:2009/12/04(金) 19:00:23
>>前スレ
IF GOTOで全部の構造式が出来るか。当たり前だけど力業だな。

>>89
MMUの全面的な支援がないと難しいんじゃない?

91 :デフォルトの名無しさん:2009/12/05(土) 00:42:03
>>90
R4000系でやったんだけど基本がストールで検出なんでキャッシュがコケまくるんだよね
それだったらキャッシュが十分に効くようにして世代別のGCを普通に実装した方がはやかったんだ。



92 :デフォルトの名無しさん:2009/12/05(土) 02:00:10
タイガー本の和訳が出てたけど、買った人いる?


93 :デフォルトの名無しさん:2009/12/05(土) 23:38:12
yanecあげ

94 :デフォルトの名無しさん:2009/12/06(日) 20:50:47
もう一つの日本電気?

95 :デフォルトの名無しさん:2009/12/06(日) 23:40:27
re2c+UTF32なサンプルってmonaの所の他にありませんか?

96 :デフォルトの名無しさん:2009/12/17(木) 20:40:42
>・前スレの911自身の書き込み、またそれに関連した書き込みを禁止致します。
> (スレが荒れる原因となります)

kwsk

97 :デフォルトの名無しさん:2009/12/17(木) 20:52:15
いちいち蒸し返すなよ.前スレ嫁

98 :デフォルトの名無しさん:2009/12/18(金) 20:53:22
よめんからきいてんのよ!

99 :デフォルトの名無しさん:2009/12/18(金) 21:13:37
911の事なんて語りたくもない

100 :デフォルトの名無しさん:2009/12/20(日) 10:53:59
同意w

101 :デフォルトの名無しさん:2009/12/20(日) 21:22:18
9.11テロか?

102 :デフォルトの名無しさん:2009/12/20(日) 23:49:03
C--は既に廃れてる。
GIMPLE@gccはどうよ?

103 :デフォルトの名無しさん:2009/12/21(月) 19:49:27
ATI Stream/NVIDIA CUDA両対応のC言語コンパイラ

9??の事かw

>対象のC言語の記述はforループによる繰り返し制御構造で、
>特に2重の入れ子構造をもったループを効率的に扱えるという。
>SIMD型アクセラレータ上での実行に適した演算の多くはこの形式で記述できるという

104 :デフォルトの名無しさん:2009/12/22(火) 22:13:57
>>103
変数の依存性でスピードが全然違うんだろうね。
相互に依存しない物ってなんだろう?
例えばクイックソートは依存するよね。

105 :デフォルトの名無しさん:2009/12/22(火) 23:25:25
911wの話が本当になったw

106 :デフォルトの名無しさん:2009/12/23(水) 00:58:04
911知りたい (T_T)

107 :デフォルトの名無しさん:2009/12/23(水) 13:10:30
ここのスレの方が一歩送れてたか。
911の言動は感心できないが、方向性とかはちゃんと見てたな。

そうなるとNECのベクター型とIntelの提携だな。

>>106
911が自分の考えの中にエロゲの事を必ず入れていた。
それがこのスレのエロゲを卑下する人達の逆鱗に触った。
プログラムコードがエロゲ界でも経験豊かで秀逸なコンパイラをスクラッチで作っている人が出てきたら、
40才でエロゲ作ってたら氏ね。とか罵詈雑言。
911と、そのエロゲプログラマが作ったコードでその人を見れないスレ住人の中に確執。

おれは911も悪いと思ったが、コードで人を見れない奴はイヤだな。

108 :デフォルトの名無しさん:2009/12/23(水) 13:12:20
configureにも使われてるm4という汎用マクロ言語を勉強しよう

109 :デフォルトの名無しさん:2009/12/23(水) 13:25:41
> プログラムコードがエロゲ界でも経験豊かで秀逸なコンパイラをスクラッチで作っている人

……

110 :デフォルトの名無しさん:2009/12/23(水) 13:32:31
秀逸なコンパイラ→オールドスクールなコンパイラ
ASCII創成期かと思ったよ。
しかし作者を叩く人は少なく、変な持ち上げ方をしている奴が馬鹿にされただけ。

111 :デフォルトの名無しさん:2009/12/23(水) 13:52:14
> ASCII創成期かと思ったよ。

えーなに、GAME(言語)ですか?

112 :デフォルトの名無しさん:2009/12/23(水) 14:36:30
ああ、構文すらもマクロで組めるパスカルライクなゲーム様汎用コンパイラ。

113 :デフォルトの名無しさん:2009/12/23(水) 14:42:21
いままで100本ぐらいエロゲを作って、
その他win3.1/95時代に色々なプログラムで稼いだ金を使って、
エロゲ会社立ててポルシェ乗り回してる成功者だね。

ブログでは引っ越しするからアーロンチェアとか
after effectとか高位物をいろいろみんなに配ってる。

114 :デフォルトの名無しさん:2009/12/23(水) 14:43:20
LISPとPASCALで良い意味でも悪い意味でもOLD SCHOOL。

115 :デフォルトの名無しさん:2009/12/23(水) 14:48:22
ブログ見てきた。
こんな事やっちゃって、この人は自分が妬まれる位置にいることを分かってないね。

116 :デフォルトの名無しさん:2009/12/23(水) 14:52:09
いいじゃないのさ。一攫千金。金があってこそできる善行だってある。

117 :デフォルトの名無しさん:2009/12/23(水) 14:52:18
話は戻すけど、依存性のないループなんてほぼ無いんじゃないか?
どういった用途に使われるコンパイラだろう。
昔、IntelC/C++コンパイラ使ったときは落胆した。VSの方が早いんだもん。
あれはライブラリの料金なのかね。

118 :デフォルトの名無しさん:2009/12/23(水) 14:54:15
>>116
まあそうだけどさ。
表だってやらなきゃ妬まれないのに。
泥棒にも狙われるぞ。

119 :デフォルトの名無しさん:2009/12/23(水) 14:56:31
でも、アーロンチェアとafter effectとA3スキャナとGP225は欲しいな。
田舎だから家だけは広いし。

120 :デフォルトの名無しさん:2009/12/23(水) 14:58:08
>>117
ハマルと早いよ。しかし、クリティカルな部分はV-TUNEでカリカリ書いた方が速い。

121 :デフォルトの名無しさん:2009/12/23(水) 15:17:07
FORTRANコンパイラ由来で、ループの直前のイテレーションにのみ依存するだとか、
行のループの間隔で依存するだとか、そういうものを検出する技法はたんとある。

122 :デフォルトの名無しさん:2009/12/23(水) 15:22:14
>>121
そっか。中田氏の最適化の本は斜め読みした程度だけど、
そこまで進んでいるのか。

しかしIntelコンパイラは上手く使いこなせなかった。
PentiumのUVの2パイプを意識して手でASMを組んだ方が速かったな。
そのときはV-TUNEが役に立った。

123 :デフォルトの名無しさん:2009/12/23(水) 15:33:16
>>122 いや論文レベルの話

124 :デフォルトの名無しさん:2009/12/23(水) 16:15:01
スパコンのベクトル化コンパイラはある程度やってるよ。
手でコンパイラ好みのコードに書き直さないと、
ハードウェアの性能は引き出せないけど。

125 :デフォルトの名無しさん:2009/12/23(水) 17:39:15
やはり並列化は大変だね。

126 :デフォルトの名無しさん:2009/12/23(水) 22:44:48
9??の話を続けるのも何だし、もうそろそろ何か新しい話題に移ろう。

127 :デフォルトの名無しさん:2009/12/24(木) 02:56:36
>>110
ちょっと聞きたいんだけど、大量のファイルを高速でコンパイルでき、
構文までマクロで組める汎用コンパイラをスクラッチからあなたは実際に組んだの?
実装は無しなんて言ったら何でもOKだよね?
噛みつきたいんじゃなく、そこまで自信満々だったら見せてよ。
サブセットでもいいからさ。
例の奴の話を蒸し返すのは嫌なんだけど自信満々で言われるとあなたがどれぐらい凄いか興味がある。

128 :デフォルトの名無しさん:2009/12/24(木) 03:06:29
>>110
今細かく見たらマクロの機能もMASM6を超えてんじゃん。
これのどこがASCII創刊時の機能だと言い切れるの?

129 :デフォルトの名無しさん:2009/12/24(木) 05:07:09
>>127
鼻息荒いね。
ここでは実装は軽視される。
ある意味浮世離れしているスレだよ。
その氏のは前スレで言ってることが本当ならば実装は凄いよ。
しかし、エロゲには必要ないがオブジェクト指向とかがこのスレの本分。
あと、ここに来ている全員が凄腕ではなく一部だけだと思うから、
煽りにいちいち反応しない方が良いよ。体に悪い。

130 :デフォルトの名無しさん:2009/12/24(木) 05:16:31
俺は凄腕だけどね。多分、学会関連で知れていると思う。

131 :デフォルトの名無しさん:2009/12/24(木) 05:18:37
129=130ね。

132 :130:2009/12/24(木) 05:21:10
中田なんてオヤジが権威とされてる時点で世界に遅れてる。
ドラゴンブックも古い。
出版不況じゃなければ一般向けの本を出したいよ。

133 :130:2009/12/24(木) 06:18:10
>>130
じゃあ、オマエが見せてみろよ。
>>110
オマエモナ。

どっちが良いか判断してやる。

134 :デフォルトの名無しさん:2009/12/24(木) 06:19:22
すまん、名前間違えた。

135 :デフォルトの名無しさん:2009/12/24(木) 06:25:54
>>129
最終的に実行スピードとバグの無さが全てだよ。
オブジェクト指向なんてGCの問題もあるしファイル単位で関数郡をつくればいいし。
構造化で十分だと思ってる。
それを考えると114の言語が現在ではベターだと思う。

136 :デフォルトの名無しさん:2009/12/24(木) 06:34:14
>>135
おまいさんも鼻息荒いな。
某氏のコンパイラはエロゲの現状に即してる。そしてハイスピード、バグを出さない仕様。
FORTRAN,C,JAVA,どれも得意分野違うじゃん。
ここは実装の話だけじゃないんだよ。
しかし
>>110
がどれぐらい出来るかは示して欲しいな。だって他人を卑下したんだから
俺も叶わないスーパープログラマなんだろうな。

137 :デフォルトの名無しさん:2009/12/24(木) 07:04:12
>>136
そんな物組めないの分かってるのに性格悪いなw

138 :デフォルトの名無しさん:2009/12/24(木) 09:28:57
こういった情報系の大学でお薦めのところありますか?
国内で。やはり東大ですか? orz


139 :デフォルトの名無しさん:2009/12/24(木) 09:36:02
頭悪いのがまだ居座ってるのがわかったのでそういう質問は勘弁してください

140 :デフォルトの名無しさん:2009/12/24(木) 12:01:39
>>139
本当にそう思ってるのならそんな1行レス辞めなよ。それこそ頭悪そうだ。

141 :139:2009/12/24(木) 12:07:10
>>140
お前の腐った目から見て俺の頭が悪そうでもまったく問題ない。実際には俺の頭は良いんで。

142 :デフォルトの名無しさん:2009/12/24(木) 12:09:40
Rubyで3DCGのファイルフォーマットのパーサーを書いたら
すんげー遅い(8秒ぐらい)なんですが何とかなりませんか
1秒以下が希望です。


143 :デフォルトの名無しさん:2009/12/24(木) 12:09:51
>>141
はいはい。どこの院生ですか、お坊ちゃま。
あとサンプルあげてよ。口ではいくらでも言えるからね。

144 :デフォルトの名無しさん:2009/12/24(木) 12:12:41
>>143
SEEKが遅いとか?
ホットポイントが明確でないときついな。

145 :139:2009/12/24(木) 12:25:59
>>143
日本語読めないのか? お前の腐った目にどう映ろうが俺は構わないのに、誰がサンプルなんか上げるかw

さあ、あとは「上げられないんだろ」とか好きなだけ妄想して、
「最後にレスした俺が勝ち」ゲームの勝者となりたまえw

146 :デフォルトの名無しさん:2009/12/24(木) 12:26:38
自称天才の馬鹿の集まりでした。以上。

147 :デフォルトの名無しさん:2009/12/24(木) 12:28:07
自称天才で構ってちゃんで馬鹿の集まりでした。以上。

148 :デフォルトの名無しさん:2009/12/24(木) 12:31:53
>>142
一般的な手順を踏むしかないわな
プロファイラでボトルネックを発見し、そこを何とかできないか考える
ただ、少なくとも今のところ、Rubyはお世辞にも速い言語じゃないので、
頑張ってもどうにもならない可能性は否定できない

149 :デフォルトの名無しさん:2009/12/24(木) 12:50:26
院生呼ばわりで勝った気か。2ちゃん脳社会人の典型だな。

150 :デフォルトの名無しさん:2009/12/24(木) 13:52:28
僕は実装が見たいとかあんまし思わないんですが、なんで世の殿方は実装とか珍重するのでしょうか。
ただのプログラムじゃん。
わかんない。田代とかもわかんない。得るものが少ないと思います。
したがってジャンプに載ってる実装をメインテーマにした実装コメントというか
もよくわかりません。ただのプログラムです。
さらにそもそも女子はなぜ実装の話ばかりするのですか。
あまつさえ学校でも実装の話をしたりするのですか。僕は賛成ですが。
いや賛成なのは実装の話が出るからじゃないです。なんとなくいいからです。
僕は女子高生の実装とかそういうものは大好きです。
いや問題なのは女子高生の制服ではなくてパンツです。
パンツが見えててもかまいませんが、布だと思います。
いやそうではなくて、なぜパンツの出るような服を着るかということです。僕は賛成ですが。
すいません。まちがいました。もういいです。

151 :デフォルトの名無しさん:2009/12/24(木) 13:52:36
香ばしいんだけど
テンプレのサイトあちこち潰れててどこも古めかしいんだけど今ならどこ見りゃいいでしょうか

152 :デフォルトの名無しさん:2009/12/24(木) 14:16:11
>>142
その3DCGのファイルフォーマットって具体的には何?

もしそれがXML形式で、標準ライブラリのREXMLを使っているのなら、
代わりにたとえばLibXml(http://libxml.rubyforge.org/)のような
C言語で記述された拡張ライブラリを使いなさい。

もしそれが構造化テキスト形式で、手作業でパーザを書いているなら、
Raccと(標準ライブラリの)strscanを使ってパーザを書き直しなさい。
RaccランタイムとstrscanもC言語で記述された拡張ライブラリです。

速い遅いはデータ量とマシン性能に依存するからあいまいになるけど、
上記の方法なら数キロステップのテキストを1秒以内で読み込みできるよ。
あとは>>148が書いてくれているプロファイラの活用かな。

153 :デフォルトの名無しさん:2009/12/24(木) 14:25:46
>>141
日本語が不自由な方がこんな事を言うなんて…

154 :デフォルトの名無しさん:2009/12/24(木) 14:41:17
>>139
ここまで頭の悪い奴がどんなコードを組むかは興味がある。

155 :デフォルトの名無しさん:2009/12/24(木) 15:21:26
変態という名の紳士、いやいや天才という名のキチガイが何匹か紛れ込んでるみたいだけど
本物はこんな所に居ない。今までだってちゃちな物ばかりだったし。

>>142
Rubyは重いよ。趣味でやるなら良いけど仕事では用途を選ぶ。
ホットポイントを見つけて最適化という地道な作業と>>152氏の
事をやってみるしかない。後はRubyスレで聞いた方が速いよ。

156 :デフォルトの名無しさん:2009/12/24(木) 15:33:03
今は実行環境にJVMがあるからお気楽にコンパイラ作れるね。
>>155
うさみちゃんだっけ?

157 :デフォルトの名無しさん:2009/12/24(木) 15:34:42
しかしここが進むときは荒れるときで、決まって現物のコンパイラが出てこないね。

158 :デフォルトの名無しさん:2009/12/24(木) 15:45:44
出せるわけないじゃん、馬鹿だな〜

159 :157:2009/12/24(木) 15:54:27
何故出てこれないか考えられないなんて馬鹿だねw

160 :デフォルトの名無しさん:2009/12/24(木) 16:14:47
「考える」ことは誰でもできるね。
馬鹿はそれを「わかる」と混同しがち。

161 :デフォルトの名無しさん:2009/12/24(木) 16:31:31
>>151
学生が作ってたところとかのきなみ全滅だな。
せっかくwikiがあるし、そっちのまとめを参照ってことにするか次スレから。

162 :デフォルトの名無しさん:2009/12/24(木) 19:15:51
BNFで何か楽しい言語定義してよ。

163 :デフォルトの名無しさん:2009/12/24(木) 19:26:32
楽しい言語とは?
BrainfuckとかWhitespaceみたいなやつ?

164 :デフォルトの名無しさん:2009/12/24(木) 19:28:13
Brainfuckなんて良いね。面白そう。

165 :デフォルトの名無しさん:2009/12/25(金) 00:27:10
この産業も斜陽だしな
萌えとかエロとかは、食っていくに必要

166 :デフォルトの名無しさん:2009/12/25(金) 13:07:49
では萌えキャラに質問形式でプログラムを作らせて実行さすUIはどうか
うまく実行できるとエロい事が起こる

167 :デフォルトの名無しさん:2009/12/25(金) 13:43:06
>>110
> しかし作者を叩く人は少なく、変な持ち上げ方をしている奴が馬鹿にされただけ。

図星のレスで荒れたなw

168 :デフォルトの名無しさん:2009/12/25(金) 19:15:47
だって誰もコンパイラ見せてくれないんだもん。当然荒れるよ。

169 :デフォルトの名無しさん:2009/12/25(金) 20:09:50
ないそではふれないっていうか・・


170 :デフォルトの名無しさん:2009/12/25(金) 22:03:13
>>166
普通に Lisp 優位だろうな。それやるとなると


171 :デフォルトの名無しさん:2009/12/26(土) 03:46:24
点呼を取ります。
A)仕事で使用に耐えうる大量のファイルを高速でコンパイル出来る物を作った人
B)言語をスクラッチで作った人
C)トランスレーターをスクラッチで作った人
D)ツールを使って作った人。

自分はB。構造化言語。

172 :デフォルトの名無しさん:2009/12/26(土) 05:00:57
おれもBだ、言語的には3つ作った。

173 :デフォルトの名無しさん:2009/12/26(土) 05:35:30
>>171
そのツールには、yaccのようなパーサジェネレータを含みますか?
もしYesなら、Bで4つ、Dで5つ作りました。

また、Bの1つとDの2つは仕事で活用しました/しています。
わざわざ新しい言語を作る目的には、高速なコンパイル実行が要求される
場合もあるかと思いますが、扱う問題に応じた計算モデルをベースに
言語を設計した場合、コンパイル速度は大きな課題にはならないことがあります。
自分の作ったミニ言語達は、処理速度は遅いですが、仕事での使用に耐えうる
モデル記述が可能であり、どれも実用性があります。

174 :デフォルトの名無しさん:2009/12/26(土) 10:42:19
自分は
C×1 (NC工作機械制御用にRatforみたいな文法のマクロプロセッサを1つ)、
D×3 (flex/bison使用×1, jflex/cup使用×2)
ただ、最近は言語と一緒に、Eclipse上で動くエディタとデバッガと
カバレッジ測定ツール一緒に作れって要望が割と出るので面倒だ。

175 :デフォルトの名無しさん:2009/12/26(土) 10:55:54
UTF-8専用の正規表現コンパイラなら作ったことあるが。
状態遷移マシンにコンパイルするので当然速い。
その他は省略。

176 :デフォルトの名無しさん:2009/12/26(土) 11:13:15
よくわからないんだけど、Aが一番偉いって言う設定なの?

大量のファイルを高速でコンパイルできることが必要なときもあるけど、
必要でないときもあるし。まして仕事なら、必要ないのに過剰に実装して
俺スゴイとか言ってるのはただのアホだろ。

しかも、なんでその点が実装の経験を判断する基準になってるの?


ツールを使ったか使ってないかがなぜ問題になるのかも謎。
体育会系の発想かな?

LLなら手書きしても大して変わらないし、LALR(1)とかを手書きしたから偉い
って思うやつがいたりするのか・・・?

楽していいもの作るのが優秀なプログラマだと思うけどね。根本的な
発想の違いがある気がする。


すまんマジレスしてしまった

177 :デフォルトの名無しさん:2009/12/26(土) 11:15:37
前スレで馬鹿にされた人が書いたから。

178 :デフォルトの名無しさん:2009/12/26(土) 12:31:39
大量のファイルを高速でコンパイル出来る物と言う言葉が頭に残っていたから。
後手書きは体育会系かな?

179 :デフォルトの名無しさん:2009/12/26(土) 12:35:34
しかしこんだけ組んでる人が居るとなったら、
本来の相談室に戻した方が良いと思うけどネタがないね。

180 :デフォルトの名無しさん:2009/12/26(土) 12:38:21
しかしこんだけ組んでる人が居るとなったら、
本来の相談室に戻した方が良いと思うけどネタがないね。

181 :デフォルトの名無しさん:2009/12/26(土) 12:43:51
しかしこんだけ組んでる人が居るとなったら、
本来の相談室に戻した方が良いと思うけどネタがないね。

182 :デフォルトの名無しさん:2009/12/26(土) 17:46:18
俺は3つ作ったやつだが。ここのスレはほとんどROMだ。
最近はやりの機能や、言語的に高度な機能は、自作実用言語には
要らないんだよ。 使いたければ既存の言語を使うので十分。
結局、オリジナルな言語が欲しいのは既存の言語でめんどくさい部分を簡略化して
組込みたいor使いたい、だから記述が簡単であり、専門的な目的に強力に特化した
言語を作ってる。だからここの話題とはなじまない。

183 :デフォルトの名無しさん:2009/12/26(土) 18:27:58
>>182
いわゆるDSLでんな

184 :デフォルトの名無しさん:2009/12/26(土) 19:02:20
非正格な言語のコンパイラを作るとしたら、
flex/bisonでは間に合わないでしょうか?

185 :デフォルトの名無しさん:2009/12/26(土) 19:08:33
flex/bisonは文法を解析するだけのツールだから正格も非正格も関係ないのでは

186 :デフォルトの名無しさん:2009/12/26(土) 21:12:50
>後手書きは体育会系かな?
作った言語自身でセルフコンパイルさせる必要があったので全部手書きしたことある
いまから考えたら第1段階だけyacc使えばよかったとは思うけど


187 :デフォルトの名無しさん:2009/12/26(土) 21:58:53
flex/bison 使ってるからスクラッチとはいえないかも知れないが、
宇宙系のやつを作ったことがある。

188 :デフォルトの名無しさん:2009/12/26(土) 22:30:53
前にも聞いたけど、ネタがないなら再投下させてもらうけど、
タイガー本の和訳ってどう?読んだ人いる?

帯の宣伝文句で、「実装と理論の卓越したバランス」みたいなことが
書いてあったけど、実際どう?

まぁ和訳を読むくらいなら原書読めばいいじゃんと思わなくはないけど

原書の情報でもいいからおせーてください

189 :デフォルトの名無しさん:2009/12/26(土) 22:47:46
虎本ってML知らなくても読める?

190 :デフォルトの名無しさん:2009/12/27(日) 02:13:05
しかしお笑いだなw
GPCPUだかなんだか知らんけど前のスレの奴の言ったとおりの物が出てきたよ。
次はループをタスク間で動的に実行か。VMかOSの力が必用なことも言ってたとおりだなw
俺達は馬鹿と紙一重の奴を相手にしてたのか(自嘲

191 :デフォルトの名無しさん:2009/12/27(日) 02:28:53
GPGPUのことか?

192 :デフォルトの名無しさん:2009/12/27(日) 08:05:47
本人が必死だな

193 :デフォルトの名無しさん:2009/12/28(月) 04:11:01
いや、グリッド化では当たり前の未来の技術になってきてる。
言っていることと本人の性格は必ずしてイコールでは無いと言うこと。
結論を述べれば、方向性は合っていて研究中。

194 :デフォルトの名無しさん:2009/12/28(月) 15:47:54
そんなコンパイラや実行環境はこのスレの趣旨からはみ出てないか?

195 :デフォルトの名無しさん:2009/12/28(月) 16:37:24
ぶっちゃけ前スレの流れを断ち切りたい。

196 :デフォルトの名無しさん:2009/12/28(月) 18:15:40
年寄りだからそのうちくたばるだろ

197 :デフォルトの名無しさん:2009/12/28(月) 20:51:30
年寄り?

198 :デフォルトの名無しさん:2009/12/28(月) 21:03:56
若造が精一杯背伸びしてるみたいだが。

199 :デフォルトの名無しさん:2009/12/28(月) 21:06:45
糞じじいは縁側で Lisp でもさわってろ

200 :デフォルトの名無しさん:2009/12/30(水) 01:51:29
GCのないLISPを考えてみる
原因はクロージャとconsなわけであるが

201 :デフォルトの名無しさん:2009/12/30(水) 02:51:34
今時、GCのない言語なあ
Cのシェアを奪えるのかい


202 :デフォルトの名無しさん:2009/12/30(水) 14:26:29
クロージャはともかくconsをfree()するのは嫌。

203 :デフォルトの名無しさん:2009/12/30(水) 20:59:12
クロージャは何トカ解析すれば消えるらしいけど
consはしょうがないね。定数的に使うか、
破壊禁止にして循環構造を防げば参照カウンタで済む。
カウンタ自体のオーバーヘッド考えるとやりたくないけど。
ただ参照カウンタ式はオーバーフローの対策が要る。
1セル高々16bitにして65535になった時点で例外を投げるか。


204 :デフォルトの名無しさん:2009/12/31(木) 00:47:20
この年になっても、正直クロージャがあってよかったと思える場面に出会えてない。
みんなこんなもん?

205 :デフォルトの名無しさん:2009/12/31(木) 01:09:26
お前の使っている言語に
簡単に使えるクロージャはあるの?


206 :デフォルトの名無しさん:2009/12/31(木) 02:20:18
http://zip.2chan.net:81/5/src/1261905031562.jpg

207 :デフォルトの名無しさん:2009/12/31(木) 02:47:02
>>200
new lispってのがそんな事やってた様な気がするが

208 :デフォルトの名無しさん:2009/12/31(木) 03:03:35
何の対策もない処理系でも、あらかじめ必要分を確保するとかで、
範囲内のGC起動を抑止するってことは可能だから
機能縮小してまでGCレスにする事もない気がする。

209 :デフォルトの名無しさん:2009/12/31(木) 13:52:29
寿命解析すれば自動的に抑止することもできるよ。
実用的には適当なところで打ちきらないとダメ。
stalinみたいに最適化に数時間かかると用途が限られる。

210 :デフォルトの名無しさん:2010/01/02(土) 21:27:38
Domain-Specific Languagesの総本山ってどこだっけ?


211 :デフォルトの名無しさん:2010/01/03(日) 10:23:53
pragmatic programmers のことをさがしてるのかな?
元々Unixの設定ファイルとか、Lispの方からの伝統的なものだが。

212 :デフォルトの名無しさん:2010/01/04(月) 06:59:23
GCが有る言語は嫌いだ。リアルタイム処理が確実に出来ない可能性がある。
クリティカルパスを切れば良いんだけどね。

並列コンピュータのコンパイラは今後進歩するのかね。疑問。
>>193や某氏の言う通りになるほど甘くはないと思うんだが。

213 :デフォルトの名無しさん:2010/01/04(月) 08:12:44
1980年代から研究も実装もあるんだからまずはサーベイだろ。

214 :デフォルトの名無しさん:2010/01/04(月) 23:43:37
>>211
DSLの英語のページどこだっけ?

215 :デフォルトの名無しさん:2010/01/04(月) 23:53:47
DSLs in Boo: Domain-Specific Languages in .NET
これどうなのか書評教えてくれ

216 :デフォルトの名無しさん:2010/01/06(水) 18:40:08
DSLってC++界隈では低く見られてない?
DSLはどうせC++か何かのコードを生成するんだろ
とか、汎用の言語の方が偉いとか。

217 :デフォルトの名無しさん:2010/01/15(金) 12:07:43
つーか、言語自体が全般的に(ry

218 :デフォルトの名無しさん:2010/01/16(土) 12:09:19

・明快入門コンパイラ・インタプリタ開発 C処理系を作りながら学ぶ(林晴比古実用マスターシリーズ)
http://www.amazon.co.jp/dp/4797357037

219 :デフォルトの名無しさん:2010/01/16(土) 12:13:53
林晴比古(笑)

220 :デフォルトの名無しさん:2010/01/16(土) 12:21:08
読んだことないから本当に風評通りに酷いのか分からん。
昔は酷かったが成長してるのかもしれんし。

221 :デフォルトの名無しさん:2010/01/16(土) 17:15:16
老化してるよ

222 :デフォルトの名無しさん:2010/01/17(日) 11:31:56
数字読み込み関数は数字じゃない文字が来るまで文字をくっつけて返す
識別子読み込み関数は[A-Z][A-Z0-9_]*を文字をくっつけて返す
"(", ")"はそのまま返す

みたいにS式っぽいものトークン分解しています

"(123ABC)"を "(", 数字, 識別子, ")" てトークン分解
しちゃうんですけど数字と識別子が別れていないので
これはエラーにしたいです (123 ABC)と区別付きません
普通はどうやってこういうのをトークン分解するんでしょうか



223 :デフォルトの名無しさん:2010/01/17(日) 12:02:51
>222
普通どうするかは知らないが「数字じゃない文字が来るまで」のところで判定すりゃいいだけなんじゃないの?

224 :デフォルトの名無しさん:2010/01/17(日) 12:16:30
数字を読んでるときにアルファベットが出てきたらエラーにする。

225 :222:2010/01/17(日) 12:32:55
なる・・・ほど・・・
ありがとです

226 :デフォルトの名無しさん:2010/01/17(日) 12:35:56
>>225
まず本を一冊通読すべき。

227 :デフォルトの名無しさん: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
実際問題、読みにくいコードが多いように思えます。
他の便利な記法をご存知の方はいらっしゃいますか?
また、上記の記法のうちで、どれが好きですか?
ご意見ください。

228 :デフォルトの名無しさん:2010/01/17(日) 13:00:40
class MyClass
 def my_method(arg)
 end def
end class

229 :デフォルトの名無しさん:2010/01/17(日) 13:08:55
>>227
古い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


230 :デフォルトの名無しさん:2010/01/17(日) 13:11:48
Python(Haskell)みたく、オフサイドルールにしちゃえば?
ttp://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

231 :227: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
のようにネストした時に、どれがどれかわからなくないですか?


232 :デフォルトの名無しさん:2010/01/17(日) 22:27:53
beginとendの対応が見えるような短いブロックなら,インデントだけでも見難くはないと思うんだよね
長くなるとendはあってもなくても変わらないし

233 :227:2010/01/17(日) 22:35:10
>>232
まったくその通りだと思います。
「インデントよりもendの方が良いけど、もっと良いのないですか?」
という質問ではなく、
「インデントも、endも、わかりにくいのですが、もっと良いのないですか?」
という質問のつもりでした。
わかりにくかったのでしたらすみません。

インデントの場合
メソッド宣言は1インデント
メソッドの中身は2インデント
と決めうちで書ければ良いかとも思いましたが、
それはそれでありえないと思いました。



234 :デフォルトの名無しさん:2010/01/18(月) 22:10:44
もう JavaScript みたいにするしかないじゃん

235 :デフォルトの名無しさん:2010/01/19(火) 01:14:24
そういえば、0123abcをエラーにしてませんでした。気をつけよっと。

xml風
<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
とか。

236 :デフォルトの名無しさん:2010/01/19(火) 03:26:02
SGMLつかえよ

237 :デフォルトの名無しさん:2010/01/19(火) 07:51:05
>>235
XMLベースなら改行に意味を与えない方がよいよ、とマジレス。

238 :デフォルトの名無しさん:2010/01/19(火) 09:17:19
YAMLっぽいのはどう?

A:
- {add(a,b): a+b}
- {sub(c,d): c-d}

B:
...

239 :デフォルトの名無しさん:2010/01/19(火) 11:03:57
LISPでいいだろ
アホか

240 :デフォルトの名無しさん:2010/01/19(火) 18:49:07
>>239
ヒント:クラス系オブジェクト指向言語

241 :デフォルトの名無しさん:2010/01/19(火) 19:38:34
>>240
CLOS


242 :デフォルトの名無しさん:2010/01/19(火) 19:54:49
endだけで構文解析すりゃいいだろ?
インデントでなんて馬鹿げてる。

243 :デフォルトの名無しさん:2010/01/19(火) 23:35:14
http://nadesi.com/man/page/%E3%82%B3%E3%83%B3%E3%83%9C

forth 系のアプローチ…だと…

244 :227:2010/01/20(水) 00:14:50
>>234
意味さえ分れば、プログラムは作りやすいですよね。

>>235
XMLありえなす。

edef はどうかと思いましたが、endefはアリかもw

>>238
XMLのと合わせて思ったんですが、
Squeak(smalltalk)の開発環境みたいなUIで表示するのは有ですかね?
まあ、自分のテキストエディタが使えないといけない、
と思う人は特定数いそうですけど。

>>241
不勉強なんですが、
CLOSはプロトタイプベースに近いのではないかと思ったんですが、
どうでしょう?
マルチメソッドだけでがんがれ、という意味であれば、
それはそれでネストしないはずなので、答としてアリな気はしますね。

>>243
構文解析という意味だと、>>235 さんのedefアプローチに近いですね。
わかりやすい予約語を作れればいけそうですね。

245 :デフォルトの名無しさん:2010/01/20(水) 00:29:45
>>244
CLOSはクラスベースだよ。defclassで定義する
カプセル化はしないだけ

246 :227: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が実行される
という、引数があれば関数呼び出しで、引数が無い場合は括弧の省略は不可という仕様です。

これは分かりにくいでしょうか?
ご意見頂ければ幸いです。

247 :デフォルトの名無しさん:2010/01/20(水) 00:43:05
場当たりな文法は破綻しやすいからなあ。
引数を二つ取る関数に引数を一つ渡したらどうなるの?

Curryingとかを調べてみると良いかも。

248 :227:2010/01/21(木) 01:24:49
>>247
場当たりに見えるという事はまだ作り込みが甘いんですね。

>引数を二つ取る関数に引数を一つ渡したらどうなるの?
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)
のように黒魔術(リフレクション)を使わずに簡潔に書けると思います。

249 :デフォルトの名無しさん:2010/01/21(木) 04:10:49
http://merd.sourceforge.net/pixel/language-study/syntax-across-languages/bjcrntRfl.html
http://homepage.mac.com/mkino2/oop/messaging.html

メソッドがだとすると、その obj の生成、複製、破棄とか
気になるといえば気になるのにゃあ・・・

250 :デフォルトの名無しさん:2010/01/21(木) 15:27:35
引数をあらわす括弧と、演算子の優先度をあらわす括弧が
ネストした時に、どれがどれかわからなくないですか?

251 :デフォルトの名無しさん:2010/01/21(木) 15:33:19
わからなくない

252 :デフォルトの名無しさん:2010/01/21(木) 23:36:25
>>250
形式言語とパーザの勉強して、
「曖昧な文法」ってどんなのがあるか理解しよう。

253 :デフォルトの名無しさん:2010/01/22(金) 00:13:45
perlfunc

List 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.

254 :デフォルトの名無しさん:2010/01/22(金) 00:18:23
明快入門コンパイラ・インタプリタ開発 C処理系を作りながら学ぶ

神本だった。ここでうだうだ糞文法の質問している奴
読めや

255 :デフォルトの名無しさん:2010/01/22(金) 00:19:20
本を紹介するんならICBMくらい書けや

256 :デフォルトの名無しさん:2010/01/22(金) 00:21:06
>>255
あー?お前誰に命令してるんじゃ?


257 :デフォルトの名無しさん:2010/01/22(金) 00:22:43
>>255
あー? テポドン2号落とすぞコラ

258 :デフォルトの名無しさん:2010/01/22(金) 00:24:52
テポドン2号だと?
おまえ、それかっぱえびせんじゃねえか

259 :デフォルトの名無しさん:2010/01/22(金) 02:22:16
ワロヒコ乙

260 :227:2010/01/22(金) 03:00:20
>>249
C#などのように扱い始める時にオブジェクトの生成を行う方法と、
JavaScriptのようにメソッドの定義時に行う方法があると思っていますが、
後者の方が心理モデルを構築しやすく、理解しやすいと思っています。
オブジェクトにはフィールドとメソッドがペタペタくっついてる、と
説明すると、初学者にも理解してもらいやすいのではないでしょうか?

>>250-253
たしかに分かり難い所があるかもしれません。
この点に関しては、>>253 であげられた所ドユメントでも、
> the simple (but occasionally surprising) rule is this:
と書かれています。
Perlは各関数が取る引数の数によってどうパースされるかが変わります。
Rubyでは、"p (1) - 2"というコードで 1.6 と 1.8 で結果が違います。
また、Ruby 1.8 では、引数の数でも変わります。

これらをふまえると、単純に関数名の後ろのスペースの有無で評価結果を
変えるのが良いのではないかと思っています。

私は過去にCなどの言語で関数名の後ろにスペースを入れるべきという主張を
見た事がありませんし、while, for 等の構文と関数呼び出しを
スペースの有無で見わけるという、コーディング規約も一般的だと思います。
そのため、自由度は減りますが、見た目的には良いのではないでしょうか?

>>254
どのような点が良いのでしょうか?
Cのような低いレイヤの処理系を実装するとなるとinline化の判断や
可変長配列サポートの仕方とかが気になりますが、
その辺はまっとうな方法を紹介してますか?
土日に本屋に行って探してみます。
>>255
じゃあ、ABMで。

261 :デフォルトの名無しさん:2010/01/22(金) 05:11:45
>Rubyでは、"p (1) - 2"というコードで 1.6 と 1.8 で結果が違います。
>また、Ruby 1.8 では、引数の数でも変わります。

Ruby作ってる奴ってアホだろ

262 :デフォルトの名無しさん:2010/01/22(金) 07:37:29
> while, for 等の構文と関数呼び出しを
> スペースの有無で見わけるという、コーディング規約も一般的だと思います。

ナンセンス。
エディタと文法と実行モデルを区別しようぜ。

263 :デフォルトの名無しさん:2010/01/22(金) 08:52:13
>>261
a +b と a + b で意味が違うとかな。
アホ扱いされる一面ではある。

>>260
そういう、レキシカルアナライザの挙動が、パーサに左右される状態に依って変わる、
なんていう言語はパーサとレキシカルアナライザを作るのが大仕事になる。

なに考えてるのかわからんが素直に正規表現でトークンを切り出して、LL(1)かLALR(1)で
処理できる文法にしたほうがよい。まずは。

264 :デフォルトの名無しさん:2010/01/22(金) 10:13:13
>>260
> Cのような低いレイヤの処理系を実装するとなるとinline化の判断や
> 可変長配列サポートの仕方とかが気になりますが、
> その辺はまっとうな方法を紹介してますか?

お前、自分のレベルにあった本をまず読めよ。
なんで上から目線なんだw

265 :デフォルトの名無しさん:2010/01/22(金) 11:26:13
ワロヒコの本を紹介するような椰子には、上から目線で当然だろwwwww

266 :227:2010/01/23(土) 00:12:26
>>261, >>263
知らなかった。確かに違う。> a +b と a + b で意味が違う
この辺、複雑なルールなのに穴に落ちる事が少なく
普通の使用者は気がつかないようになってるのが、凄いですね。
本当にRubyの作者はアホですね。
このRubyのやつとか、Perlの関数名によってパース結果が変わるのとか、
真似するのはやめるべきですね。シンプルよりも使いやすさを求めるのではなく、
許容できない使いにくさが無い範囲でシンプルな文法を目指したいですね。

>>246 で書いた文法の場合、正確に文法を書くとすると、
関数呼び出し ← id ( '('? (式 ',')+ ')'? / '()' )
参照 ← id
にしようと考えています。( ?は省略可能, /はor, +は一回以上の繰り返し)
要は、idの後ろからその式の終端までに他の式があれば
関数呼び出しとして扱うつもりです。

LL(1)だと、 a(1) と a = 1 が両方パースできません。
PEG文法の範囲の文法が使いやすくて良いと思います。パーサの実装も楽です。
LLだと無限大相当ですが。

267 :227:2010/01/23(土) 00:13:47
>>262
区別できてる気はしませんが、話したいのは文法についてです。

while (true);
myfunc(true);
のように書き分けるコーディング規約は一般的だと思いますが、違いますか?
検索して3番目に出てきたPearライブラリの規約では、
http://pear.php.net/manual/ja/standards.control.php
> 制御構造では、関数コールと区別するために、 制御キーワードと開きカッコの間に空白を 1 つ置きます。
と書かれていました。皆これを当然と思っているのなら、
関数名の後ろにスペースを入れた場合、エラーになるまたは違う解釈をする、
というのは落とし穴にならないのではないでしょうか?

>>264
設計、実装にあたり参考になる本を紹介してもらう事もあるかもしれませんが、
それは、それでよろしくおねがいします。
ちなみにどんなレベルが私に合ってると思いますか?

>>265
私が言うのも何ですが、何でこのスレではそこまで煽られてるんですか?

268 :デフォルトの名無しさん:2010/01/23(土) 01:51:17
>>266の文法はPEGとしても>>246の例と一致していないよ。たとえば
「func a, b,」や「func (a,」が関数呼び出しにマッチしている。
書きたかったのは下のような奴じゃないかと思うんだけど。

関数呼び出し := id ( '()'
/ 式 ( ',' 式 )*
/ '(' 式 ( ',' 式 )* ')' )

で、この文法ってRubyと大差ない複雑さだよ。
「f f, f a, b, c」とか、式の中に裸の「,」が出てきたら困るよね。

269 :デフォルトの名無しさん:2010/01/23(土) 02:34:05
横レス失礼

>>266,267
言っている事が矛盾している気がするヨ。

>>266では、a +b と a + b で意味が違う事を問題としているが、
これはRubyが構文によってセパレータ(字句区切り子)の解釈が異なる事に起因する。
しかし「二項演算子の前後には空白を入れる」という一般的なコーディング規則に
従っていれば実用上の問題は生じない。

対して、>>267ではwhile文と関数呼び出しという二つの構文で、セパレータの
解釈が異なることを問題としていない。それを一般的なコーディング規則であるから、
問題は生じない(落とし穴にならない)と主張している。

Rubyの構文が汚いのは分かるから、>>263が助言しているように、
まずはセパレータでトークンを区切って素直にパーズできる文法で設計することを勧める。

270 :デフォルトの名無しさん:2010/01/23(土) 02:48:19
>>268
ここはこれでも全然煽られてないんだよ。
能力を持った人しか来れないし。
逆にエロゲの人でも能力を持っていればそれほど煽られない(煽られないことはないが)。
君みたいにダメプログラマで上から目線なら、今までだったらもっと煽られて相手にされてないよ。

トークンの切り出し程度で悩んでるなんて、ここに来る資格はない(断言

271 :デフォルトの名無しさん:2010/01/23(土) 03:16:08
偉そうなこと言っといて安価ミスってると恥ずかしいよね

272 :デフォルトの名無しさん:2010/01/23(土) 03:47:25
ああ(笑

273 :デフォルトの名無しさん:2010/01/23(土) 09:48:12
>>267
>while (true);
>myfunc(true);
>のように書き分けるコーディング規約は一般的だと思いますが、違いますか?
少なくとも、コーディング規約としては一般的ではない。


274 :デフォルトの名無しさん:2010/01/23(土) 10:15:29
ワロヒコって言った奴ちょっと出てこい

275 :デフォルトの名無しさん:2010/01/23(土) 10:33:34
>>273
CのK&RやJavaは、そうやって書き分けるだろ。それが一般的。
GNUが特殊だと思う。

276 :デフォルトの名無しさん:2010/01/23(土) 10:34:47
>>273
そうか?いたって一般的だと思うが
少なくともここにある規約は全部そうなってる
ttp://www.objectclub.jp/community/codingstandard/

277 :デフォルトの名無しさん:2010/01/23(土) 12:07:05
>>246
俺はそれでいいと思う。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
となる。
これをパースするのが難しそうな気がする。

278 :デフォルトの名無しさん:2010/01/23(土) 13:44:15
>>275
気にしてなかったけど、意外と多いね。

http://www.google.com/codesearch?q=while++lang:c

空白の有無で意味が変わるのは個人的には気持ち悪いけど、
俺が使う訳じゃないしな。

279 :デフォルトの名無しさん:2010/01/23(土) 14:13:45
https://developer.mozilla.org/en/Mozilla_Coding_Style_Guide#Control_Structures
http://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 はキーワードの後ろは
空白を空けるスタイルだった。コーディングスタイルと構文規則
では要求される厳密性が違うけどね。インデントの強制くらいなら
受け入れられ易いとは思うけど。

280 :227:2010/01/23(土) 15:47:09
>>268, >>277
その点は見逃していました。
たしかに(人間にとって)パースするのが難しいですね。
試しに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を出す等の処理をすれば良いですかね?


281 :227: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',')',';'] という処理の事を字句解析と言うと認識してるんですが。


282 :デフォルトの名無しさん:2010/01/23(土) 19:05:04
二項演算子の間に空白を入れる人は多いよ。
fun(foo,bar)とfun foo,barを同居させた奴が前スレにいたよ。
エロゲプログラマだったけど。

283 :デフォルトの名無しさん:2010/01/23(土) 19:06:39
関数宣言の時にカッコの後ろに空白をいれるのは検索性を良くするためで、
来れも結構いるよ。

284 :デフォルトの名無しさん:2010/01/23(土) 19:14:54
そもそも>>246

>引数があれば関数呼び出しで、引数が無い場合は
>括弧の省略は不可という仕様です

これがおかしい
そんな半端に括弧を省略して何になる
a = call object.method
だろ
文法より意味論をまず確定しろ

285 :デフォルトの名無しさん:2010/01/23(土) 19:15:22
>>276
>少なくともここにある規約は全部そうなってる
>ttp://www.objectclub.jp/community/codingstandard/
それ、みんな
「Java コーディング標準(オブジェクト倶楽部バージョンを〜用に変換したもの・・・」
だから、全部同じスタイルになっててあたりまえだろw

>>279
Open source系は、キーワードの後ろにスペース入れる事が明記されてるのが多いね。
pearもそうだ。


286 :デフォルトの名無しさん:2010/01/23(土) 19:36:35
もうちょっと勉強してから質問しないと、低レベルすぎて話にならないよ。
9??の馬鹿の方がまだ良かったかな。

しかし、こんな素人にみんないつのまに優しくなったんだ?


287 :デフォルトの名無しさん:2010/01/23(土) 19:40:29
レベルより態度。

288 :デフォルトの名無しさん:2010/01/23(土) 19:40:31
高卒でも
http://kenjikakera.asablo.jp/blog/2009/11/04/4676336#c
の様に構文を自由に変えられるコンパイラを作ってるんだから、
麻布と京大の名が泣くぞ。ちんこ。

289 :デフォルトの名無しさん:2010/01/23(土) 19:47:40
9??の態度は最悪だったなw
その後にマルチスレッドのコンパイラが出たのは、人格と能力はべつもんと知ったな。

290 :デフォルトの名無しさん:2010/01/23(土) 19:50:17
>>283
自己レス
カッコの後ろ->カッコの前。恥ずかしい…orz

291 :デフォルトの名無しさん:2010/01/23(土) 19:57:45
>>288
これが18年前に作られたそうだ。OO的にはダメダメだけどエロゲ程度で作るのなら関数型が分かり易くて良いだろう。

292 :デフォルトの名無しさん:2010/01/23(土) 20:00:47
しかもコンパイルスピードは高速らしい。
makeを内蔵してマスター時のスピードを少しでも上げるんだとさ

293 :デフォルトの名無しさん:2010/01/23(土) 20:03:16
まあ、物を見てないんでホントかどうかは怪しいが。

294 :デフォルトの名無しさん:2010/01/23(土) 20:03:45
計算機はプログラマの人格には無頓着だからな。
ネットでは人格が変わる人もいるから、そっちかもしれんが。

295 :デフォルトの名無しさん:2010/01/23(土) 20:06:09
Horizontal Layoutってどう思う?
1 + 2*3
と書くと2*3を先に計算して
1+2 * 3
と書くと1+2を先に計算するって奴。

296 :デフォルトの名無しさん:2010/01/23(土) 20:08:31
きもい。Cの優先順位が身に染みてるけど、メンテのためにカッコをいれる。
それに比べて>>295は俺にはなじまん。

297 :デフォルトの名無しさん:2010/01/23(土) 20:08:45
1 + 2 * 3
は?

298 :デフォルトの名無しさん:2010/01/23(土) 20:13:51
スペース同じなら * 優先

299 :デフォルトの名無しさん:2010/01/23(土) 20:14:39
同じなら左優先

300 :デフォルトの名無しさん:2010/01/23(土) 20:20:31
GAME言語は左優先だったな
APLもだっけ?

1 2 3 ADD MULがいいか
MUL(1, ADD(2, 3))がいいか
(MUL 1 (ADD 2 3))がいいか

((1 2 ADD) 3 MUL)
Lisp+Forthも面白いか。
でも世の中にはカンマと小数点が逆の国があるらしくて
そういう国の人はどう思うのだろうというのも時々


301 :295:2010/01/23(土) 20:20:33
聞いておいてなんだけど自分もキモいと思う。
採用している言語もほとんどないしね。

>>297
1+2*3
1 + 2 * 3
のように均等に分けた場合は演算子の優先順位で決まるらしい。

302 :デフォルトの名無しさん:2010/01/23(土) 20:25:06
1/((2+3)*4) とかどうするの?
1  /  2+3 * 4 とか書くの?
空白多すぎて読み辛いよ・・

303 :デフォルトの名無しさん:2010/01/23(土) 20:28:39
Smalltalkも左優先。

>>302
空白の数で優先度が決まるのかw。
いっそ、空白やTABの数で演算子の種類が略

304 :デフォルトの名無しさん:2010/01/23(土) 20:31:14
Smalltalk はメッセージ式のルールが上位にあるからシンプルで分かり易い。

305 :デフォルトの名無しさん:2010/01/23(土) 20:32:34
>>300
>にはカンマと小数点が逆の国
フランス、スペイン、イタリア、ドイツあたりがそうらしい。
'.'の代わりにスペースを使う場合もあるとか。

306 :デフォルトの名無しさん:2010/01/23(土) 21:01:14
>Smalltalk はメッセージ式のルールが上位にあるからシンプルで分かり易い。
今でも慣れない、四則演算は小学校で習うから体に染みついてる

数値演算でバグだすとマジ悩む>>Smalltalk


307 :デフォルトの名無しさん:2010/01/23(土) 21:13:02
Scalaの、通常の四則演算を多記号に拡張したような規則は
面白いなあと思ってたんだが、アレは元ネタがあるんだろうか

308 :デフォルトの名無しさん:2010/01/23(土) 22:10:18
だいたい、文字列みたいな一次元で表現しようとするから困るんだよ。
二次元に数式置いて、近い順に演算するってのはどう?

三次元に拡張して、上の段が掛け算、下の段が割り算でもいいよ。
この球の中の総和、みたいな。


309 :デフォルトの名無しさん:2010/01/24(日) 00:07:00
「左結合」「右結合」という術語があるんだから使いましょうや。

310 :デフォルトの名無しさん:2010/01/24(日) 02:47:29
>>303
whitespace

311 :デフォルトの名無しさん:2010/01/24(日) 23:43:34
>>307
http://www.scala-lang.org/node/118
これのこと?


312 :デフォルトの名無しさん:2010/01/25(月) 08:32:47
>>308
trifungeやると

313 :デフォルトの名無しさん:2010/01/25(月) 13:54:25
>>291
おまいは関数型言語をわかっていてそれを関数型と言ってるのか?
どっかのおかしな事典の「C言語は関数型言語」というトンデモを信じてないか?

314 :デフォルトの名無しさん:2010/01/25(月) 14:03:04
手続き型と勘違いしてるのでは

315 :デフォルトの名無しさん:2010/01/30(土) 07:37:00
291の発言は?だが、「関数型言語」の定義を聞かれると
答えるのは難しい。

316 :デフォルトの名無しさん:2010/01/30(土) 07:47:49
実は「関数型言語」という語の意味が二種類あるという落ちか。
古い定義だと「subroutine以外にfunctionを使える言語」なんでCを含むんだよね。


317 :デフォルトの名無しさん:2010/01/30(土) 09:05:34
細かい違いな気がするけど

何かを返す返さないで記述が違うのは
便利な気がする・・・basic

void 使え・・・c

ソース嫁・・・動的型付

318 :デフォルトの名無しさん:2010/01/30(土) 09:09:08
> 古い定義だと「subroutine以外にfunctionを使える言語」なんでCを含むんだよね。

[要出典]

Cはsubroutineをfunctionと「呼んでいる」言語であって。

319 :デフォルトの名無しさん:2010/01/30(土) 09:53:07
値を返すサブルーチンを関数と呼ぶのはCに限らずFortranとかPascalとかあるが、
それらが「関数型言語」と呼ばれていたのは聞いたことがない

320 :デフォルトの名無しさん:2010/01/30(土) 10:11:12
LISPも正格評価で逐次処理、関数は置き換えではなく呼び出しだから、
関数型ではなく実質的に手続き型言語と言えなくもない

321 :デフォルトの名無しさん:2010/01/30(土) 10:22:57
古い論文だとFortranをfunctional languageと呼ぶことがあるんだけど懼ヲ
まあ、聞いたことないのが当たり前だと思う。
自分も最初に聞いたとき訳が分からなかったし。

あと、その訳語として「関数型言語」が主流だったどうかは知らない。
ごめん。

322 :デフォルトの名無しさん:2010/01/30(土) 10:32:12
>>321
具体的にその論文名を。

323 :デフォルトの名無しさん:2010/01/30(土) 10:52:26
threaded interpretive language とか書名聞いて
何ぞと思って調べてみたら forth と z80 の解説書だった

俺もどこで見たか忘れたけど、Cを関数言語と呼んでた
記憶が・・・まぁ文脈というか時代背景によるよね > 用語の定義

324 :デフォルトの名無しさん:2010/01/30(土) 10:58:59
技評の「新ANSI C言語辞典」を持ってる人がいたら、それの
「関数型言語」の項を見てもらいたいのだが...

325 :デフォルトの名無しさん:2010/01/30(土) 11:08:31
>>322
論文は手元にないんで無理。
Webならhttp://www.liv.ac.uk/HPC/HTMLF90Course/HTMLF90CourseNotesnode52.htmlが近いかな。

むしろちょっと疑問なんだけど、
"functional language"に同綴り異義語があった
というのってそんなに興味深いのか。

326 :デフォルトの名無しさん:2010/01/30(土) 11:19:10
>>324
通りすがりの漏れが引用しますよ
p.294 関数型言語 の項より

「関数型言語(functional language) 関数型のプログラミング言語。
LISP、LOGO、APL、BCPL、B、Cなどがある」

327 :デフォルトの名無しさん:2010/01/30(土) 11:22:51
そのころの基準で関数型じゃない言語って何だ?
FORTRAN、COBOLは違うのか?
BASIC? 関数を言語仕様に入れただけで、分類が型が変わるのか?
アセンブラ?

328 :デフォルトの名無しさん:2010/01/30(土) 11:58:43
どうでもいいからブログでやってろ

329 :デフォルトの名無しさん:2010/01/30(土) 12:27:44
>>326
たぶんそれが日本でデマが流行ってる元凶。
時代によって変わったりなどしない。B も C も関数型じゃない。

>>325 も HPC の専門家らしいので、言語屋じゃない。
言語屋が C を functional などと言った例はないはず。

330 :デフォルトの名無しさん:2010/01/30(土) 12:52:56
素直にこの辺りを参照した方が良いと思う。
ttp://ja.wikipedia.org/wiki/%E9%96%A2%E6%95%B0_%28%E6%95%B0%E5%AD%A6%29

俺解釈だと「処理が関数の変数と値に依存する言語」「独立して書かれている処理は独立している」だな。

331 :デフォルトの名無しさん:2010/01/30(土) 13:02:29
「Cを関数型と呼ぶ人が一部にいたのかどうか」
「その事実は万人が知っていてしかるべきか」という話になってしまっているが
なんにせよCもFortranも関数型言語ではないし
LISPにしても、延々とこんな話を続ける理由になるほど手続き型言語っぽくはない

332 :デフォルトの名無しさん:2010/01/30(土) 13:03:14
>>330
バカ

333 :デフォルトの名無しさん:2010/01/30(土) 15:53:39
LISPとCに根本的な違いが無いのに
「LISPは関数言語」というデマがいつからか
流行ったのが酷いと思うけど。

334 :デフォルトの名無しさん:2010/01/30(土) 16:11:15
> 根本的な違い
根本的というのが曖昧すぎて、何とも言えないな。つまりどういう要素が根本的なのか。

335 :デフォルトの名無しさん:2010/01/30(土) 16:24:30
LISPとCでどこが違うのか言ってみてよ。

336 :227:2010/01/30(土) 17:59:10
Haskellも副作用(モナド)あるから関数型じゃないよね、とか燃料投下してみる。

337 :デフォルトの名無しさん:2010/01/30(土) 18:22:26
OCamlはもっと微妙。

338 :デフォルトの名無しさん:2010/01/31(日) 08:20:21
関数型言語と呼べるための必要条件は何だろう?
素朴には、すべてのプログラムが数学的な関数だけで構成されていること、だが、
これだとほとんどの言語が失格だな。

339 :デフォルトの名無しさん:2010/01/31(日) 08:29:30
>>338 それは十分条件じゃないか?
下手するとHaskellぐらいしか満たせないw

340 :デフォルトの名無しさん:2010/01/31(日) 10:14:20
トランスレータって何時頃からあるんだろう
A言語をC言語に変換する

コンパイラ・スクリプトエンジンというよりは
テキスト処理の範疇なような気がするけれども

でも欠点があるから、技法として主流足りえない

あれか出力先の言語・ビルド環境による影響大
適用できる範囲が、自然と絞られざるを得ないとか

toy program というような捕らえ方が一般に正しい
反応なような気もする…

341 :デフォルトの名無しさん:2010/01/31(日) 10:19:47
toy rograam じゃなくて toy language だった
なれない言葉使おうとするじぶんかっこ悪いorz

342 :デフォルトの名無しさん:2010/01/31(日) 10:27:21
有名なものでは "Software Tools" (「ソフトウェア作法」) の Ratfor が 1974 年。

初期の C++ は、C 言語へのトランスレータだった。テキスト処理で済むような
内容ではなかったけどね。

343 :デフォルトの名無しさん:2010/01/31(日) 11:39:44
Cにうまく変換すれば、可搬性でも速度でも申し分ないはず
でもCの再解釈分だけオーバーヘッドがある
D&Eを読むと、初期のC++処理系(Cfront)がトランスレータだったいせいで
生成コードの品質が悪いとか、本格的な言語ではないとか誤解されたと書いてあるが

>toy language というような捕らえ方が一般に正しい
真実どうなのかはともかく、多数の認識は今でもそうなのかも?

344 :デフォルトの名無しさん:2010/01/31(日) 11:45:36
OOSC初版の頃のEiffelもCへのトランスレータだったはず
今でもそうなのかは知らないが

345 :デフォルトの名無しさん:2010/01/31(日) 11:48:35
コンパイラ入門―構文解析の原理とlex/yacc、C言語による実装

糞本だった。お前ら責任取れよ


346 :デフォルトの名無しさん:2010/01/31(日) 11:55:57
>>345
どの辺が糞なのか書いてないから責任とってあげない

347 :デフォルトの名無しさん:2010/01/31(日) 13:25:00
馬鹿には有効活用できない本を馬鹿に薦めた責任とかそういうこと?

348 :デフォルトの名無しさん:2010/01/31(日) 13:41:31
良書だった記憶があるけどなあ
薄い割に説明はかなり噛み砕いてあるし、
かといって理論的な部分を無視してるわけでもない

もっとも、内容としては構文解析・yacc/lexの最低限の使い方で終わってるから
詳細は別途ドラゴンブックとかを頼らないといけない
その辺も含めて、巻末に関連書籍の紹介が載ってたはず

349 :デフォルトの名無しさん:2010/01/31(日) 17:47:18
でもこの本高校生か大学1年程度の
レベルの本だから意味なくね?

350 :デフォルトの名無しさん:2010/01/31(日) 18:42:04
>>349
この本はそのレベルの人には非常に良い本だし、その良き本を糞本扱いできる程高度な知識を持つものなら手にとって数ページ眺めるだけで自分に必要ないことを理解するハズだよね?
それがわからないという事、つまり>>345の中の人は……(以下自粛


351 :デフォルトの名無しさん:2010/01/31(日) 19:00:19
よっぽどデカい本屋じゃないと、置いてなくない?

352 :デフォルトの名無しさん:2010/01/31(日) 22:09:25
関数型言語をラムダ算法を元に解説するのはもう古いの?
真っ先に出てくると思ったのに。

353 :デフォルトの名無しさん:2010/02/01(月) 03:45:35
理論背景って研究者にしか意味無いからな…

354 :デフォルトの名無しさん:2010/02/01(月) 13:01:04
でもそういう基礎理論があれば関数型は動作を類推できるじゃないか
コンパイラの設計法にも関わる事だと思うけどな
そういうのを知らないとRubyみたいに仕様が破綻することになる

355 :デフォルトの名無しさん:2010/02/01(月) 13:06:45
>>352
破壊的リスト操作をラムダ算法で解説できるんですかあなたは?

356 :デフォルトの名無しさん:2010/02/02(火) 11:59:29
>>352
C#はラムダ式があるから関数型言語だ、ということにしたくないんだろうな。
無名関数はPerlにもある。
もう「値を返すサブルーチン」と同じくらい当たり前になってしまった。

357 :デフォルトの名無しさん:2010/02/02(火) 12:17:13
ラムダがありゃ関数型言語、という新説が登場しますた

358 :デフォルトの名無しさん:2010/02/02(火) 13:26:55
文法のlambdaとラムダ計算は別物だよね

359 :デフォルトの名無しさん:2010/02/02(火) 13:42:28
>>358
それはlambdaのない言語が言い訳するときのセリフ

360 :デフォルトの名無しさん:2010/02/02(火) 17:10:19
大事なのはクロージャ

361 :デフォルトの名無しさん:2010/02/02(火) 22:19:21
Objective-Cの勝利。

362 :デフォルトの名無しさん:2010/02/02(火) 23:29:26
>>352
ほとんどの言語はチューリング完全
チューリング完全ということはチューリングマシンと同じ計算能力を持つ
チューリングマシンとラムダ計算は等価
よってほとんどの言語は関数型である
なんてことになって不都合とか

363 :デフォルトの名無しさん:2010/02/02(火) 23:31:47
SQLいいよSQL

364 :デフォルトの名無しさん:2010/02/03(水) 00:14:36
上向き構文解析って遅いし
意味の無い概念じゃないですか

還元とか意味が全くないし

365 :デフォルトの名無しさん:2010/02/03(水) 08:34:34
オマエが意味を理解できなくても、LALR(1) パーサは現実に働いているわけだが

366 :デフォルトの名無しさん:2010/02/03(水) 17:06:29
>>364
上向き構文解析って下向きより遅いの?

367 :デフォルトの名無しさん:2010/02/04(木) 06:44:51
俺のは左向き

368 :デフォルトの名無しさん:2010/02/04(木) 06:56:20
誰もお前のつむじの向きなんか聞いてない

369 :デフォルトの名無しさん:2010/02/05(金) 22:54:42
つむじの向きとか何馬鹿言ってんの?ちんこの向きだろ。


370 :デフォルトの名無しさん:2010/02/07(日) 15:21:49
野暮がすべてを台無しにする

371 :デフォルトの名無しさん:2010/02/09(火) 00:39:14
遅い

372 :デフォルトの名無しさん:2010/02/10(水) 16:53:19
ゴスロリ言語

373 :デフォルトの名無しさん:2010/02/11(木) 19:45:00
おい、Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages (Pragmatic Programmers)
これ良書かおしえろ

374 :デフォルトの名無しさん:2010/02/11(木) 20:43:05
やだ

375 :デフォルトの名無しさん:2010/02/13(土) 09:02:14
>>373
良書です

376 :デフォルトの名無しさん:2010/02/13(土) 09:24:04
>>375
嘘つくんじゃねーよ
ANTLR使い方書いてあるだけの
糞本じゃねーかよ

377 :デフォルトの名無しさん:2010/02/14(日) 09:29:24
上付きとか下付きとか、マンコの形なんかどうだっていい

378 :デフォルトの名無しさん:2010/02/14(日) 09:36:02
リンクの冒険の話はスレ違いだ

379 :デフォルトの名無しさん:2010/02/15(月) 18:41:31
>>343
> でもCの再解釈分だけオーバーヘッドがある

そんな一般論は言えない。

380 :デフォルトの名無しさん:2010/02/16(火) 13:36:59
>>376
たまたま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!と抜かすなら自分の力量が足りないか考えることだな。

381 :デフォルトの名無しさん:2010/02/22(月) 17:10:32
Aanal ねぇ

382 :デフォルトの名無しさん:2010/02/26(金) 15:25:43
しつもん
Pythonみたいなインデント指向の言語を字句解析・構文解析するアプローチを教えてください

383 :デフォルトの名無しさん:2010/02/26(金) 15:36:09
>>382
lexierでインデントを見て、begin、end的なダミーのスコープ限定子を出力すればいいんじゃね

384 :デフォルトの名無しさん:2010/02/26(金) 15:52:22
>>382
どの言語だか忘れたが、
一旦、インデント数をひとつのパラメータ付き構文要素として、構文木に埋め込み、
これをもう一度構文解析して、構文木を再構成する実装を見たことがある。

実際はステートとして、現在のインデント数を持っておき、
>>383のように、ソースには現れない隠れ構文要素を構文木に構成しながら、
解析するのが簡単だと思う。


385 :デフォルトの名無しさん:2010/02/26(金) 21:41:22
CPythonの実装は>>383みたいな感じのようだね。INDENT, DEDENTっていうトークンが用意されてる。

386 :デフォルトの名無しさん:2010/02/26(金) 23:34:26
indentの逆はででーんとdedentなのか
明日会社で自慢しよう

387 :デフォルトの名無しさん:2010/02/27(土) 00:08:22
インデントでブロック構造なんて信じられない。バグは大丈夫なのか?

388 :デフォルトの名無しさん:2010/02/27(土) 00:11:28
あと、いくらCPUパワーが上がっても、コンパイルスピードと実行スピードが言語仕様のせいで全く上がらない。
Cにキャリー機能を追加してライブラリと最適化を強化する方が良いのでは?

389 :デフォルトの名無しさん:2010/02/27(土) 02:00:25
>>387
だれでも最初はそう思うんだよね

でも実際やってみるとほとんど問題ないってわかる

390 :デフォルトの名無しさん:2010/02/27(土) 02:05:56
>>387
ちょっと長めのコードをコピペすると…

391 :デフォルトの名無しさん:2010/02/27(土) 02:07:51
コピペ防止効果もあるのか、いいじゃないか

392 :デフォルトの名無しさん:2010/02/27(土) 02:16:34
コードの移動に支障が出るんだから良い訳無いだろw

393 :デフォルトの名無しさん:2010/02/27(土) 02:28:29
インデントブロック構造はネストしたブロックから抜ける構造の表現に難があるよな。
ネストが深くなるだけの構造だとキレイだけど。

394 :デフォルトの名無しさん:2010/02/27(土) 04:21:33
例外処理を作るときに、いちいちインデントを気にし、
少しでも気楽にコピペで作るときにインデントを気にし、
良いこと少ないね

395 :デフォルトの名無しさん:2010/02/27(土) 04:53:40
>>389
pretty printできないから嫌い


396 :デフォルトの名無しさん:2010/02/27(土) 05:25:30
>>390-392
pythonはモジュール化が簡単だからそこは問題にならない

>>393
try: except: else: finaly: で問題なし

>>394
お前の能力が低いことはわかった


397 :デフォルトの名無しさん:2010/02/27(土) 07:09:58
人間の目には錯覚がある。例外処理もいっぱいある。
さあ、何から議論しようか。坊や。
人間工学か?
それとも実行スピードを無視した方法か?

398 :デフォルトの名無しさん:2010/02/27(土) 07:16:58
おれは388だ。Cにキャリーをいれるのが最適のアセンブラに成ると思っている。

399 :デフォルトの名無しさん:2010/02/27(土) 07:18:06
インデントでブロック構造なんて、tab2かw

400 :デフォルトの名無しさん:2010/02/27(土) 07:22:30
時々このスレがわからなくなる

401 :デフォルトの名無しさん:2010/02/27(土) 07:27:11
言語を作ることがスレの本分だったな。
ちんこの前のエロゲの言語が本分だったな。

402 :デフォルトの名無しさん:2010/02/27(土) 07:28:56
しかし、9??の言うとおりのコンパイラが発売されたときは、
このスレ、もしかして馬鹿の集まりじゃないかっておもったよw

403 :デフォルトの名無しさん:2010/02/27(土) 08:46:14
しかしコンパイラスレのエロゲコンパイラが発想も実装も凄いよな。本当なら。

404 :デフォルトの名無しさん:2010/02/27(土) 08:57:06
>>398
アーキテクチャによっては無いんじゃなかったっけ?
移植性を落とさないのだろうか

405 :デフォルトの名無しさん:2010/02/27(土) 13:02:17
>>396
コードの字面上の話だから、モジュールは関係無いよ。
コードを書いていて、一つのブロックの行数が多く、ネストも深くなってしまった時に、
処理を別の関数に外出ししようとすれば必ずコピペは発生する物だし、そういう時に
インデントの修正は避けられない。

技術の良い面だけじゃなく、悪い面も認められないとね。

406 :デフォルトの名無しさん:2010/02/27(土) 13:41:54
>396
try: except: else: finaly: で回避できるの?
ネストしたブロックから抜けるときは依然としてインデントを合わせなきゃいけない気がするけど?


407 :デフォルトの名無しさん:2010/02/27(土) 16:04:33
プログラミング言語の文法には認知科学的な視点も必要さ。
そういう意味ではHaskellとかPerlは基地外。

408 :デフォルトの名無しさん:2010/02/27(土) 16:06:31
PerlはまだかしくもHaskellは問題ない

409 :デフォルトの名無しさん:2010/02/27(土) 16:08:30
まあ何でGoogleがPythonマンセーなのか考えればいい

410 :デフォルトの名無しさん:2010/02/27(土) 16:11:15
pythonはもうちょっとライブラリを整理して欲しい。
せめてリスト操作に副作用ありとなしの関数を両方用意して欲しいな。

411 :デフォルトの名無しさん:2010/02/27(土) 16:17:14
副作用あり:list.sort 副作用なし: sorted
副作用あり:list.reverse 副作用なし: reversed
これでは駄目なのか?

412 :デフォルトの名無しさん:2010/02/27(土) 16:17:44
>>409
全然マンセーじゃないみたいだが…

http://groups.google.com/group/unladen-swallow/browse_thread/thread/4edbc406f544643e

413 :デフォルトの名無しさん:2010/02/27(土) 16:26:38
simple common sense is going to limit Python's applicability
when operating at Google's scale

414 :デフォルトの名無しさん:2010/02/27(土) 16:44:34
>>412
読んだけど、元々速度が要求される場面ではPythonは用いてないと思うし、そもそもそれは憶測の域を出ないよね。

415 :デフォルトの名無しさん:2010/02/27(土) 16:51:12
つ コリンは中の人

416 :デフォルトの名無しさん:2010/02/27(土) 16:54:05
その Google Groups も Python でなかったか?

417 :デフォルトの名無しさん:2010/02/27(土) 22:20:22
>>398
>Cにキャリーをいれるのが最適のアセンブラに成ると思っている。

64bit版TL/1まだ〜?


418 :デフォルトの名無しさん:2010/02/28(日) 00:29:23
> Cにキャリーをいれるのが最適のアセンブラに成る

Cには関数GOTOがないんでいまいち

419 :デフォルトの名無しさん:2010/02/28(日) 09:00:27
Multi-entry も無いな

420 :デフォルトの名無しさん:2010/02/28(日) 09:05:50
>>418
関数GOTOってなんだ? setjump, longjump?

421 :デフォルトの名無しさん:2010/02/28(日) 09:08:03
ああ、CALLとかBSRとかGOSUBのことか。いらんな。

422 :デフォルトの名無しさん:2010/02/28(日) 09:18:13
関数GOTOってtail callのこと言ってると違う?
BASICでいうと

GOSUB
 GOSUB
 RETURN
RETURN

こういう入れ子になるのを

GOSUB
 GOTO
 RETURN ← この RETURN でいっぺんに戻る

みたいな

423 :デフォルトの名無しさん:2010/02/28(日) 09:20:44
関数と関数の間のgotoのことだろ。たぶん。
call a
call b
ret

call a
jmp b
ではなくて。これはコンパイラレベルで最適化してくれるよ。

424 :デフォルトの名無しさん:2010/02/28(日) 10:02:37
> ではなくて。これはコンパイラレベルで最適化してくれるよ。

C言語の場合、普通、関数の入り口でフレームを伸ばすので、ごく特殊な場合しか
最適化できないのが普通かと。

関数をまたいだGOTOはGCCなら独自拡張のLabels as Valuesを使ってポインタに
してやればできるね。できるってだけで何が起こるかはわからないけど。

425 :デフォルトの名無しさん:2010/02/28(日) 10:12:14
>>424
末尾再帰だけやってくれれば十分。ま、それなら自分でgoto文入れればいいんだけど。

426 :デフォルトの名無しさん:2010/02/28(日) 10:35:24
>>424
え、goto、gosubってbasicじゃなかったの?

427 :デフォルトの名無しさん:2010/02/28(日) 11:11:30
なぁ、C言語の関数をgotoに変換できないかな

428 :デフォルトの名無しさん:2010/02/28(日) 11:16:50
>>427
コンパイラはそうしてるだろ

429 :デフォルトの名無しさん:2010/02/28(日) 11:18:55
え?コンパイラはcallに変換してるんじゃないの?

430 :デフォルトの名無しさん:2010/02/28(日) 11:22:56
>>429
CALLは、PUSHとJUMPの短縮表現
8086に至っては、FAR CALLよりもPUSH JUMPの方が速かった

431 :デフォルトの名無しさん:2010/02/28(日) 11:38:27
enter/leave涙目

432 :デフォルトの名無しさん:2010/02/28(日) 11:39:57
CPS変換すれば全部単にGOTOでOK

433 :デフォルトの名無しさん:2010/02/28(日) 14:18:22
ええっと。
いろんなスクリプト言語に変換できるという機能に特化した
スクリプト言語を以前見かけたような気がするんだけど、失念してしまった。
誰か知らない?

434 :デフォルトの名無しさん:2010/02/28(日) 14:24:12
インテルアーキテクチャで語られると悲しくなる

435 :デフォルトの名無しさん:2010/02/28(日) 19:39:59
>>433
この前のエロゲの奴?

436 :デフォルトの名無しさん:2010/02/28(日) 19:47:20
>>435
別人

437 :デフォルトの名無しさん:2010/02/28(日) 21:21:13
>>433
haXe?

438 :デフォルトの名無しさん:2010/02/28(日) 21:23:56
マルチプラットフォーム プログラミング言語 haXe
http://pc12.2ch.net/test/read.cgi/tech/1238847817/

すごいな、まだ落ちてないでやんの。

439 :デフォルトの名無しさん:2010/03/02(火) 21:03:49
ブラウザが調子悪くて返事遅れた。スマン。
>>438
おー、これこれ! サンクス。

.NETにはまだ対応しないんかのう。
ゲームの演出スクリプトをコンバートして.NET FrameworkのDLLにコンパイルするシステムを作ったはいいが、
自動生成して巨大化したクラスの読み込みに秒単位で時間かかって意味ない罠。
まさかJITコンパイラがパフォーマンスの足をひっぱるとは思わんかった。
インタプリタ実装に逆コースだな……とほほ。

440 :デフォルトの名無しさん:2010/03/02(火) 21:12:55
ブラウザの長子とかじゃなくて、2chが攻撃喰らってたせいだな。

441 :デフォルトの名無しさん:2010/03/02(火) 22:05:32
>>439
つ ngen

442 :デフォルトの名無しさん:2010/03/03(水) 04:26:47
>>439
その用途だと中間言語コンパイラが一番だと思うが。
前スレのエロゲプログラマみたいに一瞬でコンパイル出来るのならインタプリタでも良いが、
前方参照とか、テキストでやってるとホットスポットになるぞ。

443 :デフォルトの名無しさん:2010/03/03(水) 20:43:52
>>439
LCG使えば速いよ
直接IL吐かなくてもDLRのExpression Tree使えば超簡単に使える

444 :デフォルトの名無しさん:2010/03/03(水) 21:09:52
>>442
>>443
ううーん。C#+DLR単体で開発してるならともかく、IronPython込みで使ってるので
IL吐かせたってほとんど意味が無いんだ。
どうせならPythonスクリプトを吐かせて直接実行させた方が早い、ということになる。
いずれにせよクラスの実体の読み込み時にJITコンパイルが実行されて、
しかもコード自体はガベージコレクションされないと来た。
大元のスクリプトから比べたら、JIT化されたコードって5〜6倍のサイズになってるんだぜ。

445 :デフォルトの名無しさん:2010/03/03(水) 21:24:38
じゃあ普通に実行時に必要な分だけ直接スクリプトからコンパイルしたら?
IronPythonだったらプリコンパイルしたってどうせランタイム同梱しないと動かないでしょ
それならコードはちゃんとGCされるし

446 :デフォルトの名無しさん:2010/03/03(水) 22:06:30
>>445
それはインタプリタと一体どう違うのよ。

447 :デフォルトの名無しさん:2010/03/03(水) 22:32:09
>>446
ILにコンパイルされたあとJITで実行されるから実行速度はDLLにプリコンパイルしておくのと変わらない
動的にコンパイルするなら一度に全部読みこむ必要はないからILへのコンパイルのコストも
そんなに問題にはならないんじゃないかな

448 :444:2010/03/03(水) 22:37:04
議論どうもありがと。
今のところ、構造化したデータをシリアライズしてDBに入れておき、
読み込み時にデシリアイズしながら固定的なコードで動けるようにしようと思ってる。
元々自動生成してたコードは非常に定型的なものだったからね。

449 :デフォルトの名無しさん:2010/03/03(水) 23:49:08
>ゲームの演出スクリプト
ずいぶん前にコンシューマ用で同じような事をした
そのときはメモリのフットプリントを最小にするのが目的だったのでスクリプト->バイトコードコンパイラでバイトコードインタプリタを実装って方式だった
バイトコードの環境をPC上でエミュっておくとスクリプターのコンソールでテストやデバッグができるので開発時間の短縮もできた
今時のマシンだったらその場でコンパイルしても良いのじゃないかとおもったりするんだけどどうなんだろう?


450 :デフォルトの名無しさん:2010/03/04(木) 00:00:29
>>449
用途に応じてコンパイラを作り直せば、
1つのゲームスクリプトでマルチプラットフォームに対応できる。
今回はPC向けだからRDB化するけど、DS向けとかだったら
バイトコードっぽくコンパクトなバイナリ構造にするのがいいと思う。

もちろんコンパイラもコンパイルされたスクリプトの実行環境も
全部自分で用意するんですがねorz

451 :デフォルトの名無しさん:2010/03/04(木) 00:25:58
クラウドコンパイラがあれば
全て解決するらしいし

難しいことを考えるのはバカが
頭のいいところを見せようとしているだけだな

452 :デフォルトの名無しさん:2010/03/04(木) 01:51:15
ブラウザの皮をかぶってシンクライアントの復活か。

453 :デフォルトの名無しさん:2010/03/05(金) 02:13:34
ゲームなんぞ、適当なバイトコードインタプリタを作れば十分そうだが

454 :デフォルトの名無しさん:2010/03/05(金) 02:24:32
そそ、if elseif else endを実装して、
表記式も簡略化して、r20>=10とかr5==r10だけにして、
式もLET、or、not、sub、add、sto、lodの命令にしちゃえば楽。
評価式と式は逆ポーランドで書けるようにしても、そんなに大変じゃない。

455 :デフォルトの名無しさん:2010/03/05(金) 03:26:06
>>454
それじゃBASE-x86や。

456 :デフォルトの名無しさん:2010/03/05(金) 05:25:11
うちのプロデューサーが簡単にコンパイラの拡張を要求してきたよ。
マクロを実装して欲しいとのことだが、MASM並の者を要求してきてる。
プログラマ上がりのプロデューサーだから仕方ないが、
MASM並のマクロがどれだけ大変か分かっていない。
文字セットの問題もあるし。ヘタに知識があると手に負えない。
しょうがないのでダメ元でこの前のエロゲプログッラマにプリプロセッサのソースを
売って貰えないか聞いてる最中。

457 :デフォルトの名無しさん:2010/03/05(金) 06:41:25
macroもmasm以上の仕様で、こんなの作れるかって言ってやった。
コンパイルスピードは5万行を1秒だってさ。

458 :デフォルトの名無しさん:2010/03/05(金) 19:29:52
ソースを貰えたのだけど、アセンブラ部分が多くて読めない。
マクロも先読みして展開を繰り返している。
凄く速い。50万行1秒くらいのコンパイルスピードだった。
とにかく凄い。このまま自社用に改造していただけるか交渉中。

459 :デフォルトの名無しさん:2010/03/05(金) 19:37:00
YOUはどうして交渉中なのにそんなことをペラペラしゃべってるんですかと小一時間

460 :デフォルトの名無しさん:2010/03/05(金) 21:29:06
あなたの会社は先方と守秘義務契約を結んでいないのですかと小一時間

461 :デフォルトの名無しさん:2010/03/05(金) 21:33:55
エロゲ会社のPGにそんなモラル期待するなよ

462 :デフォルトの名無しさん:2010/03/05(金) 22:31:37
過剰な性能だ。
C#のように機械的に処理できる定型的な構文を用意して
分割コンパイルできるように考えるのが本道なんじゃないか。

463 :デフォルトの名無しさん:2010/03/05(金) 22:35:36
何で C Sharp?

464 :デフォルトの名無しさん:2010/03/05(金) 22:39:54
>>462
> C#のように機械的に処理できる定型的な構文を用意して
意味分からん

465 :デフォルトの名無しさん:2010/03/05(金) 22:53:31
特にC#って相当複雑な部類じゃないか

466 :デフォルトの名無しさん:2010/03/05(金) 22:58:51
んん、C#のコンパイルは相当高速だぞ。
アセンブラなんかでカリカリにチューンするのが大事なのではなく、
コンパイルしやすい構文を用意することが大事だ、ということ。

467 :デフォルトの名無しさん:2010/03/05(金) 23:08:06
類似のほかの言語に比べてC#がコンパイルしやすいってことはないでしょ
コンテキストキーワードだらけだし

468 :デフォルトの名無しさん:2010/03/05(金) 23:28:53
パーサを書いたことのない人の発言。

469 :デフォルトの名無しさん:2010/03/06(土) 00:12:08
ヒント:C#はTurboPascal出身


470 :デフォルトの名無しさん:2010/03/06(土) 00:16:48
Mono のC#コンパイラのコードを見ればわかるが、レキサー、パーサーだけでも大そうなことになってる。
パースが簡単なのは、PASCALやBASIC、LISP。

471 :デフォルトの名無しさん:2010/03/06(土) 00:28:39
varという名前の型が存在したらvarがキーワードじゃなくなったりするんでしょ

472 :デフォルトの名無しさん:2010/03/06(土) 01:04:27
演算子の優先順位を変えられるのって、haskellだっけ?
普通じゃないっぽいけど、実装は簡単なの?難しいの?

473 :デフォルトの名無しさん:2010/03/06(土) 01:12:09
優先順位毎に演算子のリストを持って、ソースコード中に演算子を見つけたら
その都度マッチングすれば良いだけじゃないの。

474 :デフォルトの名無しさん:2010/03/06(土) 01:42:10
パーサーはともかく、レキサー(っていうの?)が複雑なのはいやだなぁ。
あー、あれか?途中でSQLやXMLなどが書けるからとか?


475 :デフォルトの名無しさん:2010/03/06(土) 02:12:19
スマン、興奮しすぎて秘酒義務を守らなかった。
あと、俺はエロゲじゃない。
macroは#define程度にして自分で作ることにした。

476 :デフォルトの名無しさん:2010/03/06(土) 02:14:31
秘酒義務->守秘義務
ゴメン間違えた。

477 :デフォルトの名無しさん:2010/03/06(土) 02:17:41
会社の人間がこいつを特定したらクビかな?やっぱり

478 :デフォルトの名無しさん:2010/03/06(土) 02:19:25
先方の情報も流したから多分……orz

479 :デフォルトの名無しさん:2010/03/06(土) 02:31:37
正直何一つ有用な情報は含まれてない

480 :デフォルトの名無しさん:2010/03/06(土) 07:11:19
真偽はどうであれ宣伝乙でいいよもうめんどくさい

481 :デフォルトの名無しさん:2010/03/06(土) 11:06:14
向こうは別に良いですとといってくれたが言及になりそう。
やはり簡易式で作ろうと思う。マクロも完全置換の#defineで。
みなさん、#defineを実装するときには文脈を見てますか?

482 :デフォルトの名無しさん:2010/03/06(土) 11:07:16
言及->減給
すまん。

483 :デフォルトの名無しさん:2010/03/06(土) 22:19:57
C#のspaced keywordは正気の沙汰とは思えない。

>>481
m4マクロを先に勉強しといたら?




484 :デフォルトの名無しさん:2010/03/06(土) 23:50:14
C#は
後方互換>>>バージョン管理>>>>>(越えられない壁)>>>>>>>>言語仕様の簡潔さ
だから仕方ない

485 :デフォルトの名無しさん:2010/03/06(土) 23:55:06
>>483
m4マクロのソースならどうにかなりそうです。ありがとう御座いました。

486 :デフォルトの名無しさん:2010/03/07(日) 00:17:37
>>484
大規模開発に耐えるよう厳格な規格で作られたC#やJavaのような言語の仕様が簡潔なものに収まるはずがない。
でもC#の開発効率の良さやコンパイラの鬼速さは本物。
あれはいいものだ。

487 :デフォルトの名無しさん:2010/03/07(日) 00:28:19
Javaなんかそんなに複雑じゃないだろ
C#の文法が複雑なのは既存のコードの互換性を維持しながら無理矢理拡張しまくってるから

488 :デフォルトの名無しさん:2010/03/07(日) 00:32:33
>>487
> C#の文法が複雑なのは既存のコードの互換性を維持しながら無理矢理拡張しまくってるから
C#のどこらへんが複雑? パースが難しいところもあるが、文法自体は単純だと思うが。

489 :デフォルトの名無しさん:2010/03/07(日) 00:41:03
Ironyのサンプルにパース用のC#構文定義クラスがあるけど、RubyやPython向けより簡単なくらいだよ。

490 :デフォルトの名無しさん:2010/03/07(日) 00:41:24
結局C#のコンパイルが激速な理由については語られないのか

491 :デフォルトの名無しさん:2010/03/07(日) 00:47:44
>>490
IDEでの話か?


492 :デフォルトの名無しさん:2010/03/07(日) 00:55:21
cs.exe

493 :デフォルトの名無しさん:2010/03/07(日) 01:03:18
ILへのコンパイルの段階ではほとんど最適化やらないし

494 :デフォルトの名無しさん:2010/03/07(日) 01:03:36
どの言語と比べて?

495 :デフォルトの名無しさん:2010/03/07(日) 01:33:59
>>483
>C#のspaced keywordは正気の沙汰とは思えない。

spaced keywordってなんじゃらほい
名前空間周りの実装のことかな…

http://ufcpp.net/study/csharp/sp_namespace.html

496 :デフォルトの名無しさん:2010/03/07(日) 07:16:59
>>495
理解できるかどうかわからんがこことか。
http://blogs.msdn.com/slippman/archive/2003/12/03/58443.aspx

497 :デフォルトの名無しさん:2010/03/07(日) 07:32:01
>>496
C#で具体的にどこ?

498 :デフォルトの名無しさん:2010/03/07(日) 08:53:35
>>496
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 も考案されたと、ふむ

499 :デフォルトの名無しさん:2010/03/07(日) 09:02:57
>>497
http://msdn.microsoft.com/ja-jp/library/88c54tsw(VS.80).aspx
>シール メソッドは基本クラスのメソッドをオーバーライドしますが、それ自体は
>どの派生クラスでもオーバーライドされません

多重継承周りの話だろうおそらく...

500 :デフォルトの名無しさん:2010/03/07(日) 11:57:45
C#で2語以上まとめて一つのキーワードになるのはextern aliasとyield returnとyield breakだけじゃね

501 :デフォルトの名無しさん:2010/03/08(月) 00:09:34
>>500
そういった意味では構文の拡張そのものは大したこと無さそうだね>spaced keyword
むしろ拡張されるまで従来aliasやyieldが変数名として認められてたので
そういったレガシーなコードとの共存が大変そうだ。

502 :デフォルトの名無しさん:2010/03/08(月) 00:33:02
文脈依存のキーワードは他にも沢山あるよ
予約語を増やすことがあるJavaとは違ってC#の言語使用を拡張する際は
過去のコードがそのままコンパイルできることが最優先されるので
予約語を増やさずにキーワードを増やすという無茶な事をしている結果

503 :デフォルトの名無しさん:2010/03/08(月) 00:37:31
旧バージョンでコンパイルするモードとか搭載すればいい気がする

504 :デフォルトの名無しさん:2010/03/08(月) 00:41:22
>>503
馬鹿相手の商売はそれでは済まない。

505 :デフォルトの名無しさん:2010/03/08(月) 12:02:03
var var = from from in in select (global::Hoge)from.where.global;
foreach (var var in in) { yield return in.yield; }
試してないけど多分通る

506 :505:2010/03/08(月) 12:04:53
すまんいろいろ間違えてる

507 :デフォルトの名無しさん:2010/03/08(月) 12:05:03
頭の中でロンドン橋落ちるが流れた

508 :デフォルトの名無しさん:2010/03/08(月) 18:38:11
漏れの頭では「インッ!インッ!」と再生された

509 :デフォルトの名無しさん:2010/03/12(金) 20:34:53
re2c でUTF32対応すべく頑張ってるが、charだと動くのにUTF32だと
挙動が変。cursorが進まず無限ループになったりする。もう限界。

どこかサンプルあったら教えてください。

510 :デフォルトの名無しさん:2010/03/12(金) 20:54:01
ひげぽん氏のschemeがre2cでUTF32やってるはずだが

511 :509:2010/03/13(土) 09:03:33
UTF32のBOMでしたorz。
BOMなしだと動いた。3日悩んだ。

512 :デフォルトの名無しさん:2010/03/13(土) 17:58:08
迷惑な香具師だな

513 :デフォルトの名無しさん:2010/03/19(金) 00:22:42
ADVのシナリオ記述にXML使ってる例って結構たくさんある

514 :デフォルトの名無しさん:2010/03/19(金) 07:06:31
パーサ作るの楽だからな。

515 :デフォルトの名無しさん:2010/03/19(金) 08:33:34
しかしスクリプタの能力はXMLの方が大変。

516 :デフォルトの名無しさん:2010/03/19(金) 08:39:03
スクリプトをXMLで記述してそのまま実行って……ないよな?
元ソースや中間データとしてならともかく、
プレーンテキストでもメガ単位になるんだぞ、あれ。

517 :デフォルトの名無しさん:2010/03/19(金) 08:43:11
そこはエロゲの程度の低さ。自分で規格を作れないなんてな。

518 :デフォルトの名無しさん:2010/03/19(金) 08:46:31
いまどき数メガなんて誤差にすぎん

519 :デフォルトの名無しさん:2010/03/19(金) 08:49:32
少なくともここにいる奴らからは支持を得ないだろうね。

520 :デフォルトの名無しさん:2010/03/19(金) 10:10:52
エロゲごときに、自分でPG言語作るなんてアホくさ

521 :デフォルトの名無しさん:2010/03/19(金) 10:16:18
このスレには、よほどエロゲにコンプレックスを持ってるやつが居るようだなw

522 :デフォルトの名無しさん:2010/03/19(金) 10:32:38
上に乗っかるコンテンツを、俺らの作業領域にあんま関係づけて語ってもな。
なんかド素人のゲーヲタ視点っぽい。

523 :デフォルトの名無しさん:2010/03/19(金) 20:39:54
>514
XMLのパーザ簡単じゃないと思うけどなぁ。
セパレーターを調整したS式が一番良いと思う。

524 :デフォルトの名無しさん:2010/03/19(金) 22:03:16
最近はJSONやYAMLのパーザも増えてる。

525 :デフォルトの名無しさん:2010/03/19(金) 22:15:40
書く側に複雑な知識は期待できないとなれば、
wikiやTeXぐらいの記法が限界なんだろうか?

526 :デフォルトの名無しさん:2010/03/19(金) 22:36:02
>>523
汎用のパーサを使わなくても(デ)シリアライザに直接食わせられるのが魅力かも。
オレはスクリプト記述の用途としては使わないが、
スクリプトの文法定義にXMLをコンパイラの設定ファイルとして使ってるよ。
S式はどーだろ?

527 :デフォルトの名無しさん:2010/03/19(金) 23:46:36
>526
ライブラリが充実していればそうだけど、パーザを自分で組むとしたらXMLは無駄に複雑過ぎるよ。
要素と属性値みたいに無駄に種類が多かったり、終了タグに名前を書かなきゃいけないとか……

S式が嫌われているのは
 ・グループ化で使っている()が字面として強い
 ・セパレータとしてスペースが使われているから、普通の英文と相性が悪い
辺りだと思うんだけど、これを改善すればずいぶんと受けが良くなるんじゃないのかな?
昔こんなの作ったけど、なかなか悪くなかったと思う。XMLと相性も良かったし。
|要素名;要素の中身|:
(|を表現するときは||を使う)


528 :デフォルトの名無しさん:2010/03/20(土) 00:23:25
>>527
そもそもXMLはシリアライザやテンプレートエンジンに
吐かせるかしかせず、手では触らないことにしている。
XMLは静的型付き言語、JSONやYAMLは動的型付言語と相性がいいという印象。

>|要素名;要素の中身|:
悪くないんじゃないかな。縦棒は比較的使用頻度が少ない記号だし。
オレは
[コマンド名 param1=arg1 param2=arg2]
の形式にしてる。計算式は原則としてスクリプト中では使用させない。
これでも案外実用になる。

529 :デフォルトの名無しさん:2010/03/20(土) 01:10:13
>>527
> 要素と属性値みたいに無駄に種類が多かったり

冗談だろ?

530 :デフォルトの名無しさん:2010/03/20(土) 01:35:13
>529
マジ、マジ。属性値は本質的に制限付き要素なんだけど、わざわざ構文分けて別物にするほどのものじゃ無いよ。
『<element>属性値</element>なんて書きたくないよ』なんて思うかもしれないけど、それは要素の表記が
重すぎるのが問題なわけで。

531 :デフォルトの名無しさん:2010/03/20(土) 01:42:37
それはあなたのDTD定義が適切でないだけ。
plistみたいにやりたければ、どんどんやればいい。
XMLの問題は「構文が単純すぎて」冗長になること。
組み込みタイプとリテラル表現がないのも一因。

532 :デフォルトの名無しさん:2010/03/20(土) 02:10:00
え?DTD解析までやれと?どんだけ難易度高いんだよ。
やっぱりXML使うんだったらライブラリ必須じゃない?

533 :デフォルトの名無しさん:2010/03/20(土) 07:21:11
>>528
「=」を「:」にすればObj-Cだな。

534 :509:2010/03/20(土) 08:24:31
質問です。

re2c+bisonでAST作成までだいたい出来たところまで来ました。

この先の最適化ってところが、まだ良くわかりません。
解説しているサイトとか、参考になりそうな所を教えてください。
(constant同士の演算くらいしか思いつきません)

535 :デフォルトの名無しさん:2010/03/20(土) 09:13:01
コンパイラ作ってるの?

とりあえず中田先生の「コンパイラの構成と最適化」は見た?

536 :デフォルトの名無しさん:2010/03/20(土) 09:18:48
最適かなんか後回しでいいのに

537 :デフォルトの名無しさん:2010/03/20(土) 09:55:28
>>534
最適化は後回しにした方がいいと思うけど、いずれにせよASTから中間言語に直す方がいいな。
命令型言語なら3番地コード
大体どの教科書にも最適化は三番地コードに対するアルゴリズムとして書いてある

538 :デフォルトの名無しさん:2010/03/20(土) 11:23:49
先にある程度知っておいてからでも遅くは無いよね
どうせ最初から作り直しになるんだけど

539 :デフォルトの名無しさん:2010/03/20(土) 11:35:21
最終的にどんなコードになるのかどうやって実行されるのかとかわかってないと
最適化なんかやりようがない

540 :509:2010/03/20(土) 12:04:43
コメントありがとうございます。

>535
>コンパイラ作ってるの?
いえ、今考えているのは仮想マシン書いてバイトコード実行、って
感じのスクリプトエンジンです。スタックマシンていうのが小さく
書けるみたいくらいの知識しかなくて・・・

なるほど・・・。とりあえず本買ってみます。


541 :デフォルトの名無しさん:2010/03/20(土) 12:11:59
まずASTを直接評価するインタプリタを書いてみれば?

542 :デフォルトの名無しさん:2010/03/21(日) 02:03:33
>>540
中間言語のニーモニックを多少最適化することより、
仮想マシン自体の性能アップの方が遥かに大事だよ。
ニーモニックの最適化が重要になるのは、吐き出すのがネイティブコードの場合だね。

543 :513:2010/03/21(日) 22:55:18
>>513でまさかこんなにレスが付くとは

XMLでスクリプト書く場合の負荷については
能力の低いマシンならともかく、PC上でのプログラムだからそんなに性能を気にすることはなかった。
パーサーは自作なんて無理なので既成のを使用。
XML全体と同じ内容の木構造データにして実行する方式
(バイトコードとか仮想マシンを作るような知識はないので)
なので、実行はそれなりに速いと思うけど
ファイルサイズが大きくなると、最初の読み込みに時間がかかってしまいそう。

メリットは妥当性検証のあるエディタが使える事。実行する前にエラーが分かるのって大きい。

544 :デフォルトの名無しさん:2010/03/21(日) 23:14:43
>>543
>ファイルサイズが大きくなると、最初の読み込みに時間がかかってしまいそう。
試してないのかね。
5MBぐらいのスクリプト作って読ませてみれ。

545 :513:2010/03/21(日) 23:58:08
>>544
そんな大きいのは試した事ない・・これから作って試すわ。
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>

546 :デフォルトの名無しさん:2010/03/22(月) 06:17:07
先日のエロゲプログラマの方が全然凄いな。
今のプログラマはアリモノを使いすぎるんじゃない?

547 :デフォルトの名無しさん:2010/03/22(月) 07:59:27
今時のプログラマは有りモノを活用するのが基本だろ。

548 :デフォルトの名無しさん:2010/03/22(月) 08:08:42
それって、基礎が出来てないけどブラックボックスを触るようなもんだね。
はまったときや改編時は、自己コードじゃないと大変そうだね。
あと、実行スピードはスクラッチに負けるよね。
JAVAとか使ってると遅くて敵わないね。

549 :デフォルトの名無しさん:2010/03/22(月) 08:20:35
他人のコードだからといってブラックボックスな訳じゃないし、
多数の人間が使っているコードなら実行スピードもむしろ最適化
されてると思うけど。実装スピードは格段に速くなる訳だし、
自前主義に拘る理由は無いでしょ。

550 :デフォルトの名無しさん:2010/03/22(月) 08:30:06
> それって、基礎が出来てないけどブラックボックスを触るようなもんだね。

基礎ができている/できてないことと、有りモノを使うかどうかの判断は
関係ありませんね。
材木を山で切ってくることから始める大工しか、基礎ができてない、
なんて考える人のことを「バカ」と言います。

> JAVAとか使ってると遅くて敵わないね。

使ってない奴の妄想だから相手にしないほうがいいよ。

551 :デフォルトの名無しさん:2010/03/22(月) 08:35:48
はあ?
ブラックボックスで困るのは事実だろ。
あとJAVAがいくら頑張っても前のエロゲプログラマのスピード(50000行を1秒でコンパイル)には敵わないだろ。
エロゲプログラマにコンプレックスでも持ってるのか?
今は遅いネットブックが2割をしめるんだぞ。

552 :デフォルトの名無しさん:2010/03/22(月) 08:37:40
単純な言語仕様ならそりゃコンパイルも速いさ

553 :デフォルトの名無しさん:2010/03/22(月) 08:40:20
>>551
>ブラックボックスで困るのは事実だろ。

オープンソースの物を使うという発想は無いのかな
ちゃんとドキュメントも整備されている物もあるよ

554 :デフォルトの名無しさん:2010/03/22(月) 08:44:53
おかしな人は放置で。

555 :デフォルトの名無しさん:2010/03/22(月) 08:47:19
>>552
あれが単純な言語仕様に見えたのなら、お前の目は節穴だよ。
>>553
そろってるものもある、だろ?
無い物はソースから読み直しだ。それでも効率はブラックボックスの方が上だと思うが、
至高のコンパイラスレで技術力を言及しないのはどうしてだ?
前のエロゲ屋は音声も画像もシナリオも独自圧縮と書いてたぞ。
それでも既存の物を使う方が優秀というのか?

556 :デフォルトの名無しさん:2010/03/22(月) 08:49:56
有り物だけを使うのは技術向上の否定になるわけで、このスレでもスクラッチから作る方が高度だと認められてるだろ?

557 :デフォルトの名無しさん:2010/03/22(月) 08:53:56
速いバージョンのmp3の展開ルーチンでももたつくな。

558 :デフォルトの名無しさん:2010/03/22(月) 09:06:47
JAVA厨ちんこだから、相手にしない方が。
それと、エロゲの人は低スペックでも動くようにチューンしてるだけだと思う。
様は適材適所で、スピードを求められないのならYACCとLEXを使えば良いだけだと思う。
たしかに技術力の向上のためにスクラッチから作るのも趣味としてはありだとは思うけど、
開発効率と実行スピードのどちらが求められるかは現場次第。

559 :デフォルトの名無しさん:2010/03/22(月) 09:11:19
JAVAが早いって言うのは嘘だな。

560 :デフォルトの名無しさん:2010/03/22(月) 09:13:27
>>555
コンパイラにとっての言語の単純さってのは
人間の感じるものとは異なるということさ

561 :デフォルトの名無しさん:2010/03/22(月) 09:15:48
>>555
>至高のコンパイラスレで技術力を言及しないのはどうしてだ?

技術は『使いどころ』が重要だから。
何にでも技術力を投入すれば良いという物でもない。

562 :デフォルトの名無しさん:2010/03/22(月) 09:37:45
まあ、前のエロゲ屋は長い間の蓄積があって、ああなったんだから、今と時代は違うよ。
でも、圧縮関連の技術を自社開発にしているところは純粋に凄いな。認めるべきだと思う。
>>561
この人はそこが技術の使い所と思ったんだろう。
>>560
前のエロゲ屋のコンパイラは十分複雑だと思うが。

563 :デフォルトの名無しさん:2010/03/22(月) 09:40:26
圧縮なんかは確立してる理論をベースに特許関係を避けて使うのがセオリー。
自前でやる意味があるのは枝葉末節の細かい部分だけ。

564 :デフォルトの名無しさん:2010/03/22(月) 09:41:55
どちらにしろ、エロゲの人の技術は凄いかも知れないけど、今は時代が違うではないし終わりにしないか?
スレの内容を逸脱してる。

565 :デフォルトの名無しさん:2010/03/22(月) 09:43:18
実装が手元にないのにそれをぐだぐだ論じても仕方ない

566 :デフォルトの名無しさん:2010/03/22(月) 09:44:06
>>563
ロースペックなマシンに合わせて展開スピードをあげ、マスターに向けて圧縮スピードを上げている。
このエロゲ会社独自だろ?

567 :デフォルトの名無しさん:2010/03/22(月) 09:47:12
>>566
どうしてそれだけで独自だと分かるの?
既存の技術を組み合わせることで圧縮効率を上げるってのはよくあることだけど

568 :デフォルトの名無しさん:2010/03/22(月) 09:49:05
>>565
その通り。
>>566
長いエロゲ屋歴でそういう風にしたんだろ。
去年は新作6本、DL12本(?)作ってる会社だから、他の会社に当てはめられない。

569 :デフォルトの名無しさん:2010/03/22(月) 09:50:57
>>567
本人かブログかで独自圧縮といってただろ。
信じるか信じないかは自由だが。

570 :デフォルトの名無しさん:2010/03/22(月) 09:52:10
>>568
そんなに作ってるのか?

571 :568:2010/03/22(月) 09:55:19
>>570
ああ、OHPとDLSITE.COMで確かめた。すさまじい数だ。

572 :デフォルトの名無しさん:2010/03/22(月) 09:59:21
>>566
たとえば gzip の -1, -2, ..., -9 オプションですな。

圧縮処理の対象とするブロックの大きさを加減することにより、必要とするメモリ量+計算量と、
圧縮性能のトレードオフを加減する。

情報理論的にごくあたりまえの話ですが何か?

573 :デフォルトの名無しさん:2010/03/22(月) 10:00:00
wikiで見ると社長兼メインプログラマみたいだな。
そりゃ本数出すためならプログラむくむわな。

574 :エロゲ屋:2010/03/22(月) 10:02:40
>>572
この会社は圧縮率も高い。
良く社長と兼任してそんな本数出せたか不思議。
普通のエロゲはもっと時間を掛けて作られる。

575 :デフォルトの名無しさん:2010/03/22(月) 10:04:18
その痛々しい名前欄はなんなんだw

576 :デフォルトの名無しさん:2010/03/22(月) 10:06:00
>>574
単純にもっと昔に理論は確立してたからじゃないか?
実装もASMとC++だったよな。古い言語だ。

577 :デフォルトの名無しさん:2010/03/22(月) 10:07:15
予告通り出ないというのが常態化しているエロゲ業界で、そんだけリリース
し続けてるのはすごいな。
OpenBSD が「半年ごとにリリース版を出す」を10年続けているのを知った時も
すごいと思ったが。

578 :エロゲ屋:2010/03/22(月) 10:08:48
>>575
うるさいw
でも、この会社の評判は流通が必ず言ってくるくらい良いんだよな。
マスターが確実でバグはないって。延期とバグがつきものの俺らはいつも言われるw

579 :デフォルトの名無しさん:2010/03/22(月) 10:11:38
>>578
やっぱり流通って口出してくるんですね。
エロゲ界の摩訶不思議です。
どういう仕組みなんですか?

580 :デフォルトの名無しさん:2010/03/22(月) 10:11:48
久方北エロゲ産業

581 :デフォルトの名無しさん:2010/03/22(月) 10:13:57
もうそろそろ止めようぜ。

582 :デフォルトの名無しさん:2010/03/22(月) 10:15:02
>>581
すまん。

昔提案のあった、TinyCの定義でもしないか?

583 :デフォルトの名無しさん:2010/03/22(月) 10:23:24
大学の学生実験でTinyCなる言語のコンパイラ作らされたなあ

- 型はintだけ。void型やポインタ・配列はなし
- 演算子は論理和積、加減乗除、比較だけ
- 制御文はif, while, returnだけ

手習いにはちょうどいいサイズだったと思う

584 :デフォルトの名無しさん:2010/03/22(月) 10:23:47
TinyCは目新しさがないんだよな。みんな最初に通る道だし。

585 :デフォルトの名無しさん:2010/03/22(月) 10:25:24
逆にHugeCを作れば

586 :デフォルトの名無しさん:2010/03/22(月) 10:26:58
D言語w

587 :デフォルトの名無しさん:2010/03/22(月) 10:31:09
C言語にクラスって必用かな。ネットのコピペで良いから、クラスのありがたみがいまいち理解できない。
スコープの厳密さは良いと思うけど。

588 :デフォルトの名無しさん:2010/03/22(月) 10:32:29
RAIIが使えるだけで随分差が出てくると思う

589 :デフォルトの名無しさん:2010/03/22(月) 10:35:40
コンストラクタとデストラクタってRAIIって言われるんだ。
たしかにエラー処理が楽ですね。

590 :デフォルトの名無しさん:2010/03/22(月) 10:35:52
>>587
最初は C with Classes という名前だった処理系を作った人の
「C++の設計と進化」の最初のあたりだけとか読んでみたら?

591 :デフォルトの名無しさん:2010/03/22(月) 10:36:37
RAIIは、コンストラクタとデストラクタを使ったリソース管理、だな

592 :デフォルトの名無しさん:2010/03/22(月) 10:39:13
>>589
コンストラクタとデストラクタのことではない。
ウィキペディアからの引用になるが、

(引用者注: C++では)自動変数がスコープを離れるときデストラクタが呼ばれるため、
変数の寿命が終わるとすぐに資源が返却されることが保障できるようになった。これは
例外が起こったときでも同様であるため、RAIIは例外安全なコードを書くための鍵となる
概念となった (Sutter 1999)。

593 :デフォルトの名無しさん:2010/03/22(月) 10:43:44
C#でもusing構文を使えばRAIIできるね
Javaはこれができないから困る

594 :デフォルトの名無しさん:2010/03/22(月) 10:50:18
Javaでもtry/finallyを抽象化したシンタックスシュガーないし何かを作れば
いいんだろうけど、そういうものは提供しないポリシなんじゃないかな?

メソッドの設計で抽象化するか。

595 :デフォルトの名無しさん:2010/03/22(月) 10:51:19
>>587
ポリモーフィズムが使えるだけで随分差が出てくると思う

596 :デフォルトの名無しさん:2010/03/22(月) 11:14:52
RAIIが重要なのはリソース解放を言語側に保証させることができるから。
名前に反して初期化時のリソース確保は重要じゃないよね。


597 :デフォルトの名無しさん:2010/03/22(月) 11:17:18
>>594
言語仕様を単純化したいんじゃないかね
せっかくGCがあるんだから、
全てのオブジェクトの寿命は無限ということにすれば話が単純になる

598 :デフォルトの名無しさん:2010/03/22(月) 11:19:22
元々は初期化側がRAIIの主眼だったんだろうけど、
正直そこはどうでもいいよね

599 :デフォルトの名無しさん:2010/03/22(月) 11:22:56
>>597
RAIIに必要なのはオブジェクトの寿命管理じゃなくて
あくまでオブジェクトの持ってるリソースの寿命管理だから
オブジェクトは死ぬ必要ないのよ。
C#だってそう

600 :デフォルトの名無しさん:2010/03/22(月) 13:01:04
どんだけ時代遅れ。
ガベコレを搭載してる実装系ではガベコレがアプリ本体と別スレッドで動いていることすらある。
すると削除するタイミングなんかは全く保証されないから、
デストラクタ自体を書かないのが推奨される作法になる。

601 :デフォルトの名無しさん:2010/03/22(月) 13:08:20
は?
RAIIはガベコレを通さないんだが

602 :デフォルトの名無しさん:2010/03/22(月) 13:11:25
いや通してもいいだろ
終了処理をメモリ破棄のタイミングより早く行えばいいだけ

603 :デフォルトの名無しさん:2010/03/22(月) 13:14:05
C#で実現できてるんだから
全く問題ないわな

604 :デフォルトの名無しさん:2010/03/22(月) 13:41:31
オブジェクトが不要になったときにユーザが任意で呼ぶのがデストラクタ、GCが呼ぶのはファイナライザ(ときにデストラクタ)
>>600が言ってるのは後者で、RAIIで使うのは前者

605 :デフォルトの名無しさん:2010/03/22(月) 21:52:52
RAIIで管理するのはメモリだけじゃない。
典型的なのがファイルのclose。
GCとRAIIは共存できる。
>>600は無知。

606 :デフォルトの名無しさん:2010/03/22(月) 22:09:22
まあファイルのcloseは失敗する事もあるので
なるべく自前でcloseした方がいいんだけどね
ネットワークドライブ上のファイルとか

607 :デフォルトの名無しさん:2010/03/23(火) 00:36:37
デストラクタの中で自前でcloseしてるだろ・・・

608 :デフォルトの名無しさん:2010/03/23(火) 07:58:24
ファイルのクローズって失敗してもほとんど対処のしようがないよね?
以後の動作を保証できないとしてアプリを異常終了させるぐらい?

609 :デフォルトの名無しさん:2010/03/23(火) 08:27:12
で?

610 :デフォルトの名無しさん:2010/03/23(火) 16:32:20
自前でクローズしてもいいことないって話だろ?

611 :デフォルトの名無しさん:2010/03/23(火) 16:40:07
自前でクローズしないで誰がクローズするの

612 :デフォルトの名無しさん:2010/03/23(火) 17:58:41
ファイナライザ

613 :デフォルトの名無しさん:2010/03/23(火) 18:02:55
ガベージコレクションはいつ起こるかわからないから、
気がついたらファイルハンドルが足りないかもしれない。

614 :デフォルトの名無しさん:2010/03/23(火) 19:13:12
>>613
明示的に呼び出せばいいじゃないか
System::gc(System::GC_FULL);
とか


615 :デフォルトの名無しさん:2010/03/23(火) 19:30:22
ユーザが把握してる変数から参照がにたたれたとしても内部的には参照が残ってる可能性ってあるし
実装によってはFalse Pointerの影響で回収しきれない可能性とかもあるしなー
GCに完全に任せきってしまうってのはこわいよ

616 :デフォルトの名無しさん:2010/03/23(火) 23:53:03
ドラゴンブックの第二版が去年の6月に出たらしいけど評判はどうなの?
>>6の本の一番上の奴の改訂版)

http://www.saiensu.co.jp/?page=book_details&ISBN=ISBN978-4-7819-1229-5&YEAR=2009

617 :デフォルトの名無しさん:2010/03/24(水) 00:20:19
>>616
表紙が派手になった
最新のコンパイラ技術に基づいて若干修正されている
初版を読了後に論文誌を漁っている人は買わなくてもOK
言語処理系に興味があって初版知らない人は読むべき




618 :デフォルトの名無しさん:2010/03/24(水) 01:02:55
組版がきれいになった
訳語も現代語により近く、読みやすくなった気がする
本質的な部分ではないかもしれんが、こういう改良は大切だと思う

619 :デフォルトの名無しさん:2010/03/24(水) 04:40:37
このスレは居心地良いな。スレの内容も面白いし話題の切換も引きずらない。

620 :デフォルトの名無しさん:2010/03/24(水) 04:47:56
しかし目新しい話題は少ない

621 :デフォルトの名無しさん:2010/03/24(水) 04:59:00
でも、意見が違うからと言って、アスペルガーと言って意見を封鎖するのは止めないか?
医療関係のプログラムを組んでるけど、複数のドクターが言うには簡単にそんな診療、簡単にできないし、
相手が傷ついて、まともな論争に出来ないという。
相手の反論を封じるために、言っている、自己中心者が多くて困ってると複数のドクターが言っている。

622 :デフォルトの名無しさん:2010/03/24(水) 05:05:09
デザインかっこいいのもいいな
英語のソフトカバー版買ったら表紙がちっともドラゴンじゃなくて後悔してるw

623 :デフォルトの名無しさん:2010/03/24(水) 05:07:06
逆に、そう言う方がアスペルガーに近いと言われた。
>>620
まあ、枯れた技術だけど、実装には興味がある。
OSとコンパイラはプログラミングの中でも特別視されるしね。
少ししか進まなくとも議論の余地がある。
次はmanycoreの時代だし、議論の余地はいっぱいあるよ。
しかし、ネットッブックのおかげで、ボトムが4-5年前に戻ってしまったのが不幸。
ネットブックだとJAVAは凄く重い。
こんなのが2-3割の市場だとすれば、進化は遠のく。

624 :デフォルトの名無しさん:2010/03/24(水) 05:37:20
Javaなんてネットブックが出る前から企業向けでしか使われてないじゃん

625 :デフォルトの名無しさん:2010/03/24(水) 05:49:41
>>623
ネットブックで使いたくなるようなJavaアプリケーションなんてあるの?

626 :デフォルトの名無しさん:2010/03/24(水) 05:56:30
Javaはただの喩えでしょ
メニーコア前提の言語や処理系が出てきてもそれが生かせない貧弱な
プラットフォーム(ネットブック)が一定のパイを持ってるのは足かせになって
不幸って話だと思うぞ

627 :デフォルトの名無しさん:2010/03/24(水) 06:00:29
そもそもネットブックをPCと考えるからいけないのであって、
図体のでかいスマートフォン程度とおもっとればいいんだけど、
問題はPCと思って買っちゃう残念な消費者が殆どなこと

628 :デフォルトの名無しさん:2010/03/24(水) 06:45:42
やはり最適化は今も必用か。

629 :デフォルトの名無しさん:2010/03/24(水) 06:46:24
アセンブラもねw

630 :デフォルトの名無しさん:2010/03/24(水) 07:40:59
> 逆に、そう言う方がアスペルガーに近いと言われた。
 ↑典型的な議論封鎖ではある。

631 :デフォルトの名無しさん:2010/03/24(水) 09:47:15
バッテリーとかなくても機器が動けば
もっと無茶できる

t-01a, nexus one 眺めながら

632 :デフォルトの名無しさん:2010/03/24(水) 14:32:47
アスペルガーだと指摘される方も指摘する方もアスペルガー。

633 :デフォルトの名無しさん:2010/03/24(水) 18:20:42
>>632
じゃあ、あなたもそうなるよw

634 :デフォルトの名無しさん:2010/03/24(水) 19:39:21
自己言及的

635 :デフォルトの名無しさん:2010/03/25(木) 00:05:00
べつにガオガイガーでもハンバーガーでもいいよ
良い処理系作れれば

636 :デフォルトの名無しさん:2010/03/25(木) 00:10:16
オパオパ

637 :616:2010/03/25(木) 00:41:36
>>617-618
ありがと、実は大学時代にお世話になった先生が訳した本なんで気になってたんだ。
昨日、図書館でドラゴンブックの第二版を借りてきたんで
初めの方をじっくり読んで、買おうかどうか決めたいと思います。

638 :デフォルトの名無しさん:2010/03/25(木) 00:44:49
こんなところで言及されたら先生は迷惑だろw

639 :デフォルトの名無しさん:2010/03/25(木) 01:35:57
天才は何かに固執する人が多いから、アスペと勘違いされている人が多いね。

640 :デフォルトの名無しさん:2010/03/25(木) 01:44:59
まだそのネタ引っ張るんだキミ。

641 :デフォルトの名無しさん:2010/03/25(木) 01:59:30
すまん。今は翻訳者の先生の話だよなw

642 :デフォルトの名無しさん:2010/03/25(木) 15:41:11
>>633
たぶんアスペルガーだから問題無し。

643 :デフォルトの名無しさん:2010/03/26(金) 08:43:19
いい加減うぜえな
エロゲばっかやってるとこうなるのか?

644 :デフォルトの名無しさん:2010/03/26(金) 09:30:22
何故エロゲに結びつける。コンプレックスかw

645 :デフォルトの名無しさん:2010/03/26(金) 09:31:56
エロゲ用エンジンぐらいしか、言語設計をする機会がない現実。

646 :デフォルトの名無しさん:2010/03/26(金) 09:37:50
ま、わざわざDSLを自前で定義するより、
こなれた汎用スクリプト言語を埋込みで使った方が楽だからな。

647 :デフォルトの名無しさん:2010/03/26(金) 09:39:24
それにしても前のエロゲ屋の技術は中々良かったな。
他の会社はXMLか。それも凄いな。
エロゲ、侮れない。

648 :デフォルトの名無しさん:2010/03/26(金) 09:42:27
ネットブックという足かせがエロゲにある限り最適化は進むんだろうな。

649 :デフォルトの名無しさん:2010/03/26(金) 10:17:34
その昔パソコンゲームがApple][にとりつかれてたようなものか?

650 :デフォルトの名無しさん:2010/03/26(金) 12:50:13
6502か。ゼロページは便利だった。FCでも使われたな。

651 :デフォルトの名無しさん:2010/03/26(金) 12:59:40
エロが世界最先端な国は日本ぐらいのもの

652 :デフォルトの名無しさん:2010/03/26(金) 13:17:25
FPSがPCの性能を先導してる国もどうかとw

653 :デフォルトの名無しさん:2010/03/26(金) 15:35:04
エロゲも侮れないんだな。

654 :デフォルトの名無しさん:2010/03/26(金) 15:36:47
>6502か。ゼロページは便利だった。FCでも使われたな。
65C02拡張のPC-Engineは作ってて楽しかった
65816のスーファミはVDPが楽しいけどCPUはいまいちだった

今だとARMプロセッサ向けのコンパイラ作るのが割と楽しい
86系だと自力でコード出さないでCとかを中間言語にしてintelCにコンパイルさせるような形の方がいいコードできるから


655 :デフォルトの名無しさん:2010/03/26(金) 15:44:47
今ARM勢いあるよな。

656 :デフォルトの名無しさん:2010/03/26(金) 15:50:14
>>655
勢いがあるのもあるが
ARMのアーキテクチャがstackマシンの素性からそんなに離れていないのでJITのコード変換がすごくやりやすい
マルチスレッドでGC付きの言語をJITで落とし込む際にクリティカルセクションなしでもコンパクションGC作ったりできるような事とかができておもしろすぎる

X86みたいに命令が複雑多岐じゃないせいでもあるけど、実装自体が楽しいのは本当に久方ぶりだよ

657 :デフォルトの名無しさん:2010/03/26(金) 20:35:57
なるほど、エロゲ向けだな。

658 :デフォルトの名無しさん:2010/03/28(日) 02:38:47
特にインタプリタの話なんだけど、ベースライブラリは何を使ってる?
日付/時間とか、スレッドとか、ネットワークとか、いろいろ
自前でマルチプラットフォームにする気は起きないし、
ライセンスの問題もあるから難しいよな。
wxはいいけどC++になっちゃうし、glibだとGPL食らうし

659 :デフォルトの名無しさん:2010/03/28(日) 02:43:32
boost

660 :デフォルトの名無しさん:2010/03/28(日) 03:50:47
自前。

661 :デフォルトの名無しさん:2010/03/28(日) 04:11:06
俺も自前だな。

662 :デフォルトの名無しさん:2010/03/28(日) 04:57:28
Cで自前。会社じゃ当たり前。

663 :デフォルトの名無しさん:2010/03/28(日) 05:45:31
会社じゃ安全なライブラリを買うか自前だよな。

664 :デフォルトの名無しさん:2010/03/28(日) 06:46:51
>GLibを動的リンクにて使用する場合に限り、ソフトウェアを
>製造、販売が可能になります。

DLLに固めて使うなら大丈夫でなかたっけか…lgpl ver2.1+だっけ…
まるまるスタティックとかOSごと積むとかは
また違うとは思う。でもできれば自前が一番いい

665 :デフォルトの名無しさん:2010/03/28(日) 07:04:30
LGPLで外部DLLはよく使われる手だよね。
何かあっても外部DLLのソースの公開だけで済む。

666 :デフォルトの名無しさん:2010/03/28(日) 07:06:57
ていうか、コンパイラスレでこんな論議必用か?
コンパイラ組めるなら自前で全部出来るだろう。

667 :デフォルトの名無しさん:2010/03/28(日) 08:27:32
ライブラリは外部のものを流用できるように作るものだ

668 :デフォルトの名無しさん:2010/03/28(日) 16:31:01
投入できるリソースは限られているのだから、
一番注力したいところに集中的に投入するのが良い。

669 :デフォルトの名無しさん:2010/03/28(日) 16:34:01
>>666
そりゃ何だって自分でできるさ。
自分の家だって時間さえあれば自分で作ってみせる。

670 :デフォルトの名無しさん:2010/03/28(日) 16:43:35
そんなにたいした共有ライブラリじゃないだろ?
せいぜい2週間しかかからないよ。

671 :デフォルトの名無しさん:2010/03/28(日) 17:00:02
「共有」ってわざわざ付ける意味は?

672 :デフォルトの名無しさん:2010/03/28(日) 17:40:57
頭痛が痛いと同じ表現だったな。すまそ。

673 :デフォルトの名無しさん:2010/03/28(日) 18:51:26
つか、そのままGPLじゃまずいのか?

674 :デフォルトの名無しさん:2010/03/28(日) 19:15:56
>>673
「秘すれば花なり、秘せずば花なるべからず」

675 :デフォルトの名無しさん:2010/03/28(日) 19:55:54
>>673
そりゃフリーな実装ならいいけどさ
バイナリ納品でメンテ契約あり、ようするにソースコードでの自社のノウハウは出したくないとかあるときはGPLは使えないだろ


676 :デフォルトの名無しさん:2010/03/28(日) 21:46:21
いや、それはわかるんだけど
いままで請求されたことないし
ぶっちゃけ、ソース出てもノウハウは出ないってw

677 :デフォルトの名無しさん:2010/03/29(月) 00:12:46
最低だなお前
すべてにおいて

678 :デフォルトの名無しさん:2010/03/29(月) 03:27:14
>>656
armはcpuは普通につかえるが
ペリフェラルが使いにくいのが多いんよね

679 :デフォルトの名無しさん:2010/03/29(月) 09:36:51
>>678
組み込みのCPUはDMA,IRQ以外って高機能なデバイスを無理矢理つっこんでるのでレジスタの設定がメチャクチャめんどくさかったりするけど
そういう意味の使いにくいってことかな?


680 :デフォルトの名無しさん:2010/03/29(月) 11:54:11
PICは使いづらいね。そー言えばエロゲ屋の人もPICは無理でAVRは作ったって行ってたね。
PICのレジスタは地獄。PIC16でようやくまともになった。

681 :デフォルトの名無しさん:2010/03/29(月) 11:55:02
picはウンコ
ARM使えよ

682 :デフォルトの名無しさん:2010/03/29(月) 17:13:01
どっかのarmでdmaが一転送あたり32回しか回らないのあったな
毎回チェーン使うのは無駄くさい

683 :デフォルトの名無しさん:2010/03/29(月) 17:46:12
組み込みCPUはたいてい
外部ピンがMuxされてるから
余計にめんどいんだよな

684 :デフォルトの名無しさん:2010/03/29(月) 18:13:37
>>682
ポーリングするのかw
PIOで素直に転送した方がましだねw

685 :デフォルトの名無しさん:2010/03/29(月) 20:53:56
>>684
よせよ、CPUもったいねぇじゃねぇか


686 :デフォルトの名無しさん:2010/03/29(月) 20:58:30
基本はHLTだよな

687 :デフォルトの名無しさん:2010/03/30(火) 02:26:12
だよなampmだよな。

688 :デフォルトの名無しさん:2010/03/30(火) 08:56:33
>>684
最大32回をチェーンでつないだら
たくさん送ってくれるから
PIOよりゃましだがチェーン必須はめんどいw

689 :デフォルトの名無しさん:2010/03/30(火) 12:56:22
中田育夫氏の最適化の本ってどうなんでしょうか?
基本的な機能を備えた言語で論理的な部分からどの様な最適化が一般に可能か、について調べています。
定価が10000円だったみたいですが、そんなに特別な本なのでしょうか?

690 :デフォルトの名無しさん:2010/03/30(火) 13:59:17
日本語しか読めなければ、他に選択肢はない。
ドラゴンブックくらいしか。


691 :デフォルトの名無しさん:2010/03/30(火) 14:21:23
中田さん懐かしいな

692 :デフォルトの名無しさん:2010/03/30(火) 14:24:26
どのような方法があるかを調べるだけならググるで十分な気もするが。

693 :デフォルトの名無しさん:2010/03/30(火) 18:17:37
美しい日本のMLコンパイラとかね。

694 :デフォルトの名無しさん:2010/03/30(火) 22:13:42
ドラゴンブックにのってて中田本にないものってある?

695 :デフォルトの名無しさん:2010/03/31(水) 03:55:47
逆はあるな
りんご園とか

696 :デフォルトの名無しさん:2010/04/03(土) 19:50:02
りんご園てなに?

697 :デフォルトの名無しさん:2010/04/03(土) 20:11:27
>>696
スモールコンパイラの制作で学ぶプログラムのしくみ

698 :デフォルトの名無しさん:2010/04/03(土) 21:05:42
りんご園とコンパイラでぐぐってみたら変わった本が出てきたけど、そういうことか。thx

699 :デフォルトの名無しさん:2010/04/03(土) 23:10:25
>>695
あれは監修だけだから中田本とは違うんじゃ?


700 :デフォルトの名無しさん:2010/04/04(日) 03:12:48
「これは文系のセンスで書かれたコンパイラの本です。」
--中田氏推薦の言葉はこの一文から始まる。
この言葉に魅力を感じつつ、実際に購入して読んでみたが、
読み進むにつれ、この言葉の皮相さがだんだんと理解されてる
ことになる。
どうやら、ここで言う「文系のセンス」とは、
1.「ストーリー仕立て」でとっつきやす「そうな」文章、
2.全編を通して出てくるリンゴの比喩
主としてこのことを指しているようだ。
しかし、まったくもって残念ながら、
1.は決して名文とはいえない拙い言い回しが散見されるところどころ設定に無理がある稚拙な「ストーリー」であり、
2.はかならずしも的を得た比喩とはいいがたい代物で読み進めるにあたってかえって理解の邪魔になるといったものだ。
とりわけ2.を称揚しているかにも見える「推薦の言葉」は少なからぬ問題を孕んでさえいると思う。
比喩において、喩えられる対象と喩えそのものにおいては、
互いの概念の抽象度合い(というか抽象化のレベル)がきちんと符合しているべきである。しかしながら本書においては、そのレベルがまちまち、バラバラであり、必ずしも適切な比喩でないものが実に多い。
読み進むにつれ、拙い比喩表現を「文系のセンス」などと言ってしまう無神経な理系の教授と、「文系の持ち味を生かした」と悦に入っている無神経な文型の学生。どうしてもそういう印象がもたれてならないのだ。
本来よい比喩のための「センス」に文系も理系もないのであり、あるのは明晰な概念把握、適切な抽象化、適切な想像力これらに関する「センス」があいまってはじめてよい比喩表現が可能になるのだと思う。
そしてよい比喩表現だけが、複雑な物事を理解する助けとなるのである。
「ただ単にたとえればいいってもんじゃないんだ!」と声を大にして言いたい。

701 :デフォルトの名無しさん:2010/04/04(日) 03:46:26
>>700
どの本の推薦文?

702 :デフォルトの名無しさん:2010/04/04(日) 03:57:55
りんご園

703 :デフォルトの名無しさん:2010/04/08(木) 18:48:14
りんご園は読まない方が良いよ
教科書の丸写しに訳の分からない説明を加え
JAVAで書き直した。そんな本

704 :デフォルトの名無しさん:2010/04/08(木) 19:50:32
というか比喩なんてどうでもいい。
比喩を排除するために数学的記述があるのだから。

705 :デフォルトの名無しさん:2010/04/08(木) 20:28:39
>>699
監修しちゃった以上責任はあるだろw
推薦の言葉なんて書いてる場合じゃなくて出版止めるべきだったとしか思えないレベル

706 :デフォルトの名無しさん:2010/04/08(木) 20:47:32
>>705
学術書じゃなくて一般人向けの本に何を期待したんだ?


707 :デフォルトの名無しさん:2010/04/09(金) 09:27:52
関数型言語のコンパイラを解説した本てある?

708 :デフォルトの名無しさん:2010/04/09(金) 09:40:14
Modern Compiler Design in ML
分量はたいしたことないけど後ろの方にあった

最近和訳出てたよね?


709 :デフォルトの名無しさん:2010/04/09(金) 21:15:14
>>707
MSRのサイモン・ペイトン・ジョーンズのページも見て。
http://research.microsoft.com/en-us/um/people/simonpj/papers/papers.html

710 :デフォルトの名無しさん:2010/04/09(金) 22:37:20
>>708
少し違ってModern Compiler Implementation in MLのことだろうか。

その翻訳本の「最新コンパイラ構成技法」を見てきたけど1章が関数型に費やされてたわ。
まあでも頁数のためか、思いつくような事が難しく高級に書いてある感じで終わってたが

711 :デフォルトの名無しさん:2010/04/14(水) 22:10:11
>>710
俺も立ち読みしたけど、訳が悪いと思うなぁ。
いや、悪くはないんだけど、堅い。

原文はそんなに難しい英語ではないし、学部生向けの教科書
だと思った

712 :デフォルトの名無しさん:2010/04/25(日) 20:23:06
GPPGでBisonのYYDEBUGでのデバッグ機能を使用したいのですが、同様の機能がありますでしょうか?
どんな解析がされたのかがわからなくて辛いです(。>д<。)
今はConsole.Writeを実行して、どのような解析がされたかを確認してます。


お忙しいところ申し訳ありませんが、どなたかよろしくお願いいたします。

713 :デフォルトの名無しさん:2010/04/25(日) 20:24:02
>>712
俺の研究室の学生っぽいからダメ

714 :デフォルトの名無しさん:2010/04/25(日) 21:13:00
身内ならなおさら、こんぐらい教えたれやw

715 :デフォルトの名無しさん:2010/04/25(日) 21:56:39
ドキュメント読めば書いてあるよ
HTML吐かせたりできたはず

716 :デフォルトの名無しさん:2010/04/25(日) 22:16:06
   ( 。>д<。)


(。>д<。 )


 ( ゚д゚ ) 

717 :デフォルトの名無しさん:2010/04/28(水) 00:45:08
英語の勉強もかねてるんでしょうね。
でも、大変そう(w
http://plas.fit.qut.edu.au/gppg/files/gppg.pdf
ドキュメントってこれっすよね。きっと
上から眺めたらそれっぽいのを見つけられたよ。
一字一句を訳してると死ぬほど時間掛かるから、ざっくり眺めてみるといいのでは?
htmlとかなんとかって書いてあったのでたぶんこれだろう。
34ページしかないので、10分くらい眺めてみては?

718 :デフォルトの名無しさん:2010/04/29(木) 03:26:08
最初はちゃんと読んでいんじゃない
そのうち斜め読み出来るようになるし

719 :712:2010/04/29(木) 12:47:45
皆様返信ありがとうございます。
GW中に調べてみますv(^ ^

ちなみに、私はサラリーマンなので713さんの後輩ではないと思いますよ。
私の場合は自力で調べてみますが、後輩には優しく教えてあげてくださいね。

720 :デフォルトの名無しさん:2010/04/29(木) 14:13:39
やさしく教えるのって結局質問者のためになってるのかな
突き放した方が良い場合もある(そっちの方が多い)んじゃないか

721 :デフォルトの名無しさん:2010/04/29(木) 14:16:04
>>720
要は主体的に動かすための動機づけが重要なんだよ。
手取り足取り何もかも用意してやるのも害になるし、
突き放して何も与えないのも害になる。
さじ加減が重要だよ。

722 :デフォルトの名無しさん:2010/04/29(木) 14:18:28
教育には、○○をすれば必ずうまくいく、なんていう銀の弾丸はなくて、
人それぞれさじ加減を変えないとうまくいかないんだよ。

723 :デフォルトの名無しさん:2010/05/01(土) 00:57:30
組み込み系言語総合スレは何処に

724 :デフォルトの名無しさん:2010/05/01(土) 01:09:32
立てたよ。

【Lua】組み込み系言語総合 その3【Squirrel】
http://pc12.2ch.net/test/read.cgi/tech/1272643397/

725 :デフォルトの名無しさん:2010/05/08(土) 02:33:42
ANTLRの質問です。
JAVAも初心者なんですが、日本語(UTF-8)のコメントが入った*.gを
ANTLRにかけるとエラーが出るんですが、何とかならないでしょうか?

726 :デフォルトの名無しさん:2010/05/08(土) 07:05:26
>>725
options 節でcharVocabularyの範囲を指定すると通るよ
charVocabulary = '\u0000' .. '\uFFFE';


727 :725:2010/05/09(日) 21:54:07
>>726
charVocabularyの指定ではダメでした。
後出しですいませんが、使っているのはANTLR3で、
何となく、ANTLR3から使えないような気もします。


728 :デフォルトの名無しさん:2010/05/21(金) 20:08:20
FORTH系でスタックの深さをインデントの深さで表現するって言うのはどうだろう
1 + 2 * 3 + 4 / 5

1 2 3 * + 4 5 / +

1
2 3
あれ?


729 :デフォルトの名無しさん:2010/05/21(金) 20:24:18
あんまり見栄え良くないよ。


1 2 3
 *
+ 4 5
 /
+

730 :デフォルトの名無しさん:2010/05/22(土) 00:25:27
>>728
積んでから帰ってくるとか消費して帰ってくるのとかがキモく見えるだけじゃないか?
今まで通りスタックの伸縮についてコメントで記す方式で十分な気がする

だいたいわかんなくなる位巨大なワード組まないようにすべきだと思うし


731 :728:2010/05/22(土) 17:56:42
いや、
1 2 3 4 5
+
で、(1+2+3+4+5)が計算できると、いいかと思ったんだ。
このスタック位置まで繰り返しみたいな。

732 :デフォルトの名無しさん:2010/05/22(土) 18:02:26
本格的にparserを実装したいならIronyを使う。
ただ計算だけできればいいならなにかインタプリタを使えばいい。

個人的にBooをおすすめしておく。
コンパイラにインタプリタに標準ライブラリまでついて1.45MBと軽くていい。

733 :デフォルトの名無しさん:2010/05/22(土) 18:54:05
>731
検討したことあるけど、後置のメリットをダメにするから止めたほうが良い。結局カッコ付けるのと変わらなくなるし。

734 :デフォルトの名無しさん:2010/05/22(土) 18:57:09
++ とやったらスタック内が1つになるまで加算する、
とかしたらいいんじゃない

735 :デフォルトの名無しさん:2010/05/22(土) 21:02:29
>>731
それ括弧でくくってから呼び出し関数の名前を最初に書いたら単なるLISPじゃないのかな?


736 :デフォルトの名無しさん:2010/05/23(日) 16:18:33
>>735
>それ括弧でくくってから呼び出し関数の名前を最初に書いたら単なるLISPじゃないのかな?
しー!、黙っていればわからないって!
見た目がPython風にならないかと思っただけ。
>>730
>今まで通りスタックの伸縮についてコメントで記す方式で十分な気がする
これで、IDEでワードを打ち込むと、前のキーワードの色が変わったりすると便利だな
でも、深さが任意のキーワードとかがあったらだめだろうけどな。


737 :デフォルトの名無しさん:2010/05/25(火) 23:57:02
lemonとかcaperとかのプッシュ型パーサージェネレーター使ってる人いる?

738 :デフォルトの名無しさん:2010/05/26(水) 01:40:55
caperは使ってる、でかいの書いたらコンパイル時間がたまらん事になった

739 :737:2010/05/26(水) 12:48:47
プッシュ型パーサーって入力の終わりを示すトークンを自分で入れるでしょ。
あれがどうもやりにくいというかピンとこないというか。

対話型でスクリプトを入力するようなやつ(ぶっちゃけるとlisp)で
単純に改行を入力の終わりと出来ないやつは一体いつ終了トークンをプッシュするんだと。
「全ての左括弧と右括弧が対応したかを自分で検査してtoken_eofをプッシュ」ってやんのかな?あれ?

740 :デフォルトの名無しさん:2010/05/26(水) 21:47:01
それでいいんじゃね、字句解析機でネストレベルを覚えとくのは普通にやる。
あと、プッシュ型パーサは字句解析と構文解析の間で小細工できるのが便利だと思う

741 :jonigata:2010/05/26(水) 21:56:43
なるほど……

スペース的なトークンを用意したら
なんとかなったりしないかな?

それはそれで文法作るの面倒かしら

あるいは、改行のところでパーサのインスタンスを保存して、
改行にあわせて無理やりeof打ち込んで、
エラーになったら保存したインスタンスを復帰してどうにかするってのは
どうでしょう

742 :737:2010/05/26(水) 23:46:56
>>740
> それでいいんじゃね、字句解析機でネストレベルを覚えとくのは普通にやる。 
即効性で言っても多分それが一番かなぁ。

>>741
> スペース的なトークンを用意したら 
> なんとかなったりしないかな? 
外側の都合が文法に影響するのはなんとなく気持ち悪い気が…。

> あるいは、改行のところでパーサのインスタンスを保存して、 
> 改行にあわせて無理やりeof打ち込んで、 
> エラーになったら保存したインスタンスを復帰してどうにかするってのは 
概念的には一番わかりやすいと思うけど、
括弧が閉じられた後、改行が来るまでに別のトークンが来ないとも限らないのが…。

(defun foo ()
  5) (foo)

とかだったら
==> foo
==> 5

みたいにfooの定義とfoo呼び出しの戻り値5が返って欲しいし。

743 :jonigata:2010/05/27(木) 00:15:48
それはトップレベルがS式のリストじゃだめ?

それも気持ち悪いor実はそんなことじゃ解決しない
ということであれば、何をどうできればいいかなあ
eofを仮にpostしてacceptするかどうかだけ判定する
メソッドとか?

一切コーディングせずに妄想だけで言ってるけど!


744 :737:2010/05/27(木) 08:56:44
> それはトップレベルがS式のリストじゃだめ?
あ、なるほど。そう考えたら「パーサのインスタンスを保存して〜」で問題ないのかな…。
まだやってないけどメソッドの追加はいらなさそうな気がします。
実際試すまでちょっと間が空くかも知れないけどまた報告に来ます。

745 :737: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;
    }
};

これでエラーは無くなりました。
(つづく)


746 :デフォルトの名無しさん:2010/05/30(日) 14:46:58
じゃあさ、SQLでViewが画面とかどうだろう。
入力困るけど。

747 :737:2010/06/01(火) 10:44:02
次に今までS式が最上位だった所へ更に上を追加しました。

Top<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の置き換えが楽そうな気がするんだけど。



748 :デフォルトの名無しさん:2010/06/04(金) 17:43:52
中田の新しい本は何が変わりましたか?

749 :デフォルトの名無しさん:2010/06/04(金) 18:54:51
>748
ちょっと自分で調べといて
おれ忙しいから


750 :デフォルトの名無しさん:2010/06/04(金) 22:12:22
>>748
新刊でたの?、それとも改訂版?


751 :デフォルトの名無しさん:2010/06/04(金) 22:21:56
>750
ちょっと自分で調べといて
おれも忙しいから

752 :デフォルトの名無しさん:2010/06/04(金) 22:24:16
>>751
そんなこと書き込んでる間に調べられるだろう

753 :デフォルトの名無しさん:2010/06/05(土) 13:31:54
>>750
2版が出た

754 :デフォルトの名無しさん:2010/06/05(土) 17:06:45
>>745 >>747

型に関しては、単にリストをオブジェクトを用意すればよいのではないかな?

代入演算子とかはこれから実装しますです

YYACCEPT云々についてはちと考えます。

755 :デフォルトの名無しさん:2010/06/05(土) 19:48:52
良く見たらoperator!=になってるw

756 :デフォルトの名無しさん:2010/06/25(金) 14:21:55
パーサー・コンパイラについては何も知らない初心者で、書籍の購入を検討しているのですが>>6の中でどれを読めばいいのか教えていただけませんか。
コード生成よりも字句解析・構文解析に重点を置き、チュートリアル形式の本ではなく学問よりの本で勉強したいと思っています。

757 :デフォルトの名無しさん:2010/06/25(金) 16:03:11
>>756
6の中なら「ドラゴンブック」と「コンパイラの構成と最適化」
高くて困るのなら
オーム社からでてる[新コンピュータサイエンス講座]シリーズの「コンパイラ」ってのが割とお勧め


758 :デフォルトの名無しさん:2010/06/25(金) 16:24:14
高くて困るなら違法ダウンロードすればいいじゃん

759 :デフォルトの名無しさん:2010/06/25(金) 19:42:49
オートマトンで字句解析してる人っている?
いつもDirectCodeを出力させてるんだけど、日曜プログラマだからわざわざオートマトン構築する理由がわかんないです(><*)

760 :デフォルトの名無しさん:2010/06/26(土) 02:12:13
よくわからんが普通は正規表現だろう

まぁ理論的にはオートマトンと等価だが、たぶん>>759の言う意味で
オートマトンを構築しているやつはいないと思われ

761 :デフォルトの名無しさん:2010/06/26(土) 02:47:39
haskellのparsecってオートマトンじゃないの

762 :デフォルトの名無しさん:2010/06/26(土) 13:22:41
オートマトンは処理速度遅いからね。

763 :デフォルトの名無しさん:2010/06/26(土) 13:46:52
「最新コンパイラ構成技法」という本に「lex系の'/'演算子を利用した"zx*/xy*"という式は、Aho(1975)とPaxsonのflex(1997)の実装では適切に処理できない」として、
適切な処理の実装を練習問題として読者に委ねています。
そこで考えたんですが、例えば "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のマッチ終了まで入力を戻せばいいんでしょうか?

764 :デフォルトの名無しさん:2010/06/26(土) 14:02:00
今月の日経ソフトウエアはスクリプトエンジンだ

ちなみに一緒に買ったキスシスを読んでたらチンコが濡れてしまった。

765 :デフォルトの名無しさん:2010/06/26(土) 14:04:12
板違いだ愚か者

766 :デフォルトの名無しさん:2010/06/26(土) 14:05:21
>>763=>>765のヨカーン

767 :デフォルトの名無しさん:2010/06/26(土) 14:16:00
俺765だけど759も俺だよ

768 :デフォルトの名無しさん:2010/06/26(土) 14:56:38
>>757
どうもありがとうございます。ちょっと書店で見てきます。

769 :デフォルトの名無しさん:2010/06/26(土) 15:26:09
日本語のドラゴンブックのPDF下さい。

770 :デフォルトの名無しさん:2010/06/26(土) 18:30:40
旧版もうフリーになってるの?

771 :デフォルトの名無しさん:2010/06/26(土) 18:51:29
フリーになっていないけど、コピーできるものをコピーするのは「できる」ことだよ。
コピーがネットで共有される現状を考えたら今の著作権は古い概念だ。
人がコピーできることを望んでいるのだから著作権もそれにあわせて変えるべきだね。

772 :デフォルトの名無しさん:2010/06/26(土) 18:59:01
知的財産を保護してるのが著作権なんだから、情報の生産が容易になった今こそお前の言う「古い概念」によりそって生きていかないとだめなんだがね

773 :デフォルトの名無しさん:2010/06/26(土) 19:21:03
>>772
変えるべきだね、と言っているんだよ。
俺が著作権を今風に変えるべきだと言っているのに対して、君は著作権を全否定していると受け取ったんだよ。

774 :デフォルトの名無しさん:2010/06/26(土) 19:49:24
今風にw スレチ

775 :デフォルトの名無しさん:2010/06/26(土) 19:51:22
今風の著作権って何よ

776 :デフォルトの名無しさん:2010/06/26(土) 20:24:15
torrentとshareが今風著作権です!

つーか板違いだしどっか行けよ池沼

777 :デフォルトの名無しさん:2010/06/26(土) 20:31:51
皮肉なのか本気でそういってるのか良く分からない

778 :デフォルトの名無しさん:2010/06/26(土) 20:39:33
荒らしに反応するなって

779 :デフォルトの名無しさん:2010/06/26(土) 21:12:39
荒らしにばかり反応して肝心のコンパイラ・スクリプトエンジンには何の反応もないクソスレ

780 :デフォルトの名無しさん:2010/06/26(土) 21:16:30
>>776
マジレスだけど、
そういうソフトウェアは将来的に認められていくと思うよ。

781 :デフォルトの名無しさん:2010/06/26(土) 21:19:30
ちんこっぽいな

782 :デフォルトの名無しさん:2010/06/26(土) 21:20:33
俺が著作権だ!

783 :デフォルトの名無しさん:2010/06/26(土) 23:04:17
私が新しい著作権よ

784 :デフォルトの名無しさん:2010/06/30(水) 11:14:40
構文解析でいま一番ホットな方法って何ですか?

785 :デフォルトの名無しさん:2010/06/30(水) 11:19:52
独断と偏見で packrat

786 :デフォルトの名無しさん:2010/06/30(水) 11:46:57
それ話題になって勉強会が開かれたりしたの数年前のような

787 :デフォルトの名無しさん:2010/06/30(水) 14:13:58
方法って書いてあるんだから
方法でヨロ

788 :デフォルトの名無しさん:2010/07/01(木) 22:26:42
LR解析

なんと左再帰を気にしなくて良い

789 :デフォルトの名無しさん:2010/07/01(木) 22:38:56
方法というなら>>785のはPEGでんな。今ホットかどうかは知らんが

790 :デフォルトの名無しさん:2010/07/02(金) 09:45:48
PEGは文法の名前であって、パース手法としてはpackratでいいんでないの?

791 :デフォルトの名無しさん:2010/07/02(金) 15:56:28
なるほど、昔の本でも十分通用するということですね(笑)

792 :デフォルトの名無しさん:2010/07/02(金) 17:23:05
packrat の解説が載ってる本ってあったか?
ふつパイラで名前だけ挙がってるぐらいだろ。

793 :デフォルトの名無しさん:2010/07/02(金) 20:58:30
いわゆるコンビネータパーサの魅力がぴんとこない

文法を宣言的に書く旧来のやり方の方が美しく感じるんだけど

794 :デフォルトの名無しさん:2010/07/02(金) 21:13:05
文法をプログラマブルに構築できる(つまり動的に変えられる)こととか

795 :デフォルトの名無しさん:2010/07/02(金) 22:42:44
>>794
そんなことできるのか。packratだかコンビネータパーサっておもしろそうですね。
勉強したい。

796 :デフォルトの名無しさん:2010/07/02(金) 23:07:44
>>795
要するに手書きのパーサなんだから、なんだってできるのは当然

797 :デフォルトの名無しさん:2010/07/03(土) 01:23:33
>>793
宣言的に書けるよ。
ただオペレータオーバーロードのない言語ではきつい。

798 :デフォルトの名無しさん:2010/07/03(土) 07:38:28
足し算と掛け算の式の構文

Exp ::= Num | Var | Exp + Exp | Exp * Exp

ただし優先順位は* > +

をコンビネータパーサで宣言的に書くとどうなるの?


799 :デフォルトの名無しさん:2010/07/03(土) 11:09:03
Exp ::= Exp + Term | Term
Term ::= Term * Fact | Fact
Fact ::= Num | Var | ( Exp )

800 :デフォルトの名無しさん:2010/07/03(土) 16:39:14
岩波講座のプログラミング言語処理系って他の入門用の教科書と比較してどうですか?


801 :デフォルトの名無しさん:2010/07/03(土) 18:59:26
>>799
節子、それコンビネータパーサちゃう。
BNFや。

802 :デフォルトの名無しさん:2010/07/05(月) 15:51:22
ドラゴンブック(パープル)の練習問題の解答ってどこかwebに載ってますか?
英語でいいです。

803 :デフォルトの名無しさん:2010/07/05(月) 16:07:00
じゃあ、英語で探せば?

804 :デフォルトの名無しさん:2010/07/05(月) 16:42:07
>>798
Parsecの論文読んで。


805 :デフォルトの名無しさん:2010/07/05(月) 22:47:04
>>804
一通り読んだし、ライブラリもよく使ってるが>798を宣言的に書く方法は知らない

806 :デフォルトの名無しさん:2010/07/06(火) 11:31:28
論文って一般人でも読めるの?

807 :デフォルトの名無しさん:2010/07/06(火) 12:06:13
読めるよ。
だから読んでね。

808 :デフォルトの名無しさん:2010/07/06(火) 13:06:23
どうやれば読むのか分からないから読みたくてもよめません。

809 :デフォルトの名無しさん:2010/07/06(火) 21:57:01
>>808
ACMの電子図書契約しとくと楽だよ

810 :デフォルトの名無しさん:2010/07/07(水) 12:06:00
なんだ金払わないと読めないのか・・・・

811 :デフォルトの名無しさん:2010/07/07(水) 12:29:27
parsec paser paper で検索すると pdf が見つかるけど?

812 :デフォルトの名無しさん:2010/07/07(水) 12:34:35
えっ、日本語じゃないの?止めた。

813 :デフォルトの名無しさん:2010/07/07(水) 19:03:08
英語くらい読め

まあ,parsecの論文を読んでも>798の疑問は解決しないが

814 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 10:53:05
"parsec 電卓"あたりで検索すればいくらでもサンプル出てくると思う

815 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 10:54:26
自作lexと自作yaccをフルスクラッチで書いたのができたやったー
こんどはこれで変数機能付き電卓作りゅー

816 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 17:49:34
jayって
%token YToken.AA "aa"
とかで
YToken.AA の別名として"aa"使うこと出来ないの?

817 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 20:11:58
自己解決…
キャストの例外出るからおかしいと思ったら文字列に変換したものをvalue()で返してた…
あほすぎる

818 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 05:11:43
parsecという文字列を見ると天文学を思い出す

819 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 08:15:45
>>818
つまり道のりは遠いと


820 :デフォルトの名無しさん:2010/07/13(火) 12:59:46
道のりは長いじゃないの?

821 :デフォルトの名無しさん:2010/07/13(火) 14:46:57
どうでもいい。
それよりコンパイラ生成系作ったらやる事がなくなった。
死のう。

822 :デフォルトの名無しさん:2010/07/13(火) 15:21:31
もしかしてyaccとlex作ったという人?
電卓つくったんじゃないの?

823 :デフォルトの名無しさん:2010/07/13(火) 17:05:25
>>821
死ぬ前に>>800お願いします。

824 :デフォルトの名無しさん:2010/07/13(火) 18:57:03
>>823
読まなくても問題ないけど金に余裕があるなら買っておいても良いというレベル。
ドラゴンブックからはじめて問題ない。

じゃあ。ノシ

825 :デフォルトの名無しさん:2010/07/13(火) 20:40:29
>>824


826 :デフォルトの名無しさん:2010/07/17(土) 16:07:48
パサーのみに的を絞った本ってない?

827 :デフォルトの名無しさん:2010/07/18(日) 01:05:05
形式言語とオートマトンとか

828 :デフォルトの名無しさん:2010/07/18(日) 10:01:21
夢をかなえるサッカーノート

829 :デフォルトの名無しさん:2010/07/20(火) 22:05:20
スタックベースのVMを適当に作ってるんですが、
関数とその引数、関数のローカル変数を実装する場合、
下のような感じでいいのかな?呼び出し規約は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)
-------


830 :デフォルトの名無しさん:2010/07/20(火) 22:30:32
386そっくりに作りたいならいいけど
BPって要らなくね?SPに統合しちゃえばいいと思うんだけど


831 :デフォルトの名無しさん:2010/07/20(火) 22:54:51
関数内のローカル領域が静的にしか決まらないという言語ならSPだけで十分だけど
alloca的なのやサイズ未定のローカル配列を使うみたいな言語なら
SP相対よりフレームポインタ相対でアクセスする方が管理が楽でしょ

832 :デフォルトの名無しさん:2010/07/20(火) 22:57:54
あ、直前のBPの退避も要るね
BPないと頭がパンクしそうです
暑さで既に思考に異常が・・

833 :デフォルトの名無しさん:2010/07/21(水) 03:06:10
なんとかできた。
レジスタマシンならmov使うところを全部PUSHでやることになるね。
大雑把に定数、絶対アドレスの変数、相対アドレスの変数。
あとは条件ジャンプ周りだだ

834 :デフォルトの名無しさん:2010/07/21(水) 06:49:36
SP相対のアドレッシングがあればBPは必須ってこともないけど。

835 :デフォルトの名無しさん:2010/07/21(水) 12:57:04
BPがあったほうがスタックフレーム歩きしやすいよな。

836 :デフォルトの名無しさん:2010/07/21(水) 21:13:48
MSのコンパイラは通常はBPを使用せずSPのみでコード構成するな
何かの判断基準を上回った関数のみBPを併用

837 :デフォルトの名無しさん:2010/07/21(水) 21:21:43
ほんとにか。へー

838 :デフォルトの名無しさん:2010/07/21(水) 21:36:05
gccも-Oつければ基本そうだけど、i386用は-fomit-frame-pointerがないと省略しない

839 :デフォルトの名無しさん:2010/07/21(水) 21:41:50
ジャンプ関係もできた
あとはぱーさ・・はすぐできた
終わり

840 :デフォルトの名無しさん:2010/07/21(水) 22:06:50
なかなかすばやいな

841 :デフォルトの名無しさん:2010/07/21(水) 22:18:38
おまえら、コンパイル終わった後のバイトコードをどうやって管理してる?
オレはセクションごとにSQLiteのレコードにシリアライズして放り込んでるんだが。

842 :デフォルトの名無しさん:2010/07/24(土) 13:47:22
中田買ってから
PDFで英語版のエイホのやつ読んでみたら
日本語版にのエイホのやつ買っておけばよかったと後悔してしまった。

843 :デフォルトの名無しさん:2010/07/24(土) 16:43:24
>>842
どんな点で?

844 :デフォルトの名無しさん:2010/07/24(土) 20:09:32
アホの中田

845 :デフォルトの名無しさん:2010/07/25(日) 04:40:29
日本語のAHO>>英語のAHO>>>>>>>中田氏の

ってことだろ

846 :デフォルトの名無しさん:2010/07/25(日) 10:41:28
日本語が得手の方のみお願いします

847 :デフォルトの名無しさん:2010/07/31(土) 16:36:35
>>843
詳しいから。

189 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)