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.
The potential for Rust to innovate in a space completely dominated by C and C++ in the past decade has piked the interest of people who had never considered any other language for development.
Go, in contrast, is fairly unremarkable language. That doesn't make it bad in any way (tried and true combined with a primary emphasis in maintainable software is a winning combo), it's just that it's attacking a space which many other languages have dealt with before.
As a gopher, in fact I don't feel that golang can be called "the Google's language". Google still relies on C++ a lot.
I believe in go because I trust the go team! Especially after reading Rob Pike's blog on the motivation of developing this language, I told myself, this language will Go far.
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.
The professor does mention why he decided not to go ahead with Erlang - I favored going with a c-like systems language because I'm more familiar with it and was less comfortable teaching in Erlang.
I always found that kind of surprising. I found it easier to learn new concepts/ways of programming with new syntax. When the syntax feels familiar to a language I already know, I find I either am slipping into habits from the language I know, which may or may not be idiomatic, and which may or may not even do what I think it does, or I just don't bother learn them in the first place, assuming they behave the way they do in the other language.
The sort of extreme example of this is this particular bit of Erlang that seems familiar from a C background
myFunc(Val) ->
if Val -> io:format("Val was true", []) end,
io:format("the end", []).
myFunc(false).
When executed you'd expected it to print just "the end". It doesn't; the if statement throws an exception. It looks similar, but behaves differently, and that makes it harder to learn than the constructs that are completely unfamiliar.
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.
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...
I recommend this online class at MIT 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.
The last version posted on MIT Open Courseware was from 2006. I'm going to go ahead and guess that video/audio recording/editing resources etc. are limited, and this is not a priority course.
That didn't stop the Prof from posting all lecture notes online [0] and using Github to host assignments [1].
Will check this out later; though I recently started using Go and love it. I was able to recently build the smarts of a distributed back-end application with existing Apache projects, some shell, and a lot more Go than I anticipated; which was excellent.
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.
29 comments
[ 1593 ms ] story [ 341 ms ] threadDon't be deceived by your hate towards any specific company, otherwise you will miss a lot of beautiful, useful, adorable things in this world.
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.
People can just like the language, but the upvote system is anon...
Go, in contrast, is fairly unremarkable language. That doesn't make it bad in any way (tried and true combined with a primary emphasis in maintainable software is a winning combo), it's just that it's attacking a space which many other languages have dealt with before.
Wait, this isn't LtU?
I believe in go because I trust the go team! Especially after reading Rob Pike's blog on the motivation of developing this language, I told myself, this language will Go far.
FYI: http://commandcenter.blogspot.it/2012/06/less-is-exponential...
The sort of extreme example of this is this particular bit of Erlang that seems familiar from a C background
When executed you'd expected it to print just "the end". It doesn't; the if statement throws an exception. It looks similar, but behaves differently, and that makes it harder to learn than the constructs that are completely unfamiliar.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.
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.
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.
The last version posted on MIT Open Courseware was from 2006. I'm going to go ahead and guess that video/audio recording/editing resources etc. are limited, and this is not a priority course.
That didn't stop the Prof from posting all lecture notes online [0] and using Github to host assignments [1].
Will check this out later; though I recently started using Go and love it. I was able to recently build the smarts of a distributed back-end application with existing Apache projects, some shell, and a lot more Go than I anticipated; which was excellent.
[0] http://css.csail.mit.edu/6.824/2014/schedule.html
[1] http://www.cs.cmu.edu/~dga/15-440/S14/assignments.html