Video wird geladen...

Video konnte nicht geladen werden

Zur Startseite

Anders Hejlsberg (Anders Hejlsberg) is a living legend: he created Turbo Pascal, Delphi, C# and TypeScript (and today TypeScript is the most-used programming language, globally, as per GitHub.) Timestamps: 00:00 Intro 02:48 How Anders got into programming 05:40 Building his first compiler 07:44 Turbo Pascal 12:25 Delphi 14:53 Joining...

128,953 Aufrufe • vor 1 Monat •via X (Twitter)

0 Kommentare

Keine Kommentare verfügbar

Kommentare vom Original-Post werden hier angezeigt

Ähnliche Videos

Why did so many languages copy async/await from C#? Anders Hejlsberg(Anders Hejlsberg) - creator of TypeScript, C# & Turbo Pascal - on what they got right with the design: #1 - async/await was designed to solve a common problem in the event-loop model: "A lot of languages are built around cooperative multitasking in the sense that they have an event loop that sits and dispatches events. Then you handle the event and then you yield back to the event handler loop. And it all runs in a single thread cooperatively. The problem with that is if you then want to do some long running work: how do I stop in the middle of this piece of long running work and yield back to the event loop cooperatively? And then when my result is ready, I can come back and continue executing here." #2 - state machines are the solution, but hard to build: "Well, in order to do that in an inverted architecture like that, you have to build a state machine. State machines are notoriously hard for people to implement because you've got to move all of your state off of the stack into objects. And then you have this big case statement that envelopes your entire logic. It's a nightmare to figure out. But, the transformation from serially executing code into a state machine, its continuation-passing-style translation is actually one that you can do in a machine-based fashion." #3 - compilers are good at writing state machines: "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. Await is basically saying, I want to yield here, and I want to yield this promise, and then when the promise completes, I want you to come back here and continue executing. Then the compiler writes a state machine around it and it actually turns it into this big switch statement and moves all of the state that survives across the await into something that's heap allocated. So it can be brought back. And doing all of that work is something that compilers are great at. And so that was sort of the idea that we have this new style of programming where we're using promises or the equivalent of promises and the ability to yield and then we have callbacks. But trying to write your program in that style, that's also what JavaScript suffered from a lot. It's like all this callback style stuff. With Async and Await, you get the illusion that you're just writing normal sequential code and then the compiler does the painful transformation for you. That turns out to be really useful."

The Pragmatic Engineer

13,258 Aufrufe • vor 24 Tagen

AI is changing the software engineering craft. Anders Hejlsberg (Anders Hejlsberg) - creator of C#, TypeScript and industry legend - on why code review needs to get more enjoyable in response: #1 - AI is shifting the craft from writing code, to reviewing code: "In a sense, we're all turning into project managers. 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 reviewing the code and building the architecture of the code and overseeing the work. It's a different kind of craft. It's a different kind of enjoyment. I've always liked writing the code. To me that was the fulfilling part, seeing it work. In a way, AI robs a little bit of that, because I am less interested in reviewing code." #2 - The code review experience should be improved: "I think we could also make the process of reviewing code much more interesting than it is today. I mean, today, you see a list of diffs in alphabetical order and now it's up to you to make heads or tails of it. There are more pedagogical ways of presenting that. And you could have commentary generated by the AI that tells you what the changes are and whatever, and then tries to guide you along. So that symbiotic relationship, I think we need to work on that more and to keep the enjoyment in there."

The Pragmatic Engineer

39,011 Aufrufe • vor 1 Monat

Why is Rust different than many/most programming languages? Alice Ryhl works on Google's Android Rust team, is a Rust language team advisor, and is a core maintainer of Tokio (the most widely-used async runtime in Rust) Timestamps: 00:00 Intro 04:09 Tokio: an overview 05:11 What Alice likes about Rust 12:48 Rust for TypeScript engineers 13:51 Moving from C++ to Rust 14:34 Memory safety 18:12 Garbage collection tradeoffs 21:46 Ownership, references, and borrowing 26:59 Unsafe in Rust 31:21 Crates and Cargo 35:55 Language design and RFCs 43:02 Building new features 46:30 Editions vs. versions 49:47 Getting paid to work on Rust 51:27 Contributing to Rust 53:03 Rust in the Linux kernel 55:45 AI use cases for Rust 1:01:35 Learning Rust 1:03:54 Book recommendation Brought to you by: • Antithesis – verify your system’s correctness without human review or traditional integration tests – and avoid bugs or outages. • Sentry – application monitoring software considered “not bad” by millions of developers Three things worth knowing about Rust: 1. Rust was designed to turn implicit failures into compile errors. Where other languages allow you to forget something, Rust makes an omission into a compilation error for things like null checks, uninitialized variables, or error propagation with the ‘?’ character. If you mess something up, it’s almost certain your program will not compile. If it does, at the very least you should see a lint warning. 2. Refactoring in Rust is safe and easy, thanks to the compiler. Alice: “I change a return type or struct field, then just fix the compiler errors until the compiler stops shouting. And then once I’ve done that, I’ve updated every place I need to update.” Rust’s focus on correctness makes refactoring it more straightforward than dynamically-typed languages and Java-style typed ones are to refactor. 3. “Editions” allow Rust to make breaking changes without ‘breaking’ anyone’s code. Rust editions (2015, 2018, 2021, 2024) can be mixed freely across crates. A library on the 2021 edition works seamlessly with a binary on the 2024 edition. This is how Rust evolves syntax (like adding async/await as keywords) without forcing an ecosystem-wide migration. Thanks a lot, Alice for this great discussion! And for your work on Rust.

Gergely Orosz

51,575 Aufrufe • vor 1 Monat

There are few people who have impacted the software engineering industry like Kent Beck 🌻 has. He'd never before told his career story from start to today in one sitting - until now. What a treat. Timestamps: 00:00 Intro 03:47 Human engineers aren’t going away 08:00 Kent's path into tech 13:50 Undergraduate and graduate studies 17:21 Kent’s first programming job 18:54 The rise and fall of Smalltalk 27:04 Working with Ward Cunningham 37:36 Design patterns 44:05 Working at Apple 51:08 CRC Cards 59:29 Testing tools in the language 1:04:22 The C3 project with Martin Fowler 1:09:54 Extreme Programming 1:16:25 Developing TDD 1:25:07 Writing the Agile Manifesto 1:30:00 Agile’s impact 1:32:40 Agile’s downside 1:37:32 The Dotcom Bust 1:44:30 Lessons from working at Facebook 1:59:44 Kent’s ‘Good to Great’ program at Facebook 2:06:07 Soft skills engineers need to learn 2:09:30 AI and the challenges of acceleration 2:15:53 Explore, expand, extract 2:22:33 What Kent is excited about Brought to you by: • Antithesis – verify your system’s correctness without human review or traditional integration tests – and avoid bugs or outages • turbopuffer – a vector and full-text search engine built on object storage. It’s fast, cheap, and extremely scalable • WorkOS – everything you need to make your app enterprise ready Kent shared so many previously untold stories - like how he was fired from Apple (!!), how he and Ward Cunningham used a thesaurus to find the right words, how the Agile Manifesto came together. My favorite reflection from is this though: The human part is the most important one in software engineering. As Kent explained: “This is the biggest cosmic, practical joke ever. As young people, we were promised: “Okay, here’s this computer and once you’ve completely understand this computer, you’ll be fine. That’s all you need to do.” So I set out the first part of my career just to become the best programmer that I could be because that’s what it would take to be successful. And then you realize: sorry, there’s this whole human side. Your ability to affect change in the world is gated by your ability to communicate with, to soothe, to understand other human beings. And those are exactly the skills that I thought I didn’t need to learn! So I was promised: just understand the computer and you’ll be successful. And then someone went “just kidding, understand people!” And now I was in a position of being ten years behind.”

Gergely Orosz

26,364 Aufrufe • vor 9 Tagen