• 4 Posts
  • 460 Comments
Joined 2 years ago
cake
Cake day: April 27th, 2023

help-circle





  • The borrow checker

    This is indeed pretty unique.

    the way it handles exceptions and nulls

    This is really just the fact that Rust has sum types - but those kinds of types have been used in many functional languages (Haskell for example) for a long time.

    the way it handles stack/heap

    This is just the same as C and C++ and any other low-level language that requires you to distinguish between the stack and heap.

    composition pattern instead of oop

    I mean if you’re only looking at OOP languages then this will be new, but functional languages have done this for a long time.

    So yea, I think a big part of what makes Rust great is that it has managed to take these really, really good ideas from functional programming languages and made them work in a language that is not entirely functional. This leads to a perfect blend/best of both worlds with regards to OOP and functional programming :)






  • If there is anything I’ve learned in my 10+ years as an engineer, it’s that there are no good or bad languages, just pros and cons of each in different applications.

    I dunno if I agree really - the more languages I’ve learned, the more I see an evolution from less sophisticated, less usable languages to more sophisticated, more usable, modern and just generally better languages.

    C and C++ are old, and you can tell. There’s so much complexity and legacy in those languages that it’s crazy. But it’s not just legacy - it’s also bad design choices. There’s a lot of really bad APIs and bad usability and footguns everywhere. You see the same thing in languages like JavaScript (whose design journey has been fraught with peril). Even Java has some bad stuff I would say, mostly from the overzealous insistence on OOP.

    However, if you look at some modern languages that were more deliberately designed, you really start to see how they are just intrinsically better. Python, while still being a dynamically typed scripting language which I would never use for large systems, is still leagues better than JavaScript in terms of design and usability I would say. Haskell was born from research and you can really tell - the language just makes sense in a very scientific way - although that does mean ease of use and developer experience has not always been the priority.

    Rust was developed for a very particular purpose, basically to provide the same speed as C++ but without any undefined behavior. From that design principle, a lot of good has resulted and Rust is basically an objectively better language than C++. The only thing still keeping C++ in the game is the historical reasons, just due to the sheer amount of code that exists out there in C++. C++ has more support in all kinds of places, but that’s just due to history and Rust will likely gain ground soon enough. For instance, C++ still rules for game development, but this could change within the next 5 or 10 years.

    It’s not that surprising when you think about - languages like Python, Haskell and Rust were built on the giant pile of experience the whole industry has amassed from using previous languages. It also helps that we just have more computing power today to make languages like Rust feasible. Rust compile times probably wouldn’t have been realistic 30 years ago.