korrents

korrents · The Pragmatic Engineer Podcast

TypeScript, C# and Turbo Pascal with Anders Hejlsberg

Anders Hejlsberg · 1h 16m · youtube.com

26 korrents from this recording

1h
Anders Hejlsberg did not write this page.

Every claim below is a statement made in this recording, quoted word for word and linked to the second it was said, so you can hear it rather than take our word for it. The wording comes from the transcript published alongside the recording; the sentence above each quote is our reading of the claim, not their wording.

  1. 0:09:10 · watch on youtube.com

    That was always the idea, and that that goes back even to the predecessor of Turbo Pascal, this idea that it's not just a compiler. It's an experience, right? I mean, you don't just compile your programs. You also edit them. You also run them. You also debug them. You also have a runtime library. It all has to like fit together.
  2. 2 min later
  3. 0:11:17 · watch on youtube.com

    It was just better than all the competition. It was faster. It was smaller. Um it was more interactive and it was also cheaper. So, it was like 10 times better at a tenth of the price of the of the competition, right?
  4. 6 min later
  5. 0:17:39 · watch on youtube.com

    And so, we kind of realized at that point, too, that maybe it's not a great strategy to to place your your development platform bet on on technology that's licensed from a competitor.
  6. 2 min later
  7. 0:19:49 · watch on youtube.com

    Well, like I said, I mean the the overarching thing was this: power and productivity of C++ with the ease of use of Visual Basic in a sense, right?
  8. 2 min later
  9. 0:22:03 · watch on youtube.com

    I think early on we decided that we want to have a team of people design this language, not just one.
  10. 1 min later
  11. 0:22:41 · watch on youtube.com

    And quite honestly, language design is 90% the same and 10% new for for pretty much every language. Every language you build still has to have a compiler. Compiler is still built in a pretty much the same way.
  12. 1 min later
  13. 0:23:43 · watch on youtube.com

    And everyone was cognizant of okay, if someone comes up with a new idea, now it's our job to try to shoot it down. What What's wrong with this idea? Do Do you know what I mean? And if it could go if it could stand the the test of of that, then it was probably a decent idea.
  14. 7 min later
  15. 0:30:51 · watch on youtube.com

    You can have the compiler write the state machine. If you introduce syntax that allows you to indicate where you want to yield. And that's what await is.
  16. 2 min later
  17. 0:33:05 · watch on youtube.com

    So that's unfortunate, and that's why some environments like Go, for example, has has Go routines and green threads, which are really language emulated lightweight threads that kind of do what I'm talking about, but but at a much lower cost. But you avoid the function coloring. So there is a bunch of different things, but but you know, but for an environment that already exists like JavaScript or like C# and and the Windows event loop and and whatever, this this was the right solution.
  18. 2 min later
  19. 0:34:51 · watch on youtube.com

    but lo and behold, they all run browsers with JavaScript in it. Lo and behold, the real cross-platform language isn't Java. It's JavaScript.
  20. 1 min later
  21. 0:36:15 · watch on youtube.com

    I mean, surely you're not going to be best of breed in the JavaScript ecosystem by telling people to write in a different programming language.
  22. 1 min later
  23. 0:36:58 · watch on youtube.com

    we knew from experience that you cannot build good tooling without a type system. You can build decent tooling, but it's never going to scale. It's never going to scale to large teams cuz you can't describe your intents in in the code.
  24. 2 min later
  25. 0:38:34 · watch on youtube.com

    And we we full well knew that there was absolutely zero chance that we would appeal to the JavaScript ecosystem with a proprietary programming language licensed from Microsoft. No. No one was going to come. It had to be open source. There was just no two ways about it, right?
  26. 1 min later
  27. 0:39:42 · watch on youtube.com

    You know, there's open source and there's open development. And and and we were technically open source in the beginning, but it was not open development. We would sort of lob the source code out in this repository and scrape the issues off of that and put it into our internal issue tracker.
  28. 2 min later
  29. 0:41:24 · watch on youtube.com

    And the reason they came, I think, is absolutely because of the the better tooling. And I think we were totally right there that like adding a an erasable type system and then using that to enable great tooling is really where the pro where the programmer productivity boost is realized.
  30. 6 min later
  31. 0:47:36 · watch on youtube.com

    And so everything is lazy and deferred and functional and reusable inside the compiler. And it's a very different way of writing compilers than than what the textbooks will traditionally teach you.
  32. 3 min later
  33. 0:50:19 · watch on youtube.com

    The thing that makes it interesting, I think, and and unlike pretty much any other programming language is the gradual typing. This This notion that you can have types, but you don't have to have types.
  34. 2 min later
  35. 0:51:52 · watch on youtube.com

    So, if we're checking 99% instead of 100%, well, heck, that's better than the 0% that JavaScript checked, right? And it gives you like language features that no other languages can provide because they can't get to 100%.
  36. 5 min later
  37. 0:56:24 · watch on youtube.com

    that the language that's most suited for AI is the language that AI has seen the most of in its training set, right? And that's why you could argue AI does really well on JavaScript and TypeScript and Python because it's seen an awful lot of it
  38. 1 min later
  39. 0:57:21 · watch on youtube.com

    because if you were to force AI to write a type annotation on everything, then it would probably get it wrong more often because now it has to keep track of all these types and and it and it has to just repeat itself over and over and over, right? And so, types are important where there's no context.
  40. 1 min later
  41. 0:58:33 · watch on youtube.com

    I mean, you could argue that we we're already past peak truth on the on the on the internet, right? And now there's there's just more and more garbage every every day. It gets harder and harder to suss out the stuff that you do want to include in the training set in order to actually make something more intelligent.
  42. 1 min later
  43. 0:59:32 · watch on youtube.com

    but but if you have good locality where you you clearly stating what you're importing and whatever and and you can analyze just a single source file and from that extract its protocol to the outside world without having to to know anything deeper. Do you do you know what I mean? I think those are important aspects just simply to reduce the size of the of the of the context window and also make it easier to summarize each module in a program, right?
  44. 1 min later
  45. 1:00:58 · watch on youtube.com

    AI today it's just starting to to become aware of you know the existence of of of language services and agents today like to use grep and awk and whatever you know to to find all the places where you reference a certain thing but it's not semantic search, right?
  46. 2 min later
  47. 1:03:11 · watch on youtube.com

    In a sense, we're all turning into project managers, right? And and we can have an army of junior programmers called agents that will just spit out reams of code, but someone's got to have the big picture and review all of that. And so, increasingly our craft is going from one of writing the code to one of of reviewing the code and and building the architecture of the code and overseeing the work, if if you will.
  48. 2 min later
  49. 1:05:00 · watch on youtube.com

    And ultimately also, you know, the responsibility for a program does not lie with the AI. It lies with the programmer.
  50. 7 min later
  51. 1:12:21 · watch on youtube.com

    But but the thing is like doing programming languages, you come to realize it's a long play. I mean, if if you look back at the the stuff I worked on, it it it goes in 10-year cycles at least. And TypeScript didn't really, for example, or C# for that matter. I mean, it took it it takes 10 years to get to, you know, version one is great, but it has all sorts of issues, and then you got to do version two, and then it's not until version three that it really starts to be great.