Sunday, November 15, 2009

12 Things to Know About Google's Go Programming Language


Google's new programming language, called Go, took the application development world by storm when the search giant released it Nov. 10. The ambitious technology's pedigree features programming experts from the Unix world, including Ken Thompson, who teamed with Dennis Ritchie to create Unix. Created as a systems programming language to help speed up development of systems inside Google, Go is now viewed as a general-purpose language for Web development, mobile development, addressing parallelism and a lot more.
Google's new programming language, called Go, took the application development world by storm when the search giant released it Nov. 10.
The ambitious technology comes with a pedigree featuring programming experts from the Unix world, including Ken Thompson, who teamed with Dennis Ritchie to create Unix. Created as a systems programming language to help speed up development of systems inside Google, Go is now viewed as a general-purpose language for Web development, mobile development, addressing parallelism and a lot more.
Ironically, Google launched Go just a week before Microsoft's Professional Developers Conference, which typically dominates the software development landscape while it is running. This time there might be a little Go buzz at the event.
Go is an experimental language that is still in the process of being tweaked and maturing, but it holds huge potential. The Google Go team blogged about Go, saying, "Go combines the development speed of working in a dynamic language like Python with the performance and safety of a compiled language like C or C++. Typical builds feel instantaneous; even large binaries compile in just a few seconds. And the compiled code runs close to the speed of C."
1. Where did the idea for Go come from?
Pike, Thompson and Robert Griesemer of Java HotSpot virtual machine and V8 JavaScript engine fame, decided to make a go of developing a new language out of frustration with the pace of building software. Said Pike:
"In Google we have very large software systems and we spent so long literally waiting for compilations, even though we have distributed compilation and parallelism in all of these tools to help, it can take a very long time to build a program. Even incremental builds can be slow. And we looked at this and realized many of the reasons for that are just fundamental in working in languages like C and C++, and we needed a different approach. We also decided the tools that everybody used were also slow. So we wanted to start from scratch to write the kind of programs we need to write here at Google in a way that the tools could be really efficient and the build cycles could be very short."
2. Go is a multipurpose language
Pike said Go is appropriate for a broad spectrum of uses, including Web programming, mobile programming and systems programming. "We based it on our ideas of what we think systems programming should be like," he said.
Then a Google engineer told the team he wanted to do a port to ARM processors for the Go language because he wanted to do some work in robotics. With the ARM support, "We can now run Go code in Android phones, which is a pretty exciting possibility," Pike said. "Of course, ARMs also run inside a lot of the other phones out there, so maybe it's a mobile language."
He added, "I think people, once they absorb it a little bit more, will see the advantage of having a modern language in some ways that actually runs really fast. And it's an interesting candidate to think of as an alternative for JavaScript in the browser.
"Although getting Go supported inside browsers is going to be a seriously challenging undertaking ... but it is an interesting thing to think about because it has a lot of the advantages of JavaScript as a lightweight, fun language to play with. But it's enormously more efficient. So some of the big, heavy, client-oriented applications out there like Google Wave would be much zippier if they were written in Go, but of course they can't be written in Go because it doesn't run in a browser yet. But I'd like to see some stuff in that direction, too, although how that's going to happen I don't know."
http://www.eweek.com/c/a/Application-Development/12-Things-to-Know-About-Googles-Go-Programming-Language-859839/

Google Chrome OS: A Nice Place to Visit, But?



Google's Chrome operating system could mark a turning point in computing, but many questions remain. Today's rumor is the OS will be released to developers next week, answering some questions but probably raising even more. Google had previously promised Chrome OS, in some form, before the end of this year.
Chrome OS strikes me as being just enough Linux to allow an underpowered computer to run Chrome browser and connect to cloud-based applications. How exciting can that really be?

On a netbook, Chrome OS may be enough to provide mobile functionality. On a desktop, Chrome OS may turn a PC into a glorified terminal, relying on the Internet for nearly everything the user does.

There are many questions about Chrome OS, some of which may be answered when Google releases whatever it decides to make available to make good its promise to release the OS, in some form, before the end of this year.

Among those questions:

Just how limited will Chrome OS be? What will and won't it do?
Will it natively run third-party applications on the hardware where it resides? Or just to connect to applications in the Internet cloud?
Will cloud apps need to be written specifically for Chrome?
Will Chrome create a standard for the look-and-feel for cloud application?
Might Chrome only run applications that Google hosts?
Will Chrome require--or even use--a hard drive? Might Chrome OS netbooks have a small silicon drive and nothing else?
When Google promises an end to security hassles, such a viruses, malware, or updates, what trade-offs are required?
Google has previously said Chrome is intended to be lightweight and get users connected to cloud applications quickly. The company seems to believe that cloud apps will become pervasive and will not require a very powerful machine to run them.

Thus, Google is creating a very lightweight browser (Chrome) to run atop what amounts to an embedded operating system (Chrome OS) running on netbooks (to be released next year).

I also expect the OS to include Gears, Google's technology for offline access to its cloud-based applications.

What will Chrome do beyond that? Maybe nothing. If Google really believes its cloud rhetoric and is really serious that Chrome OS will be virus-free, maybe the new OS won't run applications, just the browser and Gears?

Add a robust security mechanism, to make certain the cloud-based applications and Web sites haven't been tampered with, and Chrome could be a more secure operating system than we're used to. If only by keeping the computer from doing anything besides interacting with Web sites and web-based applications.

I find that idea strangely attractive, though it will certainly result in devices with limited functionality, just like today's netbooks. However, performance may actually be better since netbooks could be freed from laboring to run Windows and heavy Windows applications.

Google Chrome OS introduces a new computing model and may even change how we think about operating systems. Its importance hinges upon how widely and quickly cloud applications take center stage, what trade-offs customers are willing to make, and most importantly, what Chrome OS actually turns out to be.
http://www.pcworld.com/businesscenter/article/182152/google_chrome_os_a_nice_place_to_visit_but.html