Putting All the Parts Together

 
 
By Darryl K. Taft  |  Posted 2009-11-13 Print this article Print
 
 
 
 
 
 
 


Moreover, in Go the type system is fully statically typed, Pike said. "In the sense that, let's say, going back to the sorting idea ... At compile time you know that everything coming in can implement the sorting interface or it would not statically compile," he said. "But there is dynamic type information under the covers that programs can use to do interesting things. So it's a statically typed language with a little bit of polymorphism mixed in. That's the best way to say it." 

8. Google builds Go to support concurrency

Although most of the larger machines delivered today have multiple cores inside them, the common programming languages that are out there don't really have enough support for using those cores efficiently, Pike said.

Developers can find libraries to help with this, "but they're very difficult to use and the primitives are fairly clumsy," he added. "One of our goals in Go was to make a language that could use those processors well, particularly for the kind of server-side programming that we do here at Google where you have many client requests coming into a machine that's multiplexing them. And Go is a really good language for writing multiplex servers in, where you use these things called 'go' routines, which are kind of like threads but lighter-weight, and some communication primitives to do the multiplexing."

In fact, the Golang.org Website is written in Go and is doing exactly that, Pike said.

"It's a parallel Web server with multiple internal threads of control for each client request that comes in," he said. "And it works really well. It seems to be a good way to go. We haven't built it at the kind of scale we need yet to say this is definitely the way to go. And there's definitely some more library support needed for things like scheduling and so on. But from a starting point it's a really good place to be." 

9. In terms of programming languages, Google Go is most like...

Rather than viewing Go as competing with other languages for developer attention, Pike said he thinks Go simply provides an alternative.

Moreover, he said he thinks programmers who are used to developing systems software and are used to languages like C and C++ and Java will find Go interesting because of the different take it has.

"And it's also sort of roughly in that general category of language," Pike added. "Especially in terms of performance. It's not as fast as C, but it's not much slower. But on the other hand, programmers who are used to more of the dynamic languages such as Python, Ruby and maybe JavaScript have remarked that they think Go is interesting because they think Go gives them the speed of a compiled language, but a lot of the nice, light dynamic feel of those [dynamic] languages."

10. To thrive, Google Go needs to sprout an ecosystem

Pike said he "hopes" that the language will generate an ecosystem. However, "This is a kind of skunkworks project," he said. "We put out what we've got so far, but one of the big reasons we did that is we want people to help us expand it and put in support for the Windows operating system and also help us develop tools such as IDEs [integrated development environments] and things like that.

As an open-source project I think it will develop an IDE and an ecosystem, as it seems to be really well received. But I really can't predict how big that ecosystem will get. We'd certainly love to see it thrive."



 
 
 
 
Darryl K. Taft covers the development tools and developer-related issues beat from his office in Baltimore. He has more than 10 years of experience in the business and is always looking for the next scoop. Taft is a member of the Association for Computing Machinery (ACM) and was named 'one of the most active middleware reporters in the world' by The Middleware Co. He also has his own card in the 'Who's Who in Enterprise Java' deck.
 
 
 
 
 
 
 

Submit a Comment

Loading Comments...
 
Manage your Newsletters: Login   Register My Newsletters























 
 
 
 
 
 
 
 
 
 
 
Rocket Fuel