News for hackers. Stuff that matters.
Re:Go 1.6 is Released by autoreleasepool on Wednesday February 17, 2016 @05:31PM (#11122058)
I don't like Oracle. I don't like the JVM. I refuse to learn Java because I personally have a strong bias for native, compiled code. In fact, I really dislike everything about the Java way of programming. The mental image of a huge ram sucking IDE with code completion for frameworks is simply incompatible with what I would consider the ideal creative process for me as programmer.

That being said, if I were starting a web service as a business today, it would be very hard to persuade me to not choose Java. It's simply the best platform from a business perspective. For better or worse, CS departments across the US produce Java programmers more than anything else. This makes it very easy to hire Java developers. Java has stability, Java has concurrency, Java has hot reloading, Java has a good track record, Java scales, Java has really nice functional programming support, and Java is very popular with the everyday programmer. It Java has so many benefits outside of it's technical or philosophical specifications, that it's almost an obvious choice to me for web.

What's funny is that Erlang is the ideal platform for me from an idealist perspective, but I don't think I have the luck or experience it takes to successfully start an internet company with Erlang.

Re:Go 1.6 is Released by johan_larson on Wednesday February 17, 2016 @05:50PM (#11122186)
For my money, Java is a pretty good language; there are only a couple of things that I think were real mistakes in the core language. And the JVM certainly performs.

But the ecosystem around Java is very complex and hard to manage. Dealing with JVM configuration, webserver configuration, build system configuration, IDE configuration and God knows what else takes up all kinds of brain-space.

And every so often the community goes off on some crusade. Everything must be Design Patterns. Everything must be specified in XML. Everything must be a Bean. No, everything must be Injection. No, no, everything must be Annotation.

The Java culture really needs to learn the value of the simple and explicit.

Re:Go 1.6 is Released by joelg236 on Wednesday February 17, 2016 @06:27PM (#11122419)
> And every so often the community goes off on some crusade. Everything must be Design Patterns. Everything must be specified in XML. Everything must be a Bean. No, everything must be Injection. No, no, everything must be Annotation.

You couldn't have described this better for me. This is my exact frustration with the ecosystem, and it's the only thing that keeps me from using Java as my default language of choice. The language itself can be used very well, just wish the tooling was more concise and functional.

Re:Go 1.6 is Released by pjmlp on Thursday February 18, 2016 @12:32AM (#11123913)
Just wait when Go EE becomes a thing.

Then you will get testing frameworks, libraries each with its own generics workaround and cool interface spaghetti that looks beautiful in UML diagrams at the scrum wall room.

People don't really get that before Java there was C EE and C++ EE, all with similar sins.

One can change the language of the enterprise, but not what those architects do with them.

Re:Go 1.6 is Released by johan_larson on Thursday February 18, 2016 @05:59PM (#11130067)
I fear you are right. Go's simplicity, its pattern of having one and only one way of doing anything, is likely a product of its youth and unpopularity. As the years pass and its following grows, people will come along who want to do things differently, and the ecosystem will become richer but also more confusing.

Perhaps the best thing for the language would be for it not to become too popular.

Re:Go 1.6 is Released by pjmlp on Friday February 19, 2016 @02:08AM (#11132090)
Avoid success at all cost.

-- Haskell

Re:Go 1.6 is Released by codygman on Friday February 19, 2016 @09:12AM (#11133511)
It should be read:

Avoid (success at all cost)

Rather than what you might be (others do at least) implying:

(Avoid success at all cost)

Re:Go 1.6 is Released by teh64 on Thursday February 18, 2016 @07:05AM (#11125164)
> JVM configuration

This is the mother of all premature optimization. Other than maybe modifying heap size or setting client vs. server, most of the default JVM configurations work for almost everything.

> build system configuration

I actually find maven pretty easy to use, but maybe it's just that I am used to it.

> IDE configuration

I don't know what crazy IDE you are using, but both Intellij and Netbeans need very little, if any, configuration out of the box.

> [Java] community goes off on some crusade

As opposed to everyone else? /s

Re:Go 1.6 is Released by randallsquared on Thursday February 18, 2016 @10:10AM (#11126248)
To combine the JVM configuration and IDE configuration points, out of the box on a new 16GB Macbook Pro Retina, Intellij (at least, as PHPStorm) will spend an enormous amount of time unresponsive at startup and periodically thereafter. Why? Because of two things: the default JVM settings it ships with starve it of resources, and the default validation settings have it trying to check everything under the sun.

There's also the initial indexing, but I can live with that, since it enables beautifully fast jump-to-definition, which is hard to live without.

Re:Go 1.6 is Released by iofj on Wednesday February 17, 2016 @10:39PM (#11123550)
Why would you configure a webserver for a java process ? Just have every process include a webserver. At what address ? Well simple : any free address, then register the address you've started up on in zookeeper. Likewise, contact your dependencies by resolving them on zookeeper (this can be done using DNS if you want minimal changes. Protip: SRV records have both ip and port).

Having the webserver is useful for reasons beyond just being independant of the webserver itself, like exporting metrics. Making the logs inspectable. Getting thread dump, inspecting current state, ...

Re:Go 1.6 is Released by stcredzero on Wednesday February 17, 2016 @07:15PM (#11122675)
> culture really needs to learn the value of the simple and explicit.

This is true for any programming community.

Re:Go 1.6 is Released by dcposch on Thursday February 18, 2016 @01:37AM (#11124085)
This is my favorite thing about Go.

All language arguments aside, Go coders are usually pragmatic and humble and Go code is usually simple and explicit.

Re:Go 1.6 is Released by paulddraper on Wednesday February 17, 2016 @09:18PM (#11123215)
"Compile times must be fast"
Re:Go 1.6 is Released by jimmaswell on Thursday February 18, 2016 @12:56AM (#11123971)
>there are only a couple of things that I think were real mistakes in the core language.

Type erasure was a pretty big one that I've felt the impact of a few times in the small amount of Java code I've written (99% being school assignments). One of the reasons I strongly prefer C#/.NET as a language/environment. What I've tried of ASP.NET coding seemed nice.

Re:Go 1.6 is Released by epalmer on Wednesday February 17, 2016 @09:52PM (#11123332)
I'm lucky that I develop Java CLI apps that only I need to maintain and one other person. But damn there are days in which I scratch my head and wonder why I have to write so much code to do simple things. But on the other hand my best work has been writing Java apps.

I have a love hate relationship with Java. I do have Java apps that runs 24x7, day after day without failure.

I think I protest too much.

Re:Go 1.6 is Released by curun1r on Wednesday February 17, 2016 @09:59PM (#11123359)
> it would be very hard to persuade me to not choose Java...For better or worse, CS departments across the US produce Java programmers more than anything else.

This is actually the reason I would not choose Java. I started programming Java in the 90s and spent the better part of 2 decades writing code in it. The last 8 years of that time, I was a lead developer, so I've interviewed hundreds of Java developers. The most kind way to describe them, as a whole, is uninspired. If I were more honest, I'd say that the vast majority of Java programmers are completely unqualified. There are very few Java programmers who write code because they have a passion for it and it shows...most just learned Java to make lots of money.

On the other hand, if you were to choose a language like Go or Erlang, you'd get less than one tenth of the resumes for your open position, but the majority of those resumes would be highly qualified. The reason is that each of those candidates was motivated to learn a new language solely out of curiosity. You'd be automatically selecting for intellectual curiosity and that's a powerful tool that will save you hours upon hours sifting through Java candidates who are simply a waste of your time.

This isn't an indictment of the Java platform...it's no longer my favorite programming target, but there's nothing fundamentally wrong with it from a technical perspective. It's just a recognition that more != better when it comes to language ecosystem. Quality matters.

Re:Go 1.6 is Released by pjmlp on Thursday February 18, 2016 @01:41AM (#11124094)
I have a similar experience with interviewing Java developers in offshoring projects, and I started to think like that, until I was involved into similar projects done in other languages and came to the conclusion any mass market programming language suffers from the same sins.
Re:Go 1.6 is Released by jhh on Thursday February 18, 2016 @12:56AM (#11123972)
Do you know this essay http://paulgraham.com/pypar.html? Almost exactly your points.
Re:Go 1.6 is Released by StevePerkins on Wednesday February 17, 2016 @06:03PM (#11122273)
> The mental image of a huge ram sucking IDE with code completion for frameworks is simply incompatible with

> what I would consider the ideal creative process for me as programmer.

Java has long been my primary professional language, and over the past few years Go has taken on a strong secondary niche at my job. I'm big fan of both, and tend to play Switzerland in arguments between them.

That being said, the best Go IDE out there right now is the official Go plugin for IntelliJ... which again, happens to be the best Java IDE out there. If you are doing modern software development in ANY language, then you are probably traveling one of three paths:

(1) Using an IDE based on JetBrains or Eclipse.

(2) Using a variant of Microsoft Visual Studio, which is about an order of magnitude more bloated than #1.

(3) Using a plain text editor, which for a typesafe language is a bit daft.

Re:Go 1.6 is Released by logicchains on Wednesday February 17, 2016 @06:20PM (#11122371)
What does the Go plugin for IntelliJ offer that Go plugins for Emacs don't? My setup right now has live error checking (highlights errors as they occur), gofmt on save, safe refactoring via gorename, jump-to-definition, proper autocomplete, and Go Oracle integration, for e.g. finding all callers of a method. Due to being Emacs it also has much better support for Vim keybindings via Evil mode.
Re:Go 1.6 is Released by dlsniper on Wednesday February 17, 2016 @06:32PM (#11122451)
Debugging, cross-platform, integration with a lot of other languages, and databases, local history, out of the box configuration for everything you've just mention (including the Vim key working mode, via a plugin) so that people don't spend time in doing all of that and so much more :)
Re:Go 1.6 is Released by logicchains on Wednesday February 17, 2016 @09:56PM (#11123352)
In what way is IntelliJ more cross-platform than Emacs?
Re:Go 1.6 is Released by twistedpair on Wednesday February 17, 2016 @10:44PM (#11123567)
It's written in Java ;)
Re:Go 1.6 is Released by geoka9 on Wednesday February 17, 2016 @10:02PM (#11123377)
Are using go-projectile for all of that? If not, what did you use for gorename integration?
Re:Go 1.6 is Released by logicchains on Thursday February 18, 2016 @02:24AM (#11124231)
Re:Go 1.6 is Released by ilek on Thursday February 18, 2016 @05:34AM (#11124853)
Visual Studio is more bloated than IntelliJ or Eclipse? Absolutely not.

When I had the displeasure of using IntelliJ it would use 1.2GB RAM for a fucking 5 file project. Debugging would then use another 1GB RAM.

Visual Studio uses 1GB RAM with a 150 project solution open, and it opens said solution about as fast as IntelliJ opened that tiny project.

Adding something like Resharper (by your beloved Jetbrains) will make Visual Studio bloated and slow.

Re:Go 1.6 is Released by Manishearth on Wednesday February 17, 2016 @11:15PM (#11123685)
> (3) Using a plain text editor, which for a typesafe language is a bit daft.

What's wrong with using Vim, Emacs, or Sublime? There are plugins out there which get you a lot of the IDE magic (including jump to definition, autocomplete, autofmt, and there probably is something for inline errors)

Re:Go 1.6 is Released by iainmerrick on Wednesday February 17, 2016 @06:18PM (#11122363)
(4) Xcode? There are lots of iOS programmers out there.
Re:Go 1.6 is Released by shopkins on Wednesday February 17, 2016 @11:32PM (#11123745)
Still in camp #1 (AppCode). As someone who also does development outside of iOS, you couldn't pay me enough to solely use Xcode.
Re:Go 1.6 is Released by mwcampbell on Wednesday February 17, 2016 @08:45PM (#11123084)
Can you explain why using a plain text editor for a typesafe language is a bit daft?
Re:Go 1.6 is Released by paulddraper on Wednesday February 17, 2016 @09:22PM (#11123229)
That may be stated too strongly, but the argument is in a statically typed language you go to all the trouble to provide the compiler with sufficient amounts of information, but then don't leverage that in your editor.

E.g. if you call a statically resolved function, your IDE should be able to take you to the function's definition.

Re:Go 1.6 is Released by krakensden on Thursday February 18, 2016 @11:23AM (#11126855)
Go was designed to make tooling easy, and that tooling has been written: https://github.com/nsf/gocode/blob/master/README.md

And it's pretty trivial to get Vim super integrated with go: https://github.com/fatih/vim-go/blob/master/README.md

Re:Go 1.6 is Released by paulddraper on Thursday February 18, 2016 @07:23PM (#11130539)
And you consider that an IDE, right?

An Integrated Development Environment?

Re:Go 1.6 is Released by krakensden on Saturday February 20, 2016 @09:13PM (#11142970)
No, and nobody else does. There's a lot more baggage and feature check-boxes tied up in that name.
Re:Go 1.6 is Released by alkonaut on Thursday February 18, 2016 @03:19AM (#11124414)
Because if it's a text editor it doesn't have all the info and functionality you have available in an IDE. Run tests for your current function, navigate to definition, manage large projects, configure builds, see test coverage, step with interactive debuggers, REPLs, vcs integration, symbolic refactorings, autocomplete, etc.

Most of this can be added to emacs too. Then it's an IDE.

Re:Go 1.6 is Released by voidlogic on Wednesday February 17, 2016 @11:50PM (#11123798)
(4) Use LiteIDE, simple IDE written for Go.
Re:Go 1.6 is Released by fithisux on Thursday February 18, 2016 @03:54AM (#11124506)
The best ide for golang. It is not Netbeans or Eclipse but

it is lightweight, enough features and gets the job done.

Re:Go 1.6 is Released by kmch on Thursday February 18, 2016 @04:50AM (#11124696)
VS is much faster than the JetBrains IDE without any plug ins. Adding JetBrains' products makes it slow.
Re:Go 1.6 is Released by charlieflowers on Wednesday February 17, 2016 @11:59PM (#11123825)
A huge percentage of those doing #2 are using Resharper (a JetBrains plugin for Visual Studio).
Re:Go 1.6 is Released by zenlikethat on Wednesday February 17, 2016 @06:18PM (#11122358)
I agree Erlang is probably not the correct fit for the average startup, but for some areas it is essentially unparalleled (and businesses have had great success with it). Consider the online advertising industry, for instance -- in order to guarantee the kind of uptime and debuggability that real-time bidding and decision making on ads requires, Erlang is an excellent choice (cf. https://www.youtube.com/watch?v=qURhXHbxbDU).
Re:Go 1.6 is Released by poooogles on Wednesday February 17, 2016 @06:24PM (#11122398)
Go is great for RTB as well. Easy concurrency that scales very well. Anecdotally it seems a lot easier to hire for than Erlang/functional languages.
Re:Go 1.6 is Released by davidw on Wednesday February 17, 2016 @08:00PM (#11122888)
If it's just concurrency and scaling, things are a toss-up. Where Erlang really comes into its own are all the fault tolerant and distributed things that Erlang adds, like the supervision tree.
Re:Go 1.6 is Released by mayhew on Wednesday February 17, 2016 @08:58PM (#11123129)
Go is such a simple language that I believe any decent developer could be productive with it within a week. I'm not sure the hiring argument is all that great.
Re:Go 1.6 is Released by pjmlp on Thursday February 18, 2016 @01:45AM (#11124111)
> For better or worse, CS departments across the US produce Java programmers more than anything else.

That is real a problem of quality of those CS departments.

My humble Portuguese CS department teached me about Pascal, C++, C, Prolog, Caml Light, Smalltalk, Java, Lisp, MIPS and x86 Assembly.

Having a quick look at their current curriculum, now around 25 years later, they seem to still provide a good mix.

Re:Go 1.6 is Released by autoreleasepool on Thursday February 18, 2016 @08:53AM (#11125693)
I have to admit I'm jealous you had such a diverse exposure to programming paradigms.

I agree it's a problem. I've always found it odd that the AP test is in Java for example. I would imagine pseudo code would be a better choice for a conceptual test.

Re:Go 1.6 is Released by pjmlp on Thursday February 18, 2016 @09:28AM (#11125918)
And I only listed the official ones.

Those of us, like myself, that opted into the compiler design classes had a quite a few more to play with.

I guess the problem are those universities that tend to be more focused on "languages to get a job" than doing the real work of an university.

Re:Go 1.6 is Released by pjmlp on Thursday February 18, 2016 @12:26AM (#11123896)
>I refuse to learn Java because I personally have a strong bias for native, compiled code.

All commercial JVMs support AOT compilation to native code.

Yes even some of the Oracle ones, e.g. Java Embedded.

Re:Go 1.6 is Released by d4rkph1b3r on Wednesday February 17, 2016 @11:10PM (#11123672)
>For better or worse, CS departments across the US produce Java programmers more than anything else.

Do you think this large pool of programmers are good?

>This makes it very easy to hire Java developers.

Yes, if you are looking for sub-par developers. I don't think Google thinks to itself "oh man we're so glad we use java, otherwise hiring would be challenging". No, they have just as much difficultly hiring as anyone else. I'd even say that considering it's the 'blub' language to use PG speak, it makes hiring harder for them.

>Java has stability, Java has concurrency, Java has hot reloading, Java has a good track record, Java scales,

No, those are things the JVM has.

>Java has really nice functional programming support,

You can't honestly believe this. How much functional programming experience do you have?

Re:Go 1.6 is Released by autoreleasepool on Thursday February 18, 2016 @08:28AM (#11125550)
> Do you think this large pool of programmers are good?

Yes, why not? I have yet to see evidence that Java programmers are not good. Seems like a discriminatory mindset. The large pool also makes them easy to replace. I think Facebook has had an ad for an Erlang developer for a few months now. I don't think a startup needs that kind of stress.

Also, I'm sure there are Java Devi who are absolutely fantastic. That is, I think the idea of the meme "real passionate programmers use less mainstream languages" is entirely unsubstantiated. This line of thinking comes from immaturity, elitism, and a desire for validation by association.

It's just like the "the best lawyers were on the debate team" meme that's also very untrue. It sounds nice if your kid is on the debate team, though

>No those are the things the JVM has.

I meant Java as a platform. Funny, you were the only one who didn't know what it was what I meant here.

> You honestly can't believe this. How much functional programming experience do you have?

I've dabbled with Erlang and Haskell. I don't have as much functional programming experience as I would like. Also, I've only heard good things about Scala and Clojure. What was so ridiculous to you about what I said? Or are you unable to forgive an accidental conflation of Java and the JVM?

Your criticism come across as nothing more than unreasonably pedantic expectations for terminology. They either reflect your inability to use context clues effectively or your lack of common sense.

> It's the 'blub' language to us PG speak

This is a poor reason to think Java developers are incompetent. I hope this isn't the premise that led you to that inherently false conclusion.

Re:Go 1.6 is Released by d4rkph1b3r on Thursday February 18, 2016 @01:52PM (#11128219)
Eh, most of my post was an emotional response because of my hatred of the java language. Your reasoning I mostly agree with.

I do agree, the JVM is a solid language choice. I also don't think going with too esoteric of a language is a good thing. Probably a little early to bet a company on Idris or Ceylon.

Still, I apologize for my tone. Let me give you purely anecdotal information about me, so you can at least see where I'm coming from with regards to my anti-java stance.

After doing java/C# for many many years, I will not do it again. I'm much more productive in Scala/F#/ML, it's more pleasant to use, and I believe the average programmer using those languages ends up being a different caliber than the java programmers.

There are absolutely good Java programmers. They just probably work at Google or Facebook and you'll be competing with Google. I would take less money (and have, though not too much less) to not work at Google because I get to use a functional language.

shrug

If a startup is using java, I think to myself 'why java? why not Scala, F#, or C# at the very least?'. Usually the answer is 'scala/F# programmers are too hard to find', but that's not really true, what they mean is they're not willing to pay the 20% premium for them. That's a strong indicator that a start up doesn't value talent.

Re:Go 1.6 is Released by autoreleasepool on Thursday February 18, 2016 @07:19PM (#11130520)
> Still, I apologize for my tone.

It's all good! I've had the same heat of the moment responses on here, so I get it. But thanks anyways.

> If a startup is using java, I think to myself 'why java? why not Scala, F#, or C# at the very least?'. Usually the answer is 'scala/F# programmers are too hard to find', but that's not really true, what they mean is they're not willing to pay the 20% premium for them. That's a strong indicator that a start up doesn't value talent.

Definitely. If I chose the JVM or (blanking) the Microsoft VM I would not limit myself to the object oriented languages for those platforms. I was under the impression that using multiple languages was a given, but apparently not? I wouldn't know, I'm doing iOS right now (hence the username). I graduated fairly recently, so I can only go off of what I've read.

So, I would probably do Java and Scala together if that was possible. I really haven't looked into it. My startup was completely hypothetical.

Re:Go 1.6 is Released by lowmagnet on Monday February 22, 2016 @07:42PM (#11155561)
Might I suggest starting with Java, but moving into Kotlin after getting the basic syntax of Java down? I have a good feeling about the language after translating a system of classes to it recently. About 60% of the code vanished, and working in it let me free up a few concepts for the resulting java code after doing my thinking in Kotlin.

Most of the stuff Kotlin does, absent much nicer functional syntaxes, I can do in Java 8 already. I think Kotlin does a better job at expressing it. I especially like the first-class nature of functions, and I know I'm just in the early days of understanding it.

Re:Go 1.6 is Released by d4rkph1b3r on Thursday March 03, 2016 @06:42PM (#11220935)
Why kotlin and not scala? Kotlin is like Scala--, in addition to not really having a job market.
Re:Go 1.6 is Released by foxylion on Thursday February 18, 2016 @12:33PM (#11127548)
Some true words.

The programming language has really nothing to do with the quality of a developer. A new language is learned quickly, software engineering skills not.

Re:Go 1.6 is Released by serge2k on Wednesday February 17, 2016 @10:51PM (#11123587)
> I refuse to learn Java

So you willfully ignorant but will continue to spout off opinions anyway?

Re:Go 1.6 is Released by autoreleasepool on Thursday February 18, 2016 @08:38AM (#11125608)
I've read a lot about Java. I just don't want to learn it on my free time. My opinions were based off what I read
[dead]
Re:Go 1.6 is Released by hans0l074 on Wednesday February 17, 2016 @06:16PM (#11122351)
Your comment is quite cryptic imho, and there is no need to respond in this fashion. Can you elaborate?