Live data from Hacker News

Go After 2 Years in Production

blog.iron.io

101–110 of 178 posts

Re: Go After 2 Years in Production

#101

Not so relevant but for any of you who prefer Rust to Go and haven't tried Go, don't do it. Go's std, visibility by case and gofmt, among other things will make you cry for using Rust. I really hope Rust get's better with time and it really focuses on being developer friendly not just a bag of nice features.

> Not so relevant Then why post?

I, as a user interested in both, did find value in the comment regardless of his/her intentions. This comes off as a 'shut up' when really, it could be a good opportunity to look at what Go does right for implementation in Rust, no?

Re: Go After 2 Years in Production

#102
post #101

Earlier quoted context omitted.

> Not so relevant Then why post?

I, as a user interested in both, did find value in the comment regardless of his/her intentions. This comes off as a 'shut up' when really, it could be a good opportunity to look at what Go does right for implementation in Rust, no?

Because it's plainly a troll. ("Go will make you cry for using Rust" made that clear, especially considering the user's comment history, in which I've already explained why at least visibility on case doesn't make sense.)

Re: Go After 2 Years in Production

#103
post #32

Another Scala user here. And I've been using Scala for the last six months. Mostly developing web applications on Scalatra and Play. I love Scala - It still has its goodiness and it's an excellent alternative to Java. If you notice in all of the Scala books (I've read the one by Martin and the One by David Pollak as well), they all seem to push you towards the functional programming model instead of the much more com…

>When writing algorithms and so forth, but otherwise, you are forced to fallback to this imperative model which sucks

You don't need to fallback to imperative style. The fact that people write web apps in pure functional languages should make that obvious.

>Once you go Go, you never go back.

That depends where you came from. I really tried to like go, but went running back to haskell. Go is just way too primitive.

Re: Go After 2 Years in Production

#104
post #97

Earlier quoted context omitted.

> it would be nice to be able to ascertain before running a program, certain time & space complexity bounds on it I don't know about knowing what "space" a program will consume ahead of time, but I believe the halting problem[1] means there'd be no way of computing a time requirement. [1] http://en.wikipedia.org/wiki/Halting_problem

The halting problem assumes a program from a Turing-complete model of computation. Not all computational models are Turing-complete. The parent is pointing out that if you limit yourself to a language or a sub-set of a language that is not Turing-complete, then you can make static assertions about things such as halting. A trivial example would be a programming language that did not allow any loops or explicit backwa…

I was just going to make the same reply.

> if you limit yourself to a language or a sub-set of a language that is not Turing-complete, then you can make static assertions about things such as halting

There's already something that is non-Turing complete, but comes with a halting guarantee -- it's called total functional programming[1]. This paper (linked below) is actually what got me thinking about this whole thing. The author argues in it how functions in functional programming languages aren't really like mathematical functions, because they have the possibility to execute infinitely (never halt) and thus not have a proper return value. To mitigate that, he creates "total functional programming".

Total functions are guaranteed to have a return value (i.e. terminate eventually), but they could take very long to run. If we could actually have complexity bounds, or be able to determine a given function's complexity, that would be a great boon to software engineering (i.e. assuming they adopt it... which is a whole different matter).

The author also makes a very good point that most parts of your program are meant to terminate (i.e. the vast set of functions and algorithms that comprise you program). Only the top-level needs to be Turing-complete, the rest can at least be total.

I actually want to see if it's possible to push this concept further, to create a ring-like hierarchy of languages -- the lowest one being the weakest and the one we can extract the most static assertions out of, and so on. There's a language called Hume[2] that sounds like it accomplishes at least part of this goal, but I haven't really looked into it.

[1] http://www.jucs.org/jucs_10_7/total_functional_programming/j...

[2] https://en.wikipedia.org/wiki/Hume_%28programming_language%2...

Re: Go After 2 Years in Production

#105
post #22
post #8

Earlier quoted context omitted.

So you've enjoyed all the marketing and Google employee upvoting?

Yes, it's all a conspiracy! Because that's how open source development at Google work: create shitty technology, spam HN, Reddit et al. with it, and then let the massive Google workforce and the fanboys upvote the postings. /s

3. Profit

Re: Go After 2 Years in Production

#106

Earlier quoted context omitted.

It's not cliche, it's just personal. For instance, most of the code I write is numerical code. To that end, any language without operator overloading is a non-starter, since it's far harder to find a bug in: div(add(mult(-1,b),sqrt(sub(pow(b,2),mult(mult(3,a),c)))),mult(2,a)) than it is in (-b+sqrt(b^2-3 a c))/(2*a) On the other hand, if I wrote server code, operator overloading would be far less useful. I'd probably…

Agree with what you're saying but I think you probably wanted 4ac

I think thats his point. Its easier to spot the bug on the second version :)

Re: Go After 2 Years in Production

#107
post #101

Earlier quoted context omitted.

> Not so relevant Then why post?

I, as a user interested in both, did find value in the comment regardless of his/her intentions. This comes off as a 'shut up' when really, it could be a good opportunity to look at what Go does right for implementation in Rust, no?

As a follower of the Rust project, the constant comparisons to Go are all the more tiring for how unwarranted they are. They are wildly different languages, with wildly different strengths and wildly different goals, designed for wildly different audiences. And yet people still insist on playing up the dramatic Google vs. Mozilla angle. I'm as tired of it as pcwalton is.

Re: Go After 2 Years in Production

#108
post #31

"Two years in, Go has never been our bottleneck, it has always been the database." I would expect this to be true with any language, if you code well. Regular web applications do not have state so they are very easily scaled horizontally anyway. Databases on the other hand are trickier to scale the same way and will end up being the bottleneck almost all the time.

Throwing servers (money) at the problem is often incredibly wasteful, and exasperates the other problem you mentioned (the database). Having 500 servers all connecting to the database is not so awesome. Having 10 is a lot nicer.

Re: Go After 2 Years in Production

#109
post #53

Earlier quoted context omitted.

For real? That's cray. I didn't know the syntax was so hard to internalize.

For a while I thought you meant Seymour Cray, or one of the supercomputers he designed and built. Was it so hard to type one letter in support of readability? Or is "cray" its own word now?

"Cray cray" and by extension just "cray" are vernacular ways of saying "crazy".

Re: Go After 2 Years in Production

#110
post #10

I know it's cliche, but I still can't live without generics or a macro-like approximation thereof. I suffered under Java 2 for too long to go back to that.

It's not cliche, it's just personal. For instance, most of the code I write is numerical code. To that end, any language without operator overloading is a non-starter, since it's far harder to find a bug in: div(add(mult(-1,b),sqrt(sub(pow(b,2),mult(mult(3,a),c)))),mult(2,a)) than it is in (-b+sqrt(b^2-3 a c))/(2*a) On the other hand, if I wrote server code, operator overloading would be far less useful. I'd probably…

If you don't mind me asking, what sort of work do you do where you mostly write numerical code? Academia?
Post reply on HN