Portability: Rust - Go Comparison

,

Sure, I kind of agree, but these tiers of support make things more complex than they should and they also don’t inspire much confidence in me at least. If you tell me “it can compile on platform X” then I don’t expect any exceptions to that. Looking at C and C++'s histories clearly shows that when you start making such fragmented guarantees things spiral out of control. You end up with the committee throwing their hands in the air and having 50+ places in the docs saying “undefined behaviour, sorry”.

However, Go might not guarantee everything on every platform as well (haven’t checked in details).

In my eyes that’s a good thing and not a weakness. Managing complexity and fragmented promises is a constant mental uphill battle and many people’s experiences in IT – mine included – demonstrate that somebody inevitably makes a mistake that then a ton of other people are stuck almost forever with. Why not stick to opinionated languages like Elixir and Go that remove a huge chunk of this mental overhead right from the start? That’s a clear win. We’re not machines, we’re humans and mistakes are a given. The less possible error surface the better! (This also goes in favor of the static typing, of course – which Go, strictly speaking, doesn’t have.) “Less possibility for mistakes” should be an universal “shall we try this tech?” criteria IMO.


That being said, I am glad Rust aims to displace C from microcontrollers. It’s about damn time it got competition there. I would be even more glad if languages like Go and OCaml can get so hyper-optimized that they can work there as well!


Another thing. I am not well-informed but I’ve heard from people that Rust is already suffering from C++'s syndrome of “here, have 20 ways to achieve the same thing” and to me that’s a total deal breaker. I understand the language has to be powerful in order to be able to be compiled to many platforms – but again, I am never going back to a language where you have 50 implementations of something like linked lists, stack and queues just to begin with, without even going to maps or radix trees.

I understand mine is not a technical argument per se. Just sharing what I find jarring about a language. I’ve been in C and C++ for just a few short years about 17 years ago and I am never ever going back to anything that even remotely has their set of problems.

Golang is verbosive, no arguing about it. But with proper editor/IDE snippets support it becomes alright to work with – linting and vetting is another thing though, can’t argue that OCaml for example seems to be a bit easier to grok and do a cursory eyeball check for potential problems (Elixir as well IMO).

As for safety, yep – Rust and OCaml seem like the the clear winners over Go.