5 ms·
I'm looking for a new language to write server code in. I have been using Node for years but I want something that compiles to machine code and is statically ty
by jazoom 8y ago
I'm looking for a new language to write server code in. I have been using Node for years but I want something that compiles to machine code and is statically typed.
I've been looking at Go and I like that it is simple, has opinionated, official tooling, compiles very quickly for multiple platforms, is popular enough to have a decent library ecosystem, and I really like the idea of goroutines.
What language would you suggest would be better? Nim sounds cool but it's too new. It's not stable and has a small ecosystem.
- dom96 8y agoYou should give Nim a go. The ecosystem is growing fast :)
- jazoom 8y agoThat's a good thing, but it means I might use Nim in 3-5 years, not right now. As a single dude without a team I need to spend time on getting things done, not building custom clients to databases etc.
- mbo 8y ago> [Nim] is too new It's actually a year older than Go (2008 rather than 2009). If you don't want to use Nim because it's not stable enough or has too small an ecosystem (I disagree), you could try out Scala Native or Kotlin Native. A large portion of their ecosystem successfully compile to native code (although you may have issues with Scala Native compile times). You can also check out OCaml.
- jazoom 8y agoI guess I mean "new" as in still not stable (pre-1.0 and still sees breaking changes). The fact it's been around so long and still hasn't matured is not reassuring at all. I have checked out OCaml but it's not mainstream enough to have libraries for... anything really. Here's the first thing I checked just now: https://www.elastic.co/guide/en/elasticsearch/client/community/current/index.html#ocaml https://www.elastic.co/guide/en/elasticsearch/client/communi... The OCaml client was abandoned 5 years ago. Nim doesn't even appear on the page! This page says Kotlin Native is still in preview: https://kotlinlang.org/docs/reference/native-overview.html https://kotlinlang.org/docs/reference/native-overview.html Also, I am not seeing a reason why Go is not a good choice.
- mbo 8y 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 ;).
- jazoom 8y agoI 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 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.
- mbo 8y ago> 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.
- jazoom 8y ago>_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.