I've been doing the nim track on exercism.io (no affiliation, just a user) for the last two weeks. The mentors on the track have been fantastic. If you're looking for a "solve a problem and get some external feedback" approach to learning the language it's pretty good.
Personally I stopped using exercism, when it started to require me to work for Google for free and would not let me log in, if I did not. It's not an ethical platform, unfortunately.
Dup is very interesting to me. Does that mean that in Nim all functions will be impure by default, and that it's considered idiomatic to modify the input? I guess it's nice that they're trying to make behavior consistent. It just seems like the opposite of the recent directions I've seen other languages take.
I haven't played with nim for a few months, but only parameters with var will get mutated. I suspect you want to use someone else's cursed function and don't want to poison your blessed code
If you would like to see some simple to parse Nim code and get a feel for what a "1 month of experience during weekends" Nim looks like, check out my project:
Nim is a very interesting language, with a lot of upsides. It just needs that killer framework to get the ball rolling and allow devs to solve business needs quickly. Once that's done I think Nim will grow a lot! Tiny binaries, static binaries, fast, low memory usage, macros, compiles to C.
The collect macro is awesome, and way more idiomatic Nim than list comprehensions. Nim continues to hit the sweet spot between performance and developer ergonomics.
Nim might be great. But how can a great language get traction if nobody big is behind it?
Java and Python are being pushed by Silicon Valley and universities, Go is being pushed by Google, Kotlin is being pushed by Google, C# is backed by Microsoft and some big companies.
Who can help Nim, or Crystal, or Rust or other new language?
I look at many of them from time to time, see interesting developments, see exciting things but I refuse to learn the languages, their ecosystem and frameworks from the fear I have I will lose lots of valuable time since I might not be able to earn my living using them.
Surprisingly, a lot of large companies use Rust in-house. I work at Nando's, one of our biggest systems is in Rust, and we're a chicken restaurant business, so it's not just limited to bleeding-edge SV companies.
Hoping we can open-source some of this stuff in the near future too to kind of show the world that Rust is ready.
I feel like dark mode is a sign that people care. I think it's a user feature that is easy to do, but not done often. Mostly done by people who care. It brings so much polish to the experience.
I really with more people used NIM for web development. It really seems like the best of all worlds (e.g. perf, developer ergonomics, productivity, etc).
As fan of Wirthian languages and GC enabled systems languages it looks nice to me, but it is still miles away of the tooling experience available to Java and .NET developers, and yes, you can make use of AOT or JIT caches with them.
But the more the merrier, so I look forward to its bright future.
I've been building and deploying Nim web apps for clients over the past couple years. The language is just getting better and better and the library environment is filling out nicely too (not to subtract from the stdlib, it's very complete too). It's been a really great experience.
Also: available to hire if anyone is looking to work with Nim.
How would the dynamism and expressivity of something like Django port to Nim? I love the whole declarative paradigm of the Django forms and models API. Is Nim good at this kind of DSL-ish plasticity?
> If you were relying on some edge case and/or buggy behaviour which is now fixed, try if --useVersion:1.0 gives you back the results you expect to see. If that doesn’t work and you need the old behaviour, please open an issue in our bug tracker and we will try to make it work in future bugfix releases
So useVersion doesn't simply checkout the old codebase, but they still promise to maintain all prior version's bugs? Seems like a losing battle to me... why not just tell people relying on version 1.0 behaviour to use version 1.0 and create tooling to make sure switching between versions is easy (a. la. nvm)?
I am currently working on a tiny game in nim using Raylib. I had some initial friction with Nim, but i like using the language now.
You'll do well to stop trying to use Nim as an oops language and just use it as a better C.
The language syntax is clean, and the std lib has all that I need.
One bit which I still hate is simply how imports work in Nim. My project pretty much has a header like file containing function and variable signatures which can be called from other files.
For someone used to modern languages, it just feels so archaic.
But overall it is still a fantastic language and I am excited to try the ARC gc
> One bit which I still hate is simply how imports work in Nim. My project pretty much has a header like file containing function and variable signatures which can be called from other files.
You mean how `import` works or are you using `include`? If the latter then I would strongly discourage you from using it.
As for the former, you can use `from module import nil` everywhere if you really want.
As someone who's heard of Nim, can someone who's used it tell me a little bit more about its benefits and how it compares to other common languages like JavaScript, Python, etc?
The major features are: Python like syntax, Lisp like macro system, potential for C like performance (YMMV of course).
This is my person opinion here:
Nim is part of the "new generation of system programming languages" from the last decade or so. Some other examples in this category include Zig, D lang, Go lang, Swift, Rust, etc...
The whole idea is to provide "modern high level" language features and ergonomics while still producing efficient low level code.
For Pythonistas, The familiar syntax is attractive to Python programmers looking for a more performant language (data science is a prime example.)
Nim is also attractive to lispers looking to move to a more traditional Algol or C like language while still keeping much of power and flexibility that they are used to from macros.
hope they nim developers, port a lot of python data science tools e.g pandas, numpy etc so they can increase adoption in the language. Julia is supposed to fill that space, but feel strongly nim is better positioned
[+] [-] intrepidhero|6 years ago|reply
[+] [-] jjtheblunt|6 years ago|reply
[+] [-] mikebelanger|6 years ago|reply
[+] [-] zelphirkalt|6 years ago|reply
[+] [-] iimblack|6 years ago|reply
[+] [-] jrhurst|6 years ago|reply
[+] [-] treeform|6 years ago|reply
I do feel Nim embraces mutation more than other recent languages.
[+] [-] sergiotapia|6 years ago|reply
https://github.com/sergiotapia/torrentinim
Nim is a very interesting language, with a lot of upsides. It just needs that killer framework to get the ball rolling and allow devs to solve business needs quickly. Once that's done I think Nim will grow a lot! Tiny binaries, static binaries, fast, low memory usage, macros, compiles to C.
[+] [-] icedchai|6 years ago|reply
[+] [-] MaxBarraclough|6 years ago|reply
[+] [-] treeform|6 years ago|reply
[+] [-] nepeckman|6 years ago|reply
[+] [-] DeathArrow|6 years ago|reply
Java and Python are being pushed by Silicon Valley and universities, Go is being pushed by Google, Kotlin is being pushed by Google, C# is backed by Microsoft and some big companies.
Who can help Nim, or Crystal, or Rust or other new language?
I look at many of them from time to time, see interesting developments, see exciting things but I refuse to learn the languages, their ecosystem and frameworks from the fear I have I will lose lots of valuable time since I might not be able to earn my living using them.
[+] [-] moonduster|6 years ago|reply
Hoping we can open-source some of this stuff in the near future too to kind of show the world that Rust is ready.
[+] [-] nimmer|6 years ago|reply
Being a grassroot, community-driven project is a feature, not a bug.
[+] [-] klohto|6 years ago|reply
[+] [-] dom96|6 years ago|reply
[+] [-] treeform|6 years ago|reply
[+] [-] boourns311|6 years ago|reply
[+] [-] mikebelanger|6 years ago|reply
[+] [-] k__|6 years ago|reply
[+] [-] alberth|6 years ago|reply
[+] [-] pjmlp|6 years ago|reply
But the more the merrier, so I look forward to its bright future.
[+] [-] nepeckman|6 years ago|reply
[+] [-] nathancahill|6 years ago|reply
Also: available to hire if anyone is looking to work with Nim.
[+] [-] andybak|6 years ago|reply
[+] [-] The_rationalist|6 years ago|reply
[+] [-] jakear|6 years ago|reply
So useVersion doesn't simply checkout the old codebase, but they still promise to maintain all prior version's bugs? Seems like a losing battle to me... why not just tell people relying on version 1.0 behaviour to use version 1.0 and create tooling to make sure switching between versions is easy (a. la. nvm)?
[+] [-] _0ffh|6 years ago|reply
[+] [-] hartator|6 years ago|reply
[+] [-] rishav_sharan|6 years ago|reply
One bit which I still hate is simply how imports work in Nim. My project pretty much has a header like file containing function and variable signatures which can be called from other files.
For someone used to modern languages, it just feels so archaic.
But overall it is still a fantastic language and I am excited to try the ARC gc
[+] [-] dom96|6 years ago|reply
You mean how `import` works or are you using `include`? If the latter then I would strongly discourage you from using it.
As for the former, you can use `from module import nil` everywhere if you really want.
[+] [-] wmock|6 years ago|reply
[+] [-] rayman22201|6 years ago|reply
This is my person opinion here: Nim is part of the "new generation of system programming languages" from the last decade or so. Some other examples in this category include Zig, D lang, Go lang, Swift, Rust, etc...
The whole idea is to provide "modern high level" language features and ergonomics while still producing efficient low level code.
For Pythonistas, The familiar syntax is attractive to Python programmers looking for a more performant language (data science is a prime example.)
Nim is also attractive to lispers looking to move to a more traditional Algol or C like language while still keeping much of power and flexibility that they are used to from macros.
[+] [-] iffycan|6 years ago|reply
[1] https://nim-lang.org/docs/compilesettings.html
[+] [-] dzonga|6 years ago|reply
[+] [-] rayman22201|6 years ago|reply
[+] [-] eigenspace|6 years ago|reply
[+] [-] totalperspectiv|6 years ago|reply
[+] [-] sergiotapia|6 years ago|reply
[+] [-] war1025|6 years ago|reply
These comments make a lot more sense now.
[+] [-] predators372|6 years ago|reply
[+] [-] adwww|6 years ago|reply
A. Where are you that you are not already at home??
And B. I wonder how many people are using nim at work, and what sort of workplaces that might be?
[+] [-] rattray|6 years ago|reply
[+] [-] pietroppeter|6 years ago|reply
[+] [-] flywind|6 years ago|reply