
Anders Hejlsberg on Modern Compiler Construction (2016) [video] - PredictorY
https://www.youtube.com/watch?v=wSdV1M7n4gQ
======
mikece
Original author of Turbo Pascal, chief architect of Delphi, lead architect of
C#, creator of TypeScript. Does anyone else in language design have as many
accolades as this or designed languages on which trillions of dollars of
commerce depend?

~~~
pjmlp
Martin Odersky, created Turbo Modula-2 for Borland, member of the Pizza
language whose design lead to Java generics implementation, designer of the
Scala language.

Erik Meyer, member of GHC design team and Haskell community, responsible for
LINQ design bringing FP to the masses, reactive extensions in .NET which lead
to the RX model adopted by Netflix, nowadays contributing back to Haskell at
FB (if I am not mistaken).

Niklaus Wirth, creator of Pascal, Modula-2, Oberon, Oberon-2, Oberon-07.
Helped Apple design Object Pascal for Mac OS and Lisa. Contributed feedback to
Active Oberon and Component Pascal. Built single language workstations using
the Modula and Oberon family of languages.

~~~
zarkov99
In other words,no.

------
iainmerrick
There's so much that's great about C#, and that results from really smart,
pragmatic, forward-looking language design, that I find it surprising how many
aspects of C# development are hampered by really bad design.

Specifically, the backwards compatibility story of the standard library is a
mess (all the different .NET Framework versions, or wait, do I mean .NET
Standard, or WinRT, or...?) and the package manager (NuGet) is not very
impressive.

I figure that the good stuff (the core language design and CLR) comes from
Hejlsberg and his team, while the clunky stuff comes from the wider Windows
teams at Microsoft.

Are there many people using C# for things other than Windows apps and cross-
platform games? I get the impression that Java is still much bigger for cloud
infrastructure, finance etc, but maybe I'm wrong.

~~~
Touche
Every time I hear someone say that C# is a well designed language I think of
the story of how they had to hack the compiler to get async/await to work, and
how F# implemented the same feature as a library. I guess there are different
levels of "well designed".

~~~
iainmerrick
I don't know about the compiler internals, but from the perspective of a C#
user, async/await is really excellent. It's easy to use and the resulting code
is easy to read and understand. Much simpler than chained futures, Go-style
channels, etc. It's good language design in that sense (the _implementation_
may or may not be good).

------
dang
Discussed at the time:
[https://news.ycombinator.com/item?id=11685317](https://news.ycombinator.com/item?id=11685317)

------
ak39
I must admit I fantasize that this great mind will one day return to his Turbo
Pascal roots and “rescue” the Delphi project! (More wishful thinking than
imagining DT admitting climate change, I know.)

~~~
russh
I really, really want a Turbo Pascal 5.5 with objects for linux.

~~~
barrkel
FreePascal is about that.

TP 5.5 with objects was a really clunky object system though (designed by
Apple, IIRC). Object slicing by default. Vtable pointer added on definition of
first virtual method in object hierarchy, like C++. And to invoke a
constructor on a new heap-allocated object, you had to pass it as an argument
to New(), with this weird syntax - "New(myObjPtr, Init(...))". Delphi's object
system was far superior.

See some examples:
[http://collaboration.cmc.ec.gc.ca/science/rpn/biblio/ddj/Web...](http://collaboration.cmc.ec.gc.ca/science/rpn/biblio/ddj/Website/articles/DDJ/1989/8907/8907e/8907e.htm)

------
oaiey
The strategic, non language focused thinking here is amazing. Tooling is a
very important topic for modern compilers. The modern language servers and
supreme support for Typescript and C# in any editor is a core result of this
work.

However, it could only achieved because MS financed a redo of the compiler.
Instead of keeping the original.

------
simonebrunozzi
Not 100% related, but in 2004-2006 I was an entrepreneur in Italy, AND a full
professor at a local university, teaching "Compilers and Programming Languages
Lab" to students only a few years younger than me.

For some reason, the budget for a full professorship (not permanent, but only
1-year long) was meager, I think it was ~1,600 Euros for the whole year. As a
consequence, the usual corrupted nominations didn't happen for this one, and I
ended up being selected among one or two other candidates with a similar
curriculum as mine (which, to be honest, wasn't particularly strong on
Compilers stuff).

When I found out I was assigned that professorship, few weeks before the start
of the course, I spent time preparing the material and studying a lot more, as
I felt my preparation needed some beefing up.

The text book, the (in) famous Dragon book, was available only at 150 Euros,
more than 4 times the average cost of a textbook back then, and it contained
way too much information for that course. I then decided to create content
specific for that course, and to release it with a creative commons license.

It was the first time in that University (year 2004) that a professor released
content under Creative Commons, and that content was available online, and
that it was free.

I might not have been the best professor on the planet, but I felt really
proud of that. The beauty of internet is that, 14 or so years later, you can
still find that content somewhere [0].

I gave hundreds of hours to teaching, only for pennies, and I'm still very
grateful for that opportunity in my life.

End of the story (assuming you're curious now) is that two years later a
proper budget was allocated, and of course I was not renewed. Someone with
much more political clout and influence was selected, as it usually happens in
Italy.

I decided that the academic world was not for me. I pursued a career in the
private sector, and 2-3 years later I landed a job at Amazon Web Services, and
left Italy. [1]

Ten years later, I know for sure that being an academic would have not made me
happy. I would have not been able to stand the bureaucracy, or the defined and
determined career path.

I wish, though, that I had the opportunity to teach someone a bit closer to my
passions (e.g. Databases). That's a little regret left in me :)

[0]: [http://www.lulu.com/shop/simone-brunozzi/dispense-lab-
lingua...](http://www.lulu.com/shop/simone-brunozzi/dispense-lab-linguaggi-di-
programmazione-e-compilatori-informatica-
unipgit/paperback/product-484250.html)

[1]: [http://brunozzi.com/2008/05/22/how-i-got-hired-by-
amazon.com...](http://brunozzi.com/2008/05/22/how-i-got-hired-by-amazon.com/)

~~~
zerr
It would be nice to have similar "specific" content for Databases
(implementation, I assume) as well... ;)

~~~
simplyinfinity
Here you go :
[https://www.youtube.com/channel/UCHnBsf2rH-K7pn09rb3qvkA](https://www.youtube.com/channel/UCHnBsf2rH-K7pn09rb3qvkA)

:)

~~~
zerr
Looks great! Do you know if this is (or maybe some other course) more project
based approach, where at the end of the course you have e.g. SQLite-ish ACID
compliant system completed?

~~~
jeffreyrogers
I know for the advanced database course the students end up writing a new
feature for an existing database called Peloton, which is a research project
at CMU[0]. You obviously aren't writing the whole thing from scratch though.

[0]: [https://github.com/cmu-db/peloton](https://github.com/cmu-db/peloton)

~~~
zerr
The non-advanced one - intro, seems like a good fit - and you also get to
implement a custom storage for SQLite.

