3 ms·
Go was never supposed to replace C for OS or firmware. Go was pretty explicitly designed by Google as a replacement for both C++ and Java in application code.
by snovymgodym 3y ago
Go was never supposed to replace C for OS or firmware.
Go was pretty explicitly designed by Google as a replacement for both C++ and Java in application code. It beats Java by having compiled executables with no JIT warmup, and it beats C++ by having memory safety (especially in the pre C++11 days when Go was designed).
A bunch of Go's design decisions seemed to be in reaction to the complexity that emerges in Enterprise/OOP Java, C++, and C# codebases. Therefore, no classes, no exceptions, and no generics until very recently. All that makes coding in Go feel like you're writing "new C". (Ken Thompson and Rob Pike being one the core team for Go probably also added to this).
- neonsunset 3y ago"The key point here is our programmers are Googlers, they’re not researchers. They’re typically, fairly young, fresh out of school, probably learned Java, maybe learned C or C++, probably learned Python. They’re not capable of understanding a brilliant language but we want to use them to build good software. So, the language that we give them has to be easy for them to understand and easy to adopt." - Rob Pike Go does not and cannot replace C/C++/Rust family of languages, nor can it replace C# at writing higher-level HPC code (lack of cross-platform SIMD API, zero-cost interop, hardware intrinsics, etc.), something you do to drastically reduce the maintenance effort compared to doing so in C++. And lastly it's still unfortunate it replaces JVM family which goes to show how abysmal the basics of dev UX are in some aspects of it, because it has the most advanced JIT compiler implementations that Go will never be able to compete with.
- pjmlp 3y agoGo was designed by a group of people not found of C++ or Java, to this day Go remains a minority inside Google, used mostly alongside Kubernetes or gVisor workloads. Java, C++, Python and nowadays Rust, are the key programming stacks. Java has had AOT compilation since early 2000's, however it was gated behind commercial JDKs, like Excelsior JET. Nowadays free beer AOT is available in GraalVM, OpenJ9, and Android since version 5.