I'm wondering what kind of strategy is put in place to market for Nim's adoption in the industry. I understand that the community is small, but are these concerns being addressed?
No matter how good a language is, it is very important that the community leaders make effective strategies for future industry/individual user adoption. Rust has had many success stories in big and small companies, even though it's not very productive. Go has had many success stories even though many would say Go's feature-set is not very overwhelming. What can a Nim fan do to promote his language in his workspace and to others?
I've thought about it a lot. A few things come to mind:
1: A larger presence on Youtube. Both in terms of tutorials and videos such as "Best languages to learn 2021" that get tons of views. Easier said than done but getting Nim featured on some bigger channels would go a long way.
2: Lowest possible barrier to entry. Anyone can pick up Python because the number of articles, tutorials, examples, etc that exist on the web make it quite easy for people of all skill levels. There are not many Nim tutorials out there, especially on Youtube which like it or not is where a lot of people go to learn.
3: More features on sites like news.ycombinator.com. I always see articles and blog posts about rust featured there that generate visibility and discussion. Maybe x-post some of Nim's blog posts there? Plus any major updates or releases.
4: Killer app(s). A few rust projects such as fd and sd have gained a lot of attention and Nim could use similar projects (like modern gnu utils replacements) that draw people in.
5: I really believe Nim could be big for machine learning. Better than python. Arraymancer is a good start but a really good machine learning ecosystem could draw in a lot of people.
Regarding Rosetta contributions, I’m afraid it’s too late. Almost all tasks have now a Nim solution. Of course, it is always possible to improve an existing solution, to replace it or to add a new solution, using another algorithm or another library.
And there is still a lot of work to do on draft tasks (for now).
I think proving that languageX is mature and ready for real use is important. I see 2 ways to prove 1) killer app 2) rely on already proven tech.
When I tried Nim, its ability to be converted to JavaScript was important check. As it gives the worst case guarantee. If Nim runtime works - great I'm going to use it, if not - still ok as I will be able to use JavaScript runtime.
When you see things like "it works with JVM / LLVM / OTP / etc." you know you are safe. It may not be the best runtime, but you know it is a working runtime, and could be used right away in real projects.
Almost all tasks have now a Nim solution
Do we already have a Datalog implementation there?
If anyone has the interest/motivation to do the latter and is looking for a co-founder, feel free to send me an email ;)
Yes, this is a long list, but these are mostly drafted tasks. I will look at them later. As regards old code, you are right, but I updated it and replaced it in some rare cases. For now, all examples in the main tasks run with Nim version 1.4, at least until letter Y (letter Z is in progress).
There are some tasks impossible or very difficult to solve in Nim, but some Nim experts can find impressive solutions.
@Sixte I didn’t find any task about Datalog.
Hi,
As someone who just recently discovered Nim, I can recap what made me learn more about it:
If no one talks about it, people will never know. It's important to write more blog posts, comment on various platforms and, very importantly, create some YouTube videos. I can't stress enough how important it is to see someone talk about its benefits or demonstrate it in coding.
The last thing I want to learn is yet another programming language which doesn't bring anything new to the table. As far as I can tell, Nim's comments are usually very positive.
If the website doesn't convince me right away, I might lose interest too soon. Show code snippets. A bad example is https://www.ponylang.io/ where you really have to dig in to see how it looks like. Nim's website is great.
Expressive, stable, fast. Nim is great, I think we can all agree. It has some rough edges here and there but I'm sure it will be better over time.
Nim can be used everywhere. But it also means that it's not focused on a particular domain, that may lead to a lack of libraries/frameworks. Example: https://crystal-lang.org/ seems to primarily focus on web servers (first code snippet is an HTTP server). I'm sure it helps them gain more traction.
It must be pleasant to work with practically. There is some good-ish editor support for Nim but it could be better. If I could pick two things: A great LSP server (for code checks, auto complete, code actions) and tree-sitter support.
You are awesome and very helpful.
Best regards, David
I can hardly imagine anyone abandoning its IDE of choice with tons of custom settings and keyboards shortcuts etc. just to try some nobody know or use IDE coming bundled with some language.
Sorry, I didn't mean to imply that professional, or seasoned Nim developers would abandon their VSCode plugin, or JetBrains plugin-fueled environment for Nim that they have. I mean to say, that environments like the IDE bundled with Python, DrRacket, or Smalltalk make some first impression as a point of entry...
I found Nim when looking for a faster version of Python. Nim is as easy as Python making it a good entry point for beginners.
I think it would be a good idea to target the young. Get the young using Nim and in a couple of years, you have a generation that thinks that anything else is just tedious. Python probably dominates the education sector. Hence, target an area where Python would struggle.
Most young people pick up programming because they want to make a game. Nim should be one of the easiest programming languages to get started with and it is powerful enough for graphic-intensive applications.
Binding Nim to a game engine like Godot is not convenient for beginners. Repackaging Godot to include Nim is a better idea. A single GodotNim executable to get you up and running in seconds is more convenient. The problem is, why learn GodotNim if there are so many examples and tutorials for GDscript? A better idea would be to make something new to separate oneself from the original game engine. Still use the source code of Godot or Open 3D Engine (open sourced Lumberyard) but wrap it up in a different UI and make it unique. Just like what Amazon did with the CryEngine to make Lumberyard.
A game-making community would create more buzz on the internet than just a talk about a standalone programming language.
Also, a good GUI is important for beginners. Karax is good for the experienced but for a beginner, it means having to know HTML, CSS and JavaScript. So now they would need to learn 4 languages. NiGui is great but still at an early stage of development. Preferred would be a GUI that is easy for a beginner but once they have experience, they can create any type of UI they want.
Hi,
I do not have any answer better that what have been told. But I use nim for about 2 years at my job for small to mid size projects.
I think it could be better to focuss on points that can bother any dev or slow the process of creating softwares with NIM (which I find a great language):
Don't misunderstand me, NIM is the language I appreciate the most, way better than the dozen of languages I used in my different jobs as a developper.
Keeping the existing dev in the long term is almost as important as getting new users.
Last point but not least, nimble is great, but when it's time to update to a new release, it has to be done by hand, a core command that do the job could be great.
lack of code examples in the official doc
there is no example in the official doc, so I have to search somewhere else
Can you give some concrete names of the stuff in the official docs without an example? We're trying to improve the situation, but we need to know what (or where) to improve.
dev docs
So dev docs still exists. I was searching for them recently, and could not find it, so I had to build latest docs for strscans module locally myself.
Some years ago regular docs had a link to latest dev docs, but that seems to be deleted?
Here is my idea.
Nim is best fit to jump into current trend , which is Blockchain DAPP development. Popular platform for developing Blockchain apps are Etherium and Etherium-killer , Solana. Etherium requires its own language , and not scalable , on other other-hand Solana can run any language that support LLVM backend.
Hackathon : https://solana.com/ignition Solana : https://github.com/solana-labs/solana