Collaboration era: C/C++ “+” Rust

Previously, I wrote a post about C/C++ vs. Rust. Despite all the goodies and features in Rust, when it comes to my line of work and interest i.e. ML/DL and Systems, Rust hasn’t been able to deliver what I hoped it would. There’s just too much work being done at the language level itself and basically nothing in my areas of interests. Yes, sadly, I don’t consider any of the Rust effort I outlined in State of ML in Rust post as really significant. That is, if non of them existed, it would change anything from practical point of view, but the efforts were nice and admirable!

One big Rust issue is the lack of funding which is pretty much non-existent when comparing 10 year old Rust language (5 years out of 1.0 as of this year) and 30+ years of C++ history in Scientific Computing area only (umbrella term for ML, Systems, Math Optimizations, etc.). Due to recent events at Mozilla, Rust team is trying to figure out the way forward by creating the Rust foundation and hoping for the best. Another thing, Rust is trying to be so careful to do things correctly which is great but as a result I won’t see Rust to have a say (at least for the next 10 years or so) when it comes to serious Scientific Computing applications at this development speed. On the other hand, I think having C++ and Rust in one’s arsenal will become A factor (I’d encourage learning C++ after learning Rust not before!). Also the effect of one language to the other in terms of collaboration and inspiration is fascinating. For example, C++ static analyzers inspirations from Rust and a lot of new features and improvement that make me confess that I like C++20. It is finally becoming a nice language!

After all C++ continues to be the critical language for high performance, heterogeneous computing. Take nvc++ -stdpar and sycl as some important examples. Rust memory safety restrictions just sometimes is not really relevant to the problems in my domain.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.