3 ms·
That is akin to saying using a GC is giving up on safe memory allocation, and the borrow checker is the only solution to a complex problem. Exceptions are handl
by nromiun 1y ago
That is akin to saying using a GC is giving up on safe memory allocation, and the borrow checker is the only solution to a complex problem. Exceptions are handled gracefully in real world projects as well, otherwise Python, Java etc would have died a long time ago.
- csullivannet 1y agoMaybe this is my Golang dev leaking, but I intuitively thought that `try: / except:` in Python is essentially the same thing as `if err != nil`, just my IDE doesn't scream at me if I don't catch them.
- tcfhgj 1y agoMaybe you are not giving that up, but you are giving up doing memory management "properly", i.e. use more memory and CPU time than necessary for convenience.
- nromiun 1y agoLike writing only in assembly is "proper" programming? Using more memory and CPU time than necessary for convenience?
- tcfhgj 1y agosystems programming languages compile right down to machine code
- nromiun 1y agoBoth borrow checker and GC use malloc/free internally as well. According to you there is no difference between the two.
- tcfhgj 1y agoyes, there is: GC will not use stack allocation and it will add another layer of memory management resulting in significant memory overhead (runtime overhead)
- nromiun 1y agoOf course they do. For example C#, D, Nim etc all use stack allocation with their GC. Not to mention Rust also allocates dynamic objects on the heap. So not sure what is your point.
- tcfhgj 1y agoThe language may allow it, but it's not GC managed then. My point is runtime overhead. In C# structs and their refs (including a simple borrow checker to detect invalid ref use) were introduced to escape GC management und reduce it's runtime impact on the programs