5 minutes read
What is Crystal?

What is Crystal?

We’ve mentioned in previous blogs how there is no shortage of Ruby programming enthusiasts out there. For years, Ruby was one of the premiere web development languages -- responsible for powering the apps and software of some of the biggest names in tech, from Facebook to Airbnb to Uber. However, developers are always looking for the next big thing in programming languages, and Ruby has slowly fallen out of favor as newer, powerful competitors have emerged.

One of the most popular of those new Ruby competitors? Crystal. Combining many of the best features of Ruby with the speed of the C programming language, Crystal has been attracting followers with its dynamic combination of intuitive Ruby elements and hyper-charged C speed. By taking the best of the both worlds and combining them into one package, Crystal offers programmers both experienced and new a wise choice to add to their programming arsenal.

So what should you know about Crystal, and is it something you should study in a coding class? What features are most useful, and what use cases can you expect to employ Crystal for yourself? Let’s explore the background of the Crystal language, as well as how it compares to well-known languages like Ruby and C and why it might just continue to gain popularity among programmers worldwide.

What is Crystal?

How Is Crystal A Ruby Alternative? 

Crystal is a general purpose, statically-typed, object-oriented, and compiled programming language coming from Manas Tech. The team behind it began developing the language in 2014, making it a relatively “young” language when compared to more established choices like Python or Java, for example. The official Crystal 1.0 release is still pending, but there are multiple beta-type iterations already in use after releases over the past six years.

The bigger question you probably have is, why are Ruby developers jumping ship for Crystal? Well, since it was originally released and adopted widely, developers have loved the Ruby programming language for its winning combination of simplicity, philosophy centered on making developers happy, and features designed to maximize productivity. Because of this suite of features and benefits, Ruby (and the Rails framework) helped to ensure the creation and rise of some of the biggest names in tech over the past decade, such as Twitter, Github, AirBnB, Soundcloud, and plenty of others. 

Despite being so popular and powerful, like all programming languages, Ruby has its own flaws. The main drawback of Ruby, in the opinion of experienced developers, is its lackluster performance and limited scalability. Since Ruby is an interpreted language, it is not as performant as C/C++, Rust, and Go

Additionally, while it is not impossible, it is prohibitively hard to scale a Ruby on Rails application. This is even more problematic for using Ruby for modern development, since the release of updated tech hardware (with different screen sizes, operating systems, and memory capabilities) has only accelerated in recent years. As such, Ruby’s lack of scalability forces developers to have to rewrite code (or even re-develop entire software packages) in order to meet the different needs of newer platforms and devices. And in addition to that, the lack of static types in Ruby makes it hard to refactor code as a development team expands, as it does naturally at some of the major tech names who used Ruby to launch their products. 

Meanwhile, Crystal has been designed to include all the good parts of Ruby but none of its drawbacks. Like any good next generation language, the goal in creating Crystal was maintaining the benefits of its “mother” language, while enhancing and polishing the rough edges to create a language truly capable of modern web development. Here are just a few of the specific benefits that Crystal offers developers:

  • Crystal features the same elegant and beautiful syntax that developers love about Ruby
  • Crystal’s performance is comparable to C, which is renowned for its speed
  • Crystal supports native C bindings
  • The language includes both Static Types and powerful macros for metaprogramming, another favorite among developers
  • Crystal web frameworks that are similar to/emulate the popular Rails and Sinatra frameworks used by Ruby developers
  • The syntax is very very similar to Ruby, which makes it an easy tool to adopt for experienced Ruby programmers (or for coding learners who have taken Ruby courses)
  • You will be able to write Ruby code directly in Crystal shell and vice versa

Most importantly, Crystal follows the “keep developers forefronted and happy” approach that is responsible for Ruby’s widespread adoption and legacy in global web development. Since the language is so intuitive and powerful, the growing global community adopting it also guarantees that the language should continue to be supported and evolve additional tools and benefits over the coming years.

Additional Benefits Of Using Crystal 

Top-Notch Performance 

In most benchmarks, Crystal performs better than Go, Python, and Node.js. Here are a few examples that illustrate that for you:

The secret to Crystal’s remarkable speed performance is the framework that supports it -- in this case, the LLVM framework. This is the same framework that compiles C/C++ code to byte code.

Static Typing 

Perhaps one of the most popular features included in Crystal is its static type system, which allows developers to sniff out bugs during compile time. While dynamically typed languages like Ruby and Python allow developers to write code with ease and deliver features quickly, over time as a code base or development team continues to grow, it becomes harder to refactor and maintain this code.

Crystal offers a unique solution to this problem, by allowing programmers to write code in Crystal just like any dynamically typed language. The compiler will only complain and require developers to explicitly specify types in cases of ambiguity.

Easy C Binding Within Crystal 

Crystal allows developers to seamlessly bind with existing C libraries and code. This offers the attractive benefit to developers of handling low-level tasks in the application through native C libraries, which further increases performance (and thus, helps create apps and software that offer impressive user experiences and interfaces).

Web Frameworks

Just like Ruby’s success was tied to the popularity and power of its Rails framework, Crystal also includes some robust framework solutions that help draw the most out of the language. For enthusiasts of the Phoenix or Rails frameworks, Amber offers a similar great option for developers choosing Crystal for their projects.

Amber is centered around the same philosophy of Rails (convention over configuration). Similarly promising is Lucky, which was also inspired by Rails. Both of these frameworks include robust and detailed documentation and are supported by communities of passionate developers who are actively and consistently contributing to the code base.

Are There Any Downsides To Using Crystal? 

Like any newer language, the biggest issue for Crystal is that the global community of developers is still miniscule when compared to behemoths like Python or Java. Bigger development communities mean bigger code bases, plugins, libraries, and other tools, so anyone choosing to become a Crystal developer now is still doing a bit of pioneering.

However, the potential of the language, as well as its combination of a variety of beloved features from Ruby and C, seems to project well toward rapid growth in adoption. For anyone hesitant to learn Crystal, and instead preferring to study a more established language first, learning Ruby would be a great entry point, since the two are so similar in structure, principle, and syntax.