News for hackers. Stuff that matters.
Re:How We Went from 30 Servers to 2: Go by trungonnews on Wednesday March 13, 2013 @12:05AM (#5366751)
I was originally very excited about Go when I first learned about it. But then I got tired and frustrated quickly after having to listen to the other Gophers telling me that I don't need this or that feature because there is a better way to do it in Go.

Like.

I don't need exceptions because Go function can return multiple values.

I don't need a mocking framework like Mockito because Go has interfaces.

I don't need an interactive debugger because I can debug with command line using gdb.

I don't need named arguments because I can instantiate a struct and call my function with it. (Have you seen Ruby or Javascript code? Almost every function takes 'opts' as a single argument. Go is probably going down this path too.)

Then I learned about Scala. I'm not saying that Scala is better than Go. However, it has everything that I need. :)

Re:How We Went from 30 Servers to 2: Go by tptacek on Wednesday March 13, 2013 @01:00AM (#5366900)
Comments like this are weird. Go does not like exceptions. They've built a whole idiom around error returns. When you said, "I need exceptions", what did you expect them to say? "Oh, sorry, we forgot that, we'll get right on it"?

I also don't understand what you mean by "interactive debugger". What is gdb if not an interactive debugger? Gdb is my go-to debugger for Ruby as well.

Re:How We Went from 30 Servers to 2: Go by trungonnews on Wednesday March 13, 2013 @02:19AM (#5367122)
Something like RubyMine IDE debugger or Firebug javascript debugger.

If you are a Ruby developer then I highly recommend trying out RubyMine. I promise that you will never debug Ruby code using gdb again!

Re:How We Went from 30 Servers to 2: Go by kragen on Wednesday March 13, 2013 @07:40PM (#5371914)
I got all excited when I saw your comment and went and checked out the latest RubyMine video on YouTube, because having something like Firebug for Ruby would be awesome. But it looks just like what gdb gives you when being driven by a graphical frontend like DDD or Emacs. Actually it looks a lot less powerful than DDD. What am I missing?
Re:How We Went from 30 Servers to 2: Go by irahul on Wednesday March 13, 2013 @05:21AM (#5367525)
> Something like RubyMine IDE debugger or Firebug javascript debugger.

That's not for the go team to develop.

> If you are a Ruby developer then I highly recommend trying out RubyMine. I promise that you will never debug Ruby code using gdb again!

I haven't used RubyMine, but I have used Visual Studio and Eclipse debuggers, and I still debug using gdb, ruby-debug, pdb et al.

Re:How We Went from 30 Servers to 2: Go by irahul on Wednesday March 13, 2013 @05:23AM (#5367531)
> Gdb is my go-to debugger for Ruby as well.

Unless you are debugging the ruby process(and not the running script), what does gdb buy you over ruby-debug?

Re:How We Went from 30 Servers to 2: Go by gnuvince on Wednesday March 13, 2013 @12:51AM (#5366873)
It's pretty typical of the Plan9 mentality. See this post on the Acme text editor: http://9fans.net/archive/2008/08/134
Re:How We Went from 30 Servers to 2: Go by pnathan on Wednesday March 13, 2013 @11:20AM (#5369054)
Is that a parody?
Re:How We Went from 30 Servers to 2: Go by fkdjs on Wednesday March 13, 2013 @02:06AM (#5367092)
wow, worse than the irc python channel.
Re:How We Went from 30 Servers to 2: Go by mercurial on Wednesday March 13, 2013 @05:22AM (#5367528)
Why would you say something like this? The IRC Python channel is a kind of state machine which goes like:

- How do I do this?

- Why do you want to do this?

- Because XXX

- Then that's not really what you should be doing, it's dangerous/inefficient/etc., do this instead

The post about Acme could have been a one-line answer: "If you want do do any of this, just use a better editor".

Re:How We Went from 30 Servers to 2: Go by StavrosK on Wednesday March 13, 2013 @09:49AM (#5368295)
There are many times when I said "I need to do X, I know it's ugly, but I've considered all the alternatives and, for reasons too lengthy to go into right now, I just need to do X. How can I do it?" only to get people treating me like an idiot who doesn't know anything, and only giving an answer after I've responded to every single of the alternatives with my reasons.

Sometimes, people aren't new.

Re:How We Went from 30 Servers to 2: Go by mercurial on Wednesday March 13, 2013 @12:51PM (#5369555)
It's a state machine without a direct transition from "question" to "answer" :)
Re:How We Went from 30 Servers to 2: Go by trailfox on Wednesday March 13, 2013 @03:48AM (#5367328)
We also checked out both Go and Scala and picked Scala due to better IDE support (IntelliJ) and existing Java lib ecosystem. It also is typically faster than Go (but does use much more memory): http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?t...

Overall very happy with our choice. I will probably learn Go too, but I also don't really like the way it does error handling and the tooling support seems limited vs what I can get for the JVM.

Re:How We Went from 30 Servers to 2: Go by trungonnews on Wednesday March 13, 2013 @01:23PM (#5369757)
Yup. This is my exact conclusion too.
Re:How We Went from 30 Servers to 2: Go by ssmoot on Wednesday March 13, 2013 @06:40PM (#5371600)
Scala fan here. But still, I can sympathize with Go developers on getting rid of exceptions.

I don't know if Go would quite feel the same, but Scala's Try, Pattern Matching and Curried functions are stupid nice and make handling errors without exceptions feel very natural.

Took me a couple months to get there, but there you go. "Folding" out different state feels like I'm writing more robust code. Where I'm coding for a range of possibilities instead of just the golden path.

Even when I _am_ focusing on the Golden Path, features like Try[A] force me (well, warn at least) to at-least stub out the other options so I get to feel like instead of having to hammer in robustness, it's something composed instead. I can focus on making the ideal X, and handle the possibility of needing a notX as alternative realities, instead of trying to build a cyborgXYZ that can handle every potential state. If that makes any sense.

Re:How We Went from 30 Servers to 2: Go by pjmlp on Wednesday March 13, 2013 @03:42AM (#5367318)
Same thing happen to me, I even did some small contributions around 2010.

Then I discovered D and Rust are better languages for my purposes.

Re:How We Went from 30 Servers to 2: Go by codygman on Wednesday March 13, 2013 @04:50AM (#5367467)
Just a guess, I'm guessing python isn't your favorite language either? They seem to be rather unopinionated languages that let you have access to lots of tools. I hear they manage to keep it pretty simple despite having a "kitchen sink", so definitely interested in both.
Re:How We Went from 30 Servers to 2: Go by pjmlp on Wednesday March 13, 2013 @05:49AM (#5367598)
Python is my favorite scripting language, not for application development.
Re:How We Went from 30 Servers to 2: Go by swah on Wednesday March 13, 2013 @04:27PM (#5370919)
D syntax is nicer than Go's, but its also dead compared to Go. Where are you going to put your chips?
Re:How We Went from 30 Servers to 2: Go by pjmlp on Wednesday March 13, 2013 @05:01PM (#5371089)
> D syntax is nicer than Go's, but its also dead compared to Go.

Because it is full of Google PR and happens to have some cool names on the team?

> Where are you going to put your chips?

In languages that the designers don't throw away the last decades of improvements in language design.

Re:How We Went from 30 Servers to 2: Go by swah on Thursday March 14, 2013 @07:23AM (#5374261)
Yes, because its full of Google MONEY! Its about the libraries...
Re:How We Went from 30 Servers to 2: Go by pjmlp on Thursday March 14, 2013 @08:23AM (#5374458)
Which will get canned like many other Google projects when they fed up with it...
Re:How We Went from 30 Servers to 2: Go by swah on Thursday March 14, 2013 @03:23PM (#5377083)
In the light of recent events, I'm aggreeing with you...
Re:How We Went from 30 Servers to 2: Go by yannk on Wednesday March 13, 2013 @12:37AM (#5366842)
tl;dr: I tried Go, but it wasn't like Ruby, so now I'm trying Scala.
Re:How We Went from 30 Servers to 2: Go by trungonnews on Wednesday March 13, 2013 @12:55AM (#5366887)
Ha. Is there a high performance, compiled, and concurrent friendly language that looks like Ruby? Please share. :)
Re:How We Went from 30 Servers to 2: Go by burntsushi on Wednesday March 13, 2013 @02:22AM (#5367128)
Rust might be your best bet.

I think better advice for you is to just stay away from opinionated languages. I don't think Rust falls into that category, but I'm not sure.

Re:How We Went from 30 Servers to 2: Go by qznc on Wednesday March 13, 2013 @03:01AM (#5367218)
Looks like Ruby? You mean syntactically like "end" instead of "}", I assume.

Sorry, but the C syntax is dominating the native-compiled world. You could try Pascal, they have "end". Or use C with preprocessor magic:

  #define END     ;}
If you mean Ruby like terse, generic code, then try Rust, Go, and D.
Re:How We Went from 30 Servers to 2: Go by pjmlp on Wednesday March 13, 2013 @04:16AM (#5367385)
Yes, have a look at Crystal.

https://github.com/manastech/crystal

It is still an ongoing development, though.

Re:How We Went from 30 Servers to 2: Go by sluu99 on Wednesday March 13, 2013 @02:32PM (#5370194)
Re:How We Went from 30 Servers to 2: Go by steveklabnik on Wednesday March 13, 2013 @04:26PM (#5370911)
I personally am looking very heavily into Rust, but if you haven't seen Elixir, you should.