I’ve become parent recently and I’m on parental leave for some time. It has been full of joy, exhaustion, confusion, awareness and loving experience. I’m grateful that I’ve got time to be with my wife and our newborn son. A perk of parental leave is boredom. Embracing boredom has great benefits for mind as mental health psychology suggests. Moreover, low dose of social media helps put things in perspective.
I’ve been passionately opposing C/C++ in my mind, mainly due to language ugliness. Previously, I wrote a post about C/C++ vs. Rust, gathering some resources denouncing C++ and praising Rust. However, 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.