Go At Conformal
cyphertite.com
cyphertite.com
For example: try searching for "ruby map" vs "go map". Google just doesn't parse the keyword 'go' too well. "go lang map" works far better but who wants to refer to a language as "go lang"
This DOES have an effect on adoption and the feeling the documentation is bad as the author comments on.
/rant
Go is Go, but golang is handy nickname.
http://go-lang.cat-v.org/go-search
No solution is perfect, but really, is not like C for example is much more searchable.
Another good thing I've found if you just want to see other people's code to learn from- searching through gists for "func main" or a google search for site:play.golang.org on google.
Super pro tip: Gists searches don't have next/previous buttons by default, but you can still add &page=2 etc. to get the other pages.
When C# first appeared, I searched a few job boards out of curiosity. The "#" symbol wasn't recognized, so I tried "c-sharp". The only listing that came up was for a custodial position that required the employee to maintain a "sharp appearance". If early search results were indicative of a languages chance for success, the only C# jobs available now would be for well-dressed janitors.
What's more, it includes the documentation of your own code and all installed third-party packages under "Packages", as long as they are on GOPATH.
>"go lang map" works far better but who wants to refer to a language as "go lang"
You don't have to refer to it as "go lang", just use the term in searches.
Plus, it's not just the name. Ruby has like 20 years of history and tons of pages interlined, while Go has maybe 1/1000 of that as of now. When we get enough content, Google can deduce from context and popularity what "go maps" mean in a search.
"Prediction: Go will become the dominant language for systems work in IaaS, Orchestration, and PaaS in 24 months. #golang"
It remains to be seen.
Or better than Akka, java.util.concorrent?
I am not convinced, even after doing some small applications in Go.
The philosophy of Go is to keep things simple I know, and generics would inevitably add some degree of complexity to the language, but I feel that addition of complexity would be worth it.
Without generics it just feels like you're writing in Java <= 1.4 again
Of course, I really love data structures, so I can understand other people who just want to get on with things, and are happy to slightly abuse some built-in data structures to get most of the way there.
It simply doesn't provide a simple way to build some kinds of generic datastructures, but when the ones provided by the language are not enough it usually means your problem is specialized enough that a custom datastructure is best anyway, and Go makes that pleasant and easy.
And then there are interfaces, which are a kind of "generics" of their own.
Maybe (hopefully!) these are not the only alternatives.
Having to rewrite the same code over and over again to support one algorithm is a real pain in the butt.
...and the interface{} thing is just a workaround that defers type errors until runtime. Which in turn defeats the point of enjoying a type safe language
So no, its not like Java <= 1.4 at all, and that is without going into all the other fundamental language, library and philosophy differences.
Still, it would be nice if you wrote, say a matrix package, that you could simply specialize data structures for double or single precision. You see such shortcomings in the standard library as well, for instance for the ParseFloat string conversion functions in strconv, you have to specify the number of bits of the data type. It would be much better if the return type was some generic type for fractional numbers. Now, if you want to have a single precision double, you have to specify that you want to have a 32-bit float and then cast it to a float32.
That said, I believe that Go needs generics, but I'd rather see them implement them properly than to rush.
maps in Java 1.3 (older documentation is not available online):
http://docs.oracle.com/javase/1.3/docs/api/java/util/HashMap...
channels for queues and FIFOS:
http://docs.oracle.com/javase/1.3/docs/api/java/util/LinkedL...
better yet after 1.5:
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concu...
Many of the array slices algorithms can be made via the Arrays class
http://docs.oracle.com/javase/1.3/docs/api/java/util/Arrays....
I have Go experience, didn't not find any of the features you referred that different than similar features in other more established languages.
Go is amazing for people with limited language experience, which have not tried the wide spectrum of languages and abstractions that are already available.
"if you give clever people clever tools they will use them in clever ways"
So, what's the best candidate for GUI applications? I think we also need an IDE or at least a form builder akin to Visual Studio and WinForms, it's so easy to work on GUI applications and write prototypes it's ridiculous how other projects aren't copying this.
I would like to have a pythoner's point of view on golang, so the differences with Python would be highlighted.
- it is expressive. I find myself cursing and pull my hair out far less than when I'm writing, say, Java.
- That said it does still feel less expressive than python, but between me just knowing python much better and stack overflow being much more full of python answers, I can't evaluate this objectively.
- Writing (more accurately, updating and maintaining) large applications in python is at times very unpleasant. Pyflakes is pretty good, but bugs like a method name from a different class being spelled incorrectly or having the wrong number and/or types of arguments will inevitably slip into production. I've also found that people use _private naming far too sparingly in python (maybe just because it looks ugly?) which leads to modules that expose dozens or even hundreds of methods to the rest of your app, a huge number of which are unnecessary and end up being used redundantly. The fact that go is a statically typed language built by people who have spent decades working on huge codebases was probably the biggest draw to me.
- Haven't used goroutines or concurrency much yet, but I sleep better at night knowing they're at my fingertips :)
- I feel like I've just scratched the surface of them, but Interfaces in Go are amazing. From what I've seen so far, they seem almost as cool as the Haskell Typeclass system.
- One downside is it has no built-in REPL. But since it compiles so fast I'm sure the third-party ones will get pretty good in a matter of time.