Re: Nim's popularity

2020-06-17 Thread moerm
"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

2020-06-17 Thread sschwarzer
> 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

2020-06-17 Thread mantielero
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

2020-06-17 Thread federico3
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

2020-06-17 Thread mratsim
> 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

2020-06-17 Thread jasonfi
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

2020-06-16 Thread snej
> 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

2020-06-16 Thread Yardanico
"parallelism suck" \- did you look into Weave or ARC?


Re: Nim's popularity

2020-06-16 Thread zulu
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

2020-06-16 Thread Jehan
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

2020-06-16 Thread elo
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

2020-06-15 Thread kragil
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

2020-06-15 Thread deech
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

2020-06-15 Thread mantielero
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

2020-06-15 Thread kcvinu
@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

2020-06-15 Thread juancarlospaco
[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

2020-06-15 Thread treeform
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

2020-06-15 Thread BugFix
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.