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 lu…
Advanced Compilers: Self-Guided Online Course
171–180 of 241 posts
Re: Advanced Compilers: Self-Guided Online Course
#172Earlier quoted context omitted.
I suppose we could argue about the definition of context free, but the compiler lexes it without any reference to the parser, and the parser builds the AST without any reference to symbols or semantic meaning. > spell checking ... using context-free parsers Only up to a point. D's spell checker uses the symbols in scope as its "dictionary". This means it is very good at guessing what you meant instead of what is type…
A context free grammar has a formal and rigorous definition. One way to see that Dlang does not have a strictly context free grammar for its AST is the following snippet of code: A[B] C; That is parsed differently depending on whether B is a constant integer expression in which case it parses to the declaration of an array of type A with a size of B, or whether B is a typename in which case it parses into an hash map…
It isn't parsed differently. Its semantic meaning depends on what B is, but not the parse.
Re: Advanced Compilers: Self-Guided Online Course
#173Earlier quoted context omitted.
No offence, but parsing (in a compiler, not in general) is probably the most boring part of a compiler. As this is a PhD course, I'd expect the goal of it to be preparing students for research in the field, not writing parsers for some industrial company. Also, there are definitely courses that teach you how to write a parser. But we usually don't call them advanced.
> No offence, but parsing (in a compiler, not in general) is probably the most boring part of a compiler. Not if you're writing an IDE. Writing a batch mode parser that takes an entire correct source file and produces an AST is easy. Writing a parser that instaneously handle producing an updating AST while the user is typing in the middle of the program while still allowing semantic analysis to occur and without vomi…
Re: Advanced Compilers: Self-Guided Online Course
#174I’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 lu…
> Good luck hiring an engineer with advanced compiler courses knowing any of this. Have you tried raising the level of compensation you offer? There are engineers elsewhere doing this at other companies you could presumably get if you put your hands in your pockets?
Re: Advanced Compilers: Self-Guided Online Course
#175Earlier quoted context omitted.
> Do you think it is the responsibility of academia to teach "industry relevant stuff"? I don't think that was what ibains was going for, though i don't fault you for seeing this in that comment. (Especially that i don't think this course suffers from that problem and generally i think things are rapidly improving on this front.) That problem to me and i think to him too is that quite a lot of things that such course…
>I don't think that was what ibains was going for, though i don't fault you for seeing this in that comment Isn't that literally exactly what he was going for? "I’d like to sit down all university professors who teach compiler courses and teach them a course on what’s relevant."
See what is taught in UCBerkeley with Spark and all coming out of there. I took a systems course with Eric Brewer - totally amazing - the context I got.
Re: Advanced Compilers: Self-Guided Online Course
#176I’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 lu…
I saw this great interview recently with Anders Hejlsberg at MSFT on how modern compiler construction differs from what is taught in traditional University courses. Is this what you're alluding to? After watching that interview, it's strange to read a comment like yours. While the architecture is completely different, it doesn't frankly seem like that big a leap to go from "senior engineer with X years working on thi…
So, a startup of 10 people should hire and train people for months. Raise a $2M seed round, have 12-18 months to show ProductMarket fit and as a founder teach all engineers their jobs? How many engineers go into compilers after school? So university education is all they know. The industry is built on qualified engineers. NVIDIA ceo was ahead of curve on graphics card, google founders ahead in search, why are compilers ones behind the curve?
Re: Advanced Compilers: Self-Guided Online Course
#177I’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 lu…
Parser combinators allow elegant implementations of parsing but are ridiculously slow compared to some Knuth-optimized parsers.
Re: Advanced Compilers: Self-Guided Online Course
#178Earlier quoted context omitted.
> No offence, but parsing (in a compiler, not in general) is probably the most boring part of a compiler. Not if you're writing an IDE. Writing a batch mode parser that takes an entire correct source file and produces an AST is easy. Writing a parser that instaneously handle producing an updating AST while the user is typing in the middle of the program while still allowing semantic analysis to occur and without vomi…
He didnt say easy, he did say boring, and I agree.
Re: Advanced Compilers: Self-Guided Online Course
#179Earlier quoted context omitted.
Your project sounds like fun. What/for whom is the project? What level of Excel formula compatibility are you shooting for, e.g. just in the neighborhood like Google Sheets, reasonably close as in Libre Office, or full compatibility with the latest version? If the latter you must have one gnarly test suite. Would love to hear more about it.
The compiler is for Calcapp, an app designer for Excel-savvy users. Our aim is to offer a function library that is easy to pick up for our target audience. That means that we generally follow Microsoft's lead in terms of naming and parameters, but we often offer extensions. Here are a few examples: * Functions like SUMIF operate on a range or an array and use a textual mini-language to determine which values to opera…
Re: Advanced Compilers: Self-Guided Online Course
#180I wish they’d be more courses on compilers that also serve as language servers. The current world is moving towards a phase where a language needs IDE tooling such as compilers, linters, formatters, REPL, language servers, debuggers and profilers. Would love to see a high level course that covers how to build the tooling for a great developer experience.
As i mentioned in another thread, a uni course that has students work on an existing codebase instead of writing something from scratch might be even better - though harder to grade. Imagine if one could do a major feature contribution to clangd/pyls/rust-analyzer as part of their advanced compilers course. The student gets a better understanding of (open-source) software development practices, gains a deeper profici…