First of all, thank you to all the amazing things you do for the self-hoster, FOSS comunity ! We won't be able to have those shiny things without you ! I'm not a dev and have just played arround with python (and I know how most of you feel about it ๐คซ) so I have very limited knowledge regarding programming languages.
I know whats a low level language (C, C#, rust?), general scripting tools and even heard about assembly. And it always baffles me how all those coding lines rule and make our microchips communicate and understand each other, but that's another story ! This is about golang !
As a self-hoster enthousiast, when I'm looking at a github repository, I always check the programing language used, even though I have no idea if those integrate well with each other or if it's the best programming language for that kind of application.
And everytime I see golang, It makes me smile and have a feeling it's going to be a good application. I know it also depends on the programmer skills and creativity, but all my self-hosted Go apps works like a charm.
Traefik is the best example, I never had any issue or strange behavior, except for wrong configuration files on my side,
Or navidrome a music server compatible with subsonic, also written in go, is working great and fast AF !
Or Vikunja, the todo app... and many more !
I'm probably biased because I have no idea of how the programing realm works, but I have the feeling that Golang is a certificate for good working and fast applications. Just to bad it's backed/supported by google (uuhhg)
Feel free to debate and give me your personal opinion of the Go language, if my feelings are right or Am I just beeing silly :).
Thanks for reading through ๐
Rust's memory safety is much different (ownership, lifetimes, immutability). Also Rust has null safety while Go doesn't. Go has some uninitialized variable use protection, but you can still screw up if you do stuff like accessing a struct field that hasn't been assigned a value. In C there's much higher chance of segfaults, use-after-free precisely due to manual memory management (
malloc
andfree
, which do not exist in Go). For example earlier versions of Java and most interpreted languages of the past whilst offering memory safety, consumed a lot of system resources, making them unsuitable for performance critical things like games, drivers etc.Then innovations in memory management and the resulting safety improvements and easier development these new languages offer allowed using them for writing performance critical code. Hope that answers your question.
Yes :) Thank your very much for sharing your knowledge !! It's just difficult to understand everything with all the new related vocabulary I never heard of. But I think I get the general gist !
Just one last question, it's something that's on my mind for a while ! I know it's a hot potato in the programming world and has been asked several times over here in the community, but I'm really interested on your opinion on that topic:
C, C++ (C#? I dunno the difference between the 3, so pardon me for my ignorance) are they slowly dying out and being replaced by something like Rust (or other low level language?)? Because C and derivatives are prevalent everywhere and probably everything , and If I get it right, it's the language, that programs other languages. So shifting to something new takes time, resources and probably is "risky"?
I'm asking that question because, recently read about Linux slowly merging some rust coding in the Linux kernel.