Turbo Pascal (which he authored) was quite the accomplishment back in the day - editor and compiler in 64K. Think about that for a minute.
This is a great talk, I was struck by how similar some of the high level design goals are to LLVM https://www.aosabook.org/en/llvm.html
I kind of hope Anders moves on from TypeScript soon, he’s done a fantastic job there considering the constraints of JavaScript, but I’d love to see him tackle something new.
A thread from 2018: https://news.ycombinator.com/item?id=17280589
Discussed at the time: https://news.ycombinator.com/item?id=11685317
It sounds like that content-addressed code as in the Unison language https://www.unisonweb.org/ could end up facilitating the design of a very effective IDE since the language can naturally generate an immutable structure by default.
I don't know enough to know if this hunch is correct, I'm wondering if anyone better informed can chime in.
Very interesting, even though we don’t have a compiler in the traditional sense for yazz Pilot as a container image is our output format, many of the points are still valid.
Also very interesting how rosalyn had the idea of compiler as an API, we went in the opposite direction and did not have any extensibility, instead we made the Code editor an API
Something I’ve observed with languages he designs are that they end up with a ui form builder. I wonder if that will happen with typescript. It’s harder, because they’d either need to pick a framework, or design it for at least react, vue, angular.
At that time I wanted to read about compiler building. Missed that I'm University. That video made me skipping that. The standard books do not exist for this level of evolvement.
This is kinda how the compiler-stuff in Dark is written.
Everything - the editor, semantic analysis, version control, execution engine, everything - all use the same data structures (the same abstract syntax tree).
We use functional data structure everywhere and we do functional updates within the AST all the time; that's even how text entry in the editor updates the program.
One take away for me was: Language designers & compiler writers today need to consider editor support as one of their goals.
On the top page there's another thread about rust-analyzer vs RLS. What Aleksey said[0] about RLS that "[RLS's] current architecture is not a good foundation for a perfect IDE long-term," feels similar to my coworker's conclusion in her effort to provide better editor support for PHP[1].
Parsers for compiling code into machine-executables vs parsers to serve LSP responses have different tradeoffs. For example, Anders mentioned TS parser need to have good error-recovery, can respond with completions/errors when one file changes inside a thousand-files-project. I vaguely remember TS had a goal to provide completions in < 50ms and errors in <150ms. Such goals are hard to achieve as after-thought. If your core compiler doesn't do error recovery, such as PHP, you need someone to write a new compiler from scratch for a language server implementation. If tools such as RLS rely on compiler to dump all JSON metadata and figure out LSP responses[0], it's too slow for editors.
TS's good editor support doesn't come free. I think one of the most under-appreciated achievement of TS is how it took editor support seriously and designed its compiler infrastructure to do it well. That's why I don't believe in those hot-new-web-languages that try to take over TS by designing a better type system. TS brought the average developer's expectation of a language to having fast completion, fast error reporting, editor autofix, F2 to rename and renaming-a-file-in-editor-to-update-all-references. It's 2020 and people aren't going back to write code like in Notepad.
[0]: https://ferrous-systems.com/blog/rust-analyzer-2019/
[1]: https://github.com/microsoft/tolerant-php-parser
---
EDIT: grammar.