Dynamic types make sense for newbie-friendly web languages like Ruby and stuff like bash/zsh or support languages like Lua is to game development... but I really don't see the downside to adding types for anything outside of that.
It's really not that much of a learning curve nor does it result in a significant amount of boilerplate.
People may believe static types are a drag from using Java or C++ but if you look at modern languages like Golang or typed Erlang/Elixir or Kotlin...it really isn't that bad at all. You don't even need to go hardcore with types the way Haskell does to get most of the safety gains.
It actually provides lots of useful abstractions to make your code more efficent, it makes it easier to read (especially for others using your code), and makes using standard libraries easier to use by just reading the type specs.
So I'm really curious what the motivations were here.
I agree with you! Yet, looking at Node, JS has sorta taken off. And so has Ethereum, despite the poorly designed languages. Maybe they should have done one proper language, then a toy language to make it easy onboarding?
In the end, the Ethereum folks have achieved wild financial success, even if not in the realm of making smart contracts usable. After seeing shitty coding make people independently wealthy many times over, I'm slow to be too harsh on poor technical decisions. Perhaps a more rigorous language would have deterred a few people that turned out to be key in making Eth take off?
OTOH, criticising poor technical skills of billionaires gives me one reason to feel superior to them, so I'll probably continue to do it.
Their wild financial success is based on scamming gullible people into investing in Ponzi schemes. not one ethereum based enterprise has actually produced a product that people are using.
Agreed - even though it's a bit of a learning curve, static typing helped me make more sense of what I was doing - I had to learn it with Swift and I really like (and think it's good for beginners) that there's this layer of 'guidance' integral to the language.
It's really not that much of a learning curve nor does it result in a significant amount of boilerplate.
People may believe static types are a drag from using Java or C++ but if you look at modern languages like Golang or typed Erlang/Elixir or Kotlin...it really isn't that bad at all. You don't even need to go hardcore with types the way Haskell does to get most of the safety gains.
It actually provides lots of useful abstractions to make your code more efficent, it makes it easier to read (especially for others using your code), and makes using standard libraries easier to use by just reading the type specs.
So I'm really curious what the motivations were here.