News for hackers. Stuff that matters.
Re:Portable Cloud Programming with Go Cloud by stcredzero on Tuesday July 24, 2018 @12:34PM (#17602617)
The problem with inconsistencies and surprises in languages, is that these are often the basis of conundrums that are more expensive to detect, figure out, and fix by a factor of 10X or more. I say this with appreciation and without irony: It turns out that "Blub" is actually a good thing, so long as it's done right.

All languages are going to suck, somewhere. The trick is to actually optimize a language for the difficult, expensive parts of development. Many languages seemingly optimize for writing things from scratch slickly. They're "blog example optimized." Instead, languages should be optimized for debugging, reading code, and deployment.

The fact that Go is not afraid of boilerplate is often actually a good thing. I've had to debug C++ in the confluence of 2 templates, such that there was no source code to display in the debugger. I don't expect to have this problem in Go, ever.

Re:Portable Cloud Programming with Go Cloud by nine_k on Tuesday July 24, 2018 @01:50PM (#17603396)
There's a fine balance here.

"You can't pay people enough to carefully debug boring boilerplate code. I've tried." (Yaron Minsky of Jane Street)

While C++ goes to one extreme, not having certain expressive means (whatever they may be) has a price, and for certain kinds of problems, this price may be high.

This returns to the idea I very much agree with: "The trick is to actually optimize a language for the difficult, expensive parts of development." The catch is that difficult parts are also problem area-dependent. Go definitely found a sweet spot for certain kinds of problems, though.

Re:Portable Cloud Programming with Go Cloud by stcredzero on Tuesday July 24, 2018 @02:08PM (#17603547)
"You can't pay people enough to carefully debug boring boilerplate code. I've tried." (Yaron Minsky of Jane Street)

There's boilerplate, and then there's boilerplate. If boilerplate is just a formality, with clean, competently designed underlying concepts, then it should be fine. Someone smart will build a code generator for that part of the project, you have your type safe-whatever and the project goes on its way. On the other hand, if your code base is just numb-nuts and people are just cut & pasting lava-flow code all over the place and rampantly putting business logic into ORM routines, then yes, that's going to impact hiring.

not having certain expressive means (whatever they may be) has a price, and for certain kinds of problems, this price may be high

This is also true. Even fairly innocuous boilerplate can build up to the point where refactoring can become tedious. There is no utopia, only constantly changing cost/benefit tradeoffs.

Re:Portable Cloud Programming with Go Cloud by pjmlp on Tuesday July 24, 2018 @02:04PM (#17603511)
Go is what Java 1.0 should have been.

Question is, how it will move beyond that, if ever.

Re:Portable Cloud Programming with Go Cloud by nine_k on Tuesday July 24, 2018 @03:00PM (#17603946)
Go the language now is indeed very similar to Java pre-1.5, but with a better OOP story, and a much better concurrency story.

I still think that JVM + JIT is hugely important, though. Now it's importance is somehow diminished by presence of LLVM, but 20 and even 10 years ago the situation with native compilation was different. (I know that the canonical Go compiler does not use LLVM.)

Re:Portable Cloud Programming with Go Cloud by pjmlp on Tuesday July 24, 2018 @03:58PM (#17604404)
Oberon, Eiffel and Common Lisp already had VM/JIT + AOT.

When Java came around, latest Oberon variant was Active Oberon (Active Objects are similar to goroutines), then we had Eiffel and Modula-3 as well.

Hence why I say it should have been Java 1.0.

Re:Portable Cloud Programming with Go Cloud by merb on Tuesday July 24, 2018 @03:26PM (#17604162)
and a much smaller heap.
Re:Portable Cloud Programming with Go Cloud by funny_falcon on Wednesday July 25, 2018 @07:57AM (#17608567)
Ironically, java 1.0 had green threads.