Step 1: maybe read a book or two on the rough theory, for orientation.
Step 2: tinker around on a mid-sized open source one, fix a few little bugs, see if it suits your taste.
Step 3: apply to a company that ships a compiler.
(Apple is hiring, fwiw!)
Conversation
Do you have any book suggestions?
1
I haven't done an exhaustive comparison but I usually recommend starting with Appel (cs.princeton.edu/~appel/modern/), Scott (elsevier.com/books/programm) and Pierce (cis.upenn.edu/~bcpierce/tapl/).
2
12
151
For more detail, I recommend Harper (cs.cmu.edu/~rwh/pfpl.html) for types, Jones (cs.kent.ac.uk/people/staff/r) for GC, Levine for linkers (linker.iecc.com) and while I haven't read it, I've heard good things about Muchnick (goodreads.com/book/show/8879) for optimization and codegen.
3
5
83
Kind of wish there were more resources out there for incremental and query driven compilation, but I guess folks are still figuring that stuff out. Bit hard to write a textbook yet!
1
2
Im kind of a bit afraid of going too deep into building my backend before I can figure out how to incrementalise stuff... 😰
1
Here is what I’ve collected so far - not sure if you have any more ideas?
2
9
some keywords: "incremental computation" (eg. github.com/Adapton/fungi-), "view maintenance" (eg. arxiv.org/pdf/1403.6968.), "differential dataflow" (eg. blog.acolyer.org/2015/06/17/dif), "build systems" (eg. microsoft.com/en-us/research), "reference attribute grammars" (lucris.lub.lu.se/ws/files/33120)
3
22
Wait. Has any of those techniques (beyond build systems) been demonstrated in compilers?
1
We incremental computation researchers cannot say it to get published, but the basic assumption for readers seems that these techniques aren’t really black boxes and writing any essentially new program with them is a new paper, unless your program is already well *parallelized*!
3
By that do you mean that it’s hard to transfer the techniques between programs? Or hard to get reliable performance improvements?
See other replies: it’s hard to get performance improvements. You can write highly parallel reusable primitives (such as folds that require associativity and whose computation tree is balanced, or many query languages ops), then use them for your program.
1
1
Let me admit I did a PhD on this and realized the issue halfway, so there might be a “disgruntled failed employee” vibe to this (and I haven’t studied the type systems to guide authors of incremental programs).
3
Show replies



