Hacker News new | ask | show | jobs
by mbo 2815 days ago
> Also, I am not seeing a reason why Go is not a good choice.

I think you may have unnecessarily restricted yourself by wanting a language that produces native binaries and is GC'd. There simply _aren't_ that many mature and mainstream languages that compile to native binaries with a GC. I'd personally much prefer a more expressive language with a less robust ecosystem (and a virtual machine), but if an Elastic lib is a hard requirement for you, then I can't argue with your choice of Go.

Or use Haskell. Native binaries, opinionated, decent library ecosystem ;).

1 comments

I am already very familiar with 2 interpreted languages, but not very familiar with any compiled languages. I'm doing the exact opposite of restricting myself.

And it's not just Elasticsearch. That's just one example. I would come up against many other requirements. Here's just one more: https://nats.io/download

Edit: And you're right, Haskell is something I should probably look into more. I haven't thought about it too much since I already do a lot of functional programming in JavaScript and I don't hear too much about Haskell being great for creating API servers.

One of my other concerns is that the project I'm planning will be a long-haul, and will have several other developers join in future. I want to have a decent market to choose from. And, being in Australia, it's small enough as it is. I'll shy away from remote workers since it's relating to sensitive healthcare data.

> I am already very familiar with 2 interpreted languages, but not very familiar with any compiled languages. I'm doing the exact opposite of restricting myself.

Like, no, compiling to machine code is only one class of compilation. All the VM-targetting languages have far more robust ecosystems than Go, with good abstractions, performance and tooling to boot. _Any_ language that targets the CLR or JVM should suffice.

>_Any_ language that targets the CLR or JVM should suffice.

That's a very bold thing to say when you don't even know what I'm planning to do with it. Like, NodeJS will "suffice". Why don't I just use that since I'm very experienced with it? Reasons. Why don't I use Java? Reasons.

I feel like this is going nowhere. I'll probably choose Go. Stranger on internet thinks I'm wrong. This is the story whenever the topic of programming languages comes up. Everyone thinks their preference is the one true preference.

Yeah look, I do think you're wrong. You've given yourself a very tough set of constraints (has to compile to binaries, has to have a GC, can't be in preview, can't be under v1.0, can't have a slightly unstable API, has to have "good" libs for an arbitrary selection of tech, can't target a VM) that makes Go the only viable option - I'm questioning whether those are legitimate.

I'm not suggesting you use my personal favourite language, merely use anything but Go.

Yeah look, I do think you're wrong.

I respect your courage in just coming out and saying that.

You've given yourself a very tough set of constraints (has to compile to binaries, has to have a GC, can't be in preview, can't be under v1.0, can't have a slightly unstable API, has to have "good" libs for an arbitrary selection of tech, can't target a VM) that makes Go the only viable option

Half of that is "I want something stable", which is almost universally appreciated among programmers. The way you've said that makes it sound like I chose Go then decided "I want whatever he's having". No. I have a list of many "nice-to-haves" and Go satisfies more of them than any other language/ecosystem. It's as simple as that. If I was going to settle for 2nd place, I'd probably just use NodeJS. I am extremely productive in NodeJS, and I'm still not 100% sure I won't choose it for this next project.

I'm not suggesting you use my personal favourite language, merely use anything but Go.

Although I find that a strange position to take, I appreciate your honesty.