13 ms·
This feels like such a non-news. They've pretty much created a language which is deliberately dumbed down to be 20 years behind other languages, then they are p
by Pannoniae 3y ago
This feels like such a non-news. They've pretty much created a language which is deliberately dumbed down to be 20 years behind other languages, then they are proud that they could speed it up with a feature that was fairly well-known almost 20 years ago.
Also the obsession with not providing tools for the programmer to use the stack, and rely on compiler internals to not heap-allocate everything.
- diogenes4 3y ago> 20 years behind other languages What a ridiculous attitude
- deleted 3y ago[deleted]
- yazzku 3y ago"There are many reasons to be excited about generics in Go." There were also many reasons to be excited about generics in C++, back in 1998 lol.
- glotchimo 3y agoBecause I genuinely don’t know, what do you mean when you say it’s 20 years behind other languages? Or rather, what features is it lacking that would make it up-to-date? And what languages are 20 years ahead of it?
- eru 3y agoHave a look at https://news.ycombinator.com/item?id=943554 https://news.ycombinator.com/item?id=943554
- Pannoniae 3y agoI would love to answer in detail but right now I cannot. One really good example though is error handling - they've pretty much looked at C and decided that that was the best we can do, so now every Go program is full of nilchecking boilerplate. The whole design of the language generally feels like as if it was made for unthinking drones.
- ARandomerDude 3y ago> now every Go program is full of nilchecking boilerplate The try/throw/catch model is painful and Go opted for errors as values. It makes code more verbose but also much more predictable. Pick your pain.
- bushbaba 3y agoMakes developers need to at least think about error handling compared to say python. However I find Java’s error handling to be superior, but Java coding generally requires an IDE.
- jacquesm 3y ago> I would love to answer in detail but right now I cannot. Sorry but this is unacceptable. You post a generic comment hating on a popular language and then when asked for the specifics you bail out because you can't answer in detail for whatever reason. On top of that you then insult the language authors. That's classic troll behavior, another commenter here asked you to stop, I'm going to do the same and flag your comments in this thread because they're strictly speaking completely off topic.
- d3w4s9 3y ago[flagged]
- alex_lav 3y agoEvery post about Go becomes a pretty even split about why Go is terrible/behind the times/frustrating/obsolete, and why Go is productive/simple/awesome. Maybe just let people like things? Interestingly most posts about Rust also become about Go as well.
- eru 3y ago> This feels like such a non-news. They've pretty much created a language which is deliberately dumbed down to be 20 years behind other languages, then they are proud that they could speed it up with a feature that was fairly well-known almost 20 years ago. If you want to hate on Go, do it properly: https://en.wikipedia.org/wiki/Generic_programming https://en.wikipedia.org/wiki/Generic_programming says > Generic programming is a style of computer programming in which algorithms are written in terms of data types to-be-specified-later that are then instantiated when needed for specific types provided as parameters. This approach, pioneered by the ML programming language in 1973,[1][2] permits writing common functions or types that differ only in the set of types on which they operate when used, thus reducing duplicate code. > Generics was introduced to the main-stream programming with Ada in 1977 and then with templates in C++ it became part of the repertoire of professional library design. The techniques were further improved and parameterized types were introduced in the influential 1994 book Design Patterns.[3] If you go with 1973, you get Go being behind the times by a nice round 50 years. If you go with the latest date mentioned, 1994, you still get almost 30 years. The ML family of languages lives on in eg Haskell and OCaml these days. But Ada was perhaps more mainstream at the time, and 1977 gives you a nice 46 years to roast Go with. But in any case, while it is tempting to mock Go and its inventors, we should applaud them when they do recognize their mistakes and fix them. Better having generics late than never! (Btw, from what I can tell by reading their earlier justifications, it seems that the problem was that they only really knew the mess that C++ templates are, and thought all generics were like that. If the choice is between C++ style templates and no generics at all, I can at least understand where they were coming from with their reluctance. However, given that they must have heard of Java, I'm not quite sure why they thought generics must inevitably be so complicated. In the end, the Go people wisely got Phil Wadler and friends, who are more at home in the functional programming community, to help them out with the design.)
- Pannoniae 3y agoI didn't do it properly on purpose, because that wouldn't have been fair towards Go. Ultimately, many things which aren't even common yet today have already existed in the 70s. I have picked 20 years specifically since it was around 2003-2005 when Java and C# got generics. Obviously, they were also more than 20 years late but I compared it to mainstream languages people are more likely to know about or more likely to compare it with. I wanted to be fair and compare Go to some other mainstream languages which are big today, not niche ones.
- geodel 3y agoThis feels like such a non-comment. Which popular GC'd language provide tools to use stack?
- Pannoniae 3y agoC# does... you can stackalloc. I don't see the incompatibility -stack isn't managed by the GC, so the stack isn't affected by the GC's operations, doesn't need to be pinned or anything Why can't GC'd languages provide access to the stack?
- jppittma 3y agoIf you care so deeply about memory access that you want control over stack allocation, you probably care enough that you don't want a GC. What's your use case where the GC doesn't murder you, but you care about better cache locality?
- adgjlsfhk1 3y agoObjects on the stack don't participate in the GC (technically they're GC roots). Half of the reason you want to be able to put variables on the stack is because the stack variables are managed by lifetime and therefore the GC doesn't have to collect them.
- thfuran 3y agoIsn't more explicit control of memory allocation useful precisely in the places where the default behavior would murder you? I don't see the incompatibility. Many python and java programs have portions that are native code for performance reasons (though that's not necessarily just about GC). What's relatively rare is a program where the whole thing is absolutely performance critical rather than just some parts.
- adgjlsfhk1 3y agoNot sure if Julia counts as popular, but Julia.
- 3y ago
- dchftcs 3y ago> This feels like such a non-news. They've pretty much created a language which is deliberately dumbed down to be 20 years behind other languages, then they are proud that they could speed it up with a feature that was fairly well-known almost 20 years ago. Sounds like the average iPhone reveal to me.