This is one of my favorite things about type systems. It allows people who are fairly average programmers (like me) to do really smart and clever things that we’d normally never be able to pull off, with no impact on the runtime performance of our software.
Of course, a sufficiently smart C++ programmer could get this right first time every time. Frankly I’m kinda in awe of people who write things like GHC’s runtime system, or the Linux kernel in such hostile environments. But I’m not them.. more over, I don’t want to invest 15+ years in becoming them!
Types aren’t about being cleverest person in the room, they’re about standing on the shoulders of giants to seem clever.
My friends in college used to say that they did operating systems research because it was easier than web development: I know exactly what instruction set works on this hardware, and as an OS, I control every detail. Embedding a scripting language and a style language inside a markup language and then sending it via layered protocols to somewhere on the other side of the world, to something with a completely different kind of computer, and expecting it to work properly is way, way too complex to get right.
This is one of my favorite things about type systems. It allows people who are fairly average programmers (like me) to do really smart and clever things that we’d normally never be able to pull off, with no impact on the runtime performance of our software.
Of course, a sufficiently smart C++ programmer could get this right first time every time. Frankly I’m kinda in awe of people who write things like GHC’s runtime system, or the Linux kernel in such hostile environments. But I’m not them.. more over, I don’t want to invest 15+ years in becoming them!
Types aren’t about being cleverest person in the room, they’re about standing on the shoulders of giants to seem clever.
One day, you’ll realize that they aren’t really giants. A lot of this stuff isn’t as hard as people think that it is.
My friends in college used to say that they did operating systems research because it was easier than web development: I know exactly what instruction set works on this hardware, and as an OS, I control every detail. Embedding a scripting language and a style language inside a markup language and then sending it via layered protocols to somewhere on the other side of the world, to something with a completely different kind of computer, and expecting it to work properly is way, way too complex to get right.