Go language was motivated as an answer to Google's C++ problem. A lot of their server software is written in C++.
Go provides an intrinsic way to do concurrency and via goroutine messaging, does not revolve around having to get locks right for multi- threaded access to objects. Also, the goroutine concurrency is far more fine-grained than threading. Threads are upper-bounded by what the underlying operating system can effectively manage (usually topping out at a few thousand at best). There are Go sample programs that spawn up to a 100,000 goroutines in a single program and harvest values from them. However, a very significant paint point for all the C++ code base is the build time overhead. Go language is designed to be very fast to compile and link into executables. Java doesn't have an intrinsic actor model approach to concurrency. Nor has Java been targeted for very efficient compile/link into executable ala Go. Go also has a huge boilerplate reduction in code verbosity relative to Java. It compiles down to native code and its feasible to directly call a lot of POSIX APIs from Go without all the fuss and muss of Java's JNI muck. Go didn't have a package for interacting with file system events, but because how how easy it is to inter-operate with Linux APIs, I was able to whip up a Go package on top of Linux inotify subsystem in short order. I kind of see Go as a language that has appeal to people that like the C language. It's not as low level to the degree that C is (no pointer arithmetic) but it has an essence of C simplicity about it. Sort of a C brought into the 21 st century. If you prefer the coolness factor of the functional languages, and C didn't ever have much appeal to you, then you probably won't really care for Go. -- You received this message because you are subscribed to the Google Groups "The Java Posse" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/javaposse?hl=en.
