I'm new here so I'll first quickly introduce myself. I'm developing software for a living, mostly in the field of IT security, crypto and networking. Having used C for many years, with some not insignificant experience in Ada, Pascal, Python and some more esoteric security centric or formal verification "languages", I was always searching for "my perfect language" \- and seem to have largely found it in Nim, albeit with with some buts (after trying many ranging from C++ (yuck) to some functional languages and D, Go, ...).
I might be wrong but it seems to me that the Nim team is quite concerned with the question why professional developers and companies use or don't use Nim and on the other hand I'm quite concerned too. After all, the language I use is of high importance to me (and certainly others too). Hence this thread. Frankly, I was a bit unhappy with how the survey was handled. Not only took it an eternity to get the results but those were - at least from my point of view - sometimes quite superficial and occasionally even misleading. Example in question: Visualstudio Code which strongly grew over the year and is clearly leading. Hurray. Or not? I _hate_ Visualstudio Code. It has lots of quirks, it's an insanely large monstrosity, it often quite retardedly autocompletes, etc. Yet I use it. Why? Because I'm forced to; at least it seems like that to me. Reason: I'm not interested in editor wars (vim or emacs) nor am I interested in becoming an editor wizard (e.g. knowing all key combinations of vim). And I NEED A DEBUGGER. Granted, I'm amazed how rarely I really need a debugger with Nim (as opposed to e.g. C) but still _I need a debugger_. If there is no debugger for any given language I don 't even use it and take it be a toy, simple as that. And the only way I found so far to get someting like a debugger with a GUI working with Nim is VSC plus some plugin. It's ugly and quirky but it kind of works. So, to call out VSC as the happy winner seems akin to asserting that Breshniev was an excellent leader whom the Russians loved because he got 99% of the votes. In that context I should also mention that I'm one of those guys who actually downloaded and tried Aphoria. And I also noted @Araq using some Nim editor (of his own?) in a presentation but I failed to get at that editor and to get it properly working. Ladies and gentlemen that is a quite poor status quo for Nim. About the only way to use it in a halfway decent way is giving in to the VSC rape (sorry, that's how I perceive it. Take it as a compliment. I like Nim _so much_ that I was willing to install and use that VSC monster). No matter how nice the language is; if you want considerable uptake in professional contexts one extremely decisive point is practical USABILITY. In capitals. Unlike hobby hackers a professional programmer can't (and usually won't) spend lots of effort and time just to be able to actually use a language. And "real world usability" is also my title for a whole group of problems that plague Nim. What is needed? * _easy_ to use with the major editors (vim, sublime, VSC is the bare minimum. Possibly others too, eg. emacs) * _easy_ to use with a gdb GUI (gui in Capitals). Can be a plugin, can be via Nemiver, etc. * optionally an IDE would be nice. You should revive Aphoria or similar. Many look down to "hobbyists" who need an IDE but you shouldn't underestimate the number of companies where IDEs are used and the generations of developers who are used to and want an IDE (I'm not one of them but I know many in companies). All of the above for linux, Windows, apple [their OS] at the minimum. * good documentation. For me personally I'm OK with what is basically just nim-doc pages for most things. But I feel that at least the less common and well known things (like macros!) absolutely need a _good and extensive_ tutorial and documentation. My other problem with Nim is (I might be wrong; it might just be a subjective and misguided impression) that the core team seems to care an awful lot about ever new gadgets rather than about getting a stable solid basis. That basis doesn't need to be (called) 1.0; it can be 0.20 ... 0.21 ... and there can be some changes, preferably in the form of new things rather than wildly changed existing things - but it should be reasonably stable and solid. Now to my personal and honest responses: _Do you use Nim?_ \- Yes. Actually I use it even professionally. In the beginning I was quite mistrusting but I found Nim to be pleasantly good and reliable (modulo experimental and some bleeding edge or exotic stuff. But that's OK) _How could we help make Nim more accepted at your company?_ \- See above, plus: Right now, no chance. My colleagues just grin. Gladly I'm in a position to do what I like (as long as the results come and are of good quality). Sidenote: I can't quite follow the "we need v. 1.0!!!" argument; seems "corporation" minded and I do not see any _real_ benefit in just calling, say Nim 0.20 "Nim 1.0" but obviously that would make many quite happy. _What editor(s) do you use when writing Nim?_ \- I use VSC - because I'm basically forced to. But I would _very, very, strongly_ prefer sublime. _What is your experience with the following tools?_ \- They seem to work. I'm (as a personal taste thing) not too concerned but I like Nimble. _How did you most recently install Nim?_ \- github ... build. Old school. _Top reasons why programmers stopped using Nim_ \- not even almost. _if_ at any point I had stopped it would have been over the editor and debugger issue. But I didn't - for good reasons (see more below). TL;DR Nim is so good that it's worth some pain. _Top reasons why programmers are not using Nim_ \- From what I see in companies: see above. _Do you feel well informed in the direction that the Nim project is heading?_ \- No. For mainly 2 reasons, (a) too much info too spread all over the place, and (b) I don't care that much, I trust Araq; he has provided enough reasons over the years to trust him. _Should Nim 1.0 have been released already?_ \- Personal answer: I don't care at all. General answer: Probably. There are _many_ out there, particularly in companies who think more "formally". _What improvements are needed before Nim v1.0 can be released?_ \- Docs (incl. tutorials), tools (editor, debugger, optionally IDE), stability, both as in "reliability" and as in "stable state" (to which is added but which is hardly ever changed in not insignificant ways). A mixed model comes to mind. One _stable_ branch and a dev. branch the letter being switched/copied to new stable only after extensive testing. Finally I'll add some points and thoughts why I LOVE Nim: To understand my line one must understand and consider where I come from: I'm obsessed with safety and security - which also is the main reason I left C. And I'm not just obsessed, I'm also dead serious about it. For me that issue is not about blabla, mode du jour ("design by [insert this weeks "wisdom"]). A language, for example, without a strong static typed type system isn't even worth a look in my minds eye. And I can say based on quite some experience, both academically and professionally and pain suffered, that Araq made a _very smart_ set of decisions. He understood and picked up just the right mix from different languages (only exception imo: he should also have picked up Wirth's ':=' assignment operator). Plus, unlike many smart people in academia Araq also understood something else: Whatever good and safe and secure and whatnot language you design, it also must be easily and comfortably usable (many programmers are lazy). In fact, one of Nims real powers is in the fact that the strength of the language does not get in ones way (e.g. Ada, sigh) but actually helps the developer and is comfortable to use. There seem to be quite many complaining about Nim not having enough "standard" libraries. I disagree. For one Nim has a nice set of the usual stuff, but (imo by far more important) Nim makes it _easy_ to bind or port C libraries. I know what I talk about because I had to bind or in some cases just rewrite (in Nim) some stuff, mostly crypto libraries. It's not (yet) well enough documented and I had to spend a lot of efforts and time to get all the relevant info together but once you master it, it's a breeze. Another set that Nim has got just right is threads and async. Once more Araq chose perfectly well and smartly by picking up the await model. Compare that to Ada which has _excellent_ multithreading facilities but when async was desired some of the Adacore developers who thought about binding libuv pretty much gave up (it seemed to me. afaik it's still not finished and possibly even just dropped). And it would have been a pita to use anyway. I have looked at quite some alternatives (before Nim). To name just a few, D is a weird zoo (imo) and anyway just yet another "a better C(++)" approach. Regarding Rust I better just politely stay mum other than mentioning that it too is but yet another "a better C(++)" approach. Regarding Go I'd like to praise the channels (which Araq correctly identified as very desirable and picked them up) but Go is not up to par, sorry. TL;DR there is no competitor. Yes, some (more or less) new languages have more uptake or are more well known and trendy or ... but when summing up what really counts there is but Nim that has it all and does it well. My search has come an end. I have found my perfect language.