Crystal یک زبان برنامهنویسی اپنسورس است که سینتکس آن تا حد بسیار زیادی از زبان برنامهنویسی Ruby الهام گرفته شده است و از همین روی اگر تجربهٔ کدنویسی با روبی را دارید، خیلی سریع کدنویسی با این زبان را نیز یاد خواهید گرفت.
یکی از چیزهایی که مد نظر توسعهدهندگان زبان برنامهنویسی Crystal بوده تمرکز روی راندمان دولوپر، امنیت اپلیکیشن و افزایش سرعت بوده است مضاف بر اینکه کریستال کاملاً OOP (شیئگرا) است و کدهایی که دولوپرها با استفاده از این زبان مینویسند به زبان ماشین یا همان ۰ و ۱ تبدیل شده و با توجه به اینکه بسیاری از کارها در زمان کامپایل صورت میگیرد، سرعت برنامههای نوشته شده با این زبان بالا خواهد بود و همین سطح از پرفورمنس کریستال را به گزینهٔ خوبی دولوپرهایی که دغدغهٔ سرعت دارند مبدل میسازد (به طور خلاصه، کامپایل به معنی تبدیل شدن کدها به زبان قابلفهم توسط سیستم است.) به عنوان نمونه برنامهٔ Hello World در زبان برنامهنویسی کریستال داریم:
puts "Hello world!"
این زبان به هیچ وجه روی یک VM (ماشین مجازی) اجرا نمیشود بلکه اصطلاحاً از چیزی تحت عنوان LLVM برای اجرای آن استفاده میگردد. علاوه بر این، امکانی نیز در این زبان برنامهنویسی برای دولوپرها فراهم شده تا بتوانند اسکریپتهای نوشته شده به زبان C را نیز با این زبان ادغام کنند و شاید یکی از دلایلی که چنین قابلیتی در زبان کریستال فراهم شده، سرعت بالای زبان برنامهنویسی C در اجرای کدها است.
کریستال یک زبان اصطلاحاً Statically Typed است و از همین روی جلوی بسیاری از ارورها در حین کامپایل برنامه گرفته خواهد شد (همچنین در حین کامپایل، کلیهٔ رفرنسها به مقادیر Null هم مشخص خواهند شد.) نکتهٔ دیگری که در مورد دیتاتایپهای این زبان وجود دارد این است که هرگز نیازی به مشخصسازی تایپ (نوع) دادهها در این زبان نیست چرا که این کار به صورت خودکار انجام میشود:
def shout(x)
# Notice that both Int32 and String respond_to `to_s`
x.to_s.upcase
end
foo = ENV["FOO"]? || 10
typeof(foo) # => (Int32 | String)
typeof(shout(foo)) # => String
همچنین این زبان امکان کدنویسی Concurrent (همزمان) را هم به دولوپرها میدهد که این مهم از طریق قابلیتی تحت عنوان Fiber فراهم شده است.