main
Report a problem

Google introduces new 'Go' programming language

Sam Symons   on 11 November 2009 - 04:22 · 48 comments & 9042 views

Advertisement (Why?)
Search, mail, mobile operating systems, advertising and mapping. These are all areas in which Google plays a big part. The company is ever expanding, however, and today they've demonstrated that: Google has just introduced an entirely new programming language, taking influences from C++ and Python, called, quite simply, Go.

The language, which has a website here, "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++," according to the blog post made by Google. To give you a sample of the code, courtesy of TechCrunch, here is a simple 'Hello, World!' program.

05 package main

07 import fmt "fmt" // Package implementing formatted I/O.

09 func main() {
10 fmt.Printf("Hello, world; or Καλημέρα κόσμε; or こんにちは 世界n");
11 }


The company listed its reasoning behind this language in the Go FAQ, found on the aforementioned site, which we've shown below:
  • Computers are enormously quicker but software development is not faster.
  • Dependency management is a big part of software development today but the "header files" of languages in the C tradition are antithetical to clean dependency analysis—and fast compilation.
  • There is a growing rebellion against cumbersome type systems like those of Java and C++, pushing people towards dynamically typed languages such as Python and javascript.
  • Some fundamental concepts such as garbage collection and parallel computation are not well supported by popular systems languages.
  • The emergence of multicore computers has generated worry and confusion.
It's an interesting concept, and it'll be fascinating to see if it catches on. If you need some more information, we've embedded a YouTube video from Google, displaying the speed of the language.


Post a comment · Send to friend Comments · There are 48 additional comments
#1 WhoTheF on 11 Nov 2009 - 04:39
Let's see how efficient this gets. I'd want Google to put this under use under their own products.
#2 virtorio on 11 Nov 2009 - 04:41
Some interesting ideas here, but I hate it's class (or interface) implementation.

I'll be giving this a watch though later on: http://www.youtube.com/watch?v=rKnDgT73v8s
#3 Avangelon on 11 Nov 2009 - 04:42
Crazy. Cool
#4 jase chaos on 11 Nov 2009 - 05:05
Go Google!

This is awesome and I can't wait to learn this coding.
(2 replies) #5 M_Lyons10 on 11 Nov 2009 - 05:46
Looks interesting. I do wonder though how much adoption it will get. That's aaaawful important for a programming language... It is interesting though.
#5.1 PCBEEF on 11 Nov 2009 - 06:25
C# exists because of Microsoft
Ada existed because of DoD

Since Go is backed up by google I doubt they will have a problem with adoption.
#5.2 toadeater on 11 Nov 2009 - 23:38
PCBEEF said,
C# exists because of Microsoft
Ada existed because of DoD

Since Go is backed up by google I doubt they will have a problem with adoption.


ADA was forced by the DoD. You did not have a choice. C# is being pushed by MS through numerous channels. Google doesn't have the leverage to push Go through the same way.
(1 reply) #6 vaximily on 11 Nov 2009 - 05:57
This is huge... there hasn't been a new introduction of a programming language in years that I can think of... I hope this catches on, Google's development cycles go crazy fast, so it has serious potential to change the face of computing.

On a side note, I'm betting this is a result of Chrome OS.
#6.1 dotf on 12 Nov 2009 - 16:27
vaximily said,
This is huge... there hasn't been a new introduction of a programming language in years that I can think of...



F# ?
(4 replies) #7 redfox2200 on 11 Nov 2009 - 06:03
are they to kill C++? Im so disappointed ppl are not developing with C++ any more
#7.1 PCBEEF on 11 Nov 2009 - 06:27
um what?
#7.2 LoveThePenguin on 11 Nov 2009 - 06:47
redfox2200 said,
are they to kill C++?

Not likely.

redfox2200 said,
Im so disappointed ppl are not developing with C++ any more

C++ is bloated. If I'm going to develop a lean professional app, i'll use C. If I want development speed and simplicity, i'll choose something like python. Most programmers know that Google's go has been around for a while.
#7.3 Jugalator on 11 Nov 2009 - 08:47
C++ is ugly due to its backwards compatibility with C. It always was. *thinks of simple things as declaring static class variables and crapping all over both header and implementation files* It's common though, and won't be killed easily.
#7.4 dagrimdialer619 on 12 Nov 2009 - 00:46
Visual Basic 6. Ftw.
(1 reply) #8 phdem on 11 Nov 2009 - 07:10
I really wonder if Go will be adopted... I 'm going to give it a GO though!
#8.1 FusionOpz on 11 Nov 2009 - 07:47
Man... That was full on win!
(1 reply) #9 Fluesopp on 11 Nov 2009 - 08:12
I wonder if they will go for the obvious joke?

10 GOTO GO
#9.1 fobban on 11 Nov 2009 - 08:59
Fluesopp said,
I wonder if they will go for the obvious joke?

10 GOTO GO

HEHE
(1 reply) #10 Jugalator on 11 Nov 2009 - 08:50
Interesting! There was already the D programming language for a C# like language with C/C++'s performance, but has been a bit hindered by the lack of complete IDE's with integrated GUI designers and debugger support, as well as a good standard GUI library in the first place. It was also not quite to the level of looking like a *scripting* language, but more like a modern managed language with garbage collection. I'll have to take a look of this. It's definitely an interesting niche to fill and not a why-did-they-make-ANOTHER-language problem at all in my eyes. Show me another scripting-like language with C performance then. ;-) Python, Perl, Ruby, PHP all have horrible performance in comparison.

It doesn't run on Windows though.

Last edited by Jugalator on 11 Nov 2009 - 09:01
#10.1 Jugalator on 11 Nov 2009 - 09:27
Wow, replying to myself, but would just like to add that Ken Thompson is one of the people behind this language. This is the famous co-designer of MULTICS and UNIX, and B, the language that preceded C, and contributed to the popularity of regular expressions. He also co-designed the now common UTF-8 character encoding. He apparently now works for Google as "Distinguished Engineer".

(4 replies) #11 XerXis on 11 Nov 2009 - 09:05
Don't like the syntax very much, i miss the () around if and for constructs, they make it all much clearer imho.

Also don't like the declaration syntax, var s string seems so much more bloated compared to string s. Also the fact that sometimes semicolumns are needed and other times not creates more confusion than it solves.

I don't like the fact that strings are immutable, although I do see the reasoning behind it.

I will be sure to check it out, but on first sight nothing that will drive me away from c++ or c#/java
#11.1 Jugalator on 11 Nov 2009 - 09:32
XerXis said,
Don't like the syntax very much, i miss the () around if and for constructs, they make it all much clearer imho.

I'm not sure how they make things clearer; they're redundant symbols, and the only thing you use them to is to separate them from a single keyword, in the case of "if", a single two letter keyword. "var s string" is to make compilations faster and doesn't affect the language efficiency. Also, semicolons are used kind of like commas in C. Treat them like that rather than a weird construct, and it makes it easier to know when to use them: Every time you need to separate things (statements, declarations, etc). Never elsewhere. Easy rule IMHO.

Given your kind of complaints, I'm surprised you didn't bring up the interfaces.

Anyway... You never brought up the major work for integrated multicore programming. That was the most impressive part IMHO! A language that doesn't just provide simple thread synchronization primitives and leaves the rest as an afterthought for a later bolted-on library, but provides it like a core language concept.

Last edited by Jugalator on 11 Nov 2009 - 09:38
#11.2 XerXis on 11 Nov 2009 - 09:39
Jugalator said,
I'm not sure how they make things clearer; they're redundant symbols, and the only thing you use them to is to separate them from a single keyword, in the case of "if", a single two letter keyword. "var s string" is to make compilations faster and doesn't affect the language efficiency. Also, semicolons are used kind of like commas in C. Treat them like that rather than a weird construct, and it makes it easier to know when to use them: Every time you need to separate things (statements, declarations, etc). Never elsewhere. Easy rule IMHO.

Given your kind of complaints, I'm surprised you didn't bring up the interfaces.

Anyway... You never brought up the major work for integrated multicore programming. That was the most impressive part IMHO! A language that doesn't just provide simple thread synchronization primitives and leaves the rest as an afterthought for a later bolted-on library, but provides it like a core language concept.


hadn't come that far yet, i have a deadline coming up so now is not the time to explore a new language This were just my very first impressions based on the examples I saw
#11.3 tomjol on 11 Nov 2009 - 13:13
XerXis said,
Also the fact that sometimes semicolumns are needed and other times not creates more confusion than it solves.


Why why why why WHY did they do this?! I can see the logic behind "if you don't need it, don't use it", but the fact is that just about everyone is used to either using one or not using one dependent upon language, not having to decide "well, have I got another statement coming after this one?".

Stupid.
#11.4 XerXis on 11 Nov 2009 - 14:25
Jugalator said,
I'm not sure how they make things clearer; they're redundant symbols, and the only thing you use them to is to separate them from a single keyword, in the case of "if", a single two letter keyword. "var s string" is to make compilations faster and doesn't affect the language efficiency. Also, semicolons are used kind of like commas in C. Treat them like that rather than a weird construct, and it makes it easier to know when to use them: Every time you need to separate things (statements, declarations, etc). Never elsewhere. Easy rule IMHO.

Given your kind of complaints, I'm surprised you didn't bring up the interfaces.

Anyway... You never brought up the major work for integrated multicore programming. That was the most impressive part IMHO! A language that doesn't just provide simple thread synchronization primitives and leaves the rest as an afterthought for a later bolted-on library, but provides it like a core language concept.


ok, just saw the interface concept, creates a jumbled mess if you ask me. The code examples they showed of in the techtalk looked like a nightmare imho.
(4 replies) #12 omni1 on 11 Nov 2009 - 10:10
It's probably worth noting that there is a already an established programming language using the name Go that has a book and several papers published about it. It's author raised an issue in the golang tracker.

http://code.google.com/p/go/issues/detail?id=9

It would of been nice if Google could.. y'know.. Goolge it. Then again Go is a pretty ridiculous name for a language.
#12.1 tiagosilva29 on 11 Nov 2009 - 11:14
I was going to post that. ****ing fail.
Also, there shouldn't be any numbers in the example code...?
#12.2 omni1 on 11 Nov 2009 - 11:51
tiagosilva29 said,
I was going to post that. ****ing fail.
Also, there shouldn't be any numbers in the example code...?


They're line numbers.
#12.3 tiagosilva29 on 11 Nov 2009 - 17:27
omni1 said,
They're line numbers.

They shouldn't be there. People may think they're dealing with a Basic-like language.
#12.4 Doli on 11 Nov 2009 - 18:38
So there is already a Go, well GO! programing language. I wonder what is going to happen, Google changes the name or the guy gets screwed.
#13 DATmafia on 11 Nov 2009 - 11:04
All very in-depth and knowledgeable replies thus far shedding light on many angles and possible problems a new language like this presents. As a total programming n00b (BASIC and HTML skills no longer valid as geek worthy of coarse) it does make me want to ask these questions: Since most application development targets workstations, servers, databases, websites and use of the cloud as possible application service core is Go the type of language that is trying to unify development to provide the answer for less bloat, interoperability and backwards compatibility for the post Web 2.0 era? Is there more hype to this than what realistically can be achieved with such an ambitious new language?
#14 CrownedClown03 on 11 Nov 2009 - 11:08
Looks interesting. I'll check it out.
(4 replies) #15 Majesticmerc on 11 Nov 2009 - 12:52
I can't view the video at work, but from the basic documentation, it looks good, but not great. A few issues I have with it:

  1. "Go does not support function overloading and does not support user defined operators"
    This is one of the KEY features of many modern languages in my opinion. To not support operator overloading, let alone function overloading is very restrictive for complex software.
  2. NIL
    What the hell was wrong with the word "NULL"? There's no need to change it just to be different.
  3. No support for ENUM.
    C/C++ support for enumerations is poor at best, but that doesn't mean that they need to be done away with, the .NET support for enums is good, and proves very useful at times. I don't see why they implemented it as the awful looking "IOTA" variable declaration.


On the other hand though, I do like the idea of having a "Strongly typed Python" to work with, and the multi-threading, thread communication (I wonder how pipes work?) and array support is pretty cool.

I do also argue that software development is much faster. Languages (in particular .NET) make development very rapid, and writing a C# GUI application can be written in days as opposed to weeks with a similar C/C++ GUI application to perform the same task.

Last edited by Majesticmerc on 11 Nov 2009 - 12:58
#15.1 Magallanes on 11 Nov 2009 - 13:41
well, at least is thousand times better than the implementation of Google App Engine :

-you can't do inner or outer join.
-it is limited to 1000 files, Django is no less than 700 files (a ripped version of django).
-queries are limited to 1000 rows.
-you can't page queries using offset because it cut the result:
a offset of 0 show 0..999 registries = 1000 rows
a offset of 100 show 100.999 registries. 900 rows
-You can't do full text search.

Google GAE scalability my butt!.

Apparently, Google is playing a role of Jack of All trades (master of none).
#15.2 omni1 on 11 Nov 2009 - 13:44
Majesticmerc said,
I can't view the video at work, but from the basic documentation, it looks good, but not great. A few issues I have with it:



  1. "Go does not support function overloading and does not support user defined operators"

    This is one of the KEY features of many modern languages in my opinion. To not support operator overloading, let alone function overloading is very restrictive for complex software.

  2. NIL
    What the hell was wrong with the word "NULL"? There's no need to change it just to be different.

  3. No support for ENUM.
    C/C++ support for enumerations is poor at best, but that doesn't mean that they need to be done away with, the .NET support for enums is good, and proves very useful at times. I don't see why they implemented it as the awful looking "IOTA" variable declaration.


On the other hand though, I do like the idea of having a "Strongly typed Python" to work with, and the multi-threading, thread communication (I wonder how pipes work?) and array support is pretty cool.

I do also argue that software development is much faster. Languages (in particular .NET) make development very rapid, and writing a C# GUI application can be written in days as opposed to weeks with a similar C/C++ GUI application to perform the same task.


They aren't really interested in GUIs and C# is probably not in their sights at all. It is a 'systems language' -- designed for very rapid, very high quality and very efficient code. This is an industry where passing binary flags to applications is commonplace; they aren't particularly worried about enums. This isn't your typical high level language and if you're looking for something to handhold you away from C# or Delphi then this probably isn't it.

It will largely depend on the programmer but operator overloading and exceptions are quite often seen as bad practise used by less experienced programmers and only serve to increase code complexity (at least in Google's eyes, check out their style guide for C/C++).

It's also worth noting it has zero Windows support at this point.

Last edited by omni1 on 11 Nov 2009 - 13:51
#15.3 GreatBarrier86 on 11 Nov 2009 - 21:40
Majesticmerc said,
I can't view the video at work, but from the basic documentation, it looks good, but not great. A few issues I have with it:
NIL
What the hell was wrong with the word "NULL"? There's no need to change it just to be different.


I personally hate NIL, but actually Delphi uses that instead of null so they didnt just pull it out of their ass.
#15.4 omni1 on 12 Nov 2009 - 04:19
GreatBarrier86 said,
Majesticmerc said,
I can't view the video at work, but from the basic documentation, it looks good, but not great. A few issues I have with it:
NIL
What the hell was wrong with the word "NULL"? There's no need to change it just to be different.


I personally hate NIL, but actually Delphi uses that instead of null so they didnt just pull it out of their ass.


It is the same in Lisp, ML, and Lua.
#16 RealFduch on 11 Nov 2009 - 13:21
Just use IronPython and fordet this google mess.
(1 reply) #17 EJocys on 11 Nov 2009 - 14:14
For me all languages can die except C, C++, C# and JavaScript. Actually restricted C# version must replace JavaScript on all browsers and something similar to "LINQ to SQL" must replace SQL language so we will end up with one object oriented language which could be improved. All these different languages are just brick inside wheel of progress. So many human resources are uselessly wasted on converting and understanding all this stuff, there are so many duplicated content. Its better to have one good refined language instead of many incomplete and flawed ones. Same with all these different web browsers. Instead of doing something creative new and useful we need to waste our time on JavaScript/HTML code just to make sure it works properly on all of them.
#17.1 marius.fanu on 11 Nov 2009 - 14:39
Objective C is a nice language too!
#18 acido00 on 11 Nov 2009 - 14:29
another language?

oh my gosh! Google should focus in other thing instead of new language
#19 Shadrack on 11 Nov 2009 - 17:14
I think they should have come out with a graphical programming language, like LabVIEW (which is called, G code). Not much competition in the graphical programming languages.
#20 ChrisJ1968 on 11 Nov 2009 - 22:03
when should this be ready? I mean when can we get our paws on it?
#21 Sigmatic.Minor on 11 Nov 2009 - 22:20
Google just keeping getting more awesome everyday!
#22 The Patriot on 12 Nov 2009 - 00:15
I'm not impressed. According to the guy in the video, his favorite thing about coding in "Go" is that it "build's fast". Seriously? You say nothing about the expressiveness of the language or how it reduces your development time?

Let me tell you what I like about working with my favorite language, Smalltalk:
1. EVERYTHING is a first class object.
2. Smalltalk code is simple and clear - send an object a message and it performs and action. (Now you know how to code in Smalltalk too)
3. It's fast, or nearly as fast as C++ but allows me to model much more complex relationships due to 1. and 2.

Ruby is a step in the right direction although it should take a few more pages out of the Smalltalk playbook (Ruby blocks should be first class objects that I can pass messages to...).

Drop this Go nonsense and get behind Ruby on Rails Google.
(2 replies) #23 +petrossa on 12 Nov 2009 - 10:23
Really necessary a new programming language. YetAnotherProgrammingLanguage.
It was not bad enough we got stuck with the Lego set C#, no we need to pollute C even more.
Give it a rest.
#23.1 GreatBarrier86 on 12 Nov 2009 - 12:33
petrossa said,
Really necessary a new programming language. YetAnotherProgrammingLanguage.
It was not bad enough we got stuck with the Lego set C#, no we need to pollute C even more.
Give it a rest.


Hey hey. No need to be rude! lol I like C#. Yeah, it's slow...and awkward, but it's syntax is good...
#23.2 Skwerl on 12 Nov 2009 - 17:46
GreatBarrier86 said,
petrossa said,
Really necessary a new programming language. YetAnotherProgrammingLanguage.
It was not bad enough we got stuck with the Lego set C#, no we need to pollute C even more.
Give it a rest.


Hey hey. No need to be rude! lol I like C#. Yeah, it's slow...and awkward, but it's syntax is good...



There's nothing slow or awkward about it. It's one of the most productive and elegant languages ever created.

Commenting has either been disabled on this article or you are not logged in. Click here to login or register, its free!

Note: Anonymous commenting is disabled in order to keep the quality of responses to a high standard.

Advertisement (Why?)