Google has rolled out version 1 of its experimental open source Go computer programing language, 14 months after it first announced the language back in 2009.
Go “is an attempt to combine the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of a statically typed, compiled language,” Go team lead Rob Pike told TechNewsWorld.
“It also aims to be modern, with support for networked and multi-core computing,” Pike continued. “Finally, it is intended to be fast; it should take at most a few seconds to build a large executable on a single computer.”
Go “tries to solve concurrency issues, and that’s where it’s going to have the most impact when you’re programming the GPUs and the new parallel processors that are proliferating,” said Al Hilwa, a program director at IDC.
“We now have hardware that’s cheap and widely available to deal with parallel steps and have a lot of cores and GPUs, and to harness those we need a new language and way of thinking,” Hilwa told TechNewsWorld.
Google has also released a new Google App Engine software development kit (SDK) for the Go runtime.
Some Snippets About Go 1
Go’s basic syntax comes from the C family, with lots of declarations and packages from the Pascal/Modula/Oberon family, as well as some ideas from languages such as Newsqueak and Limbo, which were inspired by Tony Hoare’s CSP.
CSP, or Communicating Sequential Processes, is a formal language for describing patterns of interaction in concurrent systems.
Go 1 defines a language and a set of core libraries to provide a stable foundation for creating reliable products, projects and publications, Google said. Further, Go 1 is forward stable, meaning that code compiling in the language should, by and large, continue to compile and run throughout its lifetime even through updates and bug fixes.
The Go tool suite has been restructured around the new “go” command, which is a program for fetching, building, installing and maintaining Go code. Programmers won’t need Makefiles to write Go code because the build instructions are derived from the program source itself.
Go has three major distinguishing features, Wayne Kernochan, president of Infostructure Associates, told TechNewsWorld. These are: Built-in support for a particular type of Web software architecture; additional support for concurrency “with the likelihood that this will make today’s programs more scalable and reliable,” and a new way of doing typing that is static, implicit and orthogonal “that should make marginal improvements in both ease of good programming and program reliability.”
The relation to C and Java “just makes [Go] easier to learn,” Kernochan said. However, Go hasn’t done enough about data management. On the other hand, “none of today’s languages does, and at least [Google has] begun to recognize that it needs to be more sophisticated,” he added.
“Google’s computer scientists believe there’s a better mousetrap and they’re right, but … they have to be aware that [widespread adoption is] going to be a long process,” IDC’s Hilwa remarked.
Who’s Go Targeting?
Of late, there’s been a move toward multicore processors because they offer more speed and power than single-core ones.
Intel’s going to make all its processors multicore, Renee James, a company vice president, said at Oracle OpenWorld 2008. Apple introduced a line of Mac Pros in 2010 that have up to 12 cores. Multicore processor specialist Tilera’s TILE-Gx family of processors, which are aimed at cloud computing, have up to 100 cores. Many mobile devices are now multicore.
“By its design, Go proposes an approach for the construction of system software on multicore machines,” Google’s Pike stated.
“Today, we’re moving towards speed over functionality,” Darren Hayes, CIS program chair at Pace University, told TechNewsWorld. “We’re looking at multithreading, concurrency and garbage collection.”
With Go 1, Google seems to be “moving for more productivity in mobile devices,” Hayes said. Further, it “looks like Google’s looking to take Apple head on [in the mobile sector]. There seem to be some similarities between Go and Apple’s Objective C, which developers use to create apps for iOS devices.”