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

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

Wikiのまとめページ
http://www6.atwiki.jp/compilerandscriptengine/
2016/04/02(土) 12:06:49.67ID:pO9IxWzb
支障のあるバグだけど修正困難なので放置されていた
というのが正しい

ゲーセンのインカムに影響するようなバグは回収されるはず

数年前にサ○ラ大戦のパチのバグで回収になって
50億の損害が出たとかあったな
2016/04/02(土) 12:24:29.40ID:k2fP1WMZ
>>422
その頃のアーケードゲームはコンパイラつかってないだろ、8ビットでz80、良くて6809の時代でコンパイラはi8080向けの LSI-Cが出たか出ないかの時代だぞ
>>423
サクラ大戦ってそんなに売上げあったん?
2016/04/02(土) 19:15:30.37ID:P1i243h5
>>424
> サクラ大戦ってそんなに売上げあったん?
ゲームじゃなくてこう言う話でしょ
http://slosoku.com/archives/5072231.html
2016/04/02(土) 22:12:51.38ID:k2fP1WMZ
>>425
パチスロかパチンコなのね
2016/04/03(日) 02:39:40.29ID:iadWYSqN
千円の物が百万個売れると10億なので
ゲームの方も50億くらいはあるんじゃないの
428デフォルトの名無しさん
垢版 |
2016/04/03(日) 21:47:29.31ID:2hoiGC6I
その昔、ナムコのゲーム開発部隊では、OSを作っていたのが二人いたそうだ。
苦心惨憺の末、ギャラガというゲームを作ったライトサイドプログラマー
の大森田氏。一方、ダークサイドプログラマーとして名高い島岡弘氏。
今ではコンパイラ作りの情報はありふれているが、やはり、当時としては
相当凄かったらしく、一目置かれていたとか。

今だと、コンパイラ作るだけでは、誰も誉めてくれないからな。
中身を見るまでは、お褒めの言葉にも預かれない。
2016/04/03(日) 21:57:18.40ID:YoKWiOlG
ヘイジャックども、英語の重要な技術文書をどんどん翻訳して
WikiBookやGitHubに上げていこっぜ、ベイベー。
430デフォルトの名無しさん
垢版 |
2016/04/04(月) 01:03:07.07ID:DatNOwTQ
>>429
MSの技術解説部分も、昔は翻訳するのに制限がかかっていなかったか?
そのためにVC++を使いこなすために英文マニュアルとの格闘に
なって苦労したぜ。C++特有のわかりづらさと、英文マニュアルと、
初めて使う統合開発環境に戸惑い、ドえらく時間がかかった経験が...。
2016/04/04(月) 08:31:57.12ID:P4S1l6wk
>>430
翻訳権ってMSDNにもあるんかいな。
いい加減、日本の著作権法にもフェアユースを
明記してほしいよな。
2016/04/04(月) 16:51:18.37ID:nzuN3Nfl
MindのUnicodeとか版コンパイラ作りたい
433デフォルトの名無しさん
垢版 |
2016/04/04(月) 21:22:22.97ID:DatNOwTQ
VC++のWindowsAPIの説明がわかりづらかったので、Delphiを使い始め
たら、同じく日本語化がまったくされておらず、詳しい人に聞いたら、
「翻訳してはならない」と聞かされて唖然としたよw
今では、遠い昔の話だが。
2016/04/06(水) 23:25:48.22ID:WLNAeUhL
やっと関数の外側をパースできたわ
435デフォルトの名無しさん
垢版 |
2016/04/09(土) 04:04:13.10ID:NXdWBRID
「豊富なライブラリやツール群を用意した、高額のコンパイラ」と、
「格安のコンパイラだが、別売オプションのライブラリも用意しないと、
たいしたソフトは作れない」ものでは、商売上、どちらが賢いだろうか?
436デフォルトの名無しさん
垢版 |
2016/04/09(土) 04:51:56.27ID:u1ofpue+
どっちも無理
2016/04/09(土) 07:04:44.02ID:FoBfIIvs
頭いい大学行くとコンパイラ理論とか習えたのかな?

独学してるけどさ、あらゆる犠牲を払わなきゃ理解、応用するまでいかなくない?
2016/04/09(土) 09:51:43.80ID:VHmuSaPj
京大はCコンパイラを全員に書かせるって聞いた
2016/04/09(土) 10:55:12.53ID:yIzAT5uL
コンパイラを自作するのは意味があるけど
Cが引きずるクソ設計を知ったら二度とC/C++をつかわなくなるはず
2016/04/09(土) 16:46:46.79ID:NknyIt7s
PascalのコードをCのコードに変換するプログラムを作れとかいう
何も考えずに出題されたとしか考えられない課題にはマジで困った

まず、関数内関数とかCに無いですしお寿司
適当な名前付けてグローバルに放り出すとしても
それだけではローカル変数のキャプチャが出来ないから
どうすんだこれ?って感じで、まぁ引数で渡すしかないんだけど
課題提出までの時間も全然足りてないし、誰も出来なかった
2016/04/09(土) 17:17:55.52ID:yIzAT5uL
>>440
しかるべきところにぶち上げて資質を問うべき
2016/04/09(土) 17:43:08.14ID:YNau7unG
ローカル変数は参照渡しすればいいだけじゃね?
2016/04/09(土) 21:34:08.79ID:YC7vrxdl
>>440
要するに p2c 作れってことだろ
パクれとは言わんけどコード参考にすればいいだけ
2016/04/10(日) 02:18:39.46ID:tVvAXki7
>>440
それ何日でやれと言われたんだ? 不可能では無いけど課題と言うにはレベル高すぎてビックリ
2016/04/10(日) 03:55:26.52ID:DcOaBboz
昔の事でよく覚えてないが、一か月ぐらいじゃなかったかね、良くわからんが

笑えるのが、そのソフトを作ること自体は前座でしかなく
その後、作ったソフトを持ち寄って、レビューか何かをするのが本題の講義であって
ソフトは皆で議論をする上での、ほんの話題のための「種」にすぎないってのがね
よくあるじゃない、プロジェクトマネンジメントとかコードレビューとかの
ちょっと実際のプロジェクトを模範した感じの、実戦風のワイワイガヤガヤ系の講義
あんな感じのやつだった
これがコンパイラの講義の課題ならまだわかるんだけどねぇ
どちらにせよ、プログラミング覚えたての学部生には酷な課題
二年生でC習って、三年生でいきなりこれ作れって、そりゃ無理ですって
普通にPascalのインタプリタ作るのだって、実力的にまだ厳しいのに
そこからさらにCに変換しろだなんて

いくつかのチームに分かれていて、チームごとに与えられる課題は違っていたんだけど
俺は最も簡単な課題が当たったから何でもなかったけど
2016/04/10(日) 09:23:24.83ID:fTRAmtFw
関数内関数ってトランスレーター的には別に難しくないだろ
3日もあればできるんじゃね
2016/04/10(日) 09:34:58.78ID:372ncJJS
>>440 > マジで困った
>>445 > 何でもなかったけど
痴呆症乙
2016/04/10(日) 10:26:51.59ID:hSypwT6Y
誰も提出できなかったけど本題じゃないから授業は進んだってことだろ
2016/04/10(日) 11:06:35.40ID:jQD3kWDp
ただのホラフキ―じゃん
450デフォルトの名無しさん
垢版 |
2016/04/11(月) 11:50:30.22ID:3nONGRtl
大昔のMacはpascalでの開発を前提にしていたからな。
(Macツールボックスは、Pascalで呼び出しを前提にしていた)
途中からはCやC++用にツールは変貌していったが。
2016/04/11(月) 17:10:55.05ID:suuESVM3
>>450
なつかしすぎるなぁ、light speed Cとか買ったとき「ああ、これでCで書ける」などと感動したわ
2016/04/11(月) 18:25:37.58ID:8c5Uimxv
C言語より動的型付け言語の方が先に広まってたって意外だなあ
453デフォルトの名無しさん
垢版 |
2016/04/12(火) 02:21:49.83ID:0eQ6kuw9
AppleのMPW。あるいはハイパーカード。
Think Cや、Code Warriorなど、一時は、Macで夢のようなソフト作りに
あこがれた時期もあった。でも、遠い昔の話だ。
2016/04/12(火) 09:22:22.73ID:Pd8H+utR
静的型付けのほうが高度なんだよ
2016/04/13(水) 01:10:21.79ID:inw4nZY2
俺もアセンブラ→静的型→動的型の順で作られてきたと思ってたけど
ジョブスの伝記漫画でウォズがアセンブラでBasic作る話があったような気がする
2016/04/13(水) 01:14:40.21ID:rXMD6+sH
基本文字列だけでいいんだよ
型なんて文字列をどう解釈するかの話だよ
2016/04/13(水) 01:23:46.16ID:2h1lI58Z
>>455
しらないのか?Microsoft
458デフォルトの名無しさん
垢版 |
2016/04/13(水) 13:34:00.12ID:a0UNLavD
もっとも愛着のあるコンパイラは、Quick BASICだった。
遠い昔の話。でも、凄く使いやすかったんだよな。
2016/04/13(水) 17:57:30.26ID:V3wVZgaP
コンパイラの初心者本?

「Tiny BasicをCで書く」
出版社: ソシム (2016/4/22)
ISBN-10: 4802610203
ISBN-13: 978-4802610209
460デフォルトの名無しさん
垢版 |
2016/04/14(木) 00:25:42.75ID:Nyx2HJFW
関数の先頭にfunctionキーワードを付けるとして長すぎるから変えようと思うんだけど
doとかjobではおかしいかなあ?
2016/04/14(木) 01:10:11.46ID:FsF2j7W4
>>460
fnじゃだめなん?
Clojureだと(fn [arg] brabrabra)な感じ
462デフォルトの名無しさん
垢版 |
2016/04/14(木) 01:29:14.13ID:Nyx2HJFW
>>461
rustのfunc, iface, modとかもそうだけど省略形はいまいちだなと思う
rubyにfor() do {}構文があるんだけど、それで関数やラムダ式の記号に
do良さげかなと思うんだけどどうかな?
2016/04/14(木) 02:42:08.95ID:co1HctEv
コンパイラの醍醐味は式の展開だから、ここを自分で書ければあとはそれほど難しくないw
2016/04/14(木) 08:30:10.02ID:BY7gxQ6D
define ならわかるが do はないだろう
2016/04/14(木) 09:12:23.12ID:d9D6y2bX
dogazer
2016/04/14(木) 09:35:38.15ID:HeHUqy+f
関数も変数もletで
467デフォルトの名無しさん
垢版 |
2016/04/14(木) 12:27:04.84ID:kJxBjGsl
予約語テーブルに何を入れるかが難しい。
何でも詰め込みすぎると、肥大化しすぎたC++になってしまうし。
2016/04/14(木) 18:04:51.72ID:FsF2j7W4
>>462
そうかなぁ?
一般名詞や動詞とかぶりそうも無い省略形ってコンピュータ言語には向いているとおもうのだ。
defunとかdefnとか
無名関数作るのにはUnicode圏が一般化した今ならλ一文字とか
2016/04/14(木) 20:06:31.03ID:VC8/A0Ig
略語もセンスがいるよな
ところで、defunって何の略?
どうでも良いけどλなんか変換しなきゃ出てこないし入力速度最悪だな
2016/04/14(木) 20:21:19.82ID:gC/abIq/
>>469
> defunって何の略?
DEfine FUNction じゃね?
2016/04/14(木) 20:43:14.68ID:FsF2j7W4
>>469
>>470氏が書いているけどdefine functionの略だよ、common lispとかemacs lispとかでつかわれてる
λ自体は”lambda”をテキストエディタ側で差し替えるとか一文字入力のマクロをバインドすればいいだけだと思うのだよね(IDE作り込みの一環)

どっちかっつーとワタシの一押しは関数定義の宣言句に省略形を許せば良くない?ってだけなのでスレ違いではある。
2016/04/17(日) 00:39:50.58ID:SCILLDG5
letはconstの代わりに使う言語があるね

関数宣言にdoがないとなると色々と候補に悩んでしまうぜ
job, fun, flow, verb, work, act(action)
2016/04/17(日) 01:15:23.96ID:iuB497/s
>>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等の特殊な予約語彙だけ文の開始から除外すれば後者の方法で関数は定義できると思うのだけど。
2016/04/17(日) 03:41:30.77ID:SCILLDG5
>>473
>予約語なくせば?
変数宣言でも関数宣言でも先頭に予約語が付いてIDEが色つけてくれた方が見やすいじゃない?

もしくは関数宣言をすべて関数ポインタ(クロージャ?)のみにして、変数化してしまうか?
var function-name = ->(args...){ ... }
2016/04/17(日) 16:43:33.52ID:3szJoJiC
基本的に、普通のブロックと、関数(クロージャ)との、区別をどうするかという問題が有るからね
普通のブロックは大体{ something }こんな感じだろうけど、これは呼び出しなしで即座に実行するのが普通
一方でクロージャは呼び出さない限りは実行されない
関数やクロージャなどを引数に取る関数が有ったとして
func_name( { something } );
こんな感じに呼び出した場合、{ something }を実行した結果を関数に渡すのか
{ something }その物を関数に渡すのか、コンパイラはよくわからない
func_nameの呼び出し引数の型がクロージャであることをコンパイラが分かっていたとしても
{ something }を実行した結果がクロージャになり、それを関数に渡すという可能性もあるのでコンパイラは判断できない
そのため、明確にするためにfunc_name( function{ something } );のように
何か普通のブロックとクロージャを区別する文法が要るのだね
そうこうしていると、Javascriptが出来上がる
2016/04/17(日) 17:47:06.17ID:SCILLDG5
結局function代替ワードが必要だと気付く
ラムダ記号=>だと引数に使うときダサイもんね
477デフォルトの名無しさん
垢版 |
2016/04/18(月) 12:27:13.85ID:keXFBRJQ
新しいコンパイラを使うとき、「特有のクセのある」
のがグラフィック関数なんだよな。
個人的には、グラフィック関数も、ANSIで定めて欲しいくらい。
2016/04/18(月) 13:16:18.87ID:pknZG/q+
グラフィックなぁ
b800:0000らへんを好き勝手に弄らせてくれるなら歓迎するのだわ # ネタが古いか
2016/04/19(火) 13:33:12.70ID:6Wh9TF6d
8色でいいんか?
480デフォルトの名無しさん
垢版 |
2016/04/20(水) 02:49:26.81ID:dZcIDvSg
最近はいじっていないので、最新のツールはよくわからんが、
昔のツールでは、RGBの三原色を元に、すべてのグラフィックを
再現していたからなあ。今考えると、ずいぶん、原始的だった。
481デフォルトの名無しさん
垢版 |
2016/04/20(水) 05:43:15.95ID:wqKcWsga
>>480
最新をよくわかってないのによく原始的だと解るね?
2016/04/20(水) 06:55:13.29ID:XnBYIzBk
シマノのギアの仕組みをよくわかってない俺にもギアのないママチャリは原始的だと思う
483デフォルトの名無しさん
垢版 |
2016/04/20(水) 07:16:40.91ID:wqKcWsga
自転車に例えるなら車輪を回転させて走らせるのは原始的だったなぁって言ってるのが >>480 なんだけどね
2016/04/20(水) 07:52:09.40ID:UfNx2Znx
えっ今もRGBじゃないの?
2016/04/20(水) 08:22:02.22ID:r07pzD8i
>>483
それはお前が勝手にそう思ってるだけ
ギア付きのチャリより直結のチャリの方がより原始的なのはわかるだろ?
2016/04/20(水) 08:29:41.63ID:r07pzD8i
>>484
ツールって言うのか何を示すのか、グラフィックっと言うものの範囲にもよる
ディスプレイ表示機構に限定すれば RGB 以外のは見たことない
グラフィックツールの話なら HSB とかの他のカラーモデルを扱えるものはあるし、プリンタは CMYK だし
そもそもこのスレで長々引っ張る話でもないし
2016/04/20(水) 09:12:43.14ID:UfNx2Znx
CMYKなんて大昔からあった
488デフォルトの名無しさん
垢版 |
2016/04/20(水) 10:07:43.41ID:wqKcWsga
>>485
RGBっていうコンピューターグラフィックス上で今でも最も基本的な部分を指して原始的って言ってるからギア云々は的外れって言ってんの
489デフォルトの名無しさん
垢版 |
2016/04/20(水) 11:06:43.66ID:fkY4xDrs
グラフィック関数ってOpenGLとかそういうはなしじゃないのか・・・
2016/04/20(水) 12:29:24.43ID:r07pzD8i
>>488
だからそれってお前のちんけな知識で語ってるだけだろ w
どういう風に対応付けるかなんて色々あるのに知識のない奴ってそれしか思い付かないから自分の考えが一番って思ってるんだよな
2016/04/20(水) 14:01:09.01ID:ljSF0mgB
おまえのことか
492デフォルトの名無しさん
垢版 |
2016/04/20(水) 15:33:41.96ID:9SnFE2FG
例えが悪いって言ってんのにどういう風に対応付けするかは色々って何言ってるのか解りませんわ。
2016/04/20(水) 19:30:01.52ID:r07pzD8i
>>492
> 例えが悪いって言ってんの
お前かそう思ってるだけ
って何回言えば理解するんだ?
2016/04/20(水) 20:27:51.87ID:ljSF0mgB
いや、お前こそが、そう思っているだけだろ
車輪の話は分かりやすかった
2016/04/20(水) 22:17:47.57ID:iD79AHEd
どっちもどっち
下らんことでお山の大将になりたがるなよ
496デフォルトの名無しさん
垢版 |
2016/04/21(木) 01:56:58.28ID:q7849b+A
変な所を指摘したらお山の大将になりたがる猿呼ばわりか、めんどくせえスレだな
497デフォルトの名無しさん
垢版 |
2016/04/21(木) 02:20:43.14ID:mxlfT2Ft
スレ違いだから首釣って死ねって事だ
言わせんな
498デフォルトの名無しさん
垢版 |
2016/04/21(木) 12:57:39.05ID:DAo9Zovx
エプソンのプリンターも当然、CMYKだが、
「純正を使わないと、すぐに故障する」
ような構造にしてあったよな?

あれはハードの構造でそうしているのか。コードにも、純正な否かを
判断する部分を盛り込んでいるのかどうか。
499デフォルトの名無しさん
垢版 |
2016/04/21(木) 19:57:24.72ID:T4pmkcSw
エプソンに限らずプリンターは色の三原色持ってるのが当たり前
500デフォルトの名無しさん
垢版 |
2016/04/22(金) 00:36:11.07ID:2IHAQJXj
純正インク以外で壊れやすくなるのは単に質が悪いから
プリンター本体は採算度外視でインクで儲けるビジネスモデルだったのに本体壊したら元も子もない
501デフォルトの名無しさん
垢版 |
2016/04/22(金) 12:06:11.49ID:300wiAoM
プリンター本体も、五年もたって故障すれば、部品製造打ち切りで
修理不能で買わざるを得ないからな。キャノンはどうか知らんが、
エプソンはそうだった。とかいって、うちの勤め先の規模では、
プリンター市場に参入出来る資金力などない。
せいぜい、大手からおこぼれで仕事をもらい、コードをいじくるしか出来ない。
502デフォルトの名無しさん
垢版 |
2016/04/22(金) 18:41:13.87ID:U46HjcWC
ずいぶん横道にそれているが、おまえらスクリプトつくってるのか?
2016/04/22(金) 20:38:22.94ID:TT82zXSl
>>496
指摘が的はずれって言われてるんだろ
2016/04/22(金) 20:39:29.07ID:FoP6yTJa
誰がもこみちにそれているねん!!

(´・ω・`)b
2016/04/22(金) 20:40:58.67ID:FoP6yTJa
>>502
スクリプト言語を利用してスクリプトを作っているという意味か?
それとも自分でスクリプト言語の仕様決めて実装設計しているということか?
2016/04/22(金) 21:49:45.09ID:cAq2nbH2
スレタイ嫁
2016/04/22(金) 23:35:58.89ID:Eun++jyx
>>505
後者の実装にスクリプト言語使っても問題はないんじゃなかろうか?
508デフォルトの名無しさん
垢版 |
2016/04/23(土) 07:12:36.15ID:FJYQwL85
ここで産まれたスクリプトあんの?
509デフォルトの名無しさん
垢版 |
2016/04/23(土) 12:40:11.44ID:OaaA/Nov
秀丸は、スクリプトを自作するときの参考になるのかね?
一応、役に立ったことは事実だが。
510デフォルトの名無しさん
垢版 |
2016/04/23(土) 18:35:58.00ID:vG+aKQwy
禿丸エディタを何の参考にする気だ
511デフォルトの名無しさん
垢版 |
2016/04/24(日) 00:18:07.79ID:dKv+k22E
秀丸は、「作業の自動化スクリプト」を書くのに便利だからな。
その仕様を元にすれば、スクリプトを自作するのに役に立つのではないかと
思ったのだが。
512デフォルトの名無しさん
垢版 |
2016/04/24(日) 01:48:37.36ID:M7ZCbRga
「作業の自動化スクリプト」専用のスクリプトならgradleあたりが参考に良さそうだな
ちなみに俺はantは好きだけどmavenは大嫌い
2016/04/25(月) 02:57:23.38ID:ouB2BnTZ
まあ秀丸はテキスト処理に特化した
自動化スクリプトの参考にはなるかもね
あれはスクリプトっていうよりマクロだけど
514デフォルトの名無しさん
垢版 |
2016/04/25(月) 10:50:38.19ID:9hQeUDgV
しかし秀丸には、CやWindows APIの命令が、多数というか、
かなり含まれている感じだが。
515デフォルトの名無しさん
垢版 |
2016/04/25(月) 17:05:01.77ID:lstHaTya
だからなんだよって感じだが。
2016/04/25(月) 17:27:42.97ID:ouB2BnTZ
そのまま車輪の再発明をしてしまうと
元の秀丸を使った方が便利だから
自作スクリプトを秀丸と差別化する必要はある
517デフォルトの名無しさん
垢版 |
2016/04/26(火) 03:16:17.88ID:r83feNEN
そうか。秀丸に存在しない命令を考えなければならないな。
518デフォルトの名無しさん
垢版 |
2016/04/27(水) 00:31:37.93ID:Toh8P/+A
相変わらず手書きパーサー書いてるが、できるだけ1発でパースしつつ(LR法?)
外側から順に何度も段階分けながらパースする(LL法?)なコードも混じってる…
意味解析までたどり着くまでで力尽きそうw
2016/04/27(水) 06:02:05.40ID:vmi3tpS2
よほどの理由がないなら手書きなんかやめといた方が

Bison GLR 使ってた時は不自由さがなくてよかった
semantic predicate 機能は成熟しただろうか
2016/04/27(水) 07:02:50.92ID:h/kgFFlp
趣味でやってるんだろ
ほっといてやれや
521デフォルトの名無しさん
垢版 |
2016/04/27(水) 23:38:58.25ID:Toh8P/+A
手書きパーサー製作も残すは四則演算&関数呼び出しとなったが
ツリーの形状はこんな感じで良いのだろうか?
https://pastebin.mozilla.org/8868990

>>519
本よむところから始めるのはしんどいのでな・・・
522デフォルトの名無しさん
垢版 |
2016/04/28(木) 00:23:38.80ID:mWNt94gr
関数呼び出しだとこれでいけそう
https://pastebin.mozilla.org/8868995

小さな計算でもツリーが深くなってnew()するノードの数がもりもり増えるけど
何かもっと良い方法あったら教えてちょ
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況