Hi, I’m studying crystal currently and I really like it.
During the last couple of years, I studied : C++, Python Go, Nim, Rust, V-lang, Swift, TypeScript, JS and other languages.
I was looking for a a language which combines a least the following features:
Statically typed.
compiled.
having “greenlets” or coroutines (plus channels), i.e. CSP.
concise.
small.
fast (efficient).
implementing some basic kind of classes or OO or structs + method.
Good readability.
C++ fits none of those boxes (except speed -if done right-).
Go is small, fast and simple, but I find its syntax a bit verbose, subjectively.
Nim is concise and fast, but surprisingly complex and not really a small language.
Rust is fast, but not small, not simple, and relatively verbose.
After a couple of years of studying all those languages, my favorite, is now Crystal : it ticks all the boxes, as far as I am concerned.
Last, but not least, IMHO, the absence of visible bloc delimiters in Python and Nim are a recipe for disaster (the copy paste operations soon of later always go wrong).
My motto : “Complex problems require simple languages”.
The availability of librairies for linear algebra and NLP are a plus for my personal projects.
If I I had to mention a feature I would like to see implemented the future, I would mention the option to compile an app into web assembly (wasm).
Try Kotlin! Seriously.
It is compelling as a general programming language and seems to check all your boxes too, but the real-world practicality depends.
No language will beat Python at data-related projects anytime soon.
Same for Rust, it will never replace C entirely; your microwave oven won’t run with Rust anytime soon.
And IMO, Ruby is the best at writing business logic. (As in writing enterprise use cases, not those big balls of mud people put in the ActiveRecord subclasses.) Not even Crystal can remotely do something comparable.
I’ll pick what I do first, then choose the language after.
It’s nice to be able to add Crystal to the toolbox, but the market decides what I do, so I won’t find myself using Crystal professionally anytime soon.
Java libraries are difficult to use as there’s no named parameters(keyword arguments) support so you have to use a dozen builder methods. For example, check the Twilio example code for various languages.
I would use C# instead of java based languages.
Union type and named parameters are must haves for compiled languages for me.
I have similar thoughts to you, except I find the Go code difficult to read.
Crystal has a few things that worry me - poor language servers/tooling (but admittedly it’s a simple language so I can manage without), slow compile time, still tiny community, not yet feature complete (Windows support, multithreading) - but using it has been a pure joy. It’s the language I’ve always wanted to have - cleaned up, compiled Ruby. It gives me the same feeling of excitement I had many years ago when I was writing my first programs.
WIth that, I also want to express my gratitude to the authors of Crystal
Language server is a piece of software that provides the underlying functionality to IDEs. I meant the code navigation, code completion etc. in IDEs and editors is not as good yet for Crystal as it is for other languages. It’s something that I believe will improve over time, but is impacting productivity in the short term.
Im loving this lang so far. The readability and simplicity of Cr is the biggest selling point.
I come from Py background (w some Ruby), and its been a blast writing stuff in Cr, just absolute fun.
As for the limited # of libs, its expected, Py, C, CPP etc have been around for decades. I am already using Cr-written apps in production.
heres an example, needed some sort of a firewall port tester tool to spin up mass # of ports and test connectivity. Coudnt find anything out there that does this, wrote this in Cr in relatively short time.
Compared to CPP/C/Java etc, this would take me much longer due to syntax and more complex language idiosyncracies
It’s enthusiastic “in the field” usage comments like Perfecto’s, or Serge’s original post that will easily propel the masses to give Crystal a shot. I think the language’s readability is underrated & should be more emphasized. That’s why I’m looking to promote Crystal in East Africa with all the Python/dotNET/Java coders I know. This is one of my main goals for 2022 when I start my grassroots “Community Tech” rapid IT learning/training idea.
In addition, I would add that these short Crystal review posts should be shared everywhere – tweeted, Facebook, blog & YouTube comments, VK, etc.
Agreed about not wanting to rely on the JVM. I remember I set up my friend’s Italian restaurant with the very popular open source uniCenta POS (which is written in Java & is a fork of the popular commercial Open Bravo POS from the dotCom boom).
Anywho, I installed it on a rugged 1GB RAM touch screen PosiFlex POS terminal with a Via NANO processor running Windows 7. The uniCenta dashboard with the table layout would sometimes be slow to update due to that damn JVM & the memory it was hogging.
It would be amazing to see how much better uniCenta would function if it were coded in Crystal with a good cross platform GUI framework.