Google just released a new open source programming language called Go. Go is intended to offer built-in support for concurrent processes, make the most of modern hardware and deliver a super-fast coding experience. Google says in its announcement that “Go attempts to combine the development speed of working in a dynamic language like Python with the performance and safety of a compiled language like C or C++.” Go was created by a five person team that includes UNIX co-creators Ken Thompson and Rob Pike.
It’s not for everyone, but we talked to a variety of developers who are looking forward to kicking the tires. Below are opinions before launch from three developers we have a lot of respect for. Two are enthusiastic and one is skeptical.
Rob Pike also gave an hour-long talk about Go late last month.
Developer Reactions
GitHub Co-Founder Chris Wanstrath
I’m definitely on the lookout for C-like languages with good C integration and solid package support (for organization). Hopefully Go provides the former with its “syscall” package (or something similar) – building on existing libraries is a huge boon to young languages, as Scala and Clojure have shown with their Java integration.
Organizing big C projects is always a challenge, and borrowing packaging ideas from higher level languages like Python could really help.
Can’t wait to see the site and play with a few examples.
Alex Iskold, founder and CEO of Adaptive Blue
Go appears to be procedural language, based on C/C++ syntax, skewed heavily towards C. It has C memory manipulation model with addresses and pointers, which is complicated and not used in Java, PHP, Ruby, etc.
There is nothing in this tutorial that attracts my eye, other than built-in parallel processing capability. C historically lacked threading (although current versions have it), but having it built in natively into the language is always great.
I am a fan of Java and Object-Orientation, so new procedural languages sound like a thing of the past to me.
If this is positioned as alternative to JavaScript, I do not see why this is necessary. Why not take JavaScript and make it better / add richer libraries like JQuery as part of the language. What Google has done with Gears for example, is built stuff using native C/C++ code and wrapped it into JavaScript calls – I think that is a better way to move forward and to make things faster.
Larry Price, Computer Systems Consultant
This is a very clean and powerful language. It’s a direct descendant of C with elements of Haskell, OCaml, python and erlang visible as influences. It seems like yet another attempt to make a “better C than C”, and from a first shallow glance it seems like a clear winner.
Objective-C fans (mac programmers) will probably sniff that it’s nothing new, and that clean message passing semantics have been available to programmers for decades, but there are some deep differences; Go is not an object oriented language although you can use it in an objected oriented manner. In many respeccts Go is not a new language, it will seem very familiar to anyone who has used C or C descended languages; and most of the advanced features that it adds to C are implemented in other languages.
Go strikes a good balance between legibility, low-level functionality and high-level functional programming features. It will have a strong appeal to programmers who are interested in the type safety and concurrency friendly features of Haskell or erlang, but want to access them in a more familiar C-like syntax.
It has a good chance to make type-safe concurrent programming a mainstream choice.
What do you think?