wow, that is too much effort for a 7-year-old’s Minecraft server ;) Very impressive
How Rust avoids GC overhead using it’s “borrow” system:
Rust achieves memory safety without GC by using a sophiscated borrow system. For any resource (stack memory, heap memory, file handle and so on), there is exactly one owner which takes care of its resource deallocation, if needed. You may create new bindings to refer to the resource using & or &mut, which is called a borrow or mutable borrow. The compiler ensures all owners and borrowers behave correctly.
Actually, I’m really agreeing with a lot of this. Particularly this part:
Programmers will cringe at writing some kind of command dispatch list: if command = “up”: up() elif command = “status”: status() elif command = “revert”: revert() … so they’ll go off and write some introspecting auto-dispatch cleverness, but that takes longer to write and will surely confuse future readers who’ll wonder how the heck revert() ever gets called. Yet the programmer will incorrectly feel as though he saved himself time. This is the trap of the dynamic language. It feels like you’re being more productive, but aside from the first 10 minutes of a new program, you’re not. Just write the stupid dispatch manually and get on with the real work.I’ve also gone right off dynamic languages for any kind of non-toy work. Mind you he needs to get around to ditching Vim for a proper IDE. That’s the key thing that makes coding in a statically-typed language really pleasant — when graphical refactoring becomes easy and usable, and errors are visible as you type them…
whoa, this is incredibly in-depth