[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 05/09 13:56 / Filesize : 174 KB / Number-of Response : 756
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 13:12:25 ]
禁止事項【臨時】
・前スレの911自身の書き込み、またそれに関連した書き込みを禁止致します。
 (スレが荒れる原因となります)

プログラミング言語処理系の開発に興味のある人達のスレッドです。
字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換,
CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン,
SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化,
JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。
意味論に関する話題も歓迎です。

過去スレ
1 pc.2ch.net/tech/kako/981/981672957.html
2 pc2.2ch.net/test/read.cgi/tech/1021136715/
3 pc5.2ch.net/test/read.cgi/tech/1070089173/
4 pc5.2ch.net/test/read.cgi/tech/1100097050/
5 pc8.2ch.net/test/read.cgi/tech/1106129164/
6 pc8.2ch.net/test/read.cgi/tech/1115335709/
7 pc8.2ch.net/test/read.cgi/tech/1129287390/
8 pc8.2ch.net/test/read.cgi/tech/1131273918/
9 pc8.2ch.net/test/read.cgi/tech/1135082582/
10 pc8.2ch.net/test/read.cgi/tech/1146844753/
11 pc11.2ch.net/test/read.cgi/tech/1160879890/
12 pc11.2ch.net/test/read.cgi/tech/1188688416/
前スレ 13 pc12.2ch.net/test/read.cgi/tech/1233143342/
関連リンクは多分 >>2-10 あたり

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


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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

図星のレスで荒れたなw

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

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


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




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

自分はB。構造化言語。

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

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

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

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

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

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

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

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


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

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

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


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

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

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

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

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



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

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

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

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

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

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


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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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



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


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

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


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

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


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

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

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

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

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




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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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



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

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

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

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

227 名前:デフォルトの名無しさん mailto:sage [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){
}
のように宣言されるので、この問題はないのですが、初学者が理解しにくい点、
メソッドの宣言を一箇所にまとめる事を強制できない点から自分の趣味には合わないと感じます。

そもそも巨大なクラスを宣言すべきでない、という意見もありますが、 -> d.hatena.ne.jp/akkt/20080424/1209051266
実際問題、読みにくいコードが多いように思えます。
他の便利な記法をご存知の方はいらっしゃいますか?
また、上記の記法のうちで、どれが好きですか?
ご意見ください。

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

229 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 22:27:53 ]
beginとendの対応が見えるような短いブロックなら,インデントだけでも見難くはないと思うんだよね
長くなるとendはあってもなくても変わらないし

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

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



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

235 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 03:26:02 ]
SGMLつかえよ

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

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

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

B:
...

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

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



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


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

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

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

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

>>235
XMLありえなす。

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

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

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

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

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

246 名前:227 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 00:43:05 ]
場当たりな文法は破綻しやすいからなあ。
引数を二つ取る関数に引数を一つ渡したらどうなるの?

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

248 名前:227 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 04:10:49 ]
merd.sourceforge.net/pixel/language-study/syntax-across-languages/bjcrntRfl.html
homepage.mac.com/mkino2/oop/messaging.html

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

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



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

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

253 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 00:18:23 ]
明快入門コンパイラ・インタプリタ開発 C処理系を作りながら学ぶ

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

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

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


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

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

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

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

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

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

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

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

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

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

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

266 名前:227 mailto:sage [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 mailto:sage [2010/01/23(土) 00:13:47 ]
>>262
区別できてる気はしませんが、話したいのは文法についてです。

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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


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

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

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

277 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 13:44:15 ]
>>275
気にしてなかったけど、意外と多いね。

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

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

279 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 14:13:45 ]
https://developer.mozilla.org/en/Mozilla_Coding_Style_Guide#Control_Structures
google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Conditionals
lxr.linux.no/linux+v2.6.32/Documentation/CodingStyle#L181
cvsweb.netbsd.org/bsdweb.cgi/src/share/misc/style?rev=HEAD
> Space after keywords (while, for, return, switch).
httpd.apache.org/dev/styleguide.html
> There is a space between the keyword and the opening bracket.

Mozilla, Google, Linux, NetBSD, Apache はキーワードの後ろは
空白を空けるスタイルだった。コーディングスタイルと構文規則
では要求される厳密性が違うけどね。インデントの強制くらいなら
受け入れられ易いとは思うけど。

280 名前:227 mailto:sage [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 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 19:14:54 ]
そもそも>>246

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

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

285 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 19:40:29 ]
レベルより態度。

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

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

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



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

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

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

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

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

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

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

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

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

300 名前:デフォルトの名無しさん mailto:sage [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 mailto:sage [2010/01/23(土) 20:20:33 ]
聞いておいてなんだけど自分もキモいと思う。
採用している言語もほとんどないしね。

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

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

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

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

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

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

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

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


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

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

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


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

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



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


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

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

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

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

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


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

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

void 使え・・・c

ソース嫁・・・動的型付

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

[要出典]

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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


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

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

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

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

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

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




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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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


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



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

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

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

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

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

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

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

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

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

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

380 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 15:25:43 ]
しつもん
Pythonみたいなインデント指向の言語を字句解析・構文解析するアプローチを教えてください

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

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

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


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

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

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

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

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

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

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



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

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

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

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

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


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

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

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


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

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

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

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



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

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

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

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

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

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

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


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

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

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

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



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

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

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

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

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

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

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

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

64bit版TL/1まだ〜?


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

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

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

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



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

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

GOSUB
 GOSUB
 RETURN
RETURN

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

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

みたいな

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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


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

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



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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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


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



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

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

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

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


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

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

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

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

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

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



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

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

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

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




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

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

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

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

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

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

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



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


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

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

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

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

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

ufcpp.net/study/csharp/sp_namespace.html

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

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

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

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

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



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

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

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

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

505 名前:デフォルトの名無しさん mailto:sage [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 mailto:sage [2010/03/08(月) 12:04:53 ]
すまんいろいろ間違えてる

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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


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

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

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

冗談だろ?

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



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

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

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

534 名前:509 mailto:sage [2010/03/20(土) 08:24:31 ]
質問です。

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

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

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

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

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

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

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

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

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

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

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




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

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

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

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

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

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

545 名前:513 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 07:59:27 ]
今時のプログラマは有りモノを活用するのが基本だろ。

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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


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

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

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

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



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

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

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

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

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

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

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

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

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

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



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

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

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

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


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

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

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

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




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

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

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



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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

649 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 10:17:34 ]
その昔パソコンゲームがApple][にとりつかれてたようなものか?

650 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:50:13 ]
6502か。ゼロページは便利だった。FCでも使われたな。



651 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:59:40 ]
エロが世界最先端な国は日本ぐらいのもの

652 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:17:25 ]
FPSがPCの性能を先導してる国もどうかとw

653 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 15:35:04 ]
エロゲも侮れないんだな。

654 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 15:36:47 ]
>6502か。ゼロページは便利だった。FCでも使われたな。
65C02拡張のPC-Engineは作ってて楽しかった
65816のスーファミはVDPが楽しいけどCPUはいまいちだった

今だとARMプロセッサ向けのコンパイラ作るのが割と楽しい
86系だと自力でコード出さないでCとかを中間言語にしてintelCにコンパイルさせるような形の方がいいコードできるから


655 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 15:44:47 ]
今ARM勢いあるよな。

656 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 15:50:14 ]
>>655
勢いがあるのもあるが
ARMのアーキテクチャがstackマシンの素性からそんなに離れていないのでJITのコード変換がすごくやりやすい
マルチスレッドでGC付きの言語をJITで落とし込む際にクリティカルセクションなしでもコンパクションGC作ったりできるような事とかができておもしろすぎる

X86みたいに命令が複雑多岐じゃないせいでもあるけど、実装自体が楽しいのは本当に久方ぶりだよ

657 名前:デフォルトの名無しさん [2010/03/26(金) 20:35:57 ]
なるほど、エロゲ向けだな。

658 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 02:38:47 ]
特にインタプリタの話なんだけど、ベースライブラリは何を使ってる?
日付/時間とか、スレッドとか、ネットワークとか、いろいろ
自前でマルチプラットフォームにする気は起きないし、
ライセンスの問題もあるから難しいよな。
wxはいいけどC++になっちゃうし、glibだとGPL食らうし

659 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 02:43:32 ]
boost

660 名前:デフォルトの名無しさん [2010/03/28(日) 03:50:47 ]
自前。



661 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 04:11:06 ]
俺も自前だな。

662 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 04:57:28 ]
Cで自前。会社じゃ当たり前。

663 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 05:45:31 ]
会社じゃ安全なライブラリを買うか自前だよな。

664 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 06:46:51 ]
>GLibを動的リンクにて使用する場合に限り、ソフトウェアを
>製造、販売が可能になります。

DLLに固めて使うなら大丈夫でなかたっけか…lgpl ver2.1+だっけ…
まるまるスタティックとかOSごと積むとかは
また違うとは思う。でもできれば自前が一番いい

665 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 07:04:30 ]
LGPLで外部DLLはよく使われる手だよね。
何かあっても外部DLLのソースの公開だけで済む。

666 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 07:06:57 ]
ていうか、コンパイラスレでこんな論議必用か?
コンパイラ組めるなら自前で全部出来るだろう。

667 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 08:27:32 ]
ライブラリは外部のものを流用できるように作るものだ

668 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:31:01 ]
投入できるリソースは限られているのだから、
一番注力したいところに集中的に投入するのが良い。

669 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:34:01 ]
>>666
そりゃ何だって自分でできるさ。
自分の家だって時間さえあれば自分で作ってみせる。

670 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:43:35 ]
そんなにたいした共有ライブラリじゃないだろ?
せいぜい2週間しかかからないよ。



671 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 17:00:02 ]
「共有」ってわざわざ付ける意味は?

672 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 17:40:57 ]
頭痛が痛いと同じ表現だったな。すまそ。

673 名前:デフォルトの名無しさん [2010/03/28(日) 18:51:26 ]
つか、そのままGPLじゃまずいのか?

674 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 19:15:56 ]
>>673
「秘すれば花なり、秘せずば花なるべからず」

675 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 19:55:54 ]
>>673
そりゃフリーな実装ならいいけどさ
バイナリ納品でメンテ契約あり、ようするにソースコードでの自社のノウハウは出したくないとかあるときはGPLは使えないだろ


676 名前:デフォルトの名無しさん mailto:さげ [2010/03/28(日) 21:46:21 ]
いや、それはわかるんだけど
いままで請求されたことないし
ぶっちゃけ、ソース出てもノウハウは出ないってw

677 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 00:12:46 ]
最低だなお前
すべてにおいて

678 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 03:27:14 ]
>>656
armはcpuは普通につかえるが
ペリフェラルが使いにくいのが多いんよね

679 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 09:36:51 ]
>>678
組み込みのCPUはDMA,IRQ以外って高機能なデバイスを無理矢理つっこんでるのでレジスタの設定がメチャクチャめんどくさかったりするけど
そういう意味の使いにくいってことかな?


680 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 11:54:11 ]
PICは使いづらいね。そー言えばエロゲ屋の人もPICは無理でAVRは作ったって行ってたね。
PICのレジスタは地獄。PIC16でようやくまともになった。



681 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 11:55:02 ]
picはウンコ
ARM使えよ

682 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 17:13:01 ]
どっかのarmでdmaが一転送あたり32回しか回らないのあったな
毎回チェーン使うのは無駄くさい

683 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 17:46:12 ]
組み込みCPUはたいてい
外部ピンがMuxされてるから
余計にめんどいんだよな

684 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 18:13:37 ]
>>682
ポーリングするのかw
PIOで素直に転送した方がましだねw

685 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 20:53:56 ]
>>684
よせよ、CPUもったいねぇじゃねぇか


686 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 20:58:30 ]
基本はHLTだよな

687 名前:デフォルトの名無しさん [2010/03/30(火) 02:26:12 ]
だよなampmだよな。

688 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 08:56:33 ]
>>684
最大32回をチェーンでつないだら
たくさん送ってくれるから
PIOよりゃましだがチェーン必須はめんどいw

689 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 12:56:22 ]
中田育夫氏の最適化の本ってどうなんでしょうか?
基本的な機能を備えた言語で論理的な部分からどの様な最適化が一般に可能か、について調べています。
定価が10000円だったみたいですが、そんなに特別な本なのでしょうか?

690 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 13:59:17 ]
日本語しか読めなければ、他に選択肢はない。
ドラゴンブックくらいしか。




691 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 14:21:23 ]
中田さん懐かしいな

692 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 14:24:26 ]
どのような方法があるかを調べるだけならググるで十分な気もするが。

693 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 18:17:37 ]
美しい日本のMLコンパイラとかね。

694 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 22:13:42 ]
ドラゴンブックにのってて中田本にないものってある?

695 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 03:55:47 ]
逆はあるな
りんご園とか

696 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 19:50:02 ]
りんご園てなに?

697 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 20:11:27 ]
>>696
スモールコンパイラの制作で学ぶプログラムのしくみ

698 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 21:05:42 ]
りんご園とコンパイラでぐぐってみたら変わった本が出てきたけど、そういうことか。thx

699 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 23:10:25 ]
>>695
あれは監修だけだから中田本とは違うんじゃ?


700 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 03:12:48 ]
「これは文系のセンスで書かれたコンパイラの本です。」
--中田氏推薦の言葉はこの一文から始まる。
この言葉に魅力を感じつつ、実際に購入して読んでみたが、
読み進むにつれ、この言葉の皮相さがだんだんと理解されてる
ことになる。
どうやら、ここで言う「文系のセンス」とは、
1.「ストーリー仕立て」でとっつきやす「そうな」文章、
2.全編を通して出てくるリンゴの比喩
主としてこのことを指しているようだ。
しかし、まったくもって残念ながら、
1.は決して名文とはいえない拙い言い回しが散見されるところどころ設定に無理がある稚拙な「ストーリー」であり、
2.はかならずしも的を得た比喩とはいいがたい代物で読み進めるにあたってかえって理解の邪魔になるといったものだ。
とりわけ2.を称揚しているかにも見える「推薦の言葉」は少なからぬ問題を孕んでさえいると思う。
比喩において、喩えられる対象と喩えそのものにおいては、
互いの概念の抽象度合い(というか抽象化のレベル)がきちんと符合しているべきである。しかしながら本書においては、そのレベルがまちまち、バラバラであり、必ずしも適切な比喩でないものが実に多い。
読み進むにつれ、拙い比喩表現を「文系のセンス」などと言ってしまう無神経な理系の教授と、「文系の持ち味を生かした」と悦に入っている無神経な文型の学生。どうしてもそういう印象がもたれてならないのだ。
本来よい比喩のための「センス」に文系も理系もないのであり、あるのは明晰な概念把握、適切な抽象化、適切な想像力これらに関する「センス」があいまってはじめてよい比喩表現が可能になるのだと思う。
そしてよい比喩表現だけが、複雑な物事を理解する助けとなるのである。
「ただ単にたとえればいいってもんじゃないんだ!」と声を大にして言いたい。



701 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 03:46:26 ]
>>700
どの本の推薦文?

702 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 03:57:55 ]
りんご園

703 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 18:48:14 ]
りんご園は読まない方が良いよ
教科書の丸写しに訳の分からない説明を加え
JAVAで書き直した。そんな本

704 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 19:50:32 ]
というか比喩なんてどうでもいい。
比喩を排除するために数学的記述があるのだから。

705 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 20:28:39 ]
>>699
監修しちゃった以上責任はあるだろw
推薦の言葉なんて書いてる場合じゃなくて出版止めるべきだったとしか思えないレベル

706 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 20:47:32 ]
>>705
学術書じゃなくて一般人向けの本に何を期待したんだ?


707 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 09:27:52 ]
関数型言語のコンパイラを解説した本てある?

708 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 09:40:14 ]
Modern Compiler Design in ML
分量はたいしたことないけど後ろの方にあった

最近和訳出てたよね?


709 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 21:15:14 ]
>>707
MSRのサイモン・ペイトン・ジョーンズのページも見て。
research.microsoft.com/en-us/um/people/simonpj/papers/papers.html

710 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 22:37:20 ]
>>708
少し違ってModern Compiler Implementation in MLのことだろうか。

その翻訳本の「最新コンパイラ構成技法」を見てきたけど1章が関数型に費やされてたわ。
まあでも頁数のためか、思いつくような事が難しく高級に書いてある感じで終わってたが



711 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 22:10:11 ]
>>710
俺も立ち読みしたけど、訳が悪いと思うなぁ。
いや、悪くはないんだけど、堅い。

原文はそんなに難しい英語ではないし、学部生向けの教科書
だと思った

712 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 20:23:06 ]
GPPGでBisonのYYDEBUGでのデバッグ機能を使用したいのですが、同様の機能がありますでしょうか?
どんな解析がされたのかがわからなくて辛いです(。>д<。)
今はConsole.Writeを実行して、どのような解析がされたかを確認してます。


お忙しいところ申し訳ありませんが、どなたかよろしくお願いいたします。

713 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 20:24:02 ]
>>712
俺の研究室の学生っぽいからダメ

714 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 21:13:00 ]
身内ならなおさら、こんぐらい教えたれやw

715 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 21:56:39 ]
ドキュメント読めば書いてあるよ
HTML吐かせたりできたはず

716 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 22:16:06 ]
   ( 。>д<。)


(。>д<。 )


 ( ゚д゚ ) 

717 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:45:08 ]
英語の勉強もかねてるんでしょうね。
でも、大変そう(w
plas.fit.qut.edu.au/gppg/files/gppg.pdf
ドキュメントってこれっすよね。きっと
上から眺めたらそれっぽいのを見つけられたよ。
一字一句を訳してると死ぬほど時間掛かるから、ざっくり眺めてみるといいのでは?
htmlとかなんとかって書いてあったのでたぶんこれだろう。
34ページしかないので、10分くらい眺めてみては?

718 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 03:26:08 ]
最初はちゃんと読んでいんじゃない
そのうち斜め読み出来るようになるし

719 名前:712 mailto:sage [2010/04/29(木) 12:47:45 ]
皆様返信ありがとうございます。
GW中に調べてみますv(^ ^

ちなみに、私はサラリーマンなので713さんの後輩ではないと思いますよ。
私の場合は自力で調べてみますが、後輩には優しく教えてあげてくださいね。

720 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 14:13:39 ]
やさしく教えるのって結局質問者のためになってるのかな
突き放した方が良い場合もある(そっちの方が多い)んじゃないか



721 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 14:16:04 ]
>>720
要は主体的に動かすための動機づけが重要なんだよ。
手取り足取り何もかも用意してやるのも害になるし、
突き放して何も与えないのも害になる。
さじ加減が重要だよ。

722 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 14:18:28 ]
教育には、○○をすれば必ずうまくいく、なんていう銀の弾丸はなくて、
人それぞれさじ加減を変えないとうまくいかないんだよ。

723 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 00:57:30 ]
組み込み系言語総合スレは何処に

724 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 01:09:32 ]
立てたよ。

【Lua】組み込み系言語総合 その3【Squirrel】
pc12.2ch.net/test/read.cgi/tech/1272643397/

725 名前:デフォルトの名無しさん [2010/05/08(土) 02:33:42 ]
ANTLRの質問です。
JAVAも初心者なんですが、日本語(UTF-8)のコメントが入った*.gを
ANTLRにかけるとエラーが出るんですが、何とかならないでしょうか?

726 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 07:05:26 ]
>>725
options 節でcharVocabularyの範囲を指定すると通るよ
charVocabulary = '\u0000' .. '\uFFFE';


727 名前:725 mailto:sage [2010/05/09(日) 21:54:07 ]
>>726
charVocabularyの指定ではダメでした。
後出しですいませんが、使っているのはANTLR3で、
何となく、ANTLR3から使えないような気もします。


728 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 20:08:20 ]
FORTH系でスタックの深さをインデントの深さで表現するって言うのはどうだろう
1 + 2 * 3 + 4 / 5

1 2 3 * + 4 5 / +

1
2 3
あれ?


729 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 20:24:18 ]
あんまり見栄え良くないよ。


1 2 3
 *
+ 4 5
 /
+

730 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 00:25:27 ]
>>728
積んでから帰ってくるとか消費して帰ってくるのとかがキモく見えるだけじゃないか?
今まで通りスタックの伸縮についてコメントで記す方式で十分な気がする

だいたいわかんなくなる位巨大なワード組まないようにすべきだと思うし




731 名前:728 mailto:sage [2010/05/22(土) 17:56:42 ]
いや、
1 2 3 4 5
+
で、(1+2+3+4+5)が計算できると、いいかと思ったんだ。
このスタック位置まで繰り返しみたいな。

732 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 18:02:26 ]
本格的にparserを実装したいならIronyを使う。
ただ計算だけできればいいならなにかインタプリタを使えばいい。

個人的にBooをおすすめしておく。
コンパイラにインタプリタに標準ライブラリまでついて1.45MBと軽くていい。

733 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 18:54:05 ]
>731
検討したことあるけど、後置のメリットをダメにするから止めたほうが良い。結局カッコ付けるのと変わらなくなるし。

734 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 18:57:09 ]
++ とやったらスタック内が1つになるまで加算する、
とかしたらいいんじゃない

735 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 21:02:29 ]
>>731
それ括弧でくくってから呼び出し関数の名前を最初に書いたら単なるLISPじゃないのかな?


736 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 16:18:33 ]
>>735
>それ括弧でくくってから呼び出し関数の名前を最初に書いたら単なるLISPじゃないのかな?
しー!、黙っていればわからないって!
見た目がPython風にならないかと思っただけ。
>>730
>今まで通りスタックの伸縮についてコメントで記す方式で十分な気がする
これで、IDEでワードを打ち込むと、前のキーワードの色が変わったりすると便利だな
でも、深さが任意のキーワードとかがあったらだめだろうけどな。


737 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 23:57:02 ]
lemonとかcaperとかのプッシュ型パーサージェネレーター使ってる人いる?

738 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 01:40:55 ]
caperは使ってる、でかいの書いたらコンパイル時間がたまらん事になった

739 名前:737 mailto:sage [2010/05/26(水) 12:48:47 ]
プッシュ型パーサーって入力の終わりを示すトークンを自分で入れるでしょ。
あれがどうもやりにくいというかピンとこないというか。

対話型でスクリプトを入力するようなやつ(ぶっちゃけるとlisp)で
単純に改行を入力の終わりと出来ないやつは一体いつ終了トークンをプッシュするんだと。
「全ての左括弧と右括弧が対応したかを自分で検査してtoken_eofをプッシュ」ってやんのかな?あれ?

740 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 21:47:01 ]
それでいいんじゃね、字句解析機でネストレベルを覚えとくのは普通にやる。
あと、プッシュ型パーサは字句解析と構文解析の間で小細工できるのが便利だと思う



741 名前:jonigata mailto:sage [2010/05/26(水) 21:56:43 ]
なるほど……

スペース的なトークンを用意したら
なんとかなったりしないかな?

それはそれで文法作るの面倒かしら

あるいは、改行のところでパーサのインスタンスを保存して、
改行にあわせて無理やりeof打ち込んで、
エラーになったら保存したインスタンスを復帰してどうにかするってのは
どうでしょう

742 名前:737 mailto:sage [2010/05/26(水) 23:46:56 ]
>>740
> それでいいんじゃね、字句解析機でネストレベルを覚えとくのは普通にやる。 
即効性で言っても多分それが一番かなぁ。

>>741
> スペース的なトークンを用意したら 
> なんとかなったりしないかな? 
外側の都合が文法に影響するのはなんとなく気持ち悪い気が…。

> あるいは、改行のところでパーサのインスタンスを保存して、 
> 改行にあわせて無理やりeof打ち込んで、 
> エラーになったら保存したインスタンスを復帰してどうにかするってのは 
概念的には一番わかりやすいと思うけど、
括弧が閉じられた後、改行が来るまでに別のトークンが来ないとも限らないのが…。

(defun foo ()
  5) (foo)

とかだったら
==> foo
==> 5

みたいにfooの定義とfoo呼び出しの戻り値5が返って欲しいし。

743 名前:jonigata mailto:sage [2010/05/27(木) 00:15:48 ]
それはトップレベルがS式のリストじゃだめ?

それも気持ち悪いor実はそんなことじゃ解決しない
ということであれば、何をどうできればいいかなあ
eofを仮にpostしてacceptするかどうかだけ判定する
メソッドとか?

一切コーディングせずに妄想だけで言ってるけど!


744 名前:737 mailto:sage [2010/05/27(木) 08:56:44 ]
> それはトップレベルがS式のリストじゃだめ?
あ、なるほど。そう考えたら「パーサのインスタンスを保存して〜」で問題ないのかな…。
まだやってないけどメソッドの追加はいらなさそうな気がします。
実際試すまでちょっと間が空くかも知れないけどまた報告に来ます。

745 名前:737 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 14:46:58 ]
じゃあさ、SQLでViewが画面とかどうだろう。
入力困るけど。

747 名前:737 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 17:43:52 ]
中田の新しい本は何が変わりましたか?

749 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 18:54:51 ]
>748
ちょっと自分で調べといて
おれ忙しいから


750 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 22:12:22 ]
>>748
新刊でたの?、それとも改訂版?




751 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 22:21:56 ]
>750
ちょっと自分で調べといて
おれも忙しいから

752 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 22:24:16 ]
>>751
そんなこと書き込んでる間に調べられるだろう

753 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 13:31:54 ]
>>750
2版が出た

754 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 17:06:45 ]
>>745 >>747

型に関しては、単にリストをオブジェクトを用意すればよいのではないかな?

代入演算子とかはこれから実装しますです

YYACCEPT云々についてはちと考えます。

755 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:48:52 ]
良く見たらoperator!=になってるw






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<174KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef