WikiSort.ru - Программирование

ПОИСК ПО САЙТУ | о проекте
Crystal
Класс языка мультипарадигмальный: объектно-ориентированный
Появился в 2014
Автор Ary Borenszweig
Разработчик Manas Technology Solutions
Расширение файлов .cr
Выпуск
Система типов Статическая
Испытал влияние Ruby, Go
Лицензия Apache License 2.0
Платформа IA-32 (i386), x86-64
ОС Linux, macOS (Homebrew) [2]
Сайт crystal-lang.org

Crystal — это объектно-ориентированный язык общего назначения, спроектированный и созданный Ary Borenszweig и Juan Wajnerman.[3] Crystal статически типизирован и имеет Ruby-подобный синтаксис. Первый официальный релиз языка произошел в июне 2014 года.[4][5] Изначально компилятор языка был написан на Ruby, пока в 2013 году не был переписан на Crystal.[6] Язык находится в активной разработке.

Описание

Несмотря на схожесть синтаксиса, Crystal намного эффективнее, чем Ruby, компилируется в машинный код, используя LLVM, жертвуя при этом динамическими аспектами языка. По результатам тестов Crystal показывает схожую с языком С производительность.[7][8][9] Язык использует Boehm garbage collector, обладает системой макросов, поддерживает дженерики, а также перегрузку методов и операторов.

В Crystal реализован интерфейс вызова функций из двоичных библиотек на языках C, C++ и пр,, при этом синтаксис взаимодействия с такими библиотеками максимально упрощён, что позволяет легко создавать библиотеки-обёртки, а не писать весь код с нуля. Также Crystal поддерживает ассемблерные вставки и прямое обращение по указателям - это считается unsafe, но не запрещено, поскольку необходимо, в частности, и для взаимодействия с функциями из внешних библиотек.

Примеры

Hello, world!

Простейший вариант написания:

puts "Hello World!"

В объектно-ориентированном стиле:

class Greeter
  def initialize(@name)
  end

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

HTTP Server

require "http/server"
server = HTTP::Server.new do |context|
  context.response.content_type = "text/plain"
  context.response.print "Hello world!"
end
server.bind_tcp 8080
puts "Listening on http://127.0.0.1:8080"
server.listen

Ссылки

  1. Release 0.27.2 — 2019.
  2. Installation · GitBook
  3. crystal-lang/crystal. GitHub. Проверено 18 февраля 2016.
  4. Crystal. crystal-lang.org. Проверено 18 февраля 2016.
  5. Why Crystal programming language? | Motion Express | Ruby, Rails, Crystal & developers' techniques. motion-express.com. Проверено 18 февраля 2016.
  6. Crystal. crystal-lang.org. Проверено 18 февраля 2016.
  7. kostya/benchmarks. GitHub. Проверено 18 февраля 2016.
  8. kostya/crystal-benchmarks-game. GitHub. Проверено 18 февраля 2016.
  9. smarr/are-we-fast-yet. GitHub. Проверено 18 февраля 2016.

[1]

  1. Релиз 0.25.1 (англ.). GitHub. Проверено 28 июня 2018.

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии