Hi, I'm very new to Nim, so far it's been an interesting experience. I'll provide my perspective, not to debate it, instead, to share what it's like as I bump into walls and try to figure things out.
My relevant background My day job is managing programmers so all my actual programming time is as a hobby. I was using Haxe prior to this to learn more about game engines and 3D graphics. While using Haxe (JS and HashLink) there were some limitations that frustrated me and so I took a break, deciding instead to take a closer look at Nim. This was after @deech's tweets and a largely positive review from a friend of mine who I initially encouraged to look at Nim (they wanted low-level but weren't jazzed about C/C++/Rust). My first impression without actually touching the language The docs are pretty good and at least they're organized with links to source so I have a map. I read through the 3 tutorials in about an hour to get an overview, that was easy and it built a map of concepts. My first impressions actually working with it Both myself and the friend who 'reverse-recommended' it to me were immediately struck by Nim's weak IDE support. Especially given that VS Code and LSP have been such a boon for other smaller language communities we've otherwise encountered. Haxe has a pretty miserable story here too from my perspective, but that's mostly an indication that I've been spoiled rotten by what's available in Java, TypeScript, Kotlin, etc. I don't expect a world class IDE, but my expectations were higher because of Nim's JS target and the existence of nimsuggest and my inferring that meant an easy road to feature rich LSP implementation. This isn't ideal for someone new to the language, but something that can be fixed with a bit of time. If you're wondering why, examples that immediately come to mind: auto-complete is a great way to reduce search space, debuggers are a handy way to learn the gaps between ones mental model vs the implementation, and templates/snippets are a great way to convey subtle style cues. What I'm currently working on with Nim I figured it wouldn't be that hard to improve the VS Code extension for Nim, I've poked at extensions before and since Nim targets JS this should be a good way to learn Nim. Also, I figured if I helped improve it maybe the community would grow for those going through a similar Nim journey such as myself. So after realizing the extension was written in TypeScript and the most mature LSP implementation seems divorced from I decided to look at converting it to Nim first, you can see my [terrible ongoing port of it to Nim here](https://github.com/saem/vscode-nim/tree/wip-extension-in-nim) if you're curious. My objectives, learn Nim, improve IDE support, maybe help grow the ecosystem and pave the way for new contributors. At this point I thought, given that the Nim compiler is written in Nim, it targets JS, there is nimsuggest, it'll be awesome!!! Community impressions thus far One thing to note, as I was googling about and trying to understand why things were the state they were in, I encountered a lot of seemingly acerbic/derisive/vitriolic comments towards VS Code, IDEs, LSP, and so on, they're bit off putting and people are of course entitled to their opinion. Where it went beyond that and honestly I started to have doubts about engaging ( **including my own hesitation as I write this very message** ) there was more than one occasion were said criticisms were used to cast aspersions on the users/developers. It's not all doom and gloom, here is a bright spot that as small as it is meant a lot to me, I [opened an issue to let the vscode-nim extension](https://github.com/pragmagic/vscode-nim/issues/172) folks know I was attempting a Nim port and those little emoji's of encouragement help move past the dips in enthusiasm. My current opinion things are positive, I'm enjoying myself. I've run into a roadblock with trying to use nimsuggest/sexp parsing in JS and in the midst of an ever expanding search for answers I stumbled upon the forum and this post. Some challenges I've run into I'm purposefully trying to draw from the beginner mindset and experience so they might seem trivial: * the manual being single page makes it hard to scope browser text searches to single sections * IDE support is very weak so it's hard to support learn as you go * the manual rarely tells you what happens in JS backend and it's not always easy to try it * it feels difficult to reason about the stdlib and how it works in js+node so I've been wrapping native js APIs and ignoring that for now... this brings a world of hurt (cstring + cint) and I probably deserve that ;) * it's hard to figure out how I should setup "my first project" without deep dives, nimble/nim.cfg are still confusing especially with various interactions with choosenim * learning "good taste" in Nim feels like forever away I hope this is useful 'anecdata' for folks here, if someone would like to learn more about my perspective, I'll happily share but I'm not looking to debate it. If you'd be interested in helping me at all with my learning or the porting project, then maybe let's connect outside this thread so it stays on topic.