Hacker News new | ask | show | jobs
by baby 3114 days ago
hell no, if generics get into go I'll have to find another favorite language.
7 comments

> hell no, if generics get into go I'll have to find another favorite language.

Well, I hope go get generics fast then. Seriously, what is this community that rejects any possible enhancement to a language? Even C gets new features albeit slowly. A language that doesn't evolve is a dead one.

There is nothing complicated with generics, they are just incomplete types, that's all. Generics =/= C++ templates.

Ada has a great implementation of generic programming which forces the developer to complete generic types before using them. In fact Ada got a lot of things that go got wrong despite being way older, especially when it comes to concurrency and types.

Package based generics make them completely compile time and runtime safe, no type erasure. The'd be the equivalent of reflect.MakeFunc or reflect.MakeStruct at compile time, so without any performance penality or ugly reflection, which go has right now.

I feel what is with this demand that Go has to have generics when there are some excellent languages with Generics available.
I'm on the fence about generics...but to answer your question generally...it's not all 'enhancements', it's making a language less readable. Sure, I can choose never to use it. But now I have (more) trouble reading others code. Go's strength, to me, is readability.
People programming in Go today already have workarounds to provide the functionality of generics, but at the cost of type safety and speed.

It is very common (especially in libraries) to pass `interface{}` around and use reflection to do manual type checking and type casting.

With generics the code that uses `interface{}` today would actually be much more readable, because the intention of the author would be clear.

Go has generics, but only for the blessed few built-in functions and types the Go team decided we couldn't live without.

We just want that special casing gone so we could write, say, a generic set that works just as well as map

Why? Like, I might have weird taste, because I really liked generics and even Java-style checked exceptions :-) And to me, generics always sounded like the most practical way to do safe code-reuse across various types.
They add complexity which makes understanding and auditing code much harder. Look at OpenSSL and their overuse of macros, or heavily-templated C++ code.
No one is asking for C/C++ style macros, or even C++ templates. Go generics would be closer to Java or C# generics, which increase code clarity, reduce boilerplate and copy/paste code, and communicate intent.
I see. If it can be implemented as something that make code easier to read and not worse. Why not. But I’d need to see a clear example of that.
Fair. In my opinion generics are good alternative to macros or templates, because they are much more constrained.
Yeah, I can see how having features added to your favorite language while remaining fully compatible with the code you write today would warrant such a reaction. I mean, just having them in your language, even if you don’t have to use them is just so horrible.
I think it would be naive to believe that adding generics to Go would have no effect on the stdlib, third party packages, and ultimately how you write Go code.
I don't have a dog in this hunt, but if a feature is in a language, someone will use it which will mean eventually everyone has to.
Well the same is true for multiple languages which will mean not everyone has to use Go. Especially when there are so many interesting languages to choose from.
What are you saying, you never read other people's code? That's actually my job.
In his defense, just because you don't write generics yourself doesn't mean you don't encounter them.
Good luck, even C11 has light generics nowadays.
light generics? C++ has very powerful generics and has had them for a long time, going under the name 'template metaprogramming'.
He said C11, not C++(11).
I am speaking about C, not C++.
Golang arrays and maps are generic ...
Yes, but I do not have to read their implementation fortunately, and not so many things in Go use generics if I do want to read their implementation.
This post basically proves that Google hires idiots and even created a language for idiots. :))
You'll love Algol 68.