- 1 名前:デフォルトの名無しさん mailto:sage [2014/07/20(日) 11:16:19.37 ID:p6eMVAxc.net]
- プログラミング言語処理系の開発に興味のある人達のスレッドです。
字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換, CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン, SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化, JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。 意味論に関する話題も歓迎です。 Wikiのまとめページ www6.atwiki.jp/compilerandscriptengine/
- 462 名前:デフォルトの名無しさん mailto:sage [2016/04/10(日) 10:26:51.59 ID:hSypwT6Y.net]
- 誰も提出できなかったけど本題じゃないから授業は進んだってことだろ
- 463 名前:デフォルトの名無しさん mailto:sage [2016/04/10(日) 11:06:35.40 ID:jQD3kWDp.net]
- ただのホラフキ―じゃん
- 464 名前:デフォルトの名無しさん [2016/04/11(月) 11:50:30.22 ID:3nONGRtl.net]
- 大昔のMacはpascalでの開発を前提にしていたからな。
(Macツールボックスは、Pascalで呼び出しを前提にしていた) 途中からはCやC++用にツールは変貌していったが。
- 465 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 17:10:55.05 ID:suuESVM3.net]
- >>450
なつかしすぎるなぁ、light speed Cとか買ったとき「ああ、これでCで書ける」などと感動したわ
- 466 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 18:25:37.58 ID:8c5Uimxv.net]
- C言語より動的型付け言語の方が先に広まってたって意外だなあ
- 467 名前:デフォルトの名無しさん [2016/04/12(火) 02:21:49.83 ID:0eQ6kuw9.net]
- AppleのMPW。あるいはハイパーカード。
Think Cや、Code Warriorなど、一時は、Macで夢のようなソフト作りに あこがれた時期もあった。でも、遠い昔の話だ。
- 468 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 09:22:22.73 ID:Pd8H+utR.net]
- 静的型付けのほうが高度なんだよ
- 469 名前:デフォルトの名無しさん mailto:sage [2016/04/13(水) 01:10:21.79 ID:inw4nZY2.net]
- 俺もアセンブラ→静的型→動的型の順で作られてきたと思ってたけど
ジョブスの伝記漫画でウォズがアセンブラでBasic作る話があったような気がする
- 470 名前:デフォルトの名無しさん mailto:sage [2016/04/13(水) 01:14:40.21 ID:rXMD6+sH.net]
- 基本文字列だけでいいんだよ
型なんて文字列をどう解釈するかの話だよ
- 471 名前:デフォルトの名無しさん mailto:sage [2016/04/13(水) 01:23:46.16 ID:2h1lI58Z.net]
- >>455
しらないのか?Microsoft
- 472 名前:デフォルトの名無しさん [2016/04/13(水) 13:34:00.12 ID:a0UNLavD.net]
- もっとも愛着のあるコンパイラは、Quick BASICだった。
遠い昔の話。でも、凄く使いやすかったんだよな。
- 473 名前:デフォルトの名無しさん mailto:sage [2016/04/13(水) 17:57:30.26 ID:V3wVZgaP.net]
- コンパイラの初心者本?
「Tiny BasicをCで書く」 出版社: ソシム (2016/4/22) ISBN-10: 4802610203 ISBN-13: 978-4802610209
- 474 名前:デフォルトの名無しさん [2016/04/14(木) 00:25:42.75 ID:Nyx2HJFW.net]
- 関数の先頭にfunctionキーワードを付けるとして長すぎるから変えようと思うんだけど
doとかjobではおかしいかなあ?
- 475 名前:デフォルトの名無しさん mailto:sage [2016/04/14(木) 01:10:11.46 ID:FsF2j7W4.net]
- >>460
fnじゃだめなん? Clojureだと(fn [arg] brabrabra)な感じ
- 476 名前:デフォルトの名無しさん [2016/04/14(木) 01:29:14.13 ID:Nyx2HJFW.net]
- >>461
rustのfunc, iface, modとかもそうだけど省略形はいまいちだなと思う rubyにfor() do {}構文があるんだけど、それで関数やラムダ式の記号に do良さげかなと思うんだけどどうかな?
- 477 名前:Office & Gamers @ 試験運用中(トリなしw mailto:アハ♪” uh huh [2016/04/14(木) 02:42:08.95 ID:co1HctEv.net]
- コンパイラの醍醐味は式の展開だから、ここを自分で書ければあとはそれほど難しくないw
- 478 名前:デフォルトの名無しさん mailto:sage [2016/04/14(木) 08:30:10.02 ID:BY7gxQ6D.net]
- define ならわかるが do はないだろう
- 479 名前:デフォルトの名無しさん mailto:sage [2016/04/14(木) 09:12:23.12 ID:d9D6y2bX.net]
- dogazer
- 480 名前:デフォルトの名無しさん mailto:sage [2016/04/14(木) 09:35:38.15 ID:HeHUqy+f.net]
- 関数も変数もletで
- 481 名前:デフォルトの名無しさん [2016/04/14(木) 12:27:04.84 ID:kJxBjGsl.net]
- 予約語テーブルに何を入れるかが難しい。
何でも詰め込みすぎると、肥大化しすぎたC++になってしまうし。
- 482 名前:デフォルトの名無しさん mailto:sage [2016/04/14(木) 18:04:51.72 ID:FsF2j7W4.net]
- >>462
そうかなぁ? 一般名詞や動詞とかぶりそうも無い省略形ってコンピュータ言語には向いているとおもうのだ。 defunとかdefnとか 無名関数作るのにはUnicode圏が一般化した今ならλ一文字とか
- 483 名前:デフォルトの名無しさん mailto:sage [2016/04/14(木) 20:06:31.03 ID:VC8/A0Ig.net]
- 略語もセンスがいるよな
ところで、defunって何の略? どうでも良いけどλなんか変換しなきゃ出てこないし入力速度最悪だな
- 484 名前:デフォルトの名無しさん mailto:sage [2016/04/14(木) 20:21:19.82 ID:gC/abIq/.net]
- >>469
> defunって何の略? DEfine FUNction じゃね?
- 485 名前:デフォルトの名無しさん mailto:sage [2016/04/14(木) 20:43:14.68 ID:FsF2j7W4.net]
- >>469
>>470氏が書いているけどdefine functionの略だよ、common lispとかemacs lispとかでつかわれてる λ自体は”lambda”をテキストエディタ側で差し替えるとか一文字入力のマクロをバインドすればいいだけだと思うのだよね(IDE作り込みの一環) どっちかっつーとワタシの一押しは関数定義の宣言句に省略形を許せば良くない?ってだけなのでスレ違いではある。
- 486 名前:デフォルトの名無しさん mailto:sage [2016/04/17(日) 00:39:50.58 ID:SCILLDG5.net]
- letはconstの代わりに使う言語があるね
関数宣言にdoがないとなると色々と候補に悩んでしまうぜ job, fun, flow, verb, work, act(action)
- 487 名前:デフォルトの名無しさん mailto:sage [2016/04/17(日) 01:15:23.96 ID:iuB497/s.net]
- >>472
再代入を許さない言語だとletがconstと等価になるからじゃないのかな? >>460 関数宣言がfunction hoge(args)と言う形をとる事をやめて予約語(function)無しでも可能な感じはしないでもないのだけど文法に制限って起きうるかな? (Return型) function-name(Args....) とか function-name(Args):Return-Type 前者はCだし、後者はJScriptの宣言形式だけど、これじゃイヤな理由も思いつかない。 グローバル変数の定義とか外部変数定義とかのvar,static,externやら名前空間のnamespaceとかpackageとかimport等の特殊な予約語彙だけ文の開始から除外すれば後者の方法で関数は定義できると思うのだけど。
- 488 名前:デフォルトの名無しさん mailto:sage [2016/04/17(日) 03:41:30.77 ID:SCILLDG5.net]
- >>473
>予約語なくせば? 変数宣言でも関数宣言でも先頭に予約語が付いてIDEが色つけてくれ
- 489 名前:ス方が見やすいじゃない?
もしくは関数宣言をすべて関数ポインタ(クロージャ?)のみにして、変数化してしまうか? var function-name = ->(args...){ ... } [] - [ここ壊れてます]
- 490 名前:デフォルトの名無しさん mailto:sage [2016/04/17(日) 16:43:33.52 ID:3szJoJiC.net]
- 基本的に、普通のブロックと、関数(クロージャ)との、区別をどうするかという問題が有るからね
普通のブロックは大体{ something }こんな感じだろうけど、これは呼び出しなしで即座に実行するのが普通 一方でクロージャは呼び出さない限りは実行されない 関数やクロージャなどを引数に取る関数が有ったとして func_name( { something } ); こんな感じに呼び出した場合、{ something }を実行した結果を関数に渡すのか { something }その物を関数に渡すのか、コンパイラはよくわからない func_nameの呼び出し引数の型がクロージャであることをコンパイラが分かっていたとしても { something }を実行した結果がクロージャになり、それを関数に渡すという可能性もあるのでコンパイラは判断できない そのため、明確にするためにfunc_name( function{ something } );のように 何か普通のブロックとクロージャを区別する文法が要るのだね そうこうしていると、Javascriptが出来上がる
- 491 名前:デフォルトの名無しさん mailto:sage [2016/04/17(日) 17:47:06.17 ID:SCILLDG5.net]
- 結局function代替ワードが必要だと気付く
ラムダ記号=>だと引数に使うときダサイもんね
- 492 名前:デフォルトの名無しさん [2016/04/18(月) 12:27:13.85 ID:keXFBRJQ.net]
- 新しいコンパイラを使うとき、「特有のクセのある」
のがグラフィック関数なんだよな。 個人的には、グラフィック関数も、ANSIで定めて欲しいくらい。
- 493 名前:デフォルトの名無しさん mailto:sage [2016/04/18(月) 13:16:18.87 ID:pknZG/q+.net]
- グラフィックなぁ
b800:0000らへんを好き勝手に弄らせてくれるなら歓迎するのだわ # ネタが古いか
- 494 名前:デフォルトの名無しさん mailto:sage [2016/04/19(火) 13:33:12.70 ID:6Wh9TF6d.net]
- 8色でいいんか?
- 495 名前:デフォルトの名無しさん [2016/04/20(水) 02:49:26.81 ID:dZcIDvSg.net]
- 最近はいじっていないので、最新のツールはよくわからんが、
昔のツールでは、RGBの三原色を元に、すべてのグラフィックを 再現していたからなあ。今考えると、ずいぶん、原始的だった。
- 496 名前:デフォルトの名無しさん [2016/04/20(水) 05:43:15.95 ID:wqKcWsga.net]
- >>480
最新をよくわかってないのによく原始的だと解るね?
- 497 名前:デフォルトの名無しさん mailto:sage [2016/04/20(水) 06:55:13.29 ID:XnBYIzBk.net]
- シマノのギアの仕組みをよくわかってない俺にもギアのないママチャリは原始的だと思う
- 498 名前:デフォルトの名無しさん [2016/04/20(水) 07:16:40.91 ID:wqKcWsga.net]
- 自転車に例えるなら車輪を回転させて走らせるのは原始的だったなぁって言ってるのが >>480 なんだけどね
- 499 名前:デフォルトの名無しさん mailto:sage [2016/04/20(水) 07:52:09.40 ID:UfNx2Znx.net]
- えっ今もRGBじゃないの?
- 500 名前:デフォルトの名無しさん mailto:sage [2016/04/20(水) 08:22:02.22 ID:r07pzD8i.net]
- >>483
それはお前が勝手にそう思ってるだけ ギア付きのチャリより直結のチャリの方がより原始的なのはわかるだろ?
- 501 名前:デフォルトの名無しさん mailto:sage [2016/04/20(水) 08:29:41.63 ID:r07pzD8i.net]
- >>484
ツールって言うのか何を示すのか、グラフィックっと言うものの範囲にもよる ディスプレイ表示機構に限定すれば RGB 以外のは見たことない グラフィックツールの話なら HSB とかの他のカラーモデルを扱えるものはあるし、プリンタは CMYK だし そもそもこのスレで長々引っ張る話でもないし
- 502 名前:デフォルトの名無しさん mailto:sage [2016/04/20(水) 09:12:43.14 ID:UfNx2Znx.net]
- CMYKなんて大昔からあった
- 503 名前:デフォルトの名無しさん [2016/04/20(水) 10:07:43.41 ID:wqKcWsga.net]
- >>485
RGBっていうコンピューターグラフィックス上で今でも最も基本的な部分を指して原始的って言ってるからギア云々は的外れって言ってんの
- 504 名前:デフォルトの名無しさん [2016/04/20(水) 11:06:43.66 ID:fkY4xDrs.net]
- グラフィック関数ってOpenGLとかそういうはなしじゃないのか・・・
- 505 名前:デフォルトの名無しさん mailto:sage [2016/04/20(水) 12:29:24.43 ID:r07pzD8i.net]
- >>488
だからそれってお前のちんけな知識で語ってるだけだろ w どういう風に対応付けるかなんて色々あるのに知識のない奴ってそれしか思い付かないから自分の考えが一番って思ってるんだよな
- 506 名前:デフォルトの名無しさん mailto:sage [2016/04/20(水) 14:01:09.01 ID:ljSF0mgB.net]
- おまえのことか
- 507 名前:デフォルトの名無しさん [2016/04/20(水) 15:33:41.96 ID:9SnFE2FG.net]
- 例えが悪いって言ってんのにどういう風に対応付けするかは色々って何言ってるのか解りませんわ。
- 508 名前:デフォルトの名無しさん mailto:sage [2016/04/20(水) 19:30:01.52 ID:r07pzD8i.net]
- >>492
> 例えが悪いって言ってんの お前かそう思ってるだけ って何回言えば理解するんだ?
- 509 名前:デフォルトの名無しさん mailto:sage [2016/04/20(水) 20:27:51.87 ID:ljSF0mgB.net]
- いや、お前こそが、そう思っているだけだろ
車輪の話は分かりやすかった
- 510 名前:デフォルトの名無しさん mailto:sage [2016/04/20(水) 22:17:47.57 ID:iD79AHEd.net]
- どっちもどっち
下らんことでお山の大将になりたがるなよ
- 511 名前:デフォルトの名無しさん [2016/04/21(木) 01:56:58.28 ID:q7849b+A.net]
- 変な所を指摘したらお山の大将になりたがる猿呼ばわりか、めんどくせえスレだな
- 512 名前:デフォルトの名無しさん [2016/04/21(木) 02:20:43.14 ID:mxlfT2Ft.net]
- スレ違いだから首釣って死ねって事だ
言わせんな
- 513 名前:デフォルトの名無しさん [2016/04/21(木) 12:57:39.05 ID:DAo9Zovx.net]
- エプソンのプリンターも当然、CMYKだが、
「純正を使わないと、すぐに故障する」 ような構造にしてあったよな? あれはハードの構造でそうしているのか。コードにも、純正な否かを 判断する部分を盛り込んでいるのかどうか。
- 514 名前:デフォルトの名無しさん [2016/04/21(木) 19:57:24.72 ID:T4pmkcSw.net]
- エプソンに限らずプリンターは色の三原色持ってるのが当たり前
- 515 名前:デフォルトの名無しさん [2016/04/22(金) 00:36:11.07 ID:2IHAQJXj.net]
- 純正インク以外で壊れやすくなるのは単に質が悪いから
プリンター本体は採算度外視でインクで儲けるビジネスモデルだったのに本体壊したら元も子もない
- 516 名前:デフォルトの名無しさん [2016/04/22(金) 12:06:11.49 ID:300wiAoM.net]
- プリンター本体も、五年もたって故障すれば、部品製造打ち切りで
修理不能で買わざるを得ないからな。キャノンはどうか知らんが、 エプソンはそうだった。とかいって、うちの勤め先の規模では、 プリンター市場に参入出来る資金力などない。 せいぜい、大手からおこぼれで仕事をもらい、コードをいじくるしか出来ない。
- 517 名前:デフォルトの名無しさん [2016/04/22(金) 18:41:13.87 ID:U46HjcWC.net]
- ずいぶん横道にそれているが、おまえらスクリプトつくってるのか?
- 518 名前:デフォルトの名無しさん mailto:sage [2016/04/22(金) 20:38:22.94 ID:TT82zXSl.net]
- >>496
指摘が的はずれって言われてるんだろ
- 519 名前:デフォルトの名無しさん mailto:sage [2016/04/22(金) 20:39:29.07 ID:FoP6yTJa.net]
- 誰がもこみちにそれているねん!!
(´・ω・`)b
- 520 名前:デフォルトの名無しさん mailto:sage [2016/04/22(金) 20:40:58.67 ID:FoP6yTJa.net]
- >>502
スクリプト言語を利用してスクリプトを作っているという意味か? それとも自分でスクリプト言語の仕様決めて実装設計しているということか?
- 521 名前:デフォルトの名無しさん mailto:sage [2016/04/22(金) 21:49:45.09 ID:cAq2nbH2.net]
- スレタイ嫁
- 522 名前:デフォルトの名無しさん mailto:sage [2016/04/22(金) 23:35:58.89 ID:Eun++jyx.net]
- >>505
後者の実装にスクリプト言語使っても問題はないんじゃなかろうか?
- 523 名前:デフォルトの名無しさん [2016/04/23(土) 07:12:36.15 ID:FJYQwL85.net]
- ここで産まれたスクリプトあんの?
- 524 名前:デフォルトの名無しさん [2016/04/23(土) 12:40:11.44 ID:OaaA/Nov.net]
- 秀丸は、スクリプトを自作するときの参考になるのかね?
一応、役に立ったことは事実だが。
- 525 名前:デフォルトの名無しさん [2016/04/23(土) 18:35:58.00 ID:vG+aKQwy.net]
- 禿丸エディタを何の参考にする気だ
- 526 名前:デフォルトの名無しさん [2016/04/24(日) 00:18:07.79 ID:dKv+k22E.net]
- 秀丸は、「作業の自動化スクリプト」を書くのに便利だからな。
その仕様を元にすれば、スクリプトを自作するのに役に立つのではないかと 思ったのだが。
- 527 名前:デフォルトの名無しさん [2016/04/24(日) 01:48:37.36 ID:M7ZCbRga.net]
- 「作業の自動化スクリプト」専用のスクリプトならgradleあたりが参考に良さそうだな
ちなみに俺はantは好きだけどmavenは大嫌い
- 528 名前:デフォルトの名無しさん mailto:sage [2016/04/25(月) 02:57:23.38 ID:ouB2BnTZ.net]
- まあ秀丸はテキスト処理に特化した
自動化スクリプトの参考にはなるかもね あれはスクリプトっていうよりマクロだけど
- 529 名前:デフォルトの名無しさん [2016/04/25(月) 10:50:38.19 ID:9hQeUDgV.net]
- しかし秀丸には、CやWindows APIの命令が、多数というか、
かなり含まれている感じだが。
- 530 名前:デフォルトの名無しさん [2016/04/25(月) 17:05:01.77 ID:lstHaTya.net]
- だからなんだよって感じだが。
- 531 名前:デフォルトの名無しさん mailto:sage [2016/04/25(月) 17:27:42.97 ID:ouB2BnTZ.net]
- そのまま車輪の再発明をしてしまうと
元の秀丸を使った方が便利だから 自作スクリプトを秀丸と差別化する必要はある
- 532 名前:デフォルトの名無しさん [2016/04/26(火) 03:16:17.88 ID:r83feNEN.net]
- そうか。秀丸に存在しない命令を考えなければならないな。
- 533 名前:デフォルトの名無しさん [2016/04/27(水) 00:31:37.93 ID:Toh8P/+A.net]
- 相変わらず手書きパーサー書いてるが、できるだけ1発でパースしつつ(LR法?)
外側から順に何度も段階分けながらパースする(LL法?)なコードも混じってる… 意味解析までたどり着くまでで力尽きそうw
- 534 名前:デフォルトの名無しさん mailto:sage [2016/04/27(水) 06:02:05.40 ID:vmi3tpS2.net]
- よほどの理由がないなら手書きなんかやめといた方が
Bison GLR 使ってた時は不自由さがなくてよかった semantic predicate 機能は成熟しただろうか
- 535 名前:デフォルトの名無しさん mailto:sage [2016/04/27(水) 07:02:50.92 ID:h/kgFFlp.net]
- 趣味でやってるんだろ
ほっといてやれや
- 536 名前:デフォルトの名無しさん mailto:sage [2016/04/27(水) 11:26:55.96 ID:9/2UzNftp]
- 手書きは面倒だけど柔軟性あるし速いので、有名な言語でも採用してる所は多い気がする。
- 537 名前:デフォルトの名無しさん [2016/04/27(水) 23:38:58.25 ID:Toh8P/+A.net]
- 手書きパーサー製作も残すは四則演算&関数呼び出しとなったが
ツリーの形状はこんな感じで良いのだろうか? https://pastebin.mozilla.org/8868990 >>519 本よむところから始めるのはしんどいのでな・・・
- 538 名前:デフォルトの名無しさん [2016/04/28(木) 00:23:38.80 ID:mWNt94gr.net]
- 関数呼び出しだとこれでいけそう
https://pastebin.mozilla.org/8868995 小さな計算でもツリーが深くなってnew()するノードの数がもりもり増えるけど 何かもっと良い方法あったら教えてちょ
- 539 名前:デフォルトの名無しさん mailto:sage [2016/04/28(木) 12:59:47.77 ID:Jc879At1.net]
- 手書きパーサなら
木構造にせずに操車場アルゴリズムかその亜種でLL(1)するのも手だぞ。 文法と文をそれぞれ入力したらテーブル作ってLR(1)するクラスを作るって手もあるけど 大真面目に書いてc++で500行〜1000行くらいにはなったと思う。
- 540 名前:デフォルトの名無しさん [2016/04/28(木) 14:16:09.66 ID:7cooGRk/.net]
- lexとyaccは、既存のものを使うべきか、自作すべきか、悩ましいね。
- 541 名前:デフォルトの名無しさん mailto:sage [2016/04/28(木) 15:44:59.86 ID:Jc879At1.net]
- yaccは、やる気と暇があるなら
どういう文法なら曖昧性が無いか、とか、shift/reduce conflictとdangling elseとは何か、とか いろんな事についてよく理解できるようになるって点で一度試しに書いてみる事をお勧めしたい 今までに俺が余暇でC実装した名の付いたアルゴリズムの内だとかなり難しい部類に入るけどな。 lexは文法全く固まって
- 542 名前:ネいなら使ったらどう?って程度じゃない?
割と簡単に使えるけど、同じくらいとは言わないものの簡単に自作できるし ASCII範囲の文字は簡単に指定できるけどUnicodeなんかに対応する為にカスタムコードを挟むなら普通に全部組んだほうが楽な事もあるし。 [] - [ここ壊れてます]
- 543 名前:デフォルトの名無しさん mailto:sage [2016/04/28(木) 15:46:10.30 ID:Jc879At1.net]
- 個人的にはPEGが気になるのですよー
- 544 名前:デフォルトの名無しさん mailto:sage [2016/04/28(木) 18:30:43.97 ID:FI1Tv7gT.net]
- コンパイラを作るはずがコンパイラジェネレーター作りがメインになってしまう不思議
- 545 名前:デフォルトの名無しさん mailto:sage [2016/04/28(木) 18:36:57.28 ID:Jc879At1.net]
- そして思うのだ
コンパイラジェネレータを書くのに向いてる言語とは・・・・・・
- 546 名前:デフォルトの名無しさん mailto:sage [2016/04/28(木) 22:17:59.57 ID:mWNt94gr.net]
- >>524
そうだな。ここだけツリーにしないで、再帰関数で直接出力すれば良さそうだ
- 547 名前:デフォルトの名無しさん [2016/04/29(金) 05:30:33.58 ID:o23yQzXI.net]
- バイトコードのテキストを読み込んだら
バイトコードの1行と対の関係になる命令ノードを 行数だけ配列にして上から順に実行するイメージであってる? なんか構文木のまま実行するのと大して変わらない気がするけど メモリの節約とかどうなんだろう
- 548 名前:デフォルトの名無しさん mailto:sage [2016/04/29(金) 10:04:10.82 ID:GdtJdaFL.net]
- バイトコードのテキストってのが若干意味不明だが
バイトコードならアセンブル(バイナリ化)しておかないか普通 a = b + c * d を二分木のASTで (st (ldptr local[0]) (add (ld local[1]) (mul (ld local[2]) (ld local[3])))) みたいに格納して、ポインタ1つあたり64 bits、ノード構造体のサイズが24 bytesと仮定して glibc mallocを使うことを仮定して全部で32 bytes * 7 = 224 bytesのヒープを消費する。 一方でレジスタ型VMを仮定して、簡単の為に1命令32 bits固定長とすると、例えば ldptr r0, local[0] / ld r1, local[1] / ld r2, local[2] / ld r3, local[3] / mul r4, r2, r3 / add r5, r1, r4 / st r0, r5 の7命令で与式が表現できるから、 配列の中身の長さが2^nに拡大されて予約される事を仮定すると4 bytes * 8 = 32 bytes これに配列の管理領域が2ワード16 bytes、 glibc mallocを使うことを仮定すると2箇所の領域の管理で2ワード16 bytes必要で 合計で64 bytesのヒープを消費する。 ただ、配列には配列の問題点と言うかでっかい領域を再確保するのが難しい事があるから 文単位ではリストや木を、式単位では配列を使うってのがインタプリタとしては良いんじゃないかなとは思う。
- 549 名前:デフォルトの名無しさん [2016/04/29(金) 13:14:44.61 ID:mG1yRheY.net]
- コンパイラ作りって、インタプリタよりも、10倍の労力がかかるよな。
- 550 名前:デフォルトの名無しさん mailto:sage [2016/04/29(金) 15:48:32.50 ID:qwAEwLKu.net]
- この辺はlispやschemeで思索しながらやると楽なんだよ
- 551 名前:デフォルトの名無しさん mailto:sage [2016/04/29(金) 17:57:56.98 ID:ZvoRtCQG.net]
- コード生成の方は関数型の基礎だけでもやってないとかえって遠回りに
- 552 名前:デフォルトの名無しさん mailto:sage [2016/04/29(金) 20:10:00.50 ID:YATvpu7C.net]
- >>534
最終的になんで苦労してまで構文木をSchemeで生成するんだろう?っておもって結局そのままLispのMacroに化けるのである(割とマジで) Lisperが他の言語取得者のタメにDSLを組むことはあってもLisperはLispのママ扱う方がよかったりするのよね。
- 553 名前:デフォルトの名無しさん [2016/04/29(金) 21:15:38.47 ID:o23yQzXI.net]
- >>532
ありがたい。メモリが4倍くらい節約できるのね もしかしたら構文木のまま動かした方が動的ロードで 面白いことが簡単に実現できるんじゃないかと迷ってたけど(evalとか) パフォーマンスではバイトコードがかなり強力なのね
- 554 名前:デフォルトの名無しさん [2016/04/29(金) 23:41:20.66 ID:o23yQzXI.net]
- >>532
>バイトコードならアセンブル(バイナリ化)しておかないか普通 たしかに普通は読み込み速度的にバイナリデータが望ましいのだけど、 手さぐりで試作するからメモ帳で読み書きできるテキスト形式でやってみるんだ
- 555 名前:デフォルトの名無しさん mailto:sage [2016/04/30(土) 01:17:44.44 ID:oV2mml7H.net]
- lispインタプリタって一番簡単な実装(pure lisp?)だと何行くらいで実装できる?
- 556 名前:デフォルトの名無しさん mailto:sage [2016/04/30(土) 07:15:19.54 ID:wSqWni75.net]
- >>539
基本関数だけならものすごい小さいよ Lispが生まれた時代のマシンのメモリ量なんてアドレスのビット数が16以下だし。
- 557 名前:デフォルトの名無しさん mailto:sage [2016/04/30(土) 10:02:54.88 ID:oKKjAnDv.net]
- >>539
何で実装するかにも依る swiftやrubyだと100行オーダーで書けるらしい xavier.hateblo.jp/entry/2014/08/19/003609 C実装だと2000行くらいみたい https://github.com/kototama/kml
- 558 名前:デフォルトの名無しさん mailto:sage [2016/04/30(土) 16:03:06.15 ID:ASEjigO2.net]
- 行というかWin32で20KByteコアのそこそこ速いScheme処理系はCで作ったな
何行だったかは忘れたが数千行にはなる ライブラリやフレームワークにどこまで対応するかだと毎回思う
- 559 名前:デフォルトの名無しさん [2016/04/30(土) 17:51:48.40 ID:iJVuG7iJ.net]
- 自作コンパイラでソフト作ろうとすると、やたらコアを吐くことに...。
- 560 名前:デフォルトの名無しさん mailto:sage [2016/04/30(土) 19:28:20.97 ID:wSqWni75.net]
- >>543
selfビルド可能になれば普通じゃ無いの?>>core吐かせてバイナリ生成
- 561 名前:デフォルトの名無しさん [2016/05/01(日) 13:17:14.33 ID:tKi6j9CT.net]
- 匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています 言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか? Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします https://twitter.com/Lyrise_al ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw The Covenant Project 概要 Covenantは、純粋P2Pのファイル共有ソフトです 目的 インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します 特徴 Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW) 接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です DHTにはKademlia + コネクションプールを使用します UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります) 検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません 8
- 562 名前:デフォルトの名無しさん mailto:sage [2016/05/01(日) 17:25:31.50 ID:EieRhQfe.net]
- スレ違いだから他所でやって
|

|