Live data from Hacker News

Advanced Compilers: Self-Guided Online Course

cs.cornell.edu

201–210 of 241 posts

Re: Advanced Compilers: Self-Guided Online Course

#201
post #84

Earlier quoted context omitted.

Is that such a critical hiring criteria? That seems like something I could learn in a week.

> That seems like something I could learn in a week. So why not learn it in a week then apply for the job? I would suggest the reason is... because you cannot learn it in a week.

This would lead to incredible toxic situations. If I want to apply to 5 companies and all 5 have 1, but different questions that I could learn in a week. Would you considser it would be more efficient for any party for me to learn this in advance?

Also, this assumes it is known upfront what this required knowledge would be...

Re: Advanced Compilers: Self-Guided Online Course

#202
post #152
post #127

Earlier quoted context omitted.

Your IDE parser will be unusable if it goes bananas while you're typing the characters needed to get from one fully, correctly parseable state to the next. It needs to be able to handle: printf("hello"); and also: prin and also: printf("He It also needs to be able to autocomplete function signatures that exist below the current line being edited, so the parser can't simply bail out as soon as it reaches the first inc…

Isn't that pretty standard for a parser? When was the last time a compiler bailed on the very first error it hit and refused to do anything else? The solution is to pick synchronisation points to start parsing again, i.e. ; at the end of a statement or } at the end of a block.

> When was the last time a compiler bailed on the very first error it hit and refused to do anything else?

Make still does this. (That's the "Stop." in the famous "* missing separator. Stop.") Many errors in Python still do this.

As late as 2010 I still saw some major C compilers do this.

99% of the toy compilers written for DSLs do this, or worse.

Good error recovery / line blaming is still an active field of development.

Re: Advanced Compilers: Self-Guided Online Course

#203

Earlier quoted context omitted.

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…

My uni, NC State, has a course (CSC 326) called Software Engineering that has students contribute to an existing project created by the staff in teams, with the best contributions being merged into master for the next semester students to work on.

Same here in Munich, we've had a course on software-testing in OOP-languages and had to write unit-tests for some modules of jenkins which were graded and eventually merged into master.

Re: Advanced Compilers: Self-Guided Online Course

#204

Earlier quoted context omitted.

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…

I will say that I asked Shriram Krishnamurti about why books on interpreters and compilers tend to avoid the question of parsing like the plague and found his response a little unsatisfactory. All these celebrated texts like SICP, EOPL, and Lisp in Small Pieces avoid the question of parsing altogether by focusing on s-expression based languages. His response was effectively that parsing is over-emphasized in other bo…

Hey, I know Shriram! We were students at Rice together. Not saying we knew each other well, more like passing acquaintances, but I recognize his name.

Anyway, as I recall from compilers classes (it has been ~30 years), the Dragon book heavily emphasized parsing, but the professor said "I'll assign you a parse to do by hand for homework, but and that's it".

The overall attitude was a combo of 1) parsing theory is also covered in another theory of computation class (where the classic textbook was at the time "Introduction to Automata Theory, Languages and Computation" by Hopcroft and Ullman, but these days may also be Sipser's book; 2) there were so many other topics to cover in compilers that a week or so of parsing was all the time budget allowed; and 3) the research focus of the professor's work was in other areas, and compiler research in general was the same.

So not enough attention to parsing might be a side effect (perhaps unfortunate). Even if there is enough material to have an entire class on parsing.

I took the advanced course in compilers too, which was more like a topics class - a research paper every week or so. I don't remember anything about parsing there either.

Re: Advanced Compilers: Self-Guided Online Course

#205

Earlier quoted context omitted.

Does that issue go away if you use packrat vs some other means?

Packrat parsers are notably faster than recursive descent parsers (also critical for IDE use) and by turning them "inside out" (replacing their memoization with dynamic programming) you get a pika parser which has very good recovery ability. There are varying techniques to improve error recovery for all forms of parsing but hacked-up recursive descent (certainly the most common kind of parser I still write for my hac…

Thanks for mentioning pika parsers. I've just had an enjoyable read of the pika parser paper.

Re: Advanced Compilers: Self-Guided Online Course

#206
post #174

Earlier quoted context omitted.

> 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?

We pay very very well, all my peers from NVIDIA are above 700k. Why would you presume anything about salary?

Consider making that more widely known.

Until reading this, it would never have occurred to me that a compiler tech at Nvidia would get anything remotely like that figure.

To be honest, as someone interested in compiler tech roles, it never occurred to me to even consider Nvidia until reading this discussion.

Re: Advanced Compilers: Self-Guided Online Course

#207
post #59

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…

Hiring for exact skills is what you do when you need the skills ASAP and the actual supply of engineers is there. The time you waste looking for someone with the exact knowledge you need could have been spent getting a good compiler engineer and just teaching them what you know. And magically that good engineer will get better, it's pretty amazing stuff. I've was told multiple times, University/School teaches you how…

At first, it sounds like "win/win" if universities trained their students to use the same tools companies want. Companies would save money for training, and graduates would be ready for their jobs.

But in longer term, it is actually "win/lose", because if three years later the fashionable tools change, the companies that optimize for saving money on training would simply fire their existing employees and hire new graduates.

For the students, it is better to be the kind of person who understands the deep principles and can learn new tools as needed.

And the companies have a choice to either offer job trainings, or offer higher salaries to people currently working in other companies who already have the needed skills. (Or whine about market shortage and import H1B servants.)

Re: Advanced Compilers: Self-Guided Online Course

#208
post #174

Earlier quoted context omitted.

We pay very very well, all my peers from NVIDIA are above 700k. Why would you presume anything about salary?

Consider making that more widely known. Until reading this, it would never have occurred to me that a compiler tech at Nvidia would get anything remotely like that figure. To be honest, as someone interested in compiler tech roles, it never occurred to me to even consider Nvidia until reading this discussion.

Check out https://github.com/mgaudet/CompilerJobs

Re: Advanced Compilers: Self-Guided Online Course

#209
post #146
post #107

Earlier quoted context omitted.

“We can’t hire for x” almost always means “we can’t hire for x for what we’re willing to pay”

I'm normally fairly laissez-faire about the morality of "exploiting" employees, but that works both ways - if you can't find people for the amount of money you're charging then tough shit

Yeah, we can argue about the merits of capitalism vs socialism, but what some companies want is "socialism for us, capitalism for our employees".

Re: Advanced Compilers: Self-Guided Online Course

#210
post #182

Earlier quoted context omitted.

You are thinking about it the wrong way. In this niche, you will almost never find people with the exact skills you are looking for. Better to find people with tangentially related skills and experience and let them grow into the role. Academia is never going to be comprehensive enough to prepare students for every niche that has some demand. Rather, they should just focus on teaching a core that will help them learn…

packrat parser combinators are recursive descent with infinite look ahead. That’s the problem, engineers are under educated

I agree. Engineers are under educated. This is not going to improve.

Poor and middle class kids don't have the luxury to soak up as much education as they feel like before choosing a topic they are interested in. That is a privilege reserved for the wealthy.

We go to schools that are pragmatic, teach us some basics, and the get us out the door to do cog work.

Look at all of the comments you have drawn. Let me spell it out for you: your expectations are too high.

Society is not designed to create compiler engineers you can hire fresh out of school. It is churning out bright scrappy people who are hungry for class mobility, a decent standard of living, and an interesting job to smash their brain against.

Maybe look for one of those instead of expecting a perfect candidate to drop out if the sky. You have a cool as hell project so I'm sure you could find a brilliant person willing to learn.

Post reply on HN