6 ms·
> Whether we look at Zig, Go or Julia they stay relatively simple because they simply avoid solving certain problems. Could you expand on the specific problems
by vageli 4y ago
> Whether we look at Zig, Go or Julia they stay relatively simple because they simply avoid solving certain problems.
Could you expand on the specific problems that each language avoids?
- sk0g 4y agoTill recently, Go lacked generics. Aside from that, it has a GC that is pretty nice to work with. Manual memory management is semi-supported, using C interop instead of native language constructs (from when I last looked into it).
- kaba0 4y agoGo is a thoroughly uninteresting language bringing nothing new to the table. D, C#, even Haskell all has and had for decades now GC with manual memory at places. Other than virtual threads, which I have to give credit for, there is zero new thing from a PL perspective.
- flohofwoe 4y agoErm, Go channels were a pretty big deal in the beginning, as well as the idea of creating a 'better C' (instead of a 'better C++').
- kaba0 4y agoI absolutely don’t see anything in Go resembling C from a technical perspective, other than (before generics) being similarly unexpressive. It is much closer to JS than C in any way and shape.
- flohofwoe 4y agoI don't know, I currently write both C and JS on a daily basis, and I just can't see how Go is anything like JS. For me, Go is definitely in the C syntax family, while trying to solve roughly the same problems where Java has been used extensively (backend services).
- masklinn 4y ago> Erm, Go channels were a pretty big deal in the beginning In what world did people not know about MPMC queues?
- flohofwoe 4y agoWhen Go came around I wasn't aware of other popular languages which has channels as a core language feature (but maybe I was just ignorant).
- masklinn 4y ago> other popular languages which has channels as a core language feature That’s because other languages did not need channels as a core language features. Go does for the same reasons it needs e.g. hashmaps or append as “core language features”: no generics. As far as I could see, there was one cool thing Go brought to the table, and it’s select {}. That was (and still is, I think) pretty uncommon, though not unheard of (Erlang’s receive is similar, though it has different capabilities owing to different language semantics).
- pjmlp 4y agoErlang came out in 1986. Here are the experiences of Wooga and Activision/Blizzard using it. https://www.gdcvault.com/play/1016648/Why-Erlang https://www.gdcvault.com/play/1016648/Why-Erlang http://www.erlang-factory.com/upload/presentations/395/ErlangandFirst-PersonShooters.pdf http://www.erlang-factory.com/upload/presentations/395/Erlan...
- Matl 4y agoWhile true, Erlang is a dynamic language, which has its own problems. Go's concurrency builds on CSP and they're open about it, but it is not just about who came up with it but who made it mainstream and for that Go certainly deserves credit.
- cdelsolar 4y agoWhat is a MPMC queue
- Tozen 4y agoThat's a pretty harsh take on Go. Many people find how it does concurrency, OO without classes (methods assigned to structs), its simplicity, and compilation speed as refreshing. At least in comparison to C, of which few would know how to make a better "successor" language for general use among the masses, than Ken Thompson (who co-developed C too).
- adgjlsfhk1 4y agoJulia mostly ignores static compilation (although there now is work to add the ability to statically compile for a relatively large but limited subset of the language). The big thing that this allows is for you take the ideas of C++ templates to the extreme. In Julia pretty much every function behaves like a C++ function that is templated on the type of every input. This has the major advantage that it is really easy to write extremely fast generic code. This only works in general though because Julia only has to generate code for the types that actually appear rather than all the type combinations that static analysis can conclude might appear.