
Go 1.1 beta 1 Released - geetarista
https://groups.google.com/forum/#!msg/golang-nuts/sbjJDgxLqiE/xqWJ1ybaiKoJ
======
dvt
I think this is an amazing milestone; I contributed to Go in the early phases
and was very excited about the project. I even had Rob Pike OK some of my
patches (which was a huge nerd ego boost, obviously).

However, the direction the language took ended up being quite predictable and
somewhat of a bore. The problem with Go is that it doesn't seem to fit any
particular niche. Some other design decisions were questionable (no exception
handling, for one).

I kind of like Go, but I haven't used it for years. There's no real reason to
NOT write something in C (or, rarely, C++) or Java, or if I need some serious
scaling, Erlang (or just use either something like libevent for C or Kilim for
Java).

Go is very D-like. D, like Go, can't really find its niche. If Go or D were
more idiomatic, perhaps they would be adopted in early programming classes
(high schools and colleges -- like Python, for example), but even though
goroutines, channels, and fast compilation are interesting concepts, they
aren't really enough to detract from writing in the many other languages that
do just about the same thing (and are a lot more popular).

~~~
enneff
Have you used it since 3 days after it was launched, more than three years
ago? (That's when you contributed.)

The language, libraries, and ecosystem are miles ahead of where they were back
in 2009.

Why not use C? Because C has no sensible packaging system, is unsafe, requires
manual memory management, and offers a degree of control that is unnecessary
for most tasks. Why not use Java? Because it is verbose and picky and
basically forces you to use an IDE to get anything done, etc etc. If there
were nothing wrong with these languages (they're the main ones we use at
Google) we wouldn't have developed Go.

Use Go more! You'll see why people love it, and why we created it.

~~~
tezza
I'd love to use Go to replace some projects I've written in C and Java.

I evaluated Go last week (2013-03), but there is no meaningful Eclipse IDE
support. goclipse doesn't work half as well as CDT, and not a patch on JDT.

I won't move away from eclipse workflows and project management, the context
switch is more expensive than any language benefit.

I'll keep checking for comprehensive Go support in Eclipse, but until then it
is a showstopper.

~~~
laumars
I use GolangIDE[1] after getting fed up with Eclipse. It's really nice as it's
a much lower memory footprint, yet basically does everything you need an IDE
to do (ie edit code, debug, etc)

[1] <http://code.google.com/p/golangide/>

~~~
voidlogic
I second the recommendation for LiteIDE

More common main page: <http://code.google.com/p/liteide/> Downloads:
<http://code.google.com/p/golangide/downloads/list> Code:
<https://github.com/visualfc/liteide>

~~~
jksmith
Third. It works and is actively being developed.

------
chmike
I'm a C++ and python programmer with some basic experience in JavaScript. I
started learning Go, as I looked into D some years ago, an was a bit puzzled
by some design choices.

I don't understand the need to enforce the use of { } and that the if of for
line must end with a {. I don't like this writing. My preferred syntax is the
one of Pythons, which is the most concise and clear. It seem Go could have
used : and indentation as in python instead of { }.

Another puzzling choice of Go is slicing which differ from Python's and D's.
In Go slicing is limited by the capacity and not by the number of items it
contains. Returning 0 as default value looks to me like an open door to silent
bugs.

The way Go handles errors looks original and interesting, but I'm lacking
experience to determine how it compares to exceptions from the usage
perspective.

From what I saw, I would say that Go is a better C and D is a better C++ where
better means also closer. As a consequence Go seams simpler than D to learn
and use. Thus I expect we will see much more Go programmers than D programmers
in the future. Simplicity has been proven many times to be trump.

~~~
dom96
So use Nimrod instead: systems programming with indentation based syntax. It
also has unmatched meta programming facilities, a realtime GC and checked
exceptions done right (however, not in the 0.9.0 release).

~~~
pjmlp
It looks it could be another language to use for writing native code across
iOS, Android and Windows.

~~~
dom96
Indeed. In fact Nimrod has already been used on Android (<http://forum.nimrod-
code.org/t/61#319>) and iOS devices.

------
waterside81
I've been using Python almost exclusively since 2004. Go is the first language
that has made me want to switch. I can't put my finger on it, but it's fun to
work with. Actually, I'll try to put my finger on it:

1) Fast build times

2) Goroutines. If you've tried using any async library in Python or are
waiting for Tulip to come into mainline Python around v3.4 - stop wasting your
time. Goroutines along with channels just works (TM) and is unbelievably easy
to use. No callbacks, no threadpools, no having to CTRL-C your way out of a
bug. It's a pleasure to work with.

------
yason
What's the standard graphics library for Go That Just Works(tm) ?

I'm looking for something for Go like PyGame is for Python. I like to get
surfaces rendered on my screen in pretty much no time as I like to learn a
language by doing simple graphical demos and experiment from there.

There are few SDL bindings for Go but none of them worked. One of them did
work to some extent after a lot of tweaking without the help of many examples.
I quit learning after I realized I'd have to learn more how the graphics
bindings were written than how to program in Go.

~~~
easytiger
building a "standard graphics library" into a language that is not part of a
write once run anywhere managed environment is a terrible idea and has never
worked.

On the other hand a more solid native 2d drawing library like java2d would be
more welcome.

Weekend project #34532

------
knotty66
FWIW, I benchmarked a basic Revel web app. Go 1.0.3 = 2850 req/sec ... 1.1 =
10928 req/sec.

~~~
conroy
Any chance you can post the code you used to benchmark? That's an insane
difference.

~~~
knotty66
It was a basic newly generated Revel app running in production mode.

Not hitting a DB. Benchmarked with 'ab -n 10000 -c 30
<http://localhost:9000/some_action>.

See also: <https://github.com/davecheney/autobench> BenchmarkHTTPClientServer
373216, 52646 -85.89%

~~~
errnoh

        bench old_ns/op new_ns/op delta
        "BenchmarkHTTPClientServer 373216, 52646 -85.89%" 

That bench is 7 times faster in Go 1.1 than 1.0.3.

~~~
errnoh
Sigh. Sorry about the mess.

I opened the thread first thing after waking up this morning, commented before
having cup of coffee and resulted in misreading the whole point of that
comment.

I'll try to drink more coffee from now on. Sorry knotty66.

~~~
knotty66
Ha ha, no worries. I'm sure my lazy English contributed with the 'see also',
too.

------
eridius
The new data race detector looks great. I have a script I run daily that
panics maybe once a month. I've never been able to figure out where the
problem is. One run after building with -race and I now have a juicy data race
report. Awesome!

~~~
eridius
Turns out exec runs two goroutines, one for Stdout and one for Stderr, and if
I run both into the same bytes.Buffer, that's a data race. No wonder I
couldn't find it, I was looking in my own code for the goroutines. Thanks
go1.1beta1!

------
frou_dh
The changes concerning function returning[0] are really welcome. The merits of
implicit vs. explicit else blocks were debated, but I think everyone should be
glad to get rid of forced panic("unreachable").

[0] <http://tip.golang.org/doc/go1.1#return>

------
eridius
Very cool.

I don't see a tip in the hg repo for go1.1beta1. Anyone know what the right
revision is? I'd rather install the known beta source than whatever's at the
tip.

~~~
enneff
The beta isn't tagged. As mentioned in the article, beta1 is cut from revision
267bb9854177.

But as only fixes will be submitted between now and the 1.1 release, it's
definitely better to use tip.

~~~
eridius
Ah you're right, I missed seeing the 267bb9854177 in the mail. But I guess
I'll use tip if that's better. Thanks.

------
glitch273
Is there a decent web framework using Go can that be competitive to Rails or
Django someday?

~~~
buro9
There's enough built into Go that frameworks feel very unnecessary.

The only thing I'd strongly recommend is Gorilla Mux:
<http://www.gorillatoolkit.org/pkg/mux>

And you can get an idea of how people build websites using Mux and Go by
looking on github: <https://github.com/jimmykuu/gopher>

If you're very new to Go, then reading that last link repo you probably want
to read these files in this order:
[https://github.com/jimmykuu/gopher/blob/master/src/server/ma...](https://github.com/jimmykuu/gopher/blob/master/src/server/main.go)
[https://github.com/jimmykuu/gopher/blob/master/src/gopher/se...](https://github.com/jimmykuu/gopher/blob/master/src/gopher/server.go)
[https://github.com/jimmykuu/gopher/blob/master/src/gopher/ur...](https://github.com/jimmykuu/gopher/blob/master/src/gopher/urls.go)
and then to take a look at the files in this folder for the handlers and
html/template calling:
<https://github.com/jimmykuu/gopher/tree/master/src/gopher>

~~~
swah
In older versions there seemed to be a websocket package, but I can't find it
anymore - do you know what hapenned to it?

~~~
buro9

        go get code.google.com/p/go.net/websocket
    

The html processing lives in there too:

    
    
        go get code.google.com/p/go.net/html
    

If you see people refer to go.net, they mean that repo.

------
VeejayRampay
Great stuff, looking forward to the final release, thanks to the Golang
developers for all the hard work.

------
phasevar
Exciting stuff! Can't wait to see Go 1.1 in the benchmark games.

~~~
trailfox
I'm interested to see if it is still going to be clobbered by Java and Scala
the way Go 1 was.

~~~
trailfox
Curious downvote for a factually accurate post...

source:
[http://benchmarksgame.alioth.debian.org/u32q/benchmark.php?t...](http://benchmarksgame.alioth.debian.org/u32q/benchmark.php?test=all&lang=go&lang2=java)

~~~
Intermernet
Probably downvoted for not providing a link to the benchmarks that show Java
and Scala out-performing Go 1.0?

I know of Collin VanDyck's web service showdown
([http://boundary.com/blog/2012/09/17/comparing-go-and-java-
pa...](http://boundary.com/blog/2012/09/17/comparing-go-and-java-
part-2-performance/)) which showed that Java had lower latency and higher
throughput for highly concurrent tasks based on a _very_ simple code base, but
net/http performance in Go 1.0 wasn't a high priority. It seems that it has
since been bumped up the priority list and a lot of work has been going on
([https://groups.google.com/d/topic/golang-
nuts/zeLMYnjO_JA/di...](https://groups.google.com/d/topic/golang-
nuts/zeLMYnjO_JA/discussion)).

The thing is, Go isn't just for writing web apps. If you have a look at some
of the real world use cases for Go (there's a list in another comment here
somewhere) you'll notice that these aren't just web apps.

Every bit of Go code I've written (web app, mp3 database generator, encryption
library) has been blisteringly fast, and it seems Go 1.1 will bring
substantial performance improvements again.

Oh, and I didn't down-vote you, I don't yet have that privilege.

~~~
trailfox
Thanks, I've added the link now.

------
groundCode
Kudos to the team. Go is going from strength to strength. I'm about to start a
small project with it.

------
LAMike
What makes Go so cool?

~~~
p0nce
Google staff upvote every article about it.

~~~
oofabz
I am guilty of upvoting every Go post. But my work has nothing to do with
Google. I just really love the language and want it to succeed.

Go maps very closely to how I think about programming. It has more useful
features than other languages, like channels, slices, and range. Yet despite
this it is a beautifully simple language. It has fewer keywords than C and you
can express the same operations with less code.

~~~
NateDad
Me too. I'm also not a Google employee, just love the language.

------
derengel
Is Go a good choice to create a CRUD web app? between the stdlib, gorilla
toolking and the pg driver seems it wouldn't be so much of a pain, but the pg
driver doesn't look ready for production use.

<https://github.com/bmizerany/pq>

~~~
jbooth
For just plain CRUD, you'll probably get where you want to go faster with
Django or Ruby -- they get you up and running faster, and their template
engines are more mature than anything in Go.

Once you're beyond just plain CRUD to the point where the language you're
using matters more than how fast you can get going with defaults, then you
might like Go more (or less) than Ruby/Python.

------
truebosko
For someone who wants to spend a week hacking on a project in Go, what kind of
project do you recommend?

~~~
burntsushi
The only real way to get hobby projects is to find a problem you've been
having and _solve_ it. So what are your problems? :-)

Here are some of mine, that I turned into Go code: (restricted to "week long
hacking" or less)

    
    
        A simple blog application.
        A command that when run, sends the output of other commands to your email.
        An image viewer.
        A simpler interface to `xrandr`.
        A parser for the new TOML configuration format.
    

Or, you could pick a small program that you wrote in another language and port
it.

------
pjmlp
Still no generics :(

~~~
kyrias
And you'll never get them because they're unnecessary.

~~~
Oodiey0h
The Golang authors had to create a custom keyword (make) for the two generic
types in Go (slice and map). The reason they give for implementing a native
map type is that a map type written in Go would be cumbersome (!).

If you want other types with generic functionality (e.g. caches) that perform
well (interface{} does not), then you have to use external code generators.

------
g3orge
I get a 404 at the changelog link they provide...

~~~
mahmoudhossam
The correct link is in the first reply on Google groups.

------
AcessoNegado
I think this is really the one language/tech that's going to take off. It's
just too early, but it's going to make it's splash.

------
creativityland
<https://news.ycombinator.com/item?id=5489054>

~~~
dualogy
Unrelated (Google's Webkit fork -- zilch to do with Go 1.1 beta)

