Crystal (мова програмування)

Crystal
Парадигма Мультипарадигмова: Об'єктно-орієнтоване програмування, рівночасне програмування
Дата появи 2014
Творці Ary Borenszweig
Розробник Manas Technology Solutions
Останній реліз 1.9.2 (19 червня, 2023; 9 місяців тому (2023-06-19))
Система типізації сувора статична
Основні реалізації .cr
Під впливом від Ruby, C, Rust, Go, C#, Python
Платформа Linux, macOS (Homebrew) [1]
Операційна система Linux, Mac OS X, Windows, Android
Ліцензія Apache License 2.0
Звичайні розширення файлів .cr
Репозиторій вихідного коду github.com/crystal-lang/crystal
Вебсайт crystal-lang.org

Crystalоб'єктно-орієнтована мова програмування загального призначення. Crystal вимагає наперед визначення типу змінних ще на стадії опису програми. Має схожий з мовою Ruby синтаксис.

Історія[ред. | ред. код]

Робота над новою мовою програмування була розпочата в червні 2011 року в компанії Manas.

Перші версії компілятора були написані на Ruby. Проте в 2013 році компілятор був цілком написаний на самому Crystal[2].

В липні 2014 року презентовано перший офіційний реліз мови програмування.[3]

Мета розробників — створити мову таку ж ефективну на стадії проєктування, як і Ruby, але більш ефективну на стадії виконання. Станом на 2016 рік деякі тести показували прискорення у порівнянні з Ruby до 40 разів, а деякі, навпаки, гальмування[4].

На поточний час мова активно еволюціює.

Приклади[ред. | ред. код]

Hello World[ред. | ред. код]

Класична програма Hello World на Crystal:

puts "Hello World!" 

Або із застосування об'єктно-орієнтованого стилю:

class Greeter   def initialize(@name : String)   end    def salute     puts "Hello #{@name}!"   end end  g = Greeter.new("world") g.salute 

HTTP сервер[ред. | ред. код]

Приклад опису простого Вебсервера:

require "http/server"  server = HTTP::Server.new do |context|   context.response.content_type = "text/plain"   context.response.print "Hello world! The time is #{Time.now}" end  puts "Listening on http://0.0.0.0:8080" server.listen(8080) 

TCP echo сервер[ред. | ред. код]

Простий сервер відголосу — сервіс, що повторює те що отримав. Як звіичайний відголос.

require "socket"  def handle_client(client)   message = client.gets   client.puts message end  server = TCPServer.new("localhost", 1234) while client = server.accept?   spawn handle_client(client) end 

Примітки[ред. | ред. код]

  1. Архівована копія. Архів оригіналу за 24 травня 2018. Процитовано 30 червня 2018.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  2. Crystal. crystal-lang.org. Архів оригіналу за 1 липня 2018. Процитовано 18 лютого 2016.
  3. Crystal 0.1.0 released. crystal-lang.org. 19 липня 2014. Архів оригіналу за 19 січня 2016. Процитовано 10 грудня 2020.
  4. An Introduction to Crystal: Fast as C, Slick as Ruby. Архів оригіналу за 1 липня 2018. Процитовано 30 червня 2018.