7 ms·
Teaching Distributed Systems in Go
- DennisP 14y agoWhat'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.
- NateDad 14y agoGo is all statically linked, so there's no such thing as DLLs made in Go. Creating DLLs may be possible in later versions of Go, however.
- thirsteh 14y agoYou could compile the .a files for the different architectures, and let them link against that, instead of recompiling and linking from your source--but the 'go' tool won't currently accept it if there's no source. That could change, and there is a workaround (IIRC): Make an empty folder in the src/import/path.
- Jabbles 14y agoNot true (anymore). https://groups.google.com/forum/?fromgroups=#!searchin/golang-nuts/binary/golang-nuts/e8jhJKBp2To/cjRAMYmeZKYJ https://groups.google.com/forum/?fromgroups=#!searchin/golan...
- dgacmu 14y agoHi, 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."
- mseepgood 14y agoFrom 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 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?
- dgacmu 14y agoMy guess is that part of this was my fault, not Go's. We had some issues with Go being installed in different locations on the CS department machines than on the campus-wide compute infrastructure machines. Within the projects, we also had a somewhat convoluted directory structure in which to mix official code (e.g., interface definitions) that the students weren't supposed to modify and stub code that they were supposed to change. I hope to simplify it a bit for next year. So I'd take this with a little grain of salt: I expect many fewer compilation problems next year just by having had go1 installed for a year and it becoming stable in our environment.
- jlgreco 14y agoIf 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.
- zaptheimpaler 14y agoI'm taking this course next sem! Skipped it this sem just so I could do it in Go.
- epenn 14y agoKesden 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 14y agoYeah, 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-systems-in-go.html http://da-data.blogspot.com/2013/02/teaching-distributed-sys...
- epenn 14y agoI'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).
- voidlogic 14y agoI 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/ http://code.google.com/p/liteide/ https://github.com/visualfc/liteide https://github.com/visualfc/liteide Go also has great built-in profiling support: http://blog.golang.org/2011/06/profiling-go-programs.html 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 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 14y agoA quick google search for "LiteIDE screenshot" shows the following URL for screenshots for those interested: http://mac.softpedia.com/progScreenshots/LiteIDE-X-Screenshot-97382.html http://mac.softpedia.com/progScreenshots/LiteIDE-X-Screensho...
- Scaevolus 14y agoI 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.
- jlao 14y ago15-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.