Hello.
A few months ago someone introduced me to a client, owner of a small group of companies. He told me that their programmer was no longer there and that they had to maintain and create new applications in...Nim! (hence I am currently studying it).
It was the first time I knew about this language. The client in question asked me why he had so much of his custom software built with Nim? The truth is that I didn't know how to answer him.
That's why I'm bringing it to the forum, as I'm a beginner with this programming language.
Thank you. Best regards.
Antonio F.S.
Hello. Thank you for your response.
The thing is, it is not for me as a technician (because I like what I am learning), but for the client to whom I must give guarantees of language presence in the market and confidence in terms of corporate prospects.
Best regards. Antonio F.S.
Hello. Thank you very much for your feedback. I look forward to hearing from other people on this forum as well, so that I can form a solid opinion.
Best regards. Antonio F.S.
Sounds like the last programmer has left your client in a bit of a pickle. Nim, while being a fantastic language, unfortunately doesn't have the fame and userbase that some other languages enjoy. Because of this you will have a hard time finding a large pool of Nim programmers to pick from. On the upside Nim is fairly easy to learn, especially if you have some relevant programming knowledge to draw from (personally I found that C and Python was a good starting point). Instead of looking for Nim programmers I would therefore advise your client to look for programmers willing or wanting to learn a new language. Of course not having any Nim programmers employed already to learn from might make this a bit trickier, but getting help from the live chat and forums if the documentation doesn't suffice will already help immensely. As a bonus he will likely end up with curious and flexible programmers which are the kind of people who will teach themselves new programming languages for fun. Of course if the situation is dire and he'd want to bring people up to speed faster it would be possible to post a job listing in the #jobs channel for a remote person to teach Nim and act as a mentor to the programmers he wants to employ. Or if he's able and willing he could even look for remote hires there as well.
The Nim programming language is, as you will hopefully soon see, a very productive language. The combination of a simple syntax paired with great performance and an almost unparalleled flexibility really makes it a gem. Finding developers will be harder than more mainstream languages, but hopefully these developers will have a great time and be very productive.
The main PROS of Nim are :
TL;DR : There is no "popular" programming language who offers the same features as Nim. But also, Nim is easy to learn. Soeither hire someone not afraid to learn a programming language, or hire a Nim developer - I'm sure if you go ask on Discord you'll find people who would love to work with Nim.
Now look at the technical features of "popular" language that are server / system oriented compared to Nim :
C++ is overly complex and its meta-programming simply sucks compared to Nim. Python is not typed, slow and not compiled.
C# / Java are VM-based with an important and are not really suited for low-level operation. They also have a very verbose syntax and force OOP on you. They're not staticaly compiled since they are based on an interpreter (that you will often have to ship). Now, Kotlin might improve things a bit compared to Java, but because you end up having to import a lot of Java library anyway you end up with similar limitation as Java.
So then if we look at popular, compiled, typed language you're left with basically Go and Rust:
Go is easy to learn, readable, but also lacks a lot of feature in the meta-programming department compared to Nim. It's a solid language that many company uses, but it's also less powerful than Nim.
Rust have some great things going on and can be very powerful but it's also complex to learn (typically someone used to GC based language will struggle with Rust borrow checker). It also takes a long time to be productive in Rust (IMO) and even then, you find yourself "fighting" the compiler on simple things. So for smaller team that may need faster cycle I wouldn't recommand it.
Hello.
Well, the thing is that at 61 years old I have been programming in some languages for about 40 years (Basic, Fortran, Cobol, Bal, Clipper, some Java and some Javascript together with HTML, CSS). This client started small and now has a group of five medium-sized companies. The thing is that his programmer left and he was very confident in the work he was developing because it worked perfectly (although he didn't know about the technical side). A friend introduced him to me and asked me to leave everything to him before my retirement so that he could have the programming language aspect for sure.
I see Nim as a good language and the ideas you have given me are reassuring and practical, so for the time being I will continue to learn Nim and see how the corporate sources are coded. It is very likely that I will recommend you not to change language, although I hope that Nim will become more established in the market and continue its trajectory at a good pace.
Thank you very much to all of you for your precious collaboration. Best regards.
Antonio F.S.
The first question is how large is your codebase?
If you have a large system then there will be a lot of code to translate to another language, which itself will create an overhead.
The other thing to think about is that there is very good interoperability between Nim and C, so you can always look for a C programmer that may be looking at running a mixed language project. Use Nim where he is comfortable and use C (or C++) where is is more comfortable doing that.
Hello. One thing I have read repeatedly on the Internet about Nim is that the Nim community is friendly and quick to help. I consider this very important and will pass it on to my client.
As for what you are giving me as characteristics of the language compared to others (plus what I am learning myself little by little), it helps me a lot to understand why the previous programmer used Nim in this group of companies. The problem is that he didn't inform the owner about it and, to be honest, the owner didn't ask anything as long as everything worked. It is today, when he finds himself in this jam, that he wants to know how his computer system is doing. For the time being, I have prepared a few points for him to clarify, the first of which is the programming language.
Thank you very much. Best regards.
Antonio F.S.