Originally posted by Ironmask
View Post
Announcement
Collapse
No announcement yet.
Go 1.18 Released With Generics, Fully Integrated Fuzzing, ~20% Performance Improvements
Collapse
X
-
Originally posted by kenjitamura View PostAs someone who learned programming concepts with Go as the first language...
Because it is so simple.
But the problem is, that it is not a good language for people who already do have programming experience and have grown accustomed to language features that other languages have and Go doesn't.
With these people, even after 2 years of programming in Go, every other conversation starts with "I'm searching for some sane way of how I could do in Go something that I used to do easily in XXX language before"
Comment
-
Originally posted by pkese View Post
Agree. Go is a good first or second language ... i.e. a language for people who still don't know how to program very well.
Because it is so simple.
But the problem is, that it is not a good language for people who already do have programming experience and have grown accustomed to language features that other languages have and Go doesn't.
With these people, even after 2 years of programming in Go, every other conversation starts with "I'm searching for some sane way of how I could do in Go something that I used to do easily in XXX language before"
Same cannot be said about Java, C++, Rust, etc. Every library you encounter there follows completely different patterns and paradigms. Good look understanding them. You also can't write the simplest of services or tools without pulling in a shitload of dependencies. Hell, in Java or C++ I wouldn't even write and execute unit tests without a third party lib. In Rust that particular point is better, but writing anything more than Hello World still requires third party libs and then it's completely random if the libs use or don't use macros, use or don't use functional programming aspects, and how much of the available syntax sugar they apply.
So I stand by my opinion that Go serves its purpose. So do the other languages; everyone is free to choose what they prefer.
- Likes 1
Comment
-
Originally posted by pkese View PostAgree. Go is a good first or second language ... i.e. a language for people who still don't know how to program very well.
Because it is so simple.
But the problem is, that it is not a good language for people who already do have programming experience and have grown accustomed to language features that other languages have and Go doesn't.
It's still a tool you must use for the right purpose, but if you don't stop to bitch about missing this and missing that, Go is a surprisingly productive beast.
Originally posted by pkese View PostWith these people, even after 2 years of programming in Go, every other conversation starts with "I'm searching for some sane way of how I could do in Go something that I used to do easily in XXX language before"
When learning a new language, you have to take Yoda's advice and "unlearn what you have learned". Treat it as your first language, understand why it does things the way it does. Only after you have done all that can you start comparing.
- Likes 1
Comment
-
-
Originally posted by pkese View Post
But the problem is, that it is not a good language for people who already do have programming experience and have grown accustomed to language features that other languages have and Go doesn't.
Comment
-
Originally posted by bug77 View Post
How is returning a tuple different from returning a Result<T> or Optional<T>?
1. It gets embedded into the type system.
2. The program doesn't type if you don't check both cases.
With a tuple you can still ignore the second value by accident. With a Result<T> or Optional<T>, if you really want to ignore it, you need to do so explicitly.
Originally posted by cynic View Postit IS error prone because one can simply "forget" checking errors and this is exactly because errors are NOT explicit.
- Likes 2
Comment
-
Originally posted by sinepgib View Post
Doesn't the compiler err if you assign a value and don't use it?
- Likes 3
Comment
-
Originally posted by aksdb View Post
Thanks. That's exactly the point. Unfortunately with every language the same shit happens over and over ... "but language X has Y, why don't you?! please implement it!". Then we end up with the next language X. Great. In the end no one uses it because it's just the same as the existing language but with a smaller community, less support and less contributions.
I want alternatives, not copies. Go is a great alternative. So is Rust. So is Haskell. They all serve their purposes.
This is why languages which are not designed to be general purpose get abused into eventually becoming general purpose languages, such as Javascript, despite being completely unfit for that. What that means is that if new languages are introduced by large companies and then adopted solely for the sake of being the child of said company such as Go, and the language has not learned from the past important principles like generics being perhaps the single most important feature of any language (even if you aren't directly writing generic code, for the code you're relying upon) then it forces harmful programming practices which other developers will be forced to deal with the consequences of with this having been obvious for decades. It becomes especially difficult when everything in a domain is written in a particular language Scala is honestly a terrible language that is a giant ball of duct tape and chewing gum barely holding everything together, but it's probably going to dominate the big data space for another decade still because of Apache Spark.
If you don't want convergence then your only choice is to limit and get others to make the purposeful choice of limiting what they write in what particular language rather than believing that YourFavoriteLanguage works great for everything, when that is only really arguably true of languages that started from the stance of being general purpose.
- Likes 2
Comment
-
Originally posted by RahulSundaram View Post
Rust has other differences in error handling that is better ergonomically (? operator) or more powerful (thiserror, anyhow etc). Go is not bad, just very verbose.
Just to be clear: Go's error handling is verbose. When naively writing code, I ended up with half of the lines of code dealing with errors. But I still found the language productive despite that.
Comment
Comment