1 名前:デフォルトの名無しさん [2005/12/20(火) 21:43:02 ] プログラミング言語処理系の開発に興味のある人達のスレッドです。 字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換, CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン, SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化, JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。 意味論に関する話題も歓迎です。 過去スレ 1 pc.2ch.net/tech/kako/981/981672957.html 2 pc2.2ch.net/test/read.cgi/tech/1021136715/ 3 pc5.2ch.net/test/read.cgi/tech/1070089173/ 4 pc5.2ch.net/test/read.cgi/tech/1100097050/ 5 pc8.2ch.net/test/read.cgi/tech/1106129164/ 6 pc8.2ch.net/test/read.cgi/tech/1115335709/ 7 pc8.2ch.net/test/read.cgi/tech/1129287390/ 8 pc8.2ch.net/test/read.cgi/tech/1131273918/ 関連リンクは多分 >>2-10 あたり
231 名前:デフォルトの名無しさん mailto:sage [2006/01/05(木) 13:41:18 ] >>230 >a した結果を b して、その結果を c して、その結果を d する この時点で違ってんじゃないの、Lisp 脳と C 脳では。
232 名前:デフォルトの名無しさん mailto:sage [2006/01/05(木) 13:50:39 ] 要は人によるってことでおさまりそうな議論だな
233 名前:デフォルトの名無しさん mailto:sage [2006/01/05(木) 13:52:08 ] S 式に特定した話というではないが、read/write invariance なのが良いとは聞くね。 計算途中のデータを引っ張りだして、ちょっと修正してまた計算みたいなのを何も考えずに出来る。
234 名前:デフォルトの名無しさん mailto:sage [2006/01/05(木) 14:58:34 ] >>230 そっちの方向にネストが深くなるときってのは、だいたい 逆に考えてる。欲しいものが先にあって、最後にdを呼べば それが得られる、dがその結果を出すためにはcが返す値 が必要で… とトップダウンで。 逆にボトムアップで考えるときはletが深くなる。構造が 見えて来たらどんどん整理するけど。
235 名前:デフォルトの名無しさん mailto:sage [2006/01/05(木) 15:18:04 ] >>231 Cでも d(c(b(a(..)))) なんだけど・・・ C++なら、hoge.a().b().c().d() とも出来る(どっちも出来る)が
236 名前:デフォルトの名無しさん mailto:sage [2006/01/05(木) 15:37:37 ] >>235 文法の話じゃなくて、「〜して、次に〜する」という手続き的な考え方をしていないんじゃないかって事。
237 名前:デフォルトの名無しさん mailto:sage [2006/01/05(木) 18:14:22 ] >>235 あ、それ初めて知った
238 名前:デフォルトの名無しさん mailto:sage [2006/01/05(木) 18:25:13 ] 逆にボトムアップで考えるときは・・・、とか書いてんじゃんw let云々はCで言えば a_result = a(...); b_result = b(a_result); c_result = c(b_result); d(c_result); といったやり方だし これを、S式で書くとグダグダになるが
239 名前:デフォルトの名無しさん mailto:sage [2006/01/05(木) 19:04:44 ] だからツリーをいじってるって言ってるだろ。 (let ((ra (a x))) (let ((rb (b ra))) (let ((rc (c rb))) (d rc)))) でカーソルが一番最初にある時に、rcを束縛する let式に行くのは C-M-d C-M-f C-M-f C-M-d C-M-f C-M-f そのlet式全体をリファクタリングするために外に出したければ C-M-Space C-M-w でカット。 (a x), (b ra), (c rb) の部分がどんなに複雑になっても この操作は変わらない。木構造が変わらないからね。 a_result = a(...); b_result = b(a_result); c_result = c(b_result); d(c_result); でa(), b(), c() の部分が何行にもわたる式になった時に 同じことができるのかい。
240 名前:デフォルトの名無しさん mailto:sage [2006/01/05(木) 19:08:17 ] スレ違い乙
241 名前:デフォルトの名無しさん mailto:sage [2006/01/05(木) 19:12:42 ] emacs講座ですか
242 名前:デフォルトの名無しさん mailto:sage [2006/01/05(木) 19:16:25 ] >>238 let*ってそのためにあると思ってたんだけど…。 (let* ((a-result (a ...)) (b-result (b a-result)) (c-result (c b-result))) (d c-result)) 使った事ないけどさ。
243 名前:デフォルトの名無しさん mailto:sage [2006/01/05(木) 19:26:42 ] どっちにしても、ぐだぐだやん。
244 名前:デフォルトの名無しさん mailto:sage [2006/01/05(木) 20:06:48 ] 何がぐだぐだなのかわからん。
245 名前:デフォルトの名無しさん [2006/01/05(木) 21:30:18 ] Lisp脳と聞いて、Ruby脳が飛んで着ました。
246 名前:デフォルトの名無しさん mailto:sage [2006/01/05(木) 21:42:14 ] Flexのライセンスについて質問なのですが、いまいち不明なところがあります。 Flexをつかって生成されたものに関してなのですが、 Note that the "flex.skl" scanner skeleton carries no copyright notice. You are free to do whatever you please with scanners generated using flex; for them, you are not even bound by the above copyright. とあるので、生成されたものに関しては著作権表示すらなしに組み込むことが可能であってますでしょうか? それとも、 This product includes software developed by the University of California, Berkeley and its contributors この一文はやはりいれておかなければならないのでしょうか? 識者の方々よろしければご教授いただけたらとおもいます。
247 名前:デフォルトの名無しさん mailto:sage [2006/01/05(木) 23:24:12 ] 普通に読めば著作権表示入れる必要はないと思うけど…。
248 名前:デフォルトの名無しさん mailto:sage [2006/01/05(木) 23:42:56 ] ここは Copyright and/or Copyleft については素人集団だからな。 一応、著作権スレにでもあたってみたら?
249 名前:デフォルトの名無しさん mailto:sage [2006/01/05(木) 23:49:49 ] そういうツールで生成したやつは、たいてい著作権的には ツールの方の著作権は関係ないって感じになる。 ライブラリリンクとかで、生成した成果物が、他人の著作物を含むと ややこしくなるがこの場合そうじゃないしな。
250 名前:デフォルトの名無しさん [2006/01/06(金) 00:14:17 ] >>249 その程度なら誰でも想像できるんだけどな 中途半端なカキコ見は混乱のもと
251 名前:デフォルトの名無しさん mailto:sage [2006/01/06(金) 00:29:25 ] ていうか、246はどう見ても著作権表示入れる必要はないと はっきり書いてあるようにしか見えんが。
252 名前:デフォルトの名無しさん mailto:sage [2006/01/06(金) 00:56:01 ] >>251 俺にもそう読める。246よ著作権表示は一切不要と心得よ
253 名前:デフォルトの名無しさん mailto:sage [2006/01/06(金) 01:23:45 ] 246です。 みなさま質問に対してのご返答ありがとうございました。 ライセンスは色々とありまして、その中でも、特にツールで生成されたものに対しては扱いが分かりづらいものが ありまして質問させて頂くに至りました。 コンパイラ・スクリプトエンジンに関連あるFlexについての質問でしたが、微妙にスレ違いだったかもしれません。 そのために気を害してしまった方がおられましたら、お詫び致します。
254 名前:デフォルトの名無しさん mailto:sage [2006/01/06(金) 01:25:31 ] もともとスレ違いの連続みたいなスレだから
255 名前:デフォルトの名無しさん mailto:sage [2006/01/06(金) 03:20:02 ] 俺言語を作ってる人達の雑談スレッドだろ
256 名前:デフォルトの名無しさん mailto:sage [2006/01/06(金) 05:58:15 ] >>255 俺言語は非難しないが、俺様言語な香具師が来ると痛すぎ
257 名前:デフォルトの名無しさん mailto:sage [2006/01/06(金) 08:06:18 ] 俺言語と俺様言語の違いとは?
258 名前:デフォルトの名無しさん mailto:sage [2006/01/06(金) 23:18:40 ] Lisp と Ruby の違いと解く。 さて、その心は?
259 名前:デフォルトの名無しさん mailto:sage [2006/01/06(金) 23:55:00 ] >>257 俺言語は局所的用途の為に作られたもの 俺様言語は自己満足のたまもの。
260 名前:デフォルトの名無しさん mailto:sage [2006/01/06(金) 23:58:22 ] WinAPIの質問ですいませんけど、 WindowsでJIT作ろうとしたら void *mem = VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE) memの先にコード書き込む VirtualProtect(mem, size, PAGE_EXECUTE, &old) ジャンプする で良いんでしょうか?
261 名前:デフォルトの名無しさん mailto:sage [2006/01/07(土) 00:46:43 ] WRITEをはずしておくと意図しないアレをアレできるからアレかも
262 名前:デフォルトの名無しさん [2006/01/07(土) 19:10:16 ] >>259 うまい! あんた、扇子あるよ。
263 名前:デフォルトの名無しさん mailto:sage [2006/01/07(土) 20:11:22 ] ま、何を作ろうともLispに還元されるわけだけどね。
264 名前:デフォルトの名無しさん mailto:sage [2006/01/07(土) 21:27:15 ] >>261 PAGE_EXECUTE コミット済みページ領域に対する実行アクセス権を有効にします。 このコミット済み領域の読み取りまたは書き込みを行おうとすると、 アクセス違反が発生します。
265 名前:デフォルトの名無しさん mailto:sage [2006/01/08(日) 05:32:27 ] >>264 そうだったんか・・・ PAGE_EXECUTE_READ とは別か・・・
266 名前:デフォルトの名無しさん [2006/01/08(日) 23:06:40 ] りんご
267 名前:デフォルトの名無しさん mailto:sage [2006/01/08(日) 23:30:44 ] ===== FORTRAN 77 =====
268 名前:デフォルトの名無しさん mailto:sage [2006/01/09(月) 01:38:26 ] DEFINT A-Z
269 名前:デフォルトの名無しさん [2006/01/10(火) 23:40:58 ] なんで、最適化用語って変なのばかりなんだろう? もうちょっと、かっこいい名前つけられんのかねぇ?
270 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 23:51:15 ] コンパイラの用語って変なのばっかり。 還元(reduce)って言葉見つけたとき、酸化還元の還元かとおもったよ。
271 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 23:56:40 ] 合ってるよ。reduce には酸化還元の還元という意味もある。
272 名前:デフォルトの名無しさん [2006/01/11(水) 00:05:43 ] コンパイラ用語に使うときは意訳でよいから別の言葉を使って欲しかった。
273 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 00:42:29 ] もとに戻すんだから意味的にも還元で問題なかろう。 日本語力の乏しさを棚に上げて何言ってんだ。
274 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 01:05:57 ] >>269 例えば? >>272 じゃ、「リデュース」で。
275 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 01:22:05 ] 上方遷移…余計わからんな
276 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 03:36:45 ] >>270 コンピュータ用語自体変なの多いから気にスンナ
277 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 05:21:22 ] 自己満足のために、lispのdefmacroのc言語風なものを実装してます。 for(i=0,i<10,i++,printf("%d\n",i)); といったかんじのことは出来るようになったのですが、 for(i=0;i<10;i++){printf("%d\n",i);}と言った外側にブロックを 持ったマクロは、どうやって実現したらいいか悩んでます。 何かいい参考資料ないでしょうか???
278 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 06:05:07 ] >>277 ttp://mike-austin.com/blog/2005/10/dylan-macro-system-is-badass.html
279 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 08:25:43 ] >>278 ありがとうございます。 Dylanですか。初めて聞きました。 結構古い言語なんですね。仕様読んでみます。 使ってみたい気がするのですが、windowsバイナリとか落ちてないのかなぁ。
280 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 08:36:56 ] >>279 商用の Dylan 処理系がオープンソースになったものがあるよ。 www.gwydiondylan.org/downloads/opendylan/
281 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 12:53:41 ] >>280 ほんとだ。ちょっと探せば見つかるじゃん。orz ありがとうござます。 Hygieneって書いてあるので、基本的に名前の衝突が回避されていて、 BNFを書くような感じでパターン照合を行うものがDylanのマクロと考えてよいのでしょうか? パターン照合はやったことがないのですが、 構文解析器の自動生成ができる技術力ないと作れないような気がするのですが。。。
282 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 13:27:11 ] >>281 Schemeのsyntax-rulesの美しさに萌えろ。S式最強。
283 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 14:11:20 ] >>282 Schemeのsyntax-rulesが作れれば、そりゃ、もー、うれしいんですけど。 S式だとS式でない場合に比べて、実装が簡単になるのでしょうか? それだと、うれしいんだけどなぁ。
284 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 15:55:15 ] >>283 どんな文法を使おうと、結局はツリーにしてマッチや変換をかけるでしょ。 S式の場合は最初からツリーになってるから前半の(どっちかっつうとtrivialな) ステージが省ける、ってだけじゃないかと。 言語デザイナの立場だと文法も重要なんだろうけど。
285 名前:269 mailto:sage [2006/01/11(水) 20:30:31 ] >>274 例えば、皮剥き
286 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 20:53:09 ] パターンマッチマクロってどんな syntax の言語でも実装可能なの?
287 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 00:51:45 ] 自分の欲しいsyntaxのマクロを人に書かせたいと見たw
288 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 06:39:51 ] >>286 可能か不可能かなら可能でしょう。 使いやすいとかわかりやすいものになるかどうかは別。
289 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 08:35:55 ] >>288 どうもありがとう。 >>287 Ruby や ECMAScript, Python は acceptable lisp と言われているけど、 マクロを追加すればもっと Lisp の強力さに近付くかなと。
290 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 11:28:30 ] >>287 自分は、schemeのsyntax-rulesを実装したいのだけど、 わからないので、簡単なソース付きで解説してほしいです。 自分のほしい言語をすべて書いてもらえたら幸せです。 schemeのスレとかで聞いたほうがいいのかなぁ? >>287 >>288 >>289 PythonはDylanに似たマクロが入るとかいう噂がある(あった?)ようです。 どんな言語でも適用できそうなので、(よくわかってないのですが) Dylanのマクロのアイディアはとにかく凄いような気がします。 C用のDylan風マクロとか、Java用のDylan風マクロとかあったら そりゃもう、うれしいんじゃないかなぁと思います。
291 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 11:40:09 ] schemeのスレで質問してみました。
292 名前:トラックバック ★ mailto:sage [2006/01/12(木) 21:15:09 ] 【トラックバック来たよ】 (ver. 0.11) [タイトル] 萌え言語を作ろう! [発ブログ] プログラム技術@2ch掲示板 pc8.2ch.net/test/read.cgi/tech/1131442510/l50 [=要約=] 日本語で書ける言語では「ひまわり」なんてのがありますが いまいち使いづらいというか、萌えないw ということで、萌え萌えな言語を作ってみようと言う企画です。
293 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 22:06:16 ] 萌言語案 ハァハァ{ … } の機能 while(1){ ... }
294 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 23:04:56 ] 萌えとハァハァは別だよ派 萌えもハァハァも一緒だよ派
295 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 00:30:47 ] #define _ 1 とかやると、 for (;_;) 仕事; となるわなw 萌えないが、実感はむしろこっちのほうが(泣)
296 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 00:42:10 ] #define T_T 1 while (T_T) 仕事;
297 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 18:49:31 ] #define ハァハァ 999 while(ハァハァ) 言語スレ
298 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 23:33:15 ] 変な用語の例(その2) ・せわしない。。。 ・なまけた。。。
299 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 00:03:57 ] bool A = ture; bool T_T = true; for(;A;) wile(T_T) int y=-(T_T);
300 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 10:39:00 ] assert マクロって must って名前にしたほうがよくない? assert ( a == b ) → must( a == b )
301 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 11:31:50 ] assert that a equals b (thatは略可) はそのまま読めるけど、mustはどう読んだらいいんだ?
302 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 13:16:28 ] a == b で「なければならない」 should ( a == b ) とか must( a == b )
303 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 15:18:27 ] must(a == b) を a == b でなければならないと読むのは 英語的におかしくないか。 ! 演算子みたいに must が演算子だとして a must== b ならわかるが。
304 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 15:25:59 ] must be (a is equal to b) なんじゃないの。
305 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 15:42:50 ] だから、それが英語的におかしいといっている。
306 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 15:50:52 ] じゃ、 must be a condition of (a == b) は?
307 名前:300 mailto:sage [2006/01/14(土) 16:14:15 ] いや、まあそんなに深い意味で発言したわけじゃないけど 英語的にどうこうというか、 自分的にはこっちのほうが直感的かなと思っただけ 初心者に assert を教えたらピンとこなさそうな顔してたもんだから
308 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 16:24:42 ] 個人的には ensure が良いと思う。ちょっと意味合いが変わって来ちゃうけど。
309 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 18:15:19 ] >>307 assertって単語になじみが無いだけだ、辞書引かせてからassertを使った例文を毎日一個5営業日続ければ覚える。
310 名前:デフォルトの名無しさん [2006/01/14(土) 18:37:19 ] 俺なら、 must.be.A.eq.B が一番すんなりと入るかな?
311 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 19:04:13 ] 俺なら、 zettai(a == b) が一番すんなりと入るわ。
312 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 19:05:53 ] (a == b)じゃなきゃいやん
313 名前:300 mailto:sage [2006/01/14(土) 19:41:09 ] assert だけだと、どっちの場合に警告するのかよくわかんなくない? a == b 「だったら」警告するのか a == b 「でなければ」警告するのか。 must とか(あるいは311,312 でもいいけど)だと、 明らかに後者が連想されるんじゃないかなと思った
314 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 19:57:21 ] 「ここでは(a == b)になると断言する」と日本語で言っても?
315 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 20:01:06 ] assert に 『警告する』 って意味は無いんだよなぁ……。
316 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 20:01:45 ] assert false の場合はどーやって解釈すりゃいい?
317 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 20:03:01 ] 『常に偽であると表明する』 prolog の fail みたいな。
318 名前:300 mailto:sage [2006/01/14(土) 20:37:49 ] >>315 あ、ホントだ、やべえ!長いこと勘違いしとった!! 「断言する」で問題ないじゃん! てことは、assert でも問題ナスorz
319 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 20:43:02 ] ドンマイ
320 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 20:43:14 ] >>316 正確には「もしここに来たら(a == b)がtrueであると断言する」と思えばいい。 assert falseは「もしここに来たらfalseがtrueであると断言する」、 つまり「ここには来ることはありえないと断言する」。
321 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 20:59:13 ] #define assert 断言する 断言する(a == b)
322 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 21:02:32 ] スキャナとパーザって、マルチバイト文字を通せるのですか?
323 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 21:12:13 ] 通すように作れば通る。
324 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 21:56:47 ] シングルバイト文字の8バイトの連続だよ? たまたま 0x80 より大きいだけ
325 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 22:15:08 ] >>324 アフォ来た〜〜〜!!
326 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 01:00:21 ] >>324 8バイトって何だ8バイトって。 実際には322の言うように、通るように作れば通るし、今時flexもbisonも 8bitは通す。マルチバイト文字というと、SJISだと0x5c問題が出てくる 可能性は歩けど、それはlexerのつくりの問題だよな。
327 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 23:35:26 ] 変な用語その3 マトン
328 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 23:41:00 ] 羊肉?
329 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 23:41:51 ] 自動羊肉
330 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 23:57:17 ] オートマタ。
331 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 00:59:16 ] オート マトン というよりは オー トマトン 何だが。