Crystal (мова програмування)
Crystal — об'єктно-орієнтована мова програмування загального призначення. Crystal вимагає наперед визначення типу змінних ще на стадії опису програми. Має схожий з мовою Ruby синтаксис.
Crystal | |
---|---|
Парадигма | Мультипарадигмова: Об'єктно-орієнтоване програмування, рівночасне програмування |
Дата появи | 2014 |
Творці | Ary Borenszweig |
Розробник | Manas Technology Solutions |
Останній реліз | 1.9.2 (19 червня, 2023 ) |
Система типізації | сувора статична |
Основні реалізації | .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 |
Історія
ред.Робота над новою мовою програмування була розпочата в червні 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
Примітки
ред.- ↑ Архівована копія. Архів оригіналу за 24 травня 2018. Процитовано 30 червня 2018.
{{cite web}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання) - ↑ Crystal. crystal-lang.org. Архів оригіналу за 1 липня 2018. Процитовано 18 лютого 2016.
- ↑ Crystal 0.1.0 released. crystal-lang.org. 19 липня 2014. Архів оригіналу за 19 січня 2016. Процитовано 10 грудня 2020.
- ↑ An Introduction to Crystal: Fast as C, Slick as Ruby. Архів оригіналу за 1 липня 2018. Процитовано 30 червня 2018.