Re: Nim's popularity
"Vala" \- I think that tells us next to nothing. Simple reason: unlike Nim Vala was linked to Gnome, i.e. a major (well, kind of) and well known name. When Mozilla (Rust) burps the planet trembles, when Gnome (Vala) burps, the world notices it ... and when Nim burps (or sings a nice song for that matter) next to nobody notices it. This, however, can also turn _against_ a project because a big name creates big expectations. "Nim popularity" \- I couldn't care less. About popularity, well noted. Gaining traction is another (and important) matter. People come to programming languages largely either due to need or based on some form of herd phaenomenon (like "our company uses xyz" or "we learned and worked with xyz in uni"). The latter can only be addressed once a language has a certain "weight". So the former is the relevant one for us, at least for quite some time. Learning and reaching a level of _mastering_ a language is a considerable effort - hence only very few undertake that for the fun of it. For most it's probably based on something between an itch and real need (or pain) what makes them _seriously_ look at alternatives and to learn them. Examples are code quality, multi-threading, events/async, typing (strong, weak, static, etc.), tool support, FFI & libraries. I for example made the effort to occasionally scan the status in PL world and to have a closer look at some alternatives that looked promising because in my field reliable and correct software as well as speed are critical and because Ada is somewhat cumbersome and poor on libraries, especially async/event based IO. All that isn't a question of lila lala taste/preference but of hard facts. If I can 30% more done in xyz than in Ada then learning xyz is worth it. Another factor that I consider important - and often overlooked - is the fact that a relatively new (as in "not yet widely used and established) invariably has some sharp corner and a noticeable lack of comfort. This usually translates to a strong tendency to be looked at and picked up by experienced developers but not by newbies or languages hoppers. This again translates to such a language not _yet_ being used a lot by the large crowds out there. Funnily(?) really old PLs like for example Pascal which are perfectly fine languages are considered unattractive just like new PLs. It's sad but I'm afraid that "coolness" is an important factor too for the large crowd. On the other hand greybeards opinions carry quite some weight and _if_ they recommend a PL then that recommendation has value. Moreover code quality tends to be better with greybeards which often reflects back at their favourite PL (or the one the project has been implemented in). Finally, there is the 800 pound gorilla, Rust, which gets aggressively pushed/marketed by a very major (and rich) organisation as well as by a large crowd. Which, sorry if that hurts, also means that Nim has only one way to go - and that is not noise/marketing/bla bla fandom. It is _quality_ and an attractive feature set along with good tool support. (At this point I mention again that we will be punished for largely ignoring or treating a tier 3 anything except Visual Studio Code (the ugly monstrosity)). Simple reason: for many programmers their favourite editor/IDE is closer to their heart (and fingers) than a - new - language. TL;DR Let us not care about Tiobe and other "the crowds favourite xyz" but let's continue to enhance Nim.
Re: Nim's popularity
> I don't like popularity, I like what it comes with popularity: more brains, > more libraries, better maintained packages, ... This thread could be titled: > "Nim's ecosystem" or even better "How could Nim's ecosystem be improved". Agreed, I wouldn't go for popularity in itself, but for the improved ecosystem (articles, libraries etc.). On the other hand, more popularity can mean more contributors. But in general, I think a better ecosystem will drive popularity, not the other way around (unless maybe you can do really big marketing effort, but even then what you have to offer should be pretty good). > vala alternative: there has been messages claiming that vala is dying (#1, #2 > ). Both the Reddit thread and the article are three years old, and I'm always skeptical about software "dying". This is like saying "Nobody uses Nim." It's an extreme simplification. > Maybe Nim and gintro could replace it. I guess in practice people who want to "replace" a rarely used language won't be keen on replacing it with another rarely used language, or only if the "replacement" has properties that make it more attractive than other possible replacements. :-)
Re: Nim's popularity
I don't think that bearing popularity in mind means disregarding all the other things that Nim is already managing really well. I don't like popularity, I like what it comes with popularity: more brains, more libraries, better maintained packages, ... This thread could be titled: "Nim's ecosystem" or even better "How could Nim's ecosystem be improved". I love Nim and I have learnt a lot (sadly not as much as I want) since I took the red pill . But, coming from Python, it is frustrating when you think "oh, it would be cool to do this in Nim; C speed but a pleasure to write and read", and you end up trying to learn your minimal C and analysing some weird C API in order to create some missing/unmaintained bindings to a library. Even worst with C++ stuff (I don't have the brain to invest on that). * * * Maybe not a killer app, but there could be some projects to showcast the language and raise more curiosity about it. Maybe the sort of app that use plugins, like: * text processing. Atom (born in 2014) has above 8000 packages (coffescript), emacs (way older) I think has around 4000 (elisp). Probably, unrelated [but](https://tjpalmer.github.io/languish/#y=mean&names=coffeescript%2Cemacs+lisp). Disclaimer: I am not saying create a text editor and that will drive Nim's success, neither I am saying Atom is better than emacs. Now we have VScode and [theia](https://theia-ide.org/) is coming. * terminal file manager: yesterday I discover [nnn](https://github.com/jarun/nnn) which supports plugins as well (I have to learn how to use it; looks cool). * music management: like beets, also using plugins. * [vala](https://wiki.gnome.org/Projects/Vala) alternative: there has been messages claiming that vala is dying ([#1](https://www.reddit.com/r/vala/comments/5s8mhj/is_vala_dead/), [#2](https://www.bassi.io/articles/2017/02/13/on-vala/) ). But recent releases and a [good tendency](https://tjpalmer.github.io/languish/#y=mean&names=nim%2Cvala) point on the opposite direction. Maybe Nim and [gintro](https://github.com/StefanSalewski/gintro) could replace it. What is easier, maintaining/improving vala or gintro? Maybe a chat/collaboration with Gnome? On the other hand, I have tried that "plugins approach" with VapourSynth with little success to be honest. So these are just some ideas thinking aloud. A bit of day dreaming.
Re: Nim's popularity
If popularity or quick growth becomes the main priority, aspects like innovative features and good design become secondary. Differently from many other languages, Nim is quite uncompromising and is aiming very high. > 4\. Epic Marketing: Nim is doing nothing here. Hype-driven popularity encourages hype-driven development and short-term thinking. > 5\. Slow & Steady. The slow community path. Having used Python since 2001, I'll have this one, please. :)
Re: Nim's popularity
> parallelism suck. Nim gives you the tools to implement what the language doesn't offer builtin. This is true for both async and parallelism. At the very least Nim offers channels and a threadpool by default while in C or C++ you have nothing in the standard library. Furthermore it gives you a portable wrapper for threads, locks and other synchronization primitives while C/C++ requires you to deal with Windows/Posix difference on your own library. Lastly, I don't know any parallel runtime in any language that is as featureful and as fast as Weave for CPU-only multithreading (i.e. excluding heterogeneous CPU/GPU support and distributed clusters)
Re: Nim's popularity
Concurrency and parallelism in Nim isn't bad actually: [https://onlinetechinfo.com/concurrency-and-parallelism-in-nim](https://onlinetechinfo.com/concurrency-and-parallelism-in-nim)/
Re: Nim's popularity
> I think Nim needs to ne on mobile. Since Nim runs on macOS I'm assuming it'll run on iOS — same toolchain, and 99% the same APIs until you get up to the GUI level. > There should be a simple way to write cross platform apps and especially > games in Nim. There's already a glut of cross-platform mobile app frameworks, in many different languages. And good GUI frameworks are really hard to write, especially if they need to work cross-platform. (Less so for games, since no one expects games to conform to a platform UI or support platform-specific features.)
Re: Nim's popularity
"parallelism suck" \- did you look into Weave or ARC?
Re: Nim's popularity
Nim has still serious rough edges. The http server story is atrocious. Async is meh and parallelism suck. What Nim needs is a strong and polished "net/http" package.
Re: Nim's popularity
For what it's worth, my primary use case for Nim has always been system tooling. I.e. programs that range from a few dozen to a few thousand lines, which you could in principle write in Ruby or Python, but where these languages are too slow or where their dynamic nature would pile up too much tech debt w.r.t. maintenance. An additional benefit is that I can package the compiler with the software if necessary and bootstrap it on pretty much any system. Nim currently also has probably the best story when it comes to interfacing with C/C++, especially if you need to do it yourself absent existing bindings. This is not the "cool" type of killer app, but mundane as it is, a fairly important one for a lot of people. There aren't a whole lot of competitors in that domain (statically typed, automatic memory management, compile to native code, imperative). D and Go are probably the closest alternatives and have their own pros and cons.
Re: Nim's popularity
Nim has pretty good bindings for Godot (2D and 3D, cross-platform, free and open-source game engine) [https://github.com/pragmagic/godot-nim](https://github.com/pragmagic/godot-nim)
Re: Nim's popularity
I think Nim needs to ne on mobile. There should be a simple way to write cross platform apps and especially games in Nim.
Re: Nim's popularity
This may seem pretty boring but I think Nim's killer use-case is interfacing with C++, to my knowledge no other language outside of D comes close. A macro driven glue that uses compile time introspection to generate bindings to C++ from Nim in addition to bindings to Nim from Language X will open up a ton of possibilities for people who want to use X but need things from C++. Nim can be that glue, especially with arc/orc users of X don't even have to spin up a runtime and take it down. Having written C++ bindings the hard way this is a huge albeit unglamorous opportunity to get into a lot of shops. Instead of "rewrite it Rust" you "reuse it with Nim".
Re: Nim's popularity
Gracias @juancarlospaco. This is exactly what I was looking for. @treeform, nice overview. Given Nim's potential, I am surprised about point 1. I think/hope this is a matter of time.
Re: Nim's popularity
@BugFix, I am also an AutoIt lover and user. And i have the same feeling about data types. AutoIt needs at least an easy way to declare a struct and a container data type to hold that struct. OOP is not in their list. I wish i could override the autoit message loop in order to handle more window messages.
Re: Nim's popularity
[https://tjpalmer.github.io/languish/#y=mean&names=nim%2Ccrystal%2Craku%2Chaxe%2Celm%2Cd%2Cwebassembly%2Cpurescript%2Cracket%2Cllvm%2Cpony%2Cred%2Cgdscript%2Cmathematica%2Cvisual+basic%2Cprocessing](https://tjpalmer.github.io/languish/#y=mean&names=nim%2Ccrystal%2Craku%2Chaxe%2Celm%2Cd%2Cwebassembly%2Cpurescript%2Cracket%2Cllvm%2Cpony%2Cred%2Cgdscript%2Cmathematica%2Cvisual+basic%2Cprocessing)
Re: Nim's popularity
This talk has a pretty good part about how most popular languages got popular: [https://www.youtube.com/watch?v=QyJZzq0v7Z4](https://www.youtube.com/watch?v=QyJZzq0v7Z4) To summarize, according to the talk, there are 5 major ways to popularly (top 10): 1. Killer App: C, Ruby, PHP 2. Platform Exclusivity: JS, Obj-C, Swift, C# 3. Quick Upgrade: C++, Kotlin, TypeScript 4. Epic Marketing: Java 5. Slow & Steady: Python I think Nim right now is doing a little bit in 3 out of 5 directions. 1\. Killer App: Nim has the ability compile to both JS and Native allowing same code. If only Nim could do this it would be really cool, but Node/JavaScript can do this as well. Nim needs to find some thing else. Nim can interface between c/c++ and other languages. The FFI is really good. Is this enough for a killer app? 2\. Platform Exclusivity: Nim is not doing anything here. There is no only Nim platforms and probably never will be. 3\. Quick Upgrade: Nim is kind of a quick upgrade from Python and maybe C++. But it does not feel quick "enough", but it's there. Languages like Kotlin and TypeScript are much quicker. 4\. Epic Marketing: Nim is doing nothing here. No one is spending a million dollars on Nim ads or Nim conferences. 5\. Slow & Steady. The slow community path. This is probably where Nim is growing the most right now. But not sure its fast enough. I also think that most languages have this path as well. This path is way too crowded.
Re: Nim's popularity
I would like to tell my way to Nim. I have been writing smaller programs every now and then for more than 30 years. Usually these are automations or add-ons. In the past few years I have written a lot with the AutoIt scripting language, which in development now goes far beyond the stage of pure automation. But with increasing experience and knowledge, some things are no longer an advantage (e.g. data type: Variant). I also lacked object-oriented programming. Since I also have experience with Phyton and Lua, I looked for a language with a similar syntax. OOP and creating executables were other criteria. During my internet research I came across Nim and after reading the basics I fell in love with the language. Of course, this is different from a scripting language and for me it is about learning and learning again. Now when I see my first steps and, in contrast, look at the material that is being discussed here in the forum, I feel like a school boy again. Even though I am almost 60 years old, I still enjoy programming - and learning.