The Crystal programming language is a successful combination of the best in other existing languages, namely being Ruby (thanks to its concise syntax and high code readability), C for its high-performance speed, and C++ (both languages are compiling). While Crystal is relatively young - it’s been around for a little over 7 years, it has already received praise among developers and started gaining traction.
While the programming language is, without a doubt, a success, let’s see if a developer has to dedicate his time and effort to mastering its basics instead of settling for commonplace alternatives like Java, Ruby, or Python?
What is Crystal Programming Language?
Crystal was born out of ambition of Manas Technology solutions to create a language that would be both compiled and easy-to-read. It entered the IT market with a slogan ‘Fast as C, slick as Ruby’.
Apparently, the experiment proved to be quite successful. Its tight, concise, yet compilable code made Crystal a perfect fit for microservices command-line interface tools, apps with high CPU usage, and tools that process Big Data.
Unfortunately, Crystal has mainly been used by startups in nascent stages while bigger companies prefer contacting a Ruby on Rails development company - that’s why the quality of its performance for high-scale software projects is still unclear. Aside from that, the language has a prosperous and actively growing community - there are over 11 thousand commits at the language’s GitHub repository along with more than 300 active contributors.
Pros and cons of Crystal
The programming language was relatively quick to generate hype around the web, with developers claiming it to be their ‘favorite language’, ‘the most promising language of the year’, and so on.
Why Crystal Lang is so special? Does this new language have any clear drawbacks compared to mature alternatives?
Pros of Crystal
As been mentioned above, Crystal has managed to combine the properties of more than a few programming languages. That allowed developers to create a flexible, readable, yet highly performing code.
Here are the main pros of Crystal:
- Compiled - developers can catch a ton of code errors by running it through a compiler. Also, instead of deploying the entire repository at once, Crystal developers will be able to ship binaries.
- Enforces types. Unlike most of its adversaries (Java, PHP, Python), Crystal allows developers to type definitions, supports union types, and enable type checking. That’s one of the language’s finest features as it allows developers to keep the code well-structured.
- Has high speed. Crystal developers have taken C as an inspiration source and worked towards making Crystal as well as Amber, its web framework, just about as fast. The language is times faster than Ruby and is one of the only languages where a concise syntax is successfully combined with high speed of the performance.
- Enables macros support. Crystal supports meta-programming (though only at the compiling stage). While macros are normally confusing to manage, the programming language developers have managed to incorporate the concept in a fairly straightforward way - getting the hang of Crystal macros wouldn’t be too challenging even for novice software engineers.
Cons of Crystal
After outlining all the pros of Crystal, the language seems perfect - fast, compiled, with beautiful syntax and meta-programming support. As a matter of fact, however, Crystal still has issues and drawbacks deriving from relatively little time it has been around.
Here are the main cons of Crystal:
- Low Windows compatibility. While there are ways to run Crystal programming language on Windows OS using ports and Linux emulators, it’s still a far cry from native compatibility. Opting for Crystal, you are likely to have to go with Linux as your dominant OS.
- The lack of development tools. As the Crystal user base is relatively young, the language is lacking in terms of libraries and supporting tools. That also makes it harder to master Crystal as a first programming language and narrows the circle of developers capable of getting the hang of it.
- Communication issues. Another issue the Crystal community is repeatedly struggling with is that of communication. As the company behind Crystal is a relatively small technology provider from Argentina, it’s not capable of dedicating extensive funding, time, and effort to community support the way Google, for instance, pushes its GoLang.
- Lack of wide-range adoption. That limits the number of cases developers can take pointers from - those who are eager to start a development project in Crystal, are pretty much among the pioneers in the language. In fact, according to an official survey, ‘The State of Crystal’, the language is mostly used to create projects with less than 1,000 code lines. As to the question of who uses crystal lang, it’s been stated the language was mostly adopted by startups and SMEs.
Crystal vs Ruby
Due to enormous syntax similarities, Ruby on Rails programming specialists tend to confuse the language with Crystal. Here’s why, however, Crystal deserves to be treated as a standalone creation.
- There’s no need to run a compiler any time a developer wants to test the code. It’s been a typical workflow of a Ruby developer and quite a tedious one as it slowed down the development process tremendously. As Crystal is a compiled language, there’s no need to spend too much time in order to run chunks of code.
- Crystal developers have to pay more attention to low-level elements. That’s a feature the language shares with C rather than Ruby. While it might be overwhelming and time-consuming at first, that’s something Crystal developers have no way around.
- Macros instead of reflection. It’s already been mentioned that Crystal supports meta-programming through macros where Ruby had reflections. With macros, you’ll be able to generate code automatically during the late-stage development sessions. As both can be highly functional, it’s hard to break the tie between which feature is better.
- Source code is written in Crystal. In Ruby, on the contrary, over 30% of the code is written in C. Crystal is more convenient this way as it allows developers to understand the source code of the language almost totally.
Crystal vs C
C developers are also often considering switching to Crystal due to the tempting ‘speed-and-syntax’ combo. However, compared to C, Crystal has both advantages and drawbacks.
- Crystal is more concise in terms of syntax. Its code scores in readability and tightness compared to that of C. Also, with Crystal, a developer would basically get rid of redundant code, as, unlike C, it supports garbage code collection.
- Crystal has a smoother learning curve. C is considered one of the most challenging languages for developers to learn, it’s not easy to read and maintain its code. Thanks to its Ruby-like syntax, Crystal feels more familiar to a novice developer.
- Has a built-in binding with C libraries a developer can benefit from without having to write a single line of code.
- Lacks wider adoption. It’s important to understand that Crystal may end up losing to C in terms of speed after the language scales and fully matures. As for now, Crystal lacks the range of adoption and is less reliable than Python that has proven its stability.
Why should you learn Crystal?
If a developer is wondering if the Crystal programming language is worth learning, the answer would be a confident ‘yes’. In case you are starting off as a Ruby developer, there’s basically no question as to whether or not you should look into Crystal as well as the learning curve is extremely smooth.
Even if that’s not the case, here are a few other reasons for a developer to consider Crystal worth learning:
- You’ll be writing less code. As Crystal has a concise syntax and practically doesn’t include garbage code, you will end up spending less time coding than you, for instance, would with C.
- Many of its features match with those of other languages as Crystal is an enhanced compilation of Ruby and C. This way, you’ll be laying a foundation to master these languages as well;
- You can use Ruby materials as a foundation for Crystal. While it’s true that the programming language itself lacks documentation, as it shares most basics with Ruby, you can use shared learning resources as well.
It worth remembering, however, that Crystal lacks solid documentation so it will be pretty challenging for novice developers with no C or Ruby basics to learn.
Crystal is a powerful yet new programming language that, despite being introduced to the market just recently, has managed to gain popularity among developers and seems to be capable of fighting Python, C, and Ruby for a frontrunning position in the market.
Having said that, Crystal still has a long way ahead and, considering that its creators are not funded well enough to take on mature opponents by the means of advertising and promotion, it’s not clear for how long the language will persist. If it does, however, Crystal is worth betting on and will likely be a platform for high-scale products in the future.