The Move Programming Language
move-language.github.io
move-language.github.io
Where is this 'Diem' blockchain? I can't find this anywhere or use it at all, so this essentially means that there is no use case for this language.
The amount of time we are wasting on blockchains can be directed toward other meaningful endeavours such as climate change, privacy friendly tech and technologies that push humanity forward.
This however is a spawn of a failed project that isn't even used in any production capacity and is a complete failure.
[1] https://sui.io/
As a simple for instance, integer overflow aborts. You can quibble with whether that's exactly what it should do (especially since it seems aborts can't be recovered, which means a contract that starts aborting is basically dead?), but in a blockchain contract what it definitely shouldn't do is simply wrap around without any error or signal or something that says "hey, this is pretty suspicious".
Not endorsing this, haven't studied it that deeply, but it at least passes the "does scanning over it reveal a ton of problems immediately?" test.
If only Solidity worked that way. But I guess databases weren't an important thing to study.
Personally, if I were writing a serious language like this I'd consider turning all + operations into things that return two results, one for the result and one for if it succeeded. Do it Go-style, do it with a Result type, I don't much care. The point is just that in the context of something like this, bringing it to the programmer's attention that + is not a safe operation on every usage is probably worth it. I reluctantly concede it is overkill in normal languages, but if there is ever a time to bite that bullet and make them do a full Result-style unpacking on every arithmetic operation, it's here.
I didn't see anything about formal verification in the rest of the documentation. Does it have dependent types? Does it have a model checker? Does it have anything that would allow me to verify mathematical properties of my code?
> Move makes resources a first class primitive in the language, and enforces many invariants useful for scarce values
The key attribute of Cryptocurrency token (and money, in general) isn't that they are scarce, they are rivalrous. Arbitrary groups of people can't "use" them at the same time.
Coming to find out it's just some crypto drivel was a huge let down.
Bad : Go, Rust
Good : Zig, Javascript