Beta

Slashdot: News for Nerds

×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Go Version 1 Released

Soulskill posted more than 2 years ago | from the way-to-go dept.

Programming 186

New submitter smwny writes "Google's system programming language, Go, has just reached the 1.0 milestone. From the announcement: 'Go 1 is the first release of Go that is available in supported binary distributions. They are available for Linux, FreeBSD, Mac OS X and, we are thrilled to announce, Windows. ... Go 1 introduces changes to the language (such as new types for Unicode characters and errors) and the standard library (such as the new time package and renamings in the strconv package). Also, the package hierarchy has been rearranged to group related items together, such as moving the networking facilities, for instance the rpc package, into subdirectories of net. A complete list of changes is documented in the Go 1 release notes. That document is an essential reference for programmers migrating code from earlier versions of Go. ... A similar process of revision and stabilization has been applied to the App Engine libraries, providing a base for developers to build programs for App Engine that will run for years.'"

cancel ×

186 comments

blah (-1)

Anonymous Coward | more than 2 years ago | (#39499529)

1st

Finally (0, Offtopic)

Ignacio (1465) | more than 2 years ago | (#39499639)

Awesome. Only took them about 2000 years or so [wikipedia.org] too.

A work in progress (1)

MRe_nl (306212) | more than 2 years ago | (#39500189)

Fuego, North Korean Silver Star/KCC Igo, ZhiXing Chen's Handtalk, Michael Reiss's Go++, David Fotland's Many Faces of Go, GNU Go. Still nothing close to human.

http://en.wikipedia.org/wiki/Computer_Go [wikipedia.org]

Re:A work in progress (1)

Raenex (947668) | more than 2 years ago | (#39500813)

Still nothing close to human.

I don't know what you mean by that. If it's performance, you don't make any mention of Zen. Try reading the "Recent results" section from your link. It's 6d on KGS (5d in slower games), and recently beat a pro with only 4 stones handicap.

Re:A work in progress (1)

MRe_nl (306212) | more than 2 years ago | (#39502487)

ONLY 4 stones handicap? My grandmother could beat a pro with four stones handicap, and she was a Bridge player ; ).

Go is already being used (4, Interesting)

CondeZer0 (158969) | more than 2 years ago | (#39499649)

The amazing thing is that even before the first stable release is out quite a few organizations are using Go in production to run real systems. Very impressive:

http://go-lang.cat-v.org/organizations-using-go [cat-v.org]

Re:Go is already being used (0, Flamebait)

Desler (1608317) | more than 2 years ago | (#39499789)

Yay! A bunch of no-names (with very few exceptions) are using it! Great success!

Re:Go is already being used (0)

Anonymous Coward | more than 2 years ago | (#39500397)

no-names for you, in fact im surprised that the Cablenet organization listed is in fact my ISP!

Re:Go is already being used (1)

Anonymous Coward | more than 2 years ago | (#39500201)

Yeah, very impressive. Only one name in there barely worth mentioning.

Re:Go is already being used (2)

vAltyR (1783466) | more than 2 years ago | (#39502727)

Don't forget vitess [google.com] , which is a Google project aimed at making MySQL databases scale better, and is used in YouTube. The Thanksgiving Google Doodle [golang.org] was also written in Go, and developed in 24 hours. Google does eat their own dogfood.

Added value of Go? (5, Interesting)

billcarson (2438218) | more than 2 years ago | (#39499691)

Can someone explain to me what Go's aim is, and why exactly it requires a new programming language? Is it meant a replacement for Java/C++/Python, or does it cater a new branch of programming?

Re:Added value of Go? (-1, Flamebait)

Anonymous Coward | more than 2 years ago | (#39499769)

Its for mining data and writing advertisements and that appear to be applications.

Re:Added value of Go? (5, Informative)

cgt (1976654) | more than 2 years ago | (#39499787)

It is supposed to be a systems language like C, but better. It's sort of like Pythonic C (very expressive, but still C like).

Re:Added value of Go? (4, Interesting)

Urban Garlic (447282) | more than 2 years ago | (#39499981)

Maybe I'm too old-school, but when I think "systems language", I think about something that would be good for embedded devices or kernel device drivers, stuff that's pretty close to the metal. I wouldn't use Go for that, garbage-collection and concurrency mean there's heap traffic and IPC signaling under the hood that I probably want to control.

I agree with the "C but better" characterization, but the ways in which it's better disqualify it from being a good systems tool, I think.

Re:Added value of Go? (4, Informative)

PCM2 (4486) | more than 2 years ago | (#39500027)

Maybe I'm too old-school, but when I think "systems language", I think about something that would be good for embedded devices or kernel device drivers, stuff that's pretty close to the metal. I wouldn't use Go for that, garbage-collection and concurrency mean there's heap traffic and IPC signaling under the hood that I probably want to control.

Java is used in a lot of embedded systems, and it has garbage collection and concurrency.

Unlike Java, though, Go compiles to native binaries, rather than running on a VM (though maybe the real difference is debatable with modern JITs).

Re:Added value of Go? (1)

Anonymous Coward | more than 2 years ago | (#39500931)

I work with multi-function printers that use Java for their embedded software, and BY CHRIST can you tell when it comes time to boot the fucking horrible things.

I don't know whether Java is poorly suited to embedded environments, or just that there's a particularly poor implementation being used, but it's universally poor on devices from several different manufacturers.

Re:Added value of Go? (1)

GWBasic (900357) | more than 2 years ago | (#39502179)

I get the impression that go is suited to high-performance network software where C would be too low-level. The memory isolation model minimizes the overhead of garbage collection, because it can be optimized to not "stop the world."

Re:Added value of Go? (2, Interesting)

Spykk (823586) | more than 2 years ago | (#39502767)

I tried grabbing go and compiled a hello world to compare it to C:

[talisman@talisman-pc:~/tmp]$ uname -a
Linux talisman-pc 3.2.13-1-ARCH #1 SMP PREEMPT Sat Mar 24 09:10:39 CET 2012 x86_64 AMD Athlon(tm) II X4 640 Processor AuthenticAMD GNU/Linux
[talisman@talisman-pc:~/tmp]$ cat test.go
package main

import "fmt"

func main() {
fmt.Println("Hello, world")
}
[talisman@talisman-pc:~/tmp]$ time go build test.go

real 0m2.215s
user 0m2.547s
sys 0m0.210s
[talisman@talisman-pc:~/tmp]$ ls -lh test
-rwxr-xr-x 1 talisman talisman 1.3M Mar 28 15:43 test
[talisman@talisman-pc:~/tmp]$ time ./test
Hello, world

real 0m0.003s
user 0m0.000s
sys 0m0.000s
[talisman@talisman-pc:~/tmp]$ cat test.c
#include <stdio.h>

int main(int argc, char **argv) {
printf("Hello, World!");
return 0;
}
[talisman@talisman-pc:~/tmp]$ time gcc test.c

real 0m0.047s
user 0m0.027s
sys 0m0.013s
[talisman@talisman-pc:~/tmp]$ ls -lh a.out
-rwxr-xr-x 1 talisman talisman 6.6K Mar 28 15:45 a.out
[talisman@talisman-pc:~/tmp]$ time ./a.out
Hello, World!
real 0m0.001s
user 0m0.000s
sys 0m0.000s
[talisman@talisman-pc:~/tmp]$

This is obviously not a very scientific comparison, but the takeaways are that the go executable was 1.3M compared to the C executables 6.6K and the go compile took over 2 seconds whereas the C compile took less than 0.05 seconds.

Re:Added value of Go? (1)

Greyfox (87712) | more than 2 years ago | (#39502905)

You can come up one level from that and still be doing systems programming types of stuff. I tend to think of things like process control (fork, exec, waitpid, etc,) and IPC (semaphores, pipes, shared memory, network sockets.) Stuff like writing shells and servers, that not everyone got into. The old IRC, FTP, telnet, DNS and mail servers I'd consider examples of system programming. Also your shell, and maybe the editor (Maybe vi, maybe not ed...) Some of that stuff can be done equally as well in Java, though I'm pretty sure I wouldn't want to write a shell using Java.

I'm not sure Go would be any better in these areas. I did the language-of-the-week club thing with Java, Perl, Python and Ruby and have always come back to C or C++. I'm really not inclined to look at another entry in the club unless it's offering something really compelling. If Google tells Oracle to take a hike and re-implements Android in Go, maybe then I'd take a look. Otherwise, I'm not really in any hurry to delve deeper into the language.

Re:Added value of Go? (0)

Anonymous Coward | more than 2 years ago | (#39501855)

See, I thought that was the goal as well, but when you actually look at it, Go is pretty awkward as a systems language. Garbage collection, IPC mechanism as part of the language, a complex runtime requirement and no pointer arithmetic.

From what I can see from the one and only Go operating system I can find, most of the code ends up being C and asm that implements either the Go runtime, or the bits that Go can't do itself or are too awkward to do in Go (MMIO for example, although it may be possible to do that with Slices?)

Re:Added value of Go? (5, Insightful)

GreatBunzinni (642500) | more than 2 years ago | (#39502579)

It is supposed to be a systems language like C, but better.

IMHO, if it isn't standardized, opened up and backed up by an international standard then it will never be better than C. For all problems that may or may not affect C and for all problems involved in the development and update of a standard for each version of the C programming language, these multiple versions of the C programming language are effectively set in stone. This means that the language is future-proof, as multiple implementations may be developed and, by targetting the standard, they can interoperate without any major consequence.

If Go isn't standardized and if Google intends to control the language then it would be a terrible decision to adopt Go instead of a time-tested, well established tool which is future-proof and resistent to bit-rot. We all have Oracle and Java [javaworld.com] as a good warning.

Re:Added value of Go? (2)

Quirkz (1206400) | more than 2 years ago | (#39499895)

In addition, if I'm a hobbyist programmer who's gotten by on PHP and some JavaScript for web stuff over the last decade and a half, and I'm thinking about picking up something new, should I consider Go or stick with one of the older standards?

Re:Added value of Go? (2)

aardvarkjoe (156801) | more than 2 years ago | (#39500075)

I spent a little time playing around with it a few months ago. It had its good points and bad points -- enough of the latter that I didn't pursue it any further.

The syntax is obviously C-inspired, but with some changes, many of which seemed like experimentation -- doing something different just because it's different. Although I don't object to the philosophy, I'd like to see how those changes work out before investing a lot of time into them. In particular, the declaration syntax feels very strange to people who are used to C-style languages. There are also some contortions due to their desire to remove statement-ending semicolons; I wasn't convinced that the savings of not typing ';' was worth the cost.

You get a systems-level language that includes complex data structures, garbage collection, and various other nice features. The standard libraries are useful and fairly comprehensive, although I found several times that documentation, even for built-in libraries, is frequently outdated, insufficient, or nonexistent.

Re:Added value of Go? (3, Insightful)

Anonymous Coward | more than 2 years ago | (#39500699)

I would stay away from Go and pick up Python. It has lots of good libraries and frameworks. Its used in some games and lots of open source projects as their scripting language. Python is a very expressive and general purpose language. It does not appear to be going away within the next decade and in fact I expect Python to become much more prevelent once PyPy becomes more robust. Added to all that, extending Python with commonly available libraries is not a difficult task and there are numerous approaches (each with varying pros and cons) for doing so.

Re:Added value of Go? (1)

Tumbleweed (3706) | more than 2 years ago | (#39501087)

Yeah, I'm waiting for PyPy to be Python 3 compatible, then jumping head-first into it and not looking back.

Re:Added value of Go? (1)

Tumbleweed (3706) | more than 2 years ago | (#39501061)

Go isn't intended to replace web scripting languages. Dart is their language intended to replace JavaScript, and it's going to go exactly nowhere.

I'd suggest Python to replace PHP, and jQuery to abstract away the bulk of the pain of multi-browser JavaScript.

But it depends on if you're talking continuing to do web stuff, or if you want to do something else.

Re:Added value of Go? (1)

Quirkz (1206400) | more than 2 years ago | (#39501587)

A little bit of both, probably. I'm definitely curious about at least trying some non-web stuff, in addition to likely continuing to do web-based work as well. My last project was a web-based game and I haven't quite figured out what the next project is going to be.

Sounds like Python is appropriate for almost all situations, though, so maybe that's a good direction to pick.

Re:Added value of Go? (1)

Tumbleweed (3706) | more than 2 years ago | (#39501687)

Yeah, Python can definitely be used for non-web stuff. I just saw a video about a guy who used Python to interface with openCV (computer vision) to make a squirrel-shooting watergun. He used Python and openCV to take images from a webcam, and allow it to know the difference between squirrels and birds, and only shoot the squirrels away from the bird feeder. Pretty fun stuff.

Re:Added value of Go? (0)

Anonymous Coward | more than 2 years ago | (#39501701)

jQuery isn't that good.

Re:Added value of Go? (1)

larry bagina (561269) | more than 2 years ago | (#39499927)

It's a replacement/evolution for/of Limbo.

Re:Added value of Go? (3, Informative)

Raenex (947668) | more than 2 years ago | (#39500707)

http://golang.org/doc/go_faq.html [golang.org]

What is the purpose of the project?

No major systems language has emerged in over a decade, but over that time the computing landscape has changed tremendously. There are several trends:

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

We believe it's worth trying again with a new language, a concurrent, garbage-collected language with fast compilation. Regarding the points above:

  • It is possible to compile a large Go program in a few seconds on a single computer.
  • Go provides a model for software construction that makes dependency analysis easy and avoids much of the overhead of C-style include files and libraries.
  • Go's type system has no hierarchy, so no time is spent defining the relationships between types. Also, although Go has static types the language attempts to make types feel lighter weight than in typical OO languages.
  • Go is fully garbage-collected and provides fundamental support for concurrent execution and communication.
  • By its design, Go proposes an approach for the construction of system software on multicore machines.

Wake me (1)

buchner.johannes (1139593) | more than 2 years ago | (#39499697)

Wake me when it has supports seemless integration into Python like Fortran and C (with ctypes) -- then I might consider it for coding CPU-intense stuff. It's supposed to be as fast as C with better syntax, isn't that the point?

Re:Wake me (1)

Cenuij (526885) | more than 2 years ago | (#39499751)

What's the point in that? Go is very expressive. Just write in Go instead of Python.

Re:Wake me (2)

buchner.johannes (1139593) | more than 2 years ago | (#39499823)

What's the point in that? Go is very expressive. Just write in Go instead of Python.

Yes, because all libraries in the world are already written in Go and everything is better in Go than in any other language in the world. You must only work on trivial problems if you don't need other packages / shoulders of giants.

Re:Wake me (0)

Cenuij (526885) | more than 2 years ago | (#39499885)

And what you consider non trivial must be very different from the rest of the world if all you ever do is reach for python.

Re:Wake me (4, Insightful)

amck (34780) | more than 2 years ago | (#39500155)

The GP referred to Fortran and C as well as python.

Increasingly we're seeing lots of legacy code (C / C++ / Fortran) wrapped in Python. People using Python for simplicity and expressiveness, dropping to C , etc. for the heavy lifting. This is especially true in the sciences (in HPC, for example).

Trying to avoid the language flamewar, there are distinct advantages in a small number of interoperable languages like this.
If I'm to try a new language, I want to avoid having to rewrite the world in it. I might convince my colleagues to use my code if they can interop. from the language they are already using, like C/C++ or Python.

Re:Wake me (0)

ioshhdflwuegfh (1067182) | more than 2 years ago | (#39502493)

[...]

Increasingly we're seeing lots of legacy code (C / C++ / Fortran) wrapped in Python.

That does not make sense, you are just confused.

People using Python for simplicity and expressiveness, dropping to C , etc. for the heavy lifting.

You mean they use Python to express themselves and C and FORTRAN to program?

This is especially true in the sciences (in HPC, for example).

You do know what HPC mean, right?

Trying to avoid the language flamewar,

Indeed, indeed.

Re:Wake me (1)

thetoadwarrior (1268702) | more than 2 years ago | (#39499953)

Bad programmers need to rely on someone else to do their job for them

Re:Wake me (4, Insightful)

Ibiwan (763664) | more than 2 years ago | (#39499975)

So do good ones.

Re:Wake me (0)

Anonymous Coward | more than 2 years ago | (#39500311)

Then port them. Or request that the creator of said library port them.
Or write a Python interpreter. (or find someone to do it, make it like a challenge)

I'd still rather learn a new language.
Over-dependence on black-box library-ism is bad coding practice.
You should know how a library at least functions if you are going to use it.

Re:Wake me (1)

Desler (1608317) | more than 2 years ago | (#39499845)

Because not everybody wants to rewrite all existing libraries into Go to use them?

Re:Wake me (2)

Cenuij (526885) | more than 2 years ago | (#39499923)

So write in Go and import the C libs.

I like Go (1)

Anonymous Coward | more than 2 years ago | (#39499709)

I've done some experiments with Go and I like to see a language which does not follow the OOP hype. CSP is a very nice concept and easy to use with the channels and goroutines.

But what I really need is a toolchain that compiles binaries with dynamic libraries. This is how system executables should work. static binaries are not enough!

Re:I like Go (0)

Anonymous Coward | more than 2 years ago | (#39500267)

So I guess this version 1 still doesn't support dynamic/shared libraries? That os the primary thing keeping me from seriously considering this programming language.

Holy hell, how can they put this much work into it and leave that out. Idiotic.

Re:I like Go (0)

Anonymous Coward | more than 2 years ago | (#39500657)

It's built first and foremost to be the language that Google Web Server is written in; I guess they don't use dynamically linked libraries for that application.

Re:I like Go (2)

mounthood (993037) | more than 2 years ago | (#39502537)

First, Go has an FFI system like every other language. You can directly compile C code into your binary, and make wrappers with "cgo" for C and C++ libraries. Second, you should read this about dynamic linking -- I don't know if it's perfectly accurate but it's definitely interesting: What does dynamic linking and communism have got in common? [oracle.com]

Go has some good ideas (2)

larry bagina (561269) | more than 2 years ago | (#39499711)

but mandating their terrible indent style is not one of them.

Re:Go has some good ideas (4, Insightful)

Cenuij (526885) | more than 2 years ago | (#39499793)

The style, or your preference for a particular style, is not important in the least. What's important is the consistency. Really... *nobody* cares what style *you* prefer.

Re:Go has some good ideas (2)

bill_mcgonigle (4333) | more than 2 years ago | (#39501651)

Really... *nobody* cares what style *you* prefer.

The most important person who cares what style he prefers is him. Really, that's all that matters.

It's a silly reason to drive people away from your language. I'm sure a smart preprocessor could deal with many indent styles just fine, but what's scary is when the language developers say, "here is how you will use our language." Because other people always find more clever things to do with flexible languages than the designers intended. That's just being humble.

Re:Go has some good ideas (2)

mounthood (993037) | more than 2 years ago | (#39502213)

The style, or your preference for a particular style, is not important in the least. What's important is the consistency. Really... *nobody* cares what style *you* prefer.

Go has "gofmt" which reformats code to a sensible standard and is also used by editors, so basically all code in Go is formatted consistently. There really isn't any discussion on formatting; everyone has taken the attitude of 'whatever gofmt does is fine, and that's the standard we'll use.'

Re:Go has some good ideas (2)

cgt (1976654) | more than 2 years ago | (#39499861)

I completely agree with this. I love Go! It is the most excited I have been about a programming language since Python, but the semi-colon issue is stupid. Why do automatic insertion of semi-colons if it causes problems? Why not just let developers insert the semi-colons themselves? Programmers have done so for decades so it probably won't kill them. Do it right or don't do it at all (automatic semi-colon insertion).

Re:Go has some good ideas (1)

HiThere (15173) | more than 2 years ago | (#39502837)

The semicolon issue probably isn't any more significant than Python's indentation based syntax. Both can work, and both require adjusting to. And both are a nuisance. I refused to use Python until they officially allowed tab based indentation (as long as you were consistent about it). I.e., as long as Python3000 was going to disallow tab based indentation, I wasn't willing to bother learning it. When they changed that, I found it something I could adapt to. I still find it annoying, but every language has its annoyances.

That said, my beef with Go is that my preferred indentation style alligns open and close brackets. I find this makes it much easier for me to identify a block of code. And Go explicitly forbids this. So I'll need to be shown that it's worth bothering with. (It's got lots of other features that I find questionable, but no others that are so obviously arbitrary misfeatures that were just insisted upon.)

Re:Go has some good ideas (1)

istartedi (132515) | more than 2 years ago | (#39500469)

IMHO the indent wars are best solved in the editors. For example, I've always preferred tabs because one tap of the tab key gets me to the start of the line. Holding down the spacebar is not ergonomic for me. I always overshoot or undershoot.

I could fire another salvo in the tabs vs. spaces war, or I could have an editor that's smart enough to look at spaces at the beginning of the line and let me tab through them. Problem solved.

I don't like Go's K and R indents either. This is only marginally more tricky to solve. The only solution I don't have for it is when use of __LINE__ comes into play. I love to use __LINE__ in C to generate location specific error return codes. If my editor transformed K and R to Whitesmiths then the line numbers would be different. The solution is for the editor to have a notion of shared and local line numbers. If code generated a runtime error based on __LINE__, I would just have to make sure that I told my editor to go to the shared line when debugging the error.

I'm not aware of any editors that have really nailed down a feature set like this. It's been a while since I've looked though.

Re:Go has some good ideas (0)

Anonymous Coward | more than 2 years ago | (#39502349)

For example, I've always preferred tabs because one tap of the tab key gets me to the start of the line. Holding down the spacebar is not ergonomic for me. I always overshoot or undershoot.

I don't understand this comment. Who even uses the tab key or the space key for indenting with modern editors? autoindent, smartindent, cindent, etc. It is probably the weakest tabs vs spaces reason I have ever heard, regardless of the side you're on.

Re:Go has some good ideas (1)

larry bagina (561269) | more than 2 years ago | (#39502385)

The C preprocessor (and other utilities that generate C code) use #line number [filename] to handle that situation.

What are the practical advantages? (0)

Anonymous Coward | more than 2 years ago | (#39499731)

New programming languages aren't a bad thing, but why would one choose Go over other languages currently in use? I see Go programs can be deployed with the Google App Engine, but if a project isn't taking advantage of that, what project(s) would Go most likely be used for?

Announcing Go-BOTS (0, Funny)

Anonymous Coward | more than 2 years ago | (#39499741)

Today I'm announcing the Go-Binary Object Translation System. More details on what it does later, after I figure that out, but it's called Go-BOTS.

Re:Announcing Go-BOTS (1)

Quirkz (1206400) | more than 2 years ago | (#39499929)

Go-Bots suck. Transformers are the only acceptable sentient machinery.

Funny, though, I'll give you that.

Re:Announcing Go-BOTS (1)

I(rispee_I(reme (310391) | more than 2 years ago | (#39501431)

Wandering far off topic here, but I don't get a chance to hold forth on Go-Bots every day...

While you're correct that Go-Bots will always be inferior to Transformers by most measures, they do surpass their Cybertron brethren in one important way: Transformers toys were made of molded plastic, while Go-Bots were made of die-cast metal.

This had two important results:

1. Go-Bots toys always won any fight against Transformers.

2. When you hit your little brother in the head with Cy-Kill [tfu.info] , he stayed down until the paramedics showed up.

Re:Announcing Go-BOTS (1)

Quirkz (1206400) | more than 2 years ago | (#39501711)

Heh. I can't say I ever spent any time with the Go-Bots. I latched on to Transformers first and made it clear no substitute would do. I think I got one Go-Bot once, but it ended up at the back of the closet and ignored. My impression of them, though it may only have been the particular toy that I was given, was that even after "transforming" the robot mode looked almost entirely like the car it had started as, just placed on end with a few flaps folded out, rather than anything even vaguely humanoid. I know a few of the Transformers suffered from that, but I felt even some of the small and cheap ones (Bumblebee for instance) did a decent job of making the robot mode more humanoid.

A few of the Transformers *did* have scattered bits of metal in their construction mixed in with the plastic, though often which pieces and why seemed pretty random. A car door here, half a leg there, some chunk of incongruous shiny gold-colored metal mixed into the grey of a Dinobot for no reason, etc.

I'll admit I never clunked my little brother in the head with a Transformer, and it was entirely because I didn't want to damage the toy, and had nothing to do with fearing I might damage him.

Re:Announcing Go-BOTS (1)

istartedi (132515) | more than 2 years ago | (#39500563)

Can you download it through the Go Network Utility Transfer System?

Re:Announcing Go-BOTS (0)

Anonymous Coward | more than 2 years ago | (#39501115)

Only when you using the Go Go Go Google Automated Download Generating Execution Transmitter.

Go for Web Applications? (1)

Anonymous Coward | more than 2 years ago | (#39499767)

I've been looking beyond PHP for a while, and Go seems like a reasonably good programming language (albeit not entirely comparable to languages like PHP) for web applications. Activity around Go isn't *crazy* but there are quite a few resources [cat-v.org] for what was a "beta" language up till now.

It also seems like Google is giving the project a good distance (note that the official website [golang.org] doesn't mention Google anywere apart from the occasional video), which I think is a good thing.

Anyone here ever used Go for anything serious?

In other news (0)

gadzook33 (740455) | more than 2 years ago | (#39499785)

In other news, Google discovers the value of namespaces. Seriously, I am so tired of new languages with no real reason for being other than "because we could".

Re:In other news (0)

Anonymous Coward | more than 2 years ago | (#39500061)

I'm planning a new langauge called Go2. It is a revision of Intercal [wikipedia.org] with the addition of tag lines and goto statements.

Beard? (2)

ch-chuck (9622) | more than 2 years ago | (#39499831)

Do the developers of GO have beards [techcrunch.com] ?

Pi is wrong on the main site (0)

Anonymous Coward | more than 2 years ago | (#39499945)

If you use the little snippet, concurrent pi displays the wrong digits.

http://golang.org/

screenshot: http://i.imgur.com/v23W3.png

Re:Pi is wrong on the main site (1)

Cenuij (526885) | more than 2 years ago | (#39499985)

// It is an unreasonable way to calculate pi.

Re:Pi is wrong on the main site (3, Interesting)

rgbrenner (317308) | more than 2 years ago | (#39501553)

This is interesting... If you run the Concurrent Pi example program on the Go website.. it prints:

3.1417926135957908

But it should be [uiuc.edu] :

3.1415926535897932

It's wrong starting with the 5th digit...

What kind of language is that inaccurate? And why would they use it as an example program?!

GO is the next major language (SQUIRREL!) (1)

gestalt_n_pepper (991155) | more than 2 years ago | (#39500099)

Just like google real estate will transform the industry (SQUIRREL!) and google's solar power efforts will transform the world (SQUIRREL!) and google's anonymous accounts that protect user privacy (SQUIRREL!).

Sure, I'll invest my precious time in Go. You bet.

Re:GO is the next major language (SQUIRREL!) (1)

nschubach (922175) | more than 2 years ago | (#39500411)

The amazing thing about corporations is that they are comprised of many individuals who can concentrate on many things at once without being distracted by what color squirrel is running past the office in some other lab.

Re:GO is the next major language (SQUIRREL!) (0)

ZeroSumHappiness (1710320) | more than 2 years ago | (#39500631)

SQUIRREL!

What is go? (1)

stox (131684) | more than 2 years ago | (#39500105)

Answer: It is the follow on to Limbo.

It lacks a lot of things that you would expect (1)

Chrisq (894406) | more than 2 years ago | (#39500135)

It lacks a lot of things that you would expect, like inheritance and operator overloading. To me this is a step too far, I mean its like going back to the 70s and using straight c almost.

Re:It lacks a lot of things that you would expect (1)

Anonymous Coward | more than 2 years ago | (#39500211)

Given what a clusterfuck OOP has been, it's good to see new languages have jumped off the sinking ship. Inheritance makes for bloated, unreadable code. Good code uses composition instead, which means you don't have to spend hours tracking down weird vtable bugs.

Operator overloading I happen to agree with you, but it's not a super crucial feature really, just sugar.

I don't much care about go, but anyone who challenges the OOP priesthood is worth listening to in my book.

Re:It lacks a lot of things that you would expect (1)

Chrisq (894406) | more than 2 years ago | (#39500477)

Given what a clusterfuck OOP has been, it's good to see new languages have jumped off the sinking ship. Inheritance makes for bloated, unreadable code. Good code uses composition instead, which means you don't have to spend hours tracking down weird vtable bugs.

In no programming language should you ever have to worry about the vtable, in fact you should only be able to be aware of it in system programming languages. I haven't come across bugs in inheritance since the very early days of C++, when it was implemented as a preprocessor for c.

That said I know that inheritance is one of those things that people disagree on, and thinking that we are better off using composition is a respectable stance. That said, though I would be the first to acknowledge that inheritance can be used to implement bloated, unreadable code, I believe that used correctly it can give very elegant and easy to read solutions.

BTW I meant function overloading rather than operator overloading ... but "go" supports neither.

Re:It lacks a lot of things that you would expect (2)

mounthood (993037) | more than 2 years ago | (#39502311)

Take a look at type embedding: http://golang.org/doc/effective_go.html#embedding [golang.org]

Go does not provide the typical, type-driven notion of subclassing, but it does have the ability to “borrow” pieces of an implementation by embedding types within a struct or interface.

Re:It lacks a lot of things that you would expect (0)

Anonymous Coward | more than 2 years ago | (#39500839)

It doesn't need inheritance, it has embedding. Favor composition over inheritance (FCoI).

Again, Really? (1)

FlyingGuy (989135) | more than 2 years ago | (#39500149)

I was SO hoping this would be another abandoned project

The syntax just blows!

Rube Googleberg Machines? (1)

Mannfred (2543170) | more than 2 years ago | (#39500159)

FTFA:

You might have seen early Go talks in which Rob Pike jokes that the idea for Go arose while waiting for a large Google server to compile. That really was the motivation for Go: to build a language that worked well for building the large software that Google writes and runs.

I looked at the Go pages for 15 minutes to try to figure out why this was commissioned as a project to begin with. Ultimately I ran into the above paragraph. Projects like this make me think that Google no longer has a clear idea of how they could improve their existing business, so they're spending an increasing amount of time rearranging deck chairs to keep their programmers busy on the off chance that they'll need them for something useful.

Re:Rube Googleberg Machines? (5, Informative)

Cenuij (526885) | more than 2 years ago | (#39500339)

I don't think you fully grok what they have achieved. Google employs only a handful of people who work on Go, and probably not all them work full time on it (though maybe that's not true lately in the last release cycle).Let me give you a quote from an accomplished (hint, you use his code every day) C & C++ hacker on using Go:

"In my experience Go is probably 5-10x faster than C or C++. I estimate that programs that take me half an hour to write in Go would take me about 2½ hours in C and 5 hours in C++."

Then when you only have to wait about 10 seconds or so for the whole Go std library *and* all your own libs and binaries to build, you can see it's value over waiting for large C++ projects (of which Google has many) to build.

Re:Rube Googleberg Machines? (1)

jgrahn (181062) | more than 2 years ago | (#39502597)

I don't think you fully grok what they have achieved. Google employs only a handful of people who work on Go, and probably not all them work full time on it (though maybe that's not true lately in the last release cycle).Let me give you a quote from an accomplished (hint, you use his code every day) C & C++ hacker on using Go:

"In my experience Go is probably 5-10x faster than C or C++. I estimate that programs that take me half an hour to write in Go would take me about 2½ hours in C and 5 hours in C++."

Who's that? One of the Go designers, perhaps? He's doing something fundamentally wrong if it takes him more time to code in C++ than in C.

Then when you only have to wait about 10 seconds or so for the whole Go std library *and* all your own libs and binaries to build, you can see it's value over waiting for large C++ projects (of which Google has many) to build.

Long compile times is more of a build system problem than a compiler problem, IME. Of course, lots of people have broken build systems, and compile the same things over and over again ...

Re:Rube Googleberg Machines? (1)

GreatBunzinni (642500) | more than 2 years ago | (#39502661)

"In my experience Go is probably 5-10x faster than C or C++. I estimate that programs that take me half an hour to write in Go would take me about 2½ hours in C and 5 hours in C++."

Extraordinary claims require extraordinary evidence. And the evidence that is out there states that the claim Go is 5-10x faster than C or C++ is bullshit. In fact, it's slower. [debian.org]

Notice the benchmark where Go took 30x the time the C program did to finish the benchmark?

Did they name it properly? (1)

Iniamyen (2440798) | more than 2 years ago | (#39500197)

I wonder if it is a recursive acronym for "Go's Optional"

Another new langauge? (2)

Dwedit (232252) | more than 2 years ago | (#39500223)

How does this language compare with Mozilla's new programming language?

Time to Give Go Another Look (2)

inglorion_on_the_net (1965514) | more than 2 years ago | (#39500289)

First time I looked at Go, my conclusion was "this language isn't ready". The next time I looked at Go, I concluded that it had essentially bled to death. But the release of version 1 changes things. I will take another look. I hope they've worked out enough of the details for me to be able to tell if this is a language I would love to work with or not.

Re:Time to Give Go Another Look (2)

iplayfast (166447) | more than 2 years ago | (#39500431)

The semicolon at the end of the line thing decided me that it was a toy language. That the meaning of the statement(s) change if the semicolon is on a new-line or on the same line.

Re:Time to Give Go Another Look (0)

Anonymous Coward | more than 2 years ago | (#39500945)

The semicolon at the end of the line thing decided me that it was a toy language. That the meaning of the statement(s) change if the semicolon is on a new-line or on the same line.

Yeah, semicolons are certainly the main concern in evaluating a language. It's right up there with } versus ) versus "end".

Re:Time to Give Go Another Look (1)

Cenuij (526885) | more than 2 years ago | (#39500621)

Just skip through the tour: http://tour.golang.org/ [golang.org] until you find something interesting to play with.

nothing to see here... (0)

Anonymous Coward | more than 2 years ago | (#39500457)

I looked and saw a lot of high-mindedness.

Let me know when it can define itself (i.e., its source is "go"),
and maybe I'll be impressed (I suspect it's 'C' or c++).

Many have tried to match the incredible elegance of C, none
have succeeded so far, JMHO.

Re:nothing to see here... (2)

tibit (1762298) | more than 2 years ago | (#39501267)

I don't see how C is elegant. It's a horrible pain to write a lot of modern code from across many disciplines in C and even C++. Most software that deals with hardware or UIs needs to process asynchronous events and producers/consumers, so you need state machines and yield at the very least. Those are almost universally a royal pain to hack around. Just look at the statechart and msm libraries in boost -- and that's C++, not C! In plain C, look at Miro Samek's QP framework. Both C and C++ gets you to drown in irrelevant syntax for anything but old style procedural code, never mind that those languages artificially hide introspective data -- for example, there's no generic way in C nor C++ to add structural information about instances to enable non-conservative garbage collection. Go is a step in the right direction at least, even if it offers no compile-time computation (I consider that a must in any modern language).

Re:nothing to see here... (0)

Anonymous Coward | more than 2 years ago | (#39502651)

Stop trying to use frameworks and get back to the basic language. It's easy and clean to do event-oriented programming in C. Hand written state machines can be written more easily and legibly in C than in just about any other language. This is where the quirks of C shine through.

Integration with other libraries will always be a PITA, and no framework will ever fix that; odds it'll makes things worse by adding complexity and obscurity. The best you can do is focus on the maintainability of your own code: less code, fewer dependencies, saner and simpler designs. Don't try to solve every problem under the sun; rather, solve the problems right in front of you as simply and elegantly as possible, and don't worry about imaginary problems, which will always look different when you actually come upon them.

silly (0)

Anonymous Coward | more than 2 years ago | (#39500901)

Slashtards - everyone knows that version numbers are arbitrary... the only version number that counted was 1.2.13

does Google even use it? (0)

Anonymous Coward | more than 2 years ago | (#39500995)

Last time I checked Googlers were limited to C++, Java, JS, and Python. Isn't this little more than a hobby project of people that work at Google? Maybe calling it "Google's systems programming language" is a bit of a stretch.

Re:does Google even use it? (2)

K. S. Kyosuke (729550) | more than 2 years ago | (#39501405)

Last time I checked Googlers were limited to C++, Java, JS, and Python.

If you check now, you'll find out that the list is C++, Java, JS, Python and Go. In future, it may even be just C++, Java, JS and Go, judging from the trend at Google. (Specialties like Sawzall don't count here, I guess.)

new Rune data type (3, Insightful)

bames53 (300438) | more than 2 years ago | (#39501705)

I see language designers are still making the mistake of trying to represent characters as fixed size entities. Go 1 adds a new data type 'rune' intended to represent a UTF-32 codepoint, which is fine as long as it's only used for code points, but then the example code they show is:

        delta := '' // delta has type rune.
        var DELTA rune
        DELTA = unicode.ToUpper(delta)

When you design an API that accepts or returns individual characters (as opposed to code units or code points), do not use rune, char, wchar_t, char16_t, char32_t, int, or any other fixed length type to represent a character. Characters are fundamentally variable length.

You should use a string data type because fixed size types can only represent a subset of characters. For example, a single UTF-32 code point cannot represent the Lithuanian characte LATIN SMALL LETTER A WITH OGONEK AND ACUTE. In Unicode this character can only be represented as a sequence of multiple code points (<U+0105> <U+0301> or <U+00E1> <U+0328> or <U+0061> <U+0328> <U+301>). So using strings works whereas using a fixed size type will inevitably fail.

Using strings to represent a character has another advantage beyond the fact that it's the only way that works. It eliminates the client's need to convert between the string type and the type used to hold a code point. Clients can just directly use text in whatever the native encoding is.

Re:new Rune data type (1)

Waffle Iron (339739) | more than 2 years ago | (#39501985)

Q: What is a string?
A: A sequence of characters

Q: Ok, what is a character?
A: Well obviously, each character should be a string!

QED

Possible replacement for Dalvik into the future? (3, Interesting)

Pengo (28814) | more than 2 years ago | (#39502127)

Does anyone know if this is an R&D project that could be poking at the idea of a litigation free runtime for Android away from Dalvik?

I'm curious to see how this language evolves and its internal adoption inside of google.

Regardless of the language taking off or not, it's a great to see a new language enter the ecosystem, and no doubt we'll learn things from it that can be brought back into main-stream languages or interesting innovation that could open the doors for new (pray disruptive) development in new areas.

Load More Comments
Slashdot Account

Need an Account?

Forgot your password?

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>
Create a Slashdot Account

Loading...