-=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- (c) WidthPadding Industries 1987 0|699|0 -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=-
SoCoder -> Link Home -> Dev-News


 
Jayenkai
Created : 11 November 2009
 

GO! Google's Language



https://golang.org/
Go, a nice simple mixup of other languages for whatever the hell reason Google decided to make one.



Yeay! No ;'s!!

 

Comments


Wednesday, 11 November 2009, 11:56
shroom_monk
But I like semicolons... They make things neater.
Wednesday, 11 November 2009, 17:54
steve_ancell
I looked at the tutorials section on the website, there doesn't seem to be any graphics or audio stuff in there.

So the bottom line is...
What the bloody hell can I use this language for ?
Thursday, 12 November 2009, 00:14
Afr0
Writing server software?
Thursday, 12 November 2009, 06:41
JL235
Apparently there is already a programming language called Go!, with it's own book called 'Lets Go!'.
Thursday, 12 November 2009, 09:15
steve_ancell
Afr0 Writing server software?

So it's basically a replacement for PHP/ASP/JSP etc ?
Thursday, 12 November 2009, 09:57
JL235
Most languages can interface with external libraries, i.e. dlls. I expect this is also true with Go. But I'm with Afro that this is probably for server side software.

steve_ancell So it's basically a replacement for PHP/ASP/JSP etc ?

No, I don't think it's for small web-stuff. Instead it'll be for large server side apps that continuously run in the background. Existing versions are probably built in C++ and Java, I expect it's these languages that Go aims to replace.

One of the main issue will be that Google has thousands of servers each with anywhere from 10s to 1000s of cores. Building an app that utilises a 1000 cores will make it potentially run 1000 times faster, but it's also bloody hard to do. I expect Go is built to solve this particular issue, very large and process intensive applications.

C++ and Java are notoriously very difficult to use for building highly-concurrent apps. This is because of their threading model where shared state is serialized through the use of locks. Too much serialization and your app will freeze up because of dead and live locks. Too little and you'll get corrupted data (race hazards). Even if you get it right it typically only scales to about 10 cores. An example is that at Microsoft approximately 80% of their bugs are down to errors with threaded code.

Go aims to be a fast, compiled language with CSP extensions for building concurrent languages. CSP being a process based concurrency model which typically scales far better (and more importantly far easier) then threads and locks.

With threads and locks deadlocks, livelocks and race hazards are typically very difficult to find. With CSP you can detect deadlocks at runtime and sometimes even at compile time. An error stating there is a deadlock (and where) is thousands of times better then having an app become slow or freeze up. Race hazards can occur in CSP based systems, but unlike threads and locks you don't get them for free. They occur only as a part of a bad design.