
Teaching Distributed Systems in Go (2013) - krat0sprakhar
http://da-data.blogspot.com/2013/02/teaching-distributed-systems-in-go.html
======
yodsanklai
I recommend this online class at MIT
[http://css.csail.mit.edu/6.824/2014/](http://css.csail.mit.edu/6.824/2014/)
(I learned about it in some other comments on HN). In particular, there are a
few self-evaluating labs in Go (essentially, increasingly complex fault
tolerant distributed key-values service). I really enjoyed doing them and
found Go to be a great language for the task.

Generally, I disliked a few things about Go: lack of sum types, error
handling, lack of genericity. But apart from that, it's really convenient and
easy to learn.

~~~
tagrun
Unions and generics are indeed left out (see Go's FAQ). What do you mean by
"lack of error handling"? Like Rob Pike says, errors are just values in Go,
and you have the whole language to handle them. If you mean exceptions,
there's panic and recover.

~~~
yodsanklai
yes, I meant exception. I didn't know about panic and recover, i'll look into
it. Thanks.

------
Daishiman
Looking at the reviews and purpose of the class, I wonder why couldn't it be
done with Erlang, given that for the tasks they're being asked to do, it
should do quite nicely, and though the syntax is unusual, it's a small
language that's remarkably simple.

~~~
yodsanklai
I recently learn a bit of Go and Erlang. Erlang is surprisingly powerful
considering how small and simple it is. In particular, I liked the convenience
of atoms and pattern matching for writing simple protocols. I'm a little put
off by the dynamic typing, it's convenient but very error prone.

On the other hand, Go uses static typing with type inference which is a good
compromise between conciseness and safety. And I also much prefer the Go
syntax.

~~~
lostcolony
You can get some of the benefits of static typing using specs and Dialyzer.

------
xkarga00
I just have to defend my thesis and after that i will get my BS degree in
Informatics Engineering but i am seriously thinking of talking one of my
(ex-)professors into changing the language of use at Parallel Processing, one
of my faculty's optional courses. It was the last class i attended (circa one
year ago) and even though i enjoyed using C + MPI (it was the first time i
really got into concurrent programming), sometimes it was a real pain in the
ass. Nowadays i am 100% sure that Go would be a perfect fit for that class. I
think i have to send him a link of this blog post...

------
evidencepi
Yeah. Just finished the 440 course and became a gopher! Thank you Dave!

------
gerardvanvooren
(nagging mode) I always like that white letters onto a white background of
blogspot.

This is a hint to blogspot. Use ordinary HTML/js/css so that people with their
browsers set to maximum security still can read what's on the blog.

------
MoOmer
Some source code and assignment info from Spring 2014 available here:
[http://www.cs.cmu.edu/~dga/15-440/S14/assignments.html](http://www.cs.cmu.edu/~dga/15-440/S14/assignments.html)

------
claystu
Are there really no good GUI libraries for Go, and if so, is anyone working on
correcting this?

~~~
tagrun
Is GTK3 good enough?
[https://github.com/conformal/gotk3](https://github.com/conformal/gotk3)

------
elchief
Man, Google sure is good at marketing their language. Front page of HN like
every day.

~~~
cnbuff410
Why can't people love Go not because of Google, but the language itself?

Don't be deceived by your hate towards any specific company, otherwise you
will miss a lot of beautiful, useful, adorable things in this world.

~~~
mrweasel
I do actually. Google isn't a company I'm to happy about these days, but I do
like that they're spending at least some of the money earned from the
advertising business on funding projects like Go.

Go isn't a language I've used in production, but it's something I'm playing
around with. I really like the standard library, there's a few thing ( like
variable assignment ) that just wrong, but overall it's really a fun language.

The main feature I really really want to make use of is the statically
compiled binaries. Deployment just becomes so much easier compared to pretty
much anything.

