3 ms·
You can't be seriously saying using "Go" (a low level systems language) will be as productive as using Rails (a very high level framework intended for CRUD appl
by 0xblinq 2y ago
You can't be seriously saying using "Go" (a low level systems language) will be as productive as using Rails (a very high level framework intended for CRUD applications). Despite how much you might hate Rails, that's like saying you'll build a blog faster with C++ than with WordPress.
- 59nadir 2y agoGo is not a low-level systems language. Even using the more flexible modern definition of "low-level" it's not a low-level language. That's like saying OCaml is low-level; it's not even close.
- jb1991 2y agoGo, a language with garbage collection and a compiler that does only an average job at optimizing machine code, is now considered low level?
- deleted 2y ago[deleted]
- pjmlp 2y agoIt is as high level as C, unless you consider all non ISO extensions part of the language, in which case, any language can have similar extensions. There are more compilers by the way.
- jb1991 2y agoLast I checked, C was not garbage collected.
- pjmlp 2y agoSo what? Here is a kernel writen in a GC enabled system programming language. https://people.inf.ethz.ch/wirth/ProjectOberon/Sources/Kernel.Mod.txt https://people.inf.ethz.ch/wirth/ProjectOberon/Sources/Kerne... Or do you rather have one in Go? https://www.phoronix.com/news/TamaGo-Bare-Metal-Go-ARM https://www.phoronix.com/news/TamaGo-Bare-Metal-Go-ARM
- jb1991 2y agoOK, so it sounds like you are confirming an answer to my question, that Go, a language with garbage collection and a compiler (at least its most popular one) that does only an average job at optimizing machine code, is now considered low level.
- pjmlp 2y agoyeah, it has always been as low level as something like Cedar in Xerox PARC, and just as high level. Or just as low level and high level as Interlisp-D at Xerox Parc. As plenty of other languages. If you want actual low level code, that is Assembly, and even that depends if the underlying CPU is a pure hardware implementation, or makes use of microcode and is for all practical purposes a mini-interpreter/JIT in hardware.
- jb1991 2y agoThat’s a fine analysis, but most people have a more generally accepted definition of what low-level means in a context of modern systems programming languages. I suppose you have provided an alternate definition, but it’s not really in the context of what most are thinking about in this arena. It’s a bit like a podcast I listened to recently where someone suggested any language with a proper algebraic sum type can be considered a dynamic typed language in some ways. I mean, if you get philosophical about definitions and lean heavily mainly on historical context, it’s possible to say just about anything.
- unit149 2y agoIn terms of Go or C, even Rust which is one of the only of the two used in kernel development. Migrating is in line with the principles of the CRUD methodology, whether it takes place by means of a compiler or a junior developer parsing assembly line-by-line.
- consteval 2y agoGo is absolutely not a low-level systems language. It has a GC. Even C++ isn't a low-level systems language: C++ is a high-level language. Seriously, how could someone describe a GC memory safe language as "low level"? Unless you mean the type system, which I admit is a bit more primitive than something like C++ or C#. But Go is definitely closer to Java/C# than C++.
- neonsunset 2y agoC# stands out a bit as it provides first-class manual memory management APIs, zero-cost abstractions and tools to do RAII like many other systems programming languages do. It's quite unlike most other GC-based languages once you look at it closely. If anything, it allows you to go way more low-level than Go.
- consteval 2y agoWhile true, I'd argue the way C# is used is closer to Java than C++, despite the tools it provides. Also I think Go allows manual memory management as well, although close to nobody uses it. In my head, there's a "sharp" divide between GC langs and non-GC langs. While the GC langs may provide some shallow hacks to get close to what lower-level langs can do, for those lower level langs that's all they can do. And typically it's not a 1-1.
- neonsunset 2y agoThe tools C# provides are far from "shallow hacks". Go does not provide "equivalent" ability to malloc and free, or write C structs with explicit layout. Does not have the same type of struct generics C# has ala Rust or C++ templates, it's not even close. Perception problems do not affect technical capability, and there exists a world of gamedev beyond enterprise engineering that treats C# appropriately.