Live data from Hacker News

Advanced Compilers: Self-Guided Online Course

cs.cornell.edu

21–30 of 90 posts

Re: Advanced Compilers: Self-Guided Online Course

#21
post #3

Are there equivalent 'Advanced Databases: The Self-Guided Online Course'? Andy Pavlo's CMU 15-721: Advanced Database Systems is similar, where you will hack on Postgres to implement a Foreign Data Wrapper (FDW)

Here you go: https://users.cs.utah.edu/~pandey/courses/cs6530/fall22/sche...

Re: Advanced Compilers: Self-Guided Online Course

#22

I wish my school offered something even half good as this. I've seen it like 2 years ago and it is well prepared course. >CS 6120 is a PhD-level Cornell CS course by Adrian Sampson on programming language implementation. I just dont understand why is this "PhD level"

Right after undergrad.

Re: Advanced Compilers: Self-Guided Online Course

#23

Are there any courses on creating a new language, interpreter, and compiler from scratch? Like not using LLVM or similar to generate intermediate representation but to literally pick an ISA and, well, compile for it.

When I did my undergraduate degree, you could opt to do that for 1 extra point. Compiling for an ISA is not that much more difficult than compiling for a bytecode IR like that of Java or .Net which I imagine is the typical target of these courses.

Re: Advanced Compilers: Self-Guided Online Course

#24
post #19

Earlier quoted context omitted.

What do you mean exactly by "compilers"? Because the book features a chapter on how to compile source code to virtual machine byte code.

Most of the time when people talk about compiled languages/compilers, they mean languages that compile to native machine code, not languages that compile to a bytecode/run on a virtual machine.

Is that true? I think of C# and Java as compiled languages and they run on the CLR/JVM which are both virtual machines.

Re: Advanced Compilers: Self-Guided Online Course

#25

Are there any courses on creating a new language, interpreter, and compiler from scratch? Like not using LLVM or similar to generate intermediate representation but to literally pick an ISA and, well, compile for it.

Check out project Oberon by Niklaus Wirth. It involves building a compiler from scratch for an ISA designed from scratch and building an OS for it. You can even put the processor onto an FPGA and run the code you compiled on physical hardware you designed.

Re: Advanced Compilers: Self-Guided Online Course

#26

I wish my school offered something even half good as this. I've seen it like 2 years ago and it is well prepared course. >CS 6120 is a PhD-level Cornell CS course by Adrian Sampson on programming language implementation. I just dont understand why is this "PhD level"

At my school we used the course work of Stanford for the operating system class which was amazing: https://web.stanford.edu/class/cs140/projects/pintos/pintos_... It's really up to the professor.

[deleted]

Re: Advanced Compilers: Self-Guided Online Course

#27

Earlier quoted context omitted.

Precisely made for "creating a new language, interpreter, and compiler from scratch": http://craftinginterpreters.com

This does not cover compilers. I know because I specifically asked munificent (the author) about this before and he mentioned some other books to look at.

Compiling to machine code is not that hard once you get to the IR or bytecode phase, check out this toy compiler:

https://github.com/byo-books/pretty_laughable_lang/

Re: Advanced Compilers: Self-Guided Online Course

#28

Are there any courses on creating a new language, interpreter, and compiler from scratch? Like not using LLVM or similar to generate intermediate representation but to literally pick an ISA and, well, compile for it.

The prior course involves implementing a code generating compiler with optimisation passes etc for a language.

Re: Advanced Compilers: Self-Guided Online Course

#30
post #24
post #19

Earlier quoted context omitted.

Most of the time when people talk about compiled languages/compilers, they mean languages that compile to native machine code, not languages that compile to a bytecode/run on a virtual machine.

Is that true? I think of C# and Java as compiled languages and they run on the CLR/JVM which are both virtual machines.

It's just the nomenclature that I'm used to, compiled languages are so called because there is no VM, it's just machine code that is run while C# and Java still requires the JVM to do JIT compilation at runtime. But it's mostly splitting hairs, there is no agreed upon definition of what makes a languages compiled/interpreted.
Post reply on HN