<story><title>Advanced Compilers: Self-Guided Online Course</title><url>https://www.cs.cornell.edu/courses/cs6120/2020fa/self-guided/</url></story><parent_chain></parent_chain><comment><author>ibains</author><text>I’ve worked on multiple compilers (optimizations expert) at MSFT on VS and CUDA and gave developed a DSL and worked on Database Compilers.
 I can’t hire compiler people with right skills.
We’re building an IDE and those parsers are written differently, and we use Scala packrat parser combinators.
These courses teach very little judgement or industry relevant stuff. When do you use packrat parser vs LALR vs LL? Good luck hiring an engineer with advanced compiler courses knowing any of this.
I’d like to sit down all university professors who teach compiler courses and teach them a course on what’s relevant.</text></comment>
<story><title>Advanced Compilers: Self-Guided Online Course</title><url>https://www.cs.cornell.edu/courses/cs6120/2020fa/self-guided/</url></story><parent_chain></parent_chain><comment><author>37ef_ced3</author><text>Domain-specific compilers are a bigger field, where there&amp;#x27;s more opportunity to do something interesting&lt;p&gt;Take C (or some other language) and its mature optimizing compilers as a foundation, and write a program that compiles a high-level description of a domain-specific program into C&lt;p&gt;For example, NN-512 (&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;NN-512.com&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;NN-512.com&lt;/a&gt;) is a compiler that takes as input a simple text description of a convolutional neural net inference graph and produces as output a stand-alone C implementation of that graph&lt;p&gt;GNU Bison (&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;www.gnu.org&amp;#x2F;software&amp;#x2F;bison&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;www.gnu.org&amp;#x2F;software&amp;#x2F;bison&amp;#x2F;&lt;/a&gt;) is another example, where the output is a parser: &lt;i&gt;Bison reads a specification of a context-free language, warns about any parsing ambiguities, and generates a parser (either in C, C++, or Java) which reads sequences of tokens and decides whether the sequence conforms to the syntax specified by the grammar&lt;/i&gt;&lt;p&gt;Halide (&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;halide-lang.org&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;halide-lang.org&amp;#x2F;&lt;/a&gt;) is a language for fast, portable computation on images and tensors, and it originally generated human-readable C++ code as output (but not anymore, now it feeds directly into LLVM)&lt;p&gt;Can anyone provide other examples? (Code generators for network packet processing?)</text></comment>