This is one of those things like a trick picture where you can’t see it until you do, and then you can’t unsee it.
I started with C/C++ so typing was static, and I never thought about it too much. Then when I started with Python I loved the dynamic typing, until it started to cause problems and typing hints weren’t a thing back then. Now it’s one of my largest annoyances with Python.
A similar one is None type, seems like a great idea, until it’s not, Rust solution is much, much better. Similar for error handling, although I feel less strongly about this one.
I usually take these holiday weeks off to learn a new language or framework, and started to take a peek into Python, I had it on the back burner way too long. Got to the dynamic variable types and my heart sunk… I couldn’t continue.
Honestly modern python is not that bad because of the typing hints and checks you can run on them nowadays. Also it’s worth noting that python has very strong types, so it’s not illy willy magical types, and while it is possible to use it like that it’s normally not encouraged (unlike other languages).
That being said, if you haven’t learnt Rust I strongly encourage you to read the book and go through the rustling exercises. Honestly while still a new and relatively nieche language, it fixes so many of the issues that exist in other languages that I think it will slowly take over everything. Sure. It’s slower to write, but you avoid so much hassle on maintenance afterwards.
Coming from a background where all the datatypes are fixed and static (C, PLCs) it took me so very long to get used to python’s willy nilly variables where everything just kinda goes, until it doesn’t. Then it breaks, but would’ve been fine if we just damn knew what these variables where
No it’s not, they’re completely different concepts. In C/C++ lingo Dynamic typing is having every variable be a void * whereas type coercion is implementing conversion functions for your types to allow casting between types, e.g. having a temperature class that can be casted to a double (or from it).
This is a function with dynamic typing and no type coercion in C/C++:
I’m making a Star Wars joke based on a typo. I know what type coercion is. The joke is that dynamic typing is corroded and disgusting to me. The Star Wars reference being Anakin saying from his perspective the Jedi were evil.
It was a typo, but I also wanted to add that type coercion is not dynamic typing, the coercion can be done statically during compile time, so it could not be the 2nd one, even if it wasn’t a typo
Dynamic typing sucks.
Type corrosion is fine, structural typing is fine, but the compiler should be able to tell if types are compatible at compile time.
This is one of those things like a trick picture where you can’t see it until you do, and then you can’t unsee it.
I started with C/C++ so typing was static, and I never thought about it too much. Then when I started with Python I loved the dynamic typing, until it started to cause problems and typing hints weren’t a thing back then. Now it’s one of my largest annoyances with Python.
A similar one is None type, seems like a great idea, until it’s not, Rust solution is much, much better. Similar for error handling, although I feel less strongly about this one.
I usually take these holiday weeks off to learn a new language or framework, and started to take a peek into Python, I had it on the back burner way too long. Got to the dynamic variable types and my heart sunk… I couldn’t continue.
Maybe I should take a third attempt at Rust.
Honestly modern python is not that bad because of the typing hints and checks you can run on them nowadays. Also it’s worth noting that python has very strong types, so it’s not illy willy magical types, and while it is possible to use it like that it’s normally not encouraged (unlike other languages).
That being said, if you haven’t learnt Rust I strongly encourage you to read the book and go through the rustling exercises. Honestly while still a new and relatively nieche language, it fixes so many of the issues that exist in other languages that I think it will slowly take over everything. Sure. It’s slower to write, but you avoid so much hassle on maintenance afterwards.
i hadn’t heard of the rustlings before. looks neat, might be what i need to finally learn rust properly
Coming from a background where all the datatypes are fixed and static (C, PLCs) it took me so very long to get used to python’s willy nilly variables where everything just kinda goes, until it doesn’t. Then it breaks, but would’ve been fine if we just damn knew what these variables where
Now my brain just goes “it’s all just strings”
Dynamic typing does kinda smell like primitive obsession, now that you’ve brought it to my attention lol
Do you mean type coercion?
Dyac
From my perspective, dynamic typing IS type corrosion!
No it’s not, they’re completely different concepts. In C/C++ lingo Dynamic typing is having every variable be a
void *whereas type coercion is implementing conversion functions for your types to allow casting between types, e.g. having a temperature class that can be casted to a double (or from it).This is a function with dynamic typing and no type coercion in C/C++:
int foo(void* param) { Temperature* t = (Temperature*) param; return t->intValue() + 10; }This is the same function with type coercion and no dynamic typing in C/C++:
int foo(Temperature& t) { return t + 10; }I’m making a Star Wars joke based on a typo. I know what type coercion is. The joke is that dynamic typing is corroded and disgusting to me. The Star Wars reference being Anakin saying from his perspective the Jedi were evil.
Type coercion = Allow types to be converted to other types automatically to perform some operations like comparison.
Type corrosion = some non-standard condescending term to say that dynamic typing has no proper rigid types?
It was obviously a typo
It was a typo, but I also wanted to add that type coercion is not dynamic typing, the coercion can be done statically during compile time, so it could not be the 2nd one, even if it wasn’t a typo
Its not possible to have objects that are statically typed.
What are you talking about? What do you think C/C++/Rust/Java do?
Wut
YESSSSSSSSSSSSS. You are so valid for this. Static typing is so so so so so useful.