(no title)
spenrose | 2 months ago
9. Python got lucky that its inevitable screwups (Python3) didn’t quite kill it.
10. Swift and Kotlin both define programming as serving the compiler (specifically LLVM) rather than serving the coder’s problem. (I haven’t discussed Rust so far since it isn’t attempting to compete with 98% of Python use cases, but if you squint you can see it as going one step further than Swift and Kotlin and in effect forcing the coder to be a sort of human compiler who thinks in types and memory management. This is not a criticism of Rust, BTW.)
0. And behind all of this is Moore’s Law and the demographic explosion of programmers. Python was an implicit, perhaps unconscious bet that if you served people thoughtfully, the tradeoffs with serving the needs of contemporary silicon wouldn’t matter as much.
spenrose|2 months ago
eesmith|2 months ago
As he described it:
"But after that first year [of college], it turned out that the real math I wasn’t particularly good at. And I think there were some great teachers at that university and some super cool topics being taught. And I couldn’t keep up. I remember something about a particular form of group theory. And I knew—and a few other students who were like, “Oh, you’ve got to go do graph theory, or group theory.” And I was like—it went way too fast. And I suddenly realized I didn’t have the skills to keep up with those topics. But in the meantime, starting almost from my first month I entered the math department, I had been learning to program because they had I think one of the first-year undergraduate courses was programming in Pascal."
Quoting from 'Oral History of Guido van Rossum', https://www.computerhistory.org/collections/catalog/10273871...
qcnguy|2 months ago
spenrose|2 months ago
bb88|2 months ago
The slow parts of your python program can be rewritten in rust or C, your choice. So refreshing.
ethbr1|2 months ago
It didn't try to be everything (high performing, compile-time static typing) to everyone (novice, intermediate, expert, academic).
It instead made it easy to solve critical needs (e.g. highest performance hot code) by interoperating with an existing solution that did them well.