I keep looking for a good excuse to learn it, but it does not fit my domain or my language-style preferences very well.
I primarily develop web services, and it is really difficult to beat Typescript due to the fact I can write my front-end, backend, and mobile apps in it (via NativeScript or React Native).
I use uWebsockets.js, which has both an HTTP API that is nearly-identical to Express, and a Websocket API that is identical to Socket.io, but performance ~x10 faster than Express and ~x2 faster than the top-performing Go/Rust/C web libraries due to being a C++ library exposed as Node V8 bindings.
If I really need performance outside the context of handling web requests, I will write small functions or services in Go/Rust and compile to WASM and invoke it through Node, or just throw it up on OpenFaaS.
I like a lot of what Nim does, but I have had a difficult time since finding it two years ago ever coming up with an adequate reason for using it.
Edit: I want to make one clarification. I think that Nim may actually have a bright future in ML, primarily due to the work of Mamy Ratsimbazafy. He has some libraries for HPC, Laser [0] and Arraymancer [1] that can smoke C by several orders of magnitude. Combined with Weave [2], the multi-threaded runtime he built for Nim, that opens the doors for ridiculously performant ML. I think the only the other language that would give Nim a run for its money here is Julia, I really dig the work that has been going on there for ML as well.
I think it needs a "killer library". The core language is pretty easy to learn if you've used Python, but there aren't a ton of third party libraries, and the ones that do exist seem to be incomplete, poorly documented, buggy, abandoned, or some combination thereof.
I got annoyed when it didn’t have a decent standard library to handle command line flags and arguments.
The examples given so far, are mediocre.
parseopt is incredibly cumbersome.
docopt is an incredibly poor design, that I can’t believe anyone thought this was a good idea.
And failing to have such basic libraries, I realized, this language has a long way to go.
I contemplated building my own library to handle such a need, but why, this doesn’t solve my problem of building something. And if it’s missing such basic libraries, then what else is it missing? The odds were too great, and too risky for me to commit my time to it.
gavinray|6 years ago
I primarily develop web services, and it is really difficult to beat Typescript due to the fact I can write my front-end, backend, and mobile apps in it (via NativeScript or React Native).
I use uWebsockets.js, which has both an HTTP API that is nearly-identical to Express, and a Websocket API that is identical to Socket.io, but performance ~x10 faster than Express and ~x2 faster than the top-performing Go/Rust/C web libraries due to being a C++ library exposed as Node V8 bindings.
If I really need performance outside the context of handling web requests, I will write small functions or services in Go/Rust and compile to WASM and invoke it through Node, or just throw it up on OpenFaaS.
I like a lot of what Nim does, but I have had a difficult time since finding it two years ago ever coming up with an adequate reason for using it.
Edit: I want to make one clarification. I think that Nim may actually have a bright future in ML, primarily due to the work of Mamy Ratsimbazafy. He has some libraries for HPC, Laser [0] and Arraymancer [1] that can smoke C by several orders of magnitude. Combined with Weave [2], the multi-threaded runtime he built for Nim, that opens the doors for ridiculously performant ML. I think the only the other language that would give Nim a run for its money here is Julia, I really dig the work that has been going on there for ML as well.
[0] https://github.com/numforge/laser
[1] https://github.com/mratsim/Arraymancer
[2] https://github.com/mratsim/weave
kungtotte|6 years ago
So you could write your entire stack in Nim too the same way you do with TS. :)
bloomer|6 years ago
ac29|6 years ago
blackrock|6 years ago
The examples given so far, are mediocre.
parseopt is incredibly cumbersome.
docopt is an incredibly poor design, that I can’t believe anyone thought this was a good idea.
And failing to have such basic libraries, I realized, this language has a long way to go.
I contemplated building my own library to handle such a need, but why, this doesn’t solve my problem of building something. And if it’s missing such basic libraries, then what else is it missing? The odds were too great, and too risky for me to commit my time to it.
gameswithgo|6 years ago
beagle3|6 years ago