I looked at both Nim and Crystal. I love Nim and I have actually written a few
utilities using it. However, I do prefer the Crystal "object model". It is
closer to Java or C# and I like that. I started my professional career as a C
programmer in 1992 and did 10 years of that (drivers, in-house interpreter,
...). We did the switch to Java in 2000 and it was a revelation. Although I had
done OO in both Turbo Pascal and then C++ everything was simpler in Java and we
did the biggest project in the history of the company using Java. The amount of
code reuse we were able to achieve with inheritance and interfaces was mind
blowing. I often read critics of OO on the Web but I find that most of this is
unfounded or results from bad usage of OO or religion. If you take a language
like Clojure, they tried not to look or feel like Java but in the end they
added "protocol(s)" (equivalent of Java interface) and they ended-up doing OOP
using maps/dict (not as nice as having real classes). If you work on really big
projects where a lot of business concepts are related OOP is a powerfull
technology to solve problems. So I hope Nim will eventually get something like
protocol(s) (or interface) and an object model close to other mainstream
languages (possibly using "trait" for inheritance instead of the more
problematic class everywhere approach).