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:
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.
















I'll be giving this a watch though later on: http://www.youtube.com/watch?v=rKnDgT73v8s
This is awesome and I can't wait to learn this coding.
Ada existed because of DoD
Since Go is backed up by google I doubt they will have a problem with adoption.
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.
On a side note, I'm betting this is a result of Chrome OS.
F# ?
Not likely.
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.
HEHE
It doesn't run on Windows though.
Last edited by Jugalator on 11 Nov 2009 - 09:01
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
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
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
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.
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.
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.
Also, there shouldn't be any numbers in the example code...?
Also, there shouldn't be any numbers in the example code...?
They're line numbers.
They shouldn't be there. People may think they're dealing with a Basic-like language.
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.
What the hell was wrong with the word "NULL"? There's no need to change it just to be different.
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
-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).
"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.
NIL
What the hell was wrong with the word "NULL"? There's no need to change it just to be different.
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
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.
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.
oh my gosh! Google should focus in other thing instead of new language
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.
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.
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...
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.