

Teaching Distributed Systems in Go - thirsteh
http://da-data.blogspot.com/2013/02/teaching-distributed-systems-in-go.html

======
voidlogic
I think students always complain the first couple times they are forced to
learn new languages, but this is an important skill for them to master.

There were several student complaints about the lack of an IDE or debugger.
These tools do exist: I use LiteIDE, with syntax highlighting, code
autocomplete and built in Go debugging everyday. Perhaps the professor was not
aware of LiteIDE, but his students could have used Google.

<http://code.google.com/p/liteide/>

<https://github.com/visualfc/liteide>

Go also has great built-in profiling support:
<http://blog.golang.org/2011/06/profiling-go-programs.html>

Installing Go is easy, you can download it as an archive or use your package
manager:

<http://code.google.com/p/go/downloads/list>

    
    
      aptitude install golang-go
    

Also even installing Go from source is easy:

    
    
      cd ~/
      hg clone -u release https://code.google.com/p/go
      cd ~/go/src/
      ./all.bash
    

I think the hardest part is the environment variables, but these are well
documented.

~~~
kentosi
A quick google search for "LiteIDE screenshot" shows the following URL for
screenshots for those interested:

[http://mac.softpedia.com/progScreenshots/LiteIDE-X-
Screensho...](http://mac.softpedia.com/progScreenshots/LiteIDE-X-
Screenshot-97382.html)

------
mseepgood
From one of the cited student comments:

> Also setting up a Go environment on a new machine is a nightmare.

How so? There are binaries for all major platforms:
<http://golang.org/doc/install>

All you have to do is extract the archive and adjust the PATH.

> Compilation in general is a huge, unintuitive mess.

Compiling a Go project is dead simple: it's just "go build". How is this a
mess?

~~~
jlgreco
If they are talking about installation/building on personal machines, not
university machines (dgacmu's explanation seems fairly plausible there), they
may be calling those things difficult when comparing them to using an
installation wizard to install some IDE and clicking on menus to build.

My assessment of hassle between the two would be the opposite, but I suspect
it varies greatly.

~~~
Mr_T_
> they may be calling those things difficult when comparing them to using an
> installation wizard

The Windows MSI package and the OS X .dmg have wizards.

~~~
jlgreco
Ah, fair enough.

------
Scaevolus
I used Go for the Distributed Systems course at UIUC. Assignments can be
written in any language, but programming help is only provided for Java/C/C++.
4/~80 people used Go.

It was very enjoyable. The networking package abstracts some of the cruft of
the underlying C libraries, and with the RPC package I didn't have to worry
about serialization and dispatching.

------
zaptheimpaler
I'm taking this course next sem! Skipped it this sem just so I could do it in
Go.

~~~
epenn
Kesden is letting us use any language in 440 this semester, Go included. All
of the handouts are still in Java, but we were told multiple times to use
whatever we want. The only catch is if we want any help on the projects from
him or the TAs then we have to choose from four: Go, C, C++, or Java. (I
actually think I might do project 2 in Rust, FTW).

~~~
zaptheimpaler
Yeah, I heard about that. Thing is, I talked to him last sem and he wasn't
sure that Go would be allowed at that point, so I decided to wait a sem. Have
you heard anything from the people doing it in Go this time? Its awesome to
have the opportunity to use it, but I think it would throw people off for a
the first 1-2 weeks while they were getting used to it which might put them at
a disadvantage relative to the class. Andersen said something similar too -
[http://da-data.blogspot.com/2013/02/teaching-distributed-sys...](http://da-
data.blogspot.com/2013/02/teaching-distributed-systems-in-go.html)

~~~
epenn
I've heard good things so far. I know a couple groups using it and their
impressions pretty much echo what you said. They felt a bit behind during
project 1 while they tried to learn the new language, but are starting to feel
more comfortable with it now (we're a week into project 2 currently).

------
jlao
15-440 with Andersen and Bryant was one of my favorite classes I took at CMU.
I took it the first time it was taught in Go. I fell in love with Go and still
miss it. I didn't find the language that difficult to learn. As he noted, not
having to write your own data marshalling code and RPC let me focus more on
the core algorithms.

------
DennisP
What's this about "you can't hand out precompiled library code and use the go
build tools"...you really can't have binary libraries in Go and use the
standard tools? That seems a bit strange for a native-compiled language.

~~~
Jabbles
Not true (anymore).

[https://groups.google.com/forum/?fromgroups=#!searchin/golan...](https://groups.google.com/forum/?fromgroups=#!searchin/golang-
nuts/binary/golang-nuts/e8jhJKBp2To/cjRAMYmeZKYJ)

~~~
dgacmu
Hi, Jabbles - alas, scroll down a bit in that problem report and you'll see a
later commit by Russ that removed the support:

"I removed support for this shortly before Go 1, because it was causing worse
problems. My intention is to allow this usage in Go 1.1, but only if there is
no src directory in the GOPATH tree in question. That is, if you create a
directory listed in GOPATH that has _no source at all_, then it will be
treated as binary-only."

