4 ms·
Seriously asking, where Go sits in this categorization?
by bayindirh 8mo ago
Seriously asking, where Go sits in this categorization?
- shilgapira 8mo agoIt's also a modern C. If you enjoy C and wish it was less verbose and more modern, try Go.
- bayindirh 8mo agoThanks. I write some Go, and feel the same about it. I really enjoy it actually. Maybe I'll jump to Zig as a side-gig (ha, it rhymes), but I still can't motivate myself to play with Rust. I'm happy with C++ on that regard. Maybe gccrs will change that, IDK, yet.
- VorpalWay 8mo agoGo has a garbage collector though. This makes it unsuitable for many use cases where you could have used C or C++ in the past. Rust and Zig don't have a GC, so they are able to fill this role. GC is a showstopper for my day job (hard realtime industrial machine control/robotics), but would also be unwanted for other use cases where worst case latency is important, such as realtime audio/video processing, games (where you don't want stutter, remember Minecraft in Java?), servers where tail latency matters a lot, etc.
- bboozzoo 8mo ago> GC is a showstopper for my day job (hard realtime industrial machine control/robotics) Which is a very niche use case to begin with, isn't it? It doesn't really contradict what the parent comment stated about Go feeling like modern C (with a boehm gc included if you will). We're using it this way and it feels just fine. I'd be happy to see parts of our C codebase rewritten in Go, but since that code is security sensitive and has already been through a number of security reviews there's little motivation to do so.
- VorpalWay 8mo ago> Which is a very niche use case to begin with, isn't it? My specific use case is yes, but there are a ton of microcontrollers running realtime tasks all around us: brakes in cars, washing machine controllers, PID loops to regulate fans in your computer, ... Embedded systems in general are far more common than "normal" computers, and many of them have varying levels of realtime requirements. Don't believe me? Every classical computer or phone will contain multiple microcontrollers, such as an SSD controller, a fan controller, wifi module, cellular baseband processor, ethernet NIC, etc. Depending on the exact specs of your device of course. Each SOC, CPU or GPU will contain multiple hidden helper cores that effectively run as embedded systems (Intel ME, AMD PSP, thermal management, and more). Add to that all the appliances, cars, toys, IOT things, smartcards, etc all around us. No, I don't think it is niche. Fewer people may work on these, but they run in far more places.
- pjmlp 8mo agoSee TamaGo, used to write firmware in Go, being shipped in production.
- VorpalWay 8mo agoNot familiar with it, but reading the github page it isn't clear how it deals with GC. Do you happen to know? Some embedded use cases would be fine with a GC (MicroPython is also a thing after all). Some want deterministic deallocation. Some want no dynamic allocator at all. From what I have seen, far more products are in the latter two categories. While many hobby projects fall into the first two categories. That is of course a broad generalization, but there is some truth to it. Many products want to avoid allocation entirely either because of the realtime properties, or because they are cost sensitive and it is worth spending a little bit extra dev effort to be able to save an Euro or two and use a cheaper microcontroller where the allocator overhead won't fit (either the code in flash, or just the bookkeeping in RAM).
- pjmlp 8mo agoYes, just like with real time Java for embedded targets from PTC and Aicas, it is its own implementation with another GC algorithm, additionally there are runtime APIs for regions/arenas. Here is the commercial product for which it was designed, https://reversec.com/usb-armory https://reversec.com/usb-armory A presentation from 2024, https://www.osfc.io/2024/talks/tamago-bare-metal-go-for-arm-risc-v-socs/ https://www.osfc.io/2024/talks/tamago-bare-metal-go-for-arm-...
- andrewl-hn 8mo agoGo is modern Java, at least based on the main area of usage: server infrastructure and backend services.
- bsaul 8mo agoi wonder what makes go more modern than java, in terms of features.
- cultab 8mo agoThe tooling and dependency management probably
- thezipcreator 8mo agoI still don't understand how they managed to make a build system as bad as Gradle. It's like they tried to make it as horrible as possible to use.
- kristianp 8mo agoYes, every time I fire up an old Android project it needs to download 500MB just for gradle upgrades. It's nuts.
- KronisLV 8mo agoTbh Go is also really nice for various local tools where you don’t want something as complex as C++ but also don’t want to depend on the full C# runtime (or large bundles when self-contained), or the same with Java. With Wails it’s also a low friction way to build desktop software (using the heretical web tech that people often reach for, even for this use case), though there are a few GUI frameworks as well. Either way, self contained executables that are easy to make and during development give you a rich standard library and not too hard of a language to use go a long way!
- 9rx 8mo agoGo is modern/faster Python. - It was explicitly intended to "feel dynamically-typed" - Tries to live by the zen of Python (more than Python itself!) - Was built during the time it was fashionable to use Python for the kinds of systems it was designed for, with Google thinking at the time that they would benefit from moving their C++ systems to that model if they could avoid incurring the performance problems associated with Python. Guido Van Rossum was also employed at Google during this time. They were invested in that sort of direction. - Often reads just like Python (when one hasn't gone deep down the rabbit hole of all the crazy Python features)
- gf000 8mo agoNowhere, or wherever C# would sit. Go is a high level managed language.
- Imustaskforhelp 8mo agoGo is a language which sits perfectly where using garbage collection is no problem with ya.