「コンパイラ・スクリプトエンジン」相談室16 (648レス)
1-

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
1
(5): 2014/07/20(日)11:16 ID:p6eMVAxc(1/2) AAS
プログラミング言語処理系の開発に興味のある人達のスレッドです。
字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換,
CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン,
SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化,
JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。
意味論に関する話題も歓迎です。

Wikiのまとめページ
外部リンク:www6.atwiki.jp
522: 2016/04/28(木)00:23 ID:mWNt94gr(1/2) AAS
関数呼び出しだとこれでいけそう
外部リンク:pastebin.mozilla.org

小さな計算でもツリーが深くなってnew()するノードの数がもりもり増えるけど
何かもっと良い方法あったら教えてちょ
523
(1): 2016/04/28(木)12:59 ID:Jc879At1(1/4) AAS
手書きパーサなら
木構造にせずに操車場アルゴリズムかその亜種でLL(1)するのも手だぞ。

文法と文をそれぞれ入力したらテーブル作ってLR(1)するクラスを作るって手もあるけど
大真面目に書いてc++で500行〜1000行くらいにはなったと思う。
524: 2016/04/28(木)14:16 ID:7cooGRk/(1) AAS
lexとyaccは、既存のものを使うべきか、自作すべきか、悩ましいね。
525: 2016/04/28(木)15:44 ID:Jc879At1(2/4) AAS
yaccは、やる気と暇があるなら
どういう文法なら曖昧性が無いか、とか、shift/reduce conflictとdangling elseとは何か、とか
いろんな事についてよく理解できるようになるって点で一度試しに書いてみる事をお勧めしたい
今までに俺が余暇でC実装した名の付いたアルゴリズムの内だとかなり難しい部類に入るけどな。

lexは文法全く固まってないなら使ったらどう?って程度じゃない?
割と簡単に使えるけど、同じくらいとは言わないものの簡単に自作できるし
ASCII範囲の文字は簡単に指定できるけどUnicodeなんかに対応する為にカスタムコードを挟むなら普通に全部組んだほうが楽な事もあるし。
526: 2016/04/28(木)15:46 ID:Jc879At1(3/4) AAS
個人的にはPEGが気になるのですよー
527: 2016/04/28(木)18:30 ID:FI1Tv7gT(1) AAS
コンパイラを作るはずがコンパイラジェネレーター作りがメインになってしまう不思議
528: 2016/04/28(木)18:36 ID:Jc879At1(4/4) AAS
そして思うのだ

コンパイラジェネレータを書くのに向いてる言語とは・・・・・・
529: 2016/04/28(木)22:17 ID:mWNt94gr(2/2) AAS
>>523
そうだな。ここだけツリーにしないで、再帰関数で直接出力すれば良さそうだ
530: 2016/04/29(金)05:30 ID:o23yQzXI(1/3) AAS
バイトコードのテキストを読み込んだら
バイトコードの1行と対の関係になる命令ノードを
行数だけ配列にして上から順に実行するイメージであってる?

なんか構文木のまま実行するのと大して変わらない気がするけど
メモリの節約とかどうなんだろう
531
(2): 2016/04/29(金)10:04 ID:GdtJdaFL(1) AAS
バイトコードのテキストってのが若干意味不明だが
バイトコードならアセンブル(バイナリ化)しておかないか普通

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
532: 2016/04/29(金)13:14 ID:mG1yRheY(1) AAS
コンパイラ作りって、インタプリタよりも、10倍の労力がかかるよな。
533
(1): 2016/04/29(金)15:48 ID:qwAEwLKu(1) AAS
この辺はlispやschemeで思索しながらやると楽なんだよ
534: 2016/04/29(金)17:57 ID:ZvoRtCQG(1) AAS
コード生成の方は関数型の基礎だけでもやってないとかえって遠回りに
535: 2016/04/29(金)20:10 ID:YATvpu7C(1) AAS
>>533
最終的になんで苦労してまで構文木をSchemeで生成するんだろう?っておもって結局そのままLispのMacroに化けるのである(割とマジで)
Lisperが他の言語取得者のタメにDSLを組むことはあってもLisperはLispのママ扱う方がよかったりするのよね。
536: 2016/04/29(金)21:15 ID:o23yQzXI(2/3) AAS
>>531
ありがたい。メモリが4倍くらい節約できるのね
もしかしたら構文木のまま動かした方が動的ロードで
面白いことが簡単に実現できるんじゃないかと迷ってたけど(evalとか)
パフォーマンスではバイトコードがかなり強力なのね
537: 2016/04/29(金)23:41 ID:o23yQzXI(3/3) AAS
>>531
>バイトコードならアセンブル(バイナリ化)しておかないか普通
たしかに普通は読み込み速度的にバイナリデータが望ましいのだけど、
手さぐりで試作するからメモ帳で読み書きできるテキスト形式でやってみるんだ
538
(2): 2016/04/30(土)01:17 ID:oV2mml7H(1) AAS
lispインタプリタって一番簡単な実装(pure lisp?)だと何行くらいで実装できる?
539: 2016/04/30(土)07:15 ID:wSqWni75(1/2) AAS
>>538
基本関数だけならものすごい小さいよ
Lispが生まれた時代のマシンのメモリ量なんてアドレスのビット数が16以下だし。
540: 2016/04/30(土)10:02 ID:oKKjAnDv(1) AAS
>>538
何で実装するかにも依る

swiftやrubyだと100行オーダーで書けるらしい
外部リンク:xavier.hateblo.jp

C実装だと2000行くらいみたい
外部リンク:github.com
541: 2016/04/30(土)16:03 ID:ASEjigO2(1) AAS
行というかWin32で20KByteコアのそこそこ速いScheme処理系はCで作ったな
何行だったかは忘れたが数千行にはなる
ライブラリやフレームワークにどこまで対応するかだと毎回思う
542
(1): 2016/04/30(土)17:51 ID:iJVuG7iJ(1) AAS
自作コンパイラでソフト作ろうとすると、やたらコアを吐くことに...。
543: 2016/04/30(土)19:28 ID:wSqWni75(2/2) AAS
>>542
selfビルド可能になれば普通じゃ無いの?>>core吐かせてバイナリ生成
544: 2016/05/01(日)13:17 ID:tKi6j9CT(1) AAS
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
Twitterリンク:Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw

The Covenant Project
概要
省10
545: 2016/05/01(日)17:25 ID:EieRhQfe(1/2) AAS
スレ違いだから他所でやって
546: 2016/05/01(日)21:43 ID:EieRhQfe(2/2) AAS
バイトコードのはずだったのに気づいたら
関数オブジェクトのツリーを作ってた
なにやってんだ俺・・・
547: 2016/05/03(火)02:36 ID:sSslXsw5(1) AAS
自作ソフトの暴走はたまにあるが、自作コンパイラの暴走はヤバイよな。
それで別のソフトを作成した日には、最悪の結果が待つことに...。
548: 2016/05/04(水)02:55 ID:ug5Kipfy(1/2) AAS
function(機能)はrole(役割)にしよう
flowとかprocと悩んだがroleが一番良いと思う
549: 2016/05/04(水)03:53 ID:INW31x/s(1) AAS
昔のC言語みたいに、floatとdoubleに分けるメリットは、
今の時代にはないよな?
550: 2016/05/04(水)03:59 ID:NIqCX6OH(1) AAS
むしろ half の出番さえ出てきてる時代。
551: 2016/05/04(水)10:09 ID:wjUC1pj0(1/3) AAS
役割っていうのは受動的な考え方であり縦割り行政的でありfunctionの適切な代替表現ではない
roleは与えられた仕事をただこなすだけというイメージ
このとき、与えられる対象、つまりデータやオブジェクトがあり
担当個所をroleするという感じ
role ≒ class であり、role ≠ function

何にも縛られず自由なfunctionとroleでは思想が違う
functionは立場や部署間を飛び越えて連携して機能するイメージ
胸熱であり、自分の仕事をこなすだけのroleなどと一緒にされては困る

function( a, b, c, d );
a.role( b, c, d );
552: 2016/05/04(水)10:16 ID:wjUC1pj0(2/3) AAS
例えば、日本は縦割り行政的であり、役人的であると言われ(role)
一方で、アメリカは横のつながりが強く、機能的だと言われる(function)
このように、機能と役割は対立する概念として扱われている言葉であり、思想が違う

日本の映画やドラマなんかでよく
「それは自分の仕事じゃないのでやりません」とか
逆に「自分たちの管轄だから余所者は入ってくるな」とか
役割的発想は悪いことのように扱われるのが常
逆に主人公たちは部署間を飛び越えて機能的に行動すると決まっている
553
(1): 2016/05/04(水)12:07 ID:p+LvbHBp(1) AAS
もうちょっとプログラマ的喩えにしようぜ。

procedure=大域環境に対して参照と破壊をするもの
function=環境を参照せず、戻り値は引数にのみ依存するもの
closure=固有の環境を持ち、その環境に対して参照と破壊をするもの
どれも意味が違う。

functionとroleはクラスとインスタンスくらい意味が違うと思う。
554: 2016/05/04(水)23:28 ID:wjUC1pj0(3/3) AAS
歯車でいえば
複数の歯車が上手く連携して動いている様を機能していると言うし
個々の歯車に着目してそれぞれが自分の仕事をしている様を役割をこなしているという

手続き的に時系列に沿って考えると
個々が役割を果たした結果、全体として機能がもたらされて、また別の大きな役割を担う・・・という風に
卵が先か鶏が先か、みたいなところがあって、双方の視点はどちらも重要で
同時に扱ていかなければならないわけだけど
区別して扱われる別の視点であり、function = roleとしてしまうのは単純にセンスないというか早合点
functionとroleの考え方の微妙な違いは非常に重要で
最初の出発点が違うことで資本主義と社会主義など、時としては戦争が起こる場合もある
省10
555: 2016/05/04(水)23:40 ID:ug5Kipfy(2/2) AAS
関数ってそんなに抽象的な意味を持ってたのか
インプット&アウトプット、リクエスト&レスポンスの手続きくらいに見てたよ
556: 2016/05/05(木)00:33 ID:dh4q1EnN(1/2) AAS
関数は二者以上の関係を表しており、二者以上の関係性が何か機能をもたらす
というより、逆算して、機能をもたらせるように、二者以上の関係性を作るのがエンジニアの仕事
だから関数もfunctionだし、機能もfunctionという
電子部品だって、回路を組んで組み合わせなければ機能しない
「関」という字が示すように、関係性は何事においても常に重要で
数学や物理はすべて関係性を数式で表すことで成り立っている
「1」という数字が何か意味を持っているというよりは、「1」と他の数字との関係性が「1」自身の立場や性質を決めている
関係性は非常に高等で、目に見えないものであるが故、尊いものとされている
というのも物事の関係性を紐解いたり、逆に利用できたり、機能的に考えることができる人は
当然、役割的思考も出来るものとされているから
省18
557: 2016/05/05(木)01:08 ID:dh4q1EnN(2/2) AAS
アメリカは自由自由いつも言ってるが、いったい何に対しての自由なのか、
どこを目指しているのかというと
自分が生まれながら背負ったroleから自由である、ということ
この辺、人種差別の問題とか貧困の問題とかが出てくる

一方で、社会に対する自分の機能性のようなものは常に非常に重視される
要らなくなったらすぐに首を切られるし、厳しい

とにかく機能機能機能機能、個人に対して厳しい、機能性のない人はいりません
しかし、生まれ持ったroleからの自由はサポートしましょう

その意味で、移民は受け入れる、ただし機能性のある人だけ
558: 2016/05/05(木)01:19 ID:AqKMDGmp(1) AAS
この長文君きもちわるい…
559: 2016/05/05(木)01:42 ID:3/paarxc(1) AAS
>>553
ぼくの作ってるものは偽C言語でグローバル変数もあるから
定義的にはプロシージャが適切なんだろうな

それでロールについてはもう少し考えてみるつもりだけど、
malloc()そのものがfunctionとして、malloc()を何につかうのかがroleなのかな
けれど関数の多くはライブラリとかAPIではなく単なるサブルーチンのような気がして
サブルーチンはロールだとも思うのよね
560: 2016/05/05(木)02:12 ID:Jo4WiHb1(1) AAS
単に役割って意味なら、変数にだってそれぞれの役割があるよね。
561: 2016/05/05(木)05:12 ID:qzGbsflZ(1) AAS
相手するなよ...
562: 2016/05/06(金)09:34 ID:pdJO182a(1) AAS
最適化をサポートする機能を付けるのも、面倒だよね。
昔のVC++の売り文句が、「極限までの最適化」などとうたっていたが、
ビルドの時間も長すぎ、他の作業が中断...というオチ付きだったし。
563: 2016/05/06(金)09:52 ID:WbxBcPoP(1) AAS
神聖なるビルド専用マシンを他の作業に使うのがおかしい

現在だって動画のレンダリングする連中はそんな感じだろう
564: 2016/05/07(土)02:02 ID:lPvt8ROe(1) AAS
ウチの勤め先には、ビルド専用マシンはなかったな。うらやましい。
565
(1): 2016/05/07(土)12:49 ID:TEQEM2qu(1) AAS
GoogleにはGOMAって名前のビルド専用クラスタ(2〜300台くらい繋げた奴)があるってよ
566: 2016/05/07(土)14:21 ID:0EiVc3To(1) AAS
そして各チームは一台でも多くのマシンリソースを確保するため
他チームの保有区域への侵略に明け暮れているという
567: 2016/05/08(日)10:02 ID:jHRrSElx(1) AAS
>>565
クラウドサービス提供するぐらいだからマシンあまってんだろうなぁ
568
(1): 2016/05/08(日)13:05 ID:EAH4Xwpx(1) AAS
俺の予想では、Googleやマイクロソフトに太刀打ちできるIT企業って、
日本国内にはないような気がする。
社員か誰かが遊び半分みたいな感じで作り上げた「Googleパックマン」
には、参ってしまったからな。あれは凄かった。
569
(1): 2016/05/08(日)13:17 ID:EkxZMrhh(1/2) AAS
>>568
日本どころか全世界でみてもAppleくらいしかいねぇよ
570: 2016/05/08(日)13:26 ID:cY3IZjLs(1/2) AAS
DeNA/GREE ほほう
dwango なかなか
CookPad おもしろそうな
DMM 話じゃないか
571: 2016/05/08(日)13:27 ID:cY3IZjLs(2/2) AAS
>>569
Amazon「…」
572
(2): 2016/05/08(日)21:29 ID:mw6lNm2M(1) AAS
囲碁のSmart Go Formatというのをパースしたいのですが
読みやすいサンプルプログラムないですか。
573: 2016/05/08(日)22:54 ID:EkxZMrhh(2/2) AAS
外部リンク:senseis.xmp.net
574: 572 2016/05/09(月)19:17 ID:QYIZFGji(1/2) AAS
ありがとうございます。
読んでみます。
575: 572 2016/05/09(月)20:40 ID:QYIZFGji(2/2) AAS
RubyGemあんのか。
うまくいけば自分で書かなくてもイケるかも。
576: 2016/05/10(火)13:55 ID:aTks4HJk(1) AAS
うちみたいに規模が小さいと、データセンターも活用するしか
手がないね。自前のデータセンターなど、夢のまた夢だ。
577
(1): 2016/05/13(金)11:38 ID:6Wa+P3Ox(1) AAS
ビルド専用マシンがあるなら、テスト専用マシンもないとおかしいよね。
共にあるのがソフトハウスの標準なの?
うちでは、とてもそこまでの予算をつけてもらえないのだが。
578: 2016/05/14(土)01:19 ID:spK37znF(1) AAS
投資に見合うリターンがあれば普通は投資するだろう。
579: 2016/05/14(土)02:25 ID:guvuQQ9l(1) AAS
ビルド兼テストマシンなら普通にある
580
(1): 2016/05/14(土)03:51 ID:9OGuGONK(1) AAS
>>577
できたてほやほやの会社で開発が二人しか無い我が社なんかなんもないぞw
awsをスポットで借りると割と安いビルド環境作れるからそういうの使ってるけど。
581: 2016/05/14(土)10:30 ID:zu3iiide(1) AAS
>>580
それじゃあ、資本金10万円の株式会社と、何ら変わらんだろww
582: 2016/05/14(土)21:33 ID:GqFlaCrO(1) AAS
客先常駐の偽装派遣か?
583
(1): 2016/05/16(月)00:37 ID:HJQsGNoE(1) AAS
DOS全盛の時代の時は、「遊び半分で、コンパクトなコンパイラでも
作ってみようかな」
という気も起きたが、これだけ複雑怪奇なWindows全盛時代となっては、
もう手軽に手を出せるレベルじゃないよね。
584: 2016/05/16(月)09:26 ID:HysSRgR+(1) AAS
今ならWASMターゲットでどうよ
585: 2016/05/17(火)02:22 ID:1Hk6wPoo(1) AAS
遊びでコンパイラを作るなら、linux用なら、作れば誰か使って
くれるかも...。
586: 2016/05/17(火)06:47 ID:uw1YLM9D(1) AAS
>>583
別にコンパクトなコンパイラのハードルは上がってないと思うが
無償でほぼフルセットの開発環境が入手できる今では意味が薄れた
って言うのならわかるけど
587: 2016/05/17(火)12:49 ID:PnBEFQO4(1) AAS
CとかJavaから呼び出す組み込みスクリプトなら需要ありそう
javascriptトランスレータはHaxeがよくできてるけど作ってみたい
588: 2016/05/20(金)02:16 ID:t8k86oX2(1) AAS
>>356
Forth, Postscript「必要です」
589: 2016/05/20(金)23:34 ID:tlYSnHy5(1) AAS
言語仕様作成と、コンパイラ本体は自分で作り、
デバッガだけ外注して作ってもらうというズルはありえる?
高性能なツールにするには、かなり手間がかかると思うのだが。
590: 2016/05/21(土)00:37 ID:jbF82omc(1) AAS
デバッガってevalさえあれば簡単なものはできそうだが
高機能てなると難しいのかな
591: 2016/05/21(土)10:16 ID:4qmWB+Wj(1) AAS
その「高性能な」デバッガに何を求めてるかにも依るような。
592: 2016/05/21(土)18:55 ID:r6iEFhaA(1) AAS
不具合な動作が時々あるソフトで、たまたま高性能なデバッガに
分析させたら、ソースもないのに、分析されたソフト内部のソースを
画面に表示し、
「ヌル文字列を格納するための領域に、別の文字を格納し、領域を
破壊しています」
とか何とかメッセージを出した例まであるからな。
こういうデバッガは値段が高いだろ。
593: 2016/05/23(月)19:41 ID:h8XB4lAi(1) AAS
頭悪そうだね
594: 2016/05/26(木)00:28 ID:R75m14iA(1) AAS
予約語テーブルに、どのくらい詰め込めば良いかが悩ましい。
あまり増やしすぎると、C++と同じ道をたどるだけだし。
595: 2016/05/26(木)00:40 ID:SiuzFNyH(1) AAS
C++と同じ道をたどれれば最高じゃないか
596: 2016/05/26(木)07:23 ID:6iXHX0kN(1) AAS
てか、C++ って機能のわりに予約語は少ない方じゃね?
597: 2016/05/27(金)15:25 ID:xTig+h/w(1) AAS
アンダーバー付きの予約語は嫌だ
598: 2016/05/27(金)21:42 ID:DWOzzldt(1) AAS
俺はiostream関数も嫌だな。
599: 2016/05/27(金)23:33 ID:64E4c/Qq(1) AAS
抽象関数に実装なし・マーカーとか、書けばわかりやすいのに、
func(){ } = 0

とか、意味不明なことをやって、キーワードを減らしている
600: 2016/05/31(火)21:45 ID:0yna7kxs(1) AAS
#include <PANAMA_PAPERS.Lib>
main()
{
for(Datsuzei = 0; Datsuzei <= mugendai; Datsuzei++)
}

こんな予約語やライブラリがあれば、俺のお金も無限に増える
はずなのに。消費税など、上げないでもらいたいよな。
601: 2016/05/31(火)22:03 ID:TRYwrF1a(1) AAS
お金が無限に増えたらジンバブエみたいになるぞ・・・・・・
602: 2016/05/31(火)22:10 ID:JlIYRfhe(1) AAS
ジンバブエってdoubleが桁あふれしたんだっけw?
603: 2016/06/01(水)20:32 ID:72v9yor7(1) AAS
COBOL使ってたから大丈夫
604: 2016/06/01(水)22:55 ID:z/VHQJBB(1) AAS
ワロタww
せめてrubyにしてくだしあ
605
(1): 2016/06/05(日)02:48 ID:itWJAX/I(1/2) AAS
フリーのコンパイラって、信用できる?
遊び程度でソフト作るなら良いけど、フリーだとサポートも
期待できないし。
606
(1): 2016/06/05(日)03:05 ID:wHhH7979(1) AAS
gccもclangもjavacもc#も信用ならんって分野ももしかしたらどこかにはあるのかもな
607: 2016/06/05(日)03:35 ID:itWJAX/I(2/2) AAS
gnuのように、ソースが公開されていてもやばい部分もあるのかな?
608: 2016/06/05(日)09:08 ID:n7k60ruZ(1/2) AAS
事故った時の補償の話なら先に契約で決めておくしかない
どうしても必要なら補償付きのお高いメーカー製を使えばいい

そこまで気にしないなら適当に人気のやつを選べばいい
ただし最適化を強めにすると地雷を踏むリスクが高い
609: 2016/06/05(日)09:10 ID:n7k60ruZ(2/2) AAS
ライブラリとかOSとかに比べればコンパイラ自身のバグは極めて少ない
ただし最適化を強めにすると(ry
610: 2016/06/05(日)14:53 ID:D97p9ZEl(1) AAS
最適化有効にしてバグるのも大抵そのプログラムのバグだから
611: 2016/06/11(土)01:39 ID:cDt3abig(1) AAS
>>605
有料でもサポートしてもらえる範囲は限られてる
612: 2016/06/11(土)06:06 ID:MaD03lMp(1) AAS
今考えたら昔のN88BASICも、実は凄かったんだな。
コンパイラを作りの前の基礎教養として、価値があると思う。
知識が多いほうが有利だし。
613
(1): 2016/08/06(土)21:46 ID:pVg13zPK(1) AAS
グラフィックライブラリは、やたら予約語の文字数が長くてウンザリ
した経験があるな。わかりやすくコンパクトな予約語で良いのに。
614: 2016/08/06(土)22:54 ID:Jz+gSdkD(1) AAS
予約語?
615: 2016/08/22(月)17:08 ID:oW9zLe2W(1) AAS
昔のBASICは名前空間みたいな整理はされてなくて
ライブラリに相当する部分も予約語として扱ってたんだよ
616: 2016/09/13(火)22:37 ID:0YzbOJ/I(1) AAS
HSPとかもそうだな
617: 2016/10/17(月)13:00 ID:Vg9Wd9rs(1/2) AAS
>>613
高々COLORとかPOINTでしょ?
PHIGS辺りのサードパーティライブラリと勘違いしてないか
それともCLSに比べたら長いって話?
618: 2016/10/17(月)13:06 ID:Vg9Wd9rs(2/2) AAS
パラメーターがダラダラ長いっていうのなら分かるんだけどな
タートルグラフィック以前の設計で
カレントペンオブジェクトって概念がまだないから
619: 2017/03/20(月)21:03 ID:FgPIWm6o(1) AAS
haskellのdo構文
620: 2017/05/15(月)00:51 ID:SFBD2YKR(1) AAS
Amazon で「Flex & Bison」で検索したらこんなの出て来て驚いた。
外部リンク:amzn.asia
621: 2017/05/15(月)18:24 ID:DeqHpRpX(1) AAS
たけーなオイ
622: 2017/06/26(月)19:12 ID:6CpK5SZQ(1) AAS
>>606
実際コンパイラはソフトウェア検証の好対象
CakeMLとか
623: 2018/02/16(金)06:02 ID:W1XJdyx1(1) AAS
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
624: 片山博文MZ ◆T6xkBnTXz7B0 2018/03/02(金)16:53 ID:R33psDql(1) AAS
外部リンク:www.softantenna.com
625: 2018/05/23(水)22:10 ID:Au5e7VGg(1) AAS
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

RSQUI
626: 2018/07/04(水)23:52 ID:gFgZc5FG(1) AAS
CL2
627: 2018/07/16(月)22:53 ID:oM74pxCP(1) AAS
テスト😊
628: ◆QZaw55cn4c 2018/09/04(火)14:52 ID:lJV/Mb/R(1) AAS
形式言語の祖・生成文法のチョムスキー90歳の言葉
外部リンク:www.videonews.com
629: 2019/03/21(木)17:55 ID:YzD9JPpd(1) AAS
esprima/escodegenなんかでJS ASTを扱ってる人に質問。
ASTを舐めて変数の型を推論したものをノードに紐付けて記録しておきたいんだけど、JS ASTの場合
ASTの中にメタデータをぶら下げるのと外で持つのとどっちが一般的なんだろう?
中に持つ場合はどこにどういうプロパティ名でぶら下げるか、外の場合はノードの位置を特定する
パスのようなものが必要になるけどそれをどうするか。
630: 2021/02/24(水)20:03 ID:1LsYaFKv(1) AAS
test
631: 2021/06/01(火)15:18 ID:IjgT90G7(1/2) AAS
お前ら元気か?
Prologおじさんが2003年頃からPrologの人気がなくなったとか言ってたんだが、2chのせいではないかと思ってきてみたぜ。
めっちゃ過疎ってるじゃないか。というか2chいつの間にか5chになってたんだな。

Prologは操作的意味論をそのまま書き下して言語作れるので良いぞw

% e.pl
e(I, I) :- integer(I).
e(E1+E2, I) :- e(E1, I1), e(E2, I2), I is I1+I2.

:- e(1+2+3+4,R),!,writeln(R).
:- halt.

というファイルを作って
省3
632: 2021/06/01(火)15:25 ID:IjgT90G7(2/2) AAS
Prologなら型システムを作るのもお手の物だ。
t(I,int):- integer(I).
t(E1+E2,int):- t(E1,int), t(E2,int).
:- t(1+2+3,T),!,writeln(T).
:- halt.
これだけ。Prologは関数というか述語のネストをできなくして
述語の引数は全てクォートとされた式のように扱われ、
変数がアンクォートな感じに書ける。
故にLispのS式より複雑な優先順位付きの演算子を使った式が扱えて便利だ。
ってことで、暇な奴がいたら使ってみて欲しいんダゼ。
省1
633: 2021/06/23(水)07:02 ID:HYjDIJ1V(1) AAS
Prolog興味あるけどCとかJavaとかPythonとかのメジャーどころと違って教科書みたいなアカデミックな本しか見つからないから並以下グラマの俺には無理
634: 2021/10/13(水)08:22 ID:Qk99MJFD(1) AAS
岩波のprologのプログラミング作法読んでみたら?

第5世代が成果をオープンソースに出来ていればなあ
635: 2023/07/05(水)03:42 ID:e/cCV0Lv(1) AAS
>>311
人は死後49日は漂うと云われているな
636: 2023/09/24(日)11:28 ID:Iodo3XEj(1) AAS
インタプリタの作り方 −言語設計/開発の基本と2つの方式による実装− - インプレスブックス
外部リンク:book.impress.co.jp
637: 2023/10/06(金)08:06 ID:NmxdZAP9(1) AAS
バックエンドの作り方はググれば解説が出てくるが
“実用的な”バックエンドの作り方はさっぱりわからない
RX用のバックエンドが欲しいんだがなー
638: 2023/11/11(土)06:58 ID:uMtlBPBy(1/2) AAS
double a = 2.71828;

というコードをコンパイルするときに、2進浮動小数点数に変換しないといけないと思います。
2進数浮動小数点数に丸めるときに、四捨五入(0捨1入)したり、一番近い2進浮動小数点数に変換したりといろいろな方法がありますが、その方式を決定するのもコンパイラの仕事ですか?

計算機イプシロンを ε_M とします。
2進浮動小数点数に丸めるときの方式として、四捨五入(0捨1入)が採用されているかどうかを確かめる方法として、

eps = 2^(-52)
1 + (1/2) * eps

を計算させて、それが 1 + eps に等しいかどうかをみるという方法が数値解析の本で紹介されています。
省2
639
(1): 2023/11/11(土)07:01 ID:uMtlBPBy(2/2) AAS
あと、

double a = 2.71828 * 3.141592;

というコードがあったとき、

コンパイラは、 2.71828 を丸めた2進浮動小数点数と 3.141592 を丸めた2進浮動小数点数を掛けよという機械語に翻訳するんですか?
それともこんな簡単な計算はコンパイラで予め行って、その結果を a に代入するという機械語を生成するんですか?
640: 2023/11/11(土)08:35 ID:fuGMacjx(1/2) AAS
double a = math.E + path.PI;
641: 2023/11/11(土)08:37 ID:fuGMacjx(2/2) AAS
宿題は宿題スレへ
642: 2023/11/11(土)11:05 ID:5AzCeqvD(1) AAS
はい
あります
はい
場合によります(最適化という追加処理)
643: [age] 05/12(月)14:33 ID:Zw0HuL6G(1) AAS
こういう言語作る系スレが廃れた原因は何だろう
644: 05/12(月)15:01 ID:zCv6/zTu(1) AAS
>>639
そういうコードはコンパイル時に計算されて
実行時には計算結果がそのまま代入されるけど
「コンパイル時に計算」の際の浮動小数点数での計算の扱いには無頓着で良いと思ってるの?
645: 05/12(月)15:24 ID:FL+WAIid(1) AAS
C言語にはfesetenvのような浮動小数点数プロセッサのモード切替関数もあるからな
コンパイル時に計算してしまうことでそれが反映されなくなるのもそれはそれで問題になるケースがある
646: 05/13(火)09:27 ID:C/NhftFY(1) AAS
Rustなら多い日も安心
647: 06/30(月)18:56 ID:YQWckD/5(1) AAS
あれから色々勉強しましたがCoq(Rocq)での証明や Prolog で操作的意味論や型システムを書くのは楽しいです。
11年かぁ。
$ apt install swi-prolog
$ vi e.pl
e(I,I):- integer(I).
e(E1+E2,I):- e(E1,I1), e(E2,I2), I is I1+I2.
:- e(1+2+3+4,I),writeln(I).
:- halt.
$ swipl e.pl
10
省1
648: 07/12(土)09:48 ID:tq7D7WVM(1) AAS
書き込み消えた気がする。
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.048s