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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Crystal
Crystal language logo.svg
Парадигма:Multi-paradigm: Об'єктно-орієнтоване програмування
Дата появи:2009
Творці:Ary Borenszweig
Розробник:Manas Technology Solutions
Останній реліз:1.10 (16 лютого 2018; 7 місяців тому (2018-02-16))
Система типізації:сувора статична
Основні реалізації:.cr
Під впливом від:Ruby, C, Rust, Go, C#, Python
Платформа:Linux, macOS (Homebrew) [1]
ОС:Linux, Mac OS X, Windows, Android
Ліцензія:Apache License 2.0
Сторінка інтернет:crystal-lang.org

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

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

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

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

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

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. [1]
  2. An Introduction to Crystal: Fast as C, Slick as Ruby
  3. Crystal. crystal-lang.org. Процитовано 2016-02-18.