The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

08.08.2016 22:11  Язык Crystal пытается совместить производительность Си и удобство Ruby

В рамках проекта Crystal развивается новый язык программирования, разработчики которого намерены создать язык удобный как Ruby при разработке, но быстрый как Си при выполнении приложений. Код компилятора написан на языке Crystal и распространяется под лицензией Apache 2.0.

Синтаксис Crystal очень близок к языку Ruby (без переработки выполняются некоторые ruby-программы), но разработчики не ставят целью обеспечение полной совместимости. В языке применяется статическая проверка типов, но без необходимости явного указания типов переменных и аргументов методов в коде. Программы на Crystal компилируются в исполняемые файлы, с вычислением макросов и генерацией кода во время компиляции. С производительностью не всё однозначно: на текущей альфа-стадии развития в одних тестах Crystal опережает Ruby в 40 раз, но в отдельных тестах в 4-5 раз проигрывает по скорости выполнения.

В программах на языке Crystal допускается подключение биндингов, написанных на языке Си. Распараллеливание выполнения кода осуществляется при помощи ключевого слова spawn, которое позволяет запустить фоновую задачу в асинхронном режиме, не блокируя основной поток, в виде легковесных потоков, именуемых фибрами (Fiber).

Стандартная библиотека предоставляет большой набор типовых функций, в том числе средства для обработки CSV, YAML, и JSON, компоненты для создания HTTP-серверов и поддержки WebSocket. В процессе разработки удобно использовать команду "crystal play" которая формирует web-интерфейс (по умолчанию localhost:8080) для интерактивного выполнения кода на языке Crystal.

  1. Главная ссылка к новости (https://blog.codeship.com/an-i...)
Лицензия: CC-BY
Тип: Программы
Ключевые слова: crystal, ruby, compiler
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, Аноним (-), 22:40, 08/08/2016 [ответить] [показать ветку] [···]    [к модератору]
  • +/
    напомнило кассио и эмуляцио HP
     
  • 1.2, Онаним (?), 23:00, 08/08/2016 [ответить] [показать ветку] [···]    [к модератору]
  • +/
    Есть же Elixir - и на Ruby похож, и производительность и прочие ништяки от Erlang-а.
     
     
  • 2.10, Crazy Alex (ok), 02:07, 09/08/2016 [^] [ответить]    [к модератору]
  • +8 +/
    Производительность эрланга... Хорошая шутка для тех, кто в курсе, угу
     
     
  • 3.14, Аноним (-), 02:31, 09/08/2016 [^] [ответить]    [к модератору]
  • +5 +/
    Типа "её нет, но вы держитесь там"?
     
     
  • 4.16, Crazy Alex (ok), 03:06, 09/08/2016 [^] [ответить]     [к модератору]
  • +2 +/
    Она есть местами, но упоминать его как эталон скорости смешно Эрланг - вообще н... весь текст скрыт [показать]
     
     
  • 5.53, rob pike (?), 16:02, 09/08/2016 [^] [ответить]     [к модератору]  
  • +/
    Под сишные расширения он заточен очень хорошо С FFI по удобству сравнимому то... весь текст скрыт [показать]
     
     
  • 6.59, Crazy Alex (ok), 16:56, 09/08/2016 [^] [ответить]    [к модератору]  
  • +/
    А что не так с Perl XS? Вполне рабочая штука
     
     
  • 7.65, Аноним (-), 18:45, 09/08/2016 [^] [ответить]     [к модератору]  
  • +/
    http slonik-v-domene livejournal com 31403 html Я сомневаюсь в его компетенции... весь текст скрыт [показать]
     
     
  • 8.76, Аноним (-), 13:09, 10/08/2016 [^] [ответить]     [к модератору]  
  • –1 +/
    Нашли с чем сравнивать Lua 8212 в первую очередь встраиваемый язык на всяки... весь текст скрыт [показать]
     
  • 8.79, rob pike (?), 16:40, 10/08/2016 [^] [ответить]    [к модератору]  
  • +/
    С LuaJIT еще проще.
     
  • 7.78, rob pike (?), 16:39, 10/08/2016 [^] [ответить]    [к модератору]  
  • –1 +/
    ASN.1 и HLASM - тоже очень рабочие штуки.
    Тем не менее, перловый XS остается одним из канонических примеров наиболее сложных и неудобных FFI c почти вертикальной learning curve.
     
  • 3.25, Аноним (25), 08:20, 09/08/2016 [^] [ответить]    [к модератору]  
  • +/
    а вы использовали elixir для написания  приложений уровня ROR или так по теоретизировать решили?
    жду с нетерпением бенчарков.
     
     
  • 4.58, Crazy Alex (ok), 16:55, 09/08/2016 [^] [ответить]     [к модератору]  
  • +1 +/
    Даже смотреть не стану Работа со строками и подобным в BEAM быстрой в жизни не ... весь текст скрыт [показать]
     
  • 2.89, Аноним (-), 19:21, 11/08/2016 [^] [ответить]    [к модератору]  
  • +/
    ну в принципе да, что руби что эрланг и эликсир - корнями частично  уходят к ванильному прологу, который весьма труЪ в этом плане.
     
  • 1.3, Аноним (-), 23:12, 08/08/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    никогда не писал на ruby, вот от чего дискомфорт
     
     
  • 2.24, 12de (?), 08:16, 09/08/2016 [^] [ответить]    [к модератору]  
  • +2 +/
    начинай, не пожалеешь
     
     
  • 3.27, Очень злой и закадровый смех (?), 08:25, 09/08/2016 [^] [ответить]    [к модератору]  
  • +/
    Начал. Пожалел. Where is your god now?
     
     
  • 4.31, Michael Shigorin (ok), 09:04, 09/08/2016 [^] [ответить]    [к модератору]  
  • +/
    > Начал. Пожалел.

    О чём именно, кстати?

     
     
  • 5.75, Пингвино (ok), 12:14, 10/08/2016 [^] [ответить]    [к модератору]  
  • –1 +/
    Скорее всего о том, что родился.
     
  • 1.4, Xasd (ok), 23:18, 08/08/2016 [ответить] [показать ветку] [···]     [к модератору]  
  • –6 +/
    всё больше и больше плодят тупых дыр про которые раньше люди и не мыслили ... весь текст скрыт [показать]
     
     
  • 2.32, Michael Shigorin (ok), 09:05, 09/08/2016 [^] [ответить]    [к модератору]  
  • –2 +/
    >> процессе разработки
    > ды перестаньиы вы уже плодить без надобности сервера!

    Вы опять неправы.

     
  • 1.5, YetAnotherOnanym (ok), 23:24, 08/08/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +2 +/
    А на руби удобно писать? Чёрт, жизнь прошла мимо...
     
     
  • 2.6, Павел (??), 00:46, 09/08/2016 [^] [ответить]    [к модератору]  
  • +4 +/
    По многим параметрам на Ruby даже приятнее писать чем на Python
     
     
  • 3.13, Аноним (-), 02:31, 09/08/2016 [^] [ответить]    [к модератору]  
  • +5 +/
    Марсианину - несомненно ©
     
     
  • 4.33, Michael Shigorin (ok), 09:06, 09/08/2016 [^] [ответить]    [к модератору]  
  • +2 +/
    > Марсианину - несомненно ©

    А что, венерианская логика уже окончательно решила вопрос с табиками и пробельчиками? :)

     
     
  • 5.43, Snm (?), 11:25, 09/08/2016 [^] [ответить]    [к модератору]  
  • +6 +/
    Да даже чиорт с ними с табами-пробелами, к этому в конце концов привыкаешь со временем.
    Вот что действительно раздражает - так это встроенные функции, особенно вперемешку с методами классов. Непонятно откуда читать выражение в итоге.
     
  • 5.64, _ (??), 17:10, 09/08/2016 [^] [ответить]    [к модератору]  
  • –1 +/
    Гугли PEP8
    Стандарт между прочим.
     
  • 4.91, Аноним (-), 23:42, 12/08/2016 [^] [ответить]    [к модератору]  
  • +/
    > Марсианину - несомненно ©

    Фанаты бэйсиков рубаются.

     
  • 3.36, robux (ok), 09:13, 09/08/2016 [^] [ответить]     [к модератору]  
  • –1 +/
    Сравнил тоже Это как сравнивать советский мопед Рига пистон и фольксваген ... весь текст скрыт [показать]
     
     
  • 4.63, _ (??), 17:06, 09/08/2016 [^] [ответить]    [к модератору]  
  • –2 +/
    >Это как сравнивать советский мопед "Рига" (пистон) и фольксваген "Туарег" (руби).

    ... ну ты держись там, Туарег :))))

     
  • 4.92, Аноним (-), 23:43, 12/08/2016 [^] [ответить]     [к модератору]  
  • +1 +/
    Это как сравнивать советский мопед и стремный китайский мотороллер Ездят конечн... весь текст скрыт [показать]
     
  • 1.7, Аноним (-), 01:18, 09/08/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +9 +/
    > удобный как Ruby
    > быстрый как Си

    Как они до такого догадались? До них все пытались сделать ровно наоброт.

     
  • 1.8, angra (ok), 01:22, 09/08/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +17 +/
    Я так понимаю, что сравнительные бенчмарки с С или Go решили не приводить только из скромности. И вообще джентельмены верят на слово, сказали "производительность Си", значит так и есть.
     
     
  • 2.9, vdevrvtgrb (?), 01:46, 09/08/2016 [^] [ответить]     [к модератору]  
  • –6 +/
    Вы так говорите как будто у Go производительность на уровне С Единственный яз... весь текст скрыт [показать]
     
     
  • 3.15, chinarulezzz (ok), 02:43, 09/08/2016 [^] [ответить]     [к модератору]  
  • +1 +/
    Так что фикс ... весь текст скрыт [показать]
     
     
  • 4.93, Аноним (-), 23:45, 12/08/2016 [^] [ответить]     [к модератору]  
  • +1 +/
    В результате пока сишник просто пишет код, адепт Новых Модных Языков получает зн... весь текст скрыт [показать]
     
  • 3.17, Аноним (-), 04:44, 09/08/2016 [^] [ответить]    [к модератору]  
  • +1 +/
    Если "official implementation" подразумевает эталонность, то эталонность обычно подразумевает правильность работы и никак не быстродействие.
     
     
  • 4.22, Аноним (-), 06:33, 09/08/2016 [^] [ответить]    [к модератору]  
  • +/
    > эталонность обычно подразумевает правильность работы и никак не быстродействие.

    одно другому никак не мешает.

     
  • 3.19, angra (ok), 05:24, 09/08/2016 [^] [ответить]     [к модератору]  
  • +2 +/
    Не я так говорю, а вы так интерпретируете мои слова Go был упомянут по совсем д... весь текст скрыт [показать]
     
     
  • 4.56, Аноним (-), 16:47, 09/08/2016 [^] [ответить]    [к модератору]  
  • –2 +/
    > Ну вот зачем этот маркетоидный булщит? Про жабу точно такие песни были.

    При этом Java (с JIT, разумеется) довольно близко подходит к C по производительности.

     
  • 2.11, Crazy Alex (ok), 02:09, 09/08/2016 [^] [ответить]    [к модератору]  
  • +1 +/
    какое, на фиг, тестирование производительности у суровой альфы? Хоть где-то показывает хороший результат - и то хорошо
     
     
  • 3.18, angra (ok), 05:11, 09/08/2016 [^] [ответить]     [к модератору]  
  • +3 +/
    Если ставишь задачей производительность, то она должна быть уже в альфе А то со... весь текст скрыт [показать]
     
     
  • 4.21, Аноним (-), 06:29, 09/08/2016 [^] [ответить]     [к модератору]  
  • +5 +/
    Там его пилят какие-то аутисты, ушибленные рубями Добавили ещё столько же опера... весь текст скрыт [показать]
     
  • 4.41, Аномсис (?), 10:40, 09/08/2016 [^] [ответить]     [к модератору]  
  • +/
    Не должна, т к в первой альфе намного важнее совсем другое Ну и да, производит... весь текст скрыт [показать]
     
     
  • 5.45, angra (ok), 11:56, 09/08/2016 [^] [ответить]     [к модератору]  
  • +/
    Вообще-то первая альфа была зарелизена два года назад, развитие началось четыре ... весь текст скрыт [показать]
     
  • 4.55, Crazy Alex (ok), 16:42, 09/08/2016 [^] [ответить]     [к модератору]  
  • –1 +/
    Вообще-то далеко не все хотят максимально возможной производительности, ей часто... весь текст скрыт [показать]
     
  • 2.39, Аномсис (?), 10:16, 09/08/2016 [^] [ответить]     [к модератору]  
  • +2 +/
    Читать надо внимательней Там не написано, что у него производительность, как у ... весь текст скрыт [показать]
     
     ....нить скрыта, показать (14)

  • 1.12, Аноним (-), 02:29, 09/08/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +3 +/
    > на текущей альфа-стадии развития в одних тестах Crystal опережает Ruby в 40 раз

    это называется "эффект низкой базы". Сравните с cpython или go и получите свои  (минус?) полтора-два раза.

     
  • 1.20, skybon (ok), 05:56, 09/08/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • –2 +/
    Тем временем, уже есть GI-привязки:

    https://github.com/jhass/crystal-gobject

    Молодой язык, а гномовские либы можно использовать на полную катушку.

     
  • 1.23, _KUL (ok), 06:39, 09/08/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • –2 +/
    Логика бессмысленная - язык Ruby удобен, но не быстр. С быстр, но не удобен. Нужно создать язык "Crystal" который будет иметь удобство Ruby и скорость С.
    ВОПРОС - почему нельзя просто Ruby сделать быстрым как С и всё???
     
     
  • 2.28, 12de (?), 08:25, 09/08/2016 [^] [ответить]     [к модератору]  
  • +1 +/
    потому что философия языка позволяет все сделать как тебе удобно, 100500 способа... весь текст скрыт [показать]
     
  • 2.29, Аноним (25), 08:27, 09/08/2016 [^] [ответить]    [к модератору]  
  • +/
    потомучто там:

    - идеология бредовая - "Все есть объект"
    - возможность манкипатчить в рантайме

    и может чтото еще, что мешает - не особо использовал руби

     
     
  • 3.48, Аноним (-), 12:54, 09/08/2016 [^] [ответить]     [к модератору]  
  • –2 +/
    чем плохо иметь простую и регулярную модель языка, в которой всё предельно понят... весь текст скрыт [показать]
     
     
  • 4.50, Аноним84701 (?), 14:35, 09/08/2016 [^] [ответить]     [к модератору]  
  • +1 +/
    Оптимизация-с сэр Вы не поверите, но вызывать нужный метод каждый раз через таб... весь текст скрыт [показать]
     
     
  • 5.94, Аноним (-), 23:48, 12/08/2016 [^] [ответить]    [к модератору]  
  • +/
    Еще бы питонисты и рубисты понимали что ты написал :)
     
  • 5.98, Аноним (-), 07:43, 17/08/2016 [^] [ответить]    [к модератору]  
  • +/
    А как вы собрались это делать без JIT?
     
  • 4.69, Аноним (-), 23:09, 09/08/2016 [^] [ответить]    [к модератору]  
  • +/
    > Но вот чем плохо иметь возможность в динамике переопределять методы объектов и классов?

    Динамика и производительность/скорость сочетаются чуть лучше, чем никак.

     
     
  • 5.80, rob pike (?), 16:46, 10/08/2016 [^] [ответить]    [к модератору]  
  • +/
    В LuaJIT почему-то сочетаются замечательно.
     
     
  • 6.81, Аноним (-), 18:02, 10/08/2016 [^] [ответить]    [к модератору]  
  • –2 +/
    > В LuaJIT почему-то сочетаются замечательно.

    http://benchmarksgame.alioth.debian.org/u64q/lua.html
    Непохоже. Проигрывает той же жабе.

     
     
  • 7.83, ОШИБКА Отсутствуют данные в поле (?), 22:28, 10/08/2016 [^] [ответить]    [к модератору]  
  • +/
    смотрели бы то на что ссылаетесь
    >Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio
     
  • 2.34, robux (ok), 09:09, 09/08/2016 [^] [ответить]     [к модератору]  
  • –2 +/
    ОТВЕТ потому что Ruby - интерпретатор, а Си - компилятор А интерпретатор никог... весь текст скрыт [показать]
     
     
  • 3.40, angra (ok), 10:22, 09/08/2016 [^] [ответить]     [к модератору]  
  • –3 +/
    А если стадия jit занимает доли процента от времени выполнения А если jit еще и... весь текст скрыт [показать]
     
     
  • 4.42, freehck (ok), 10:56, 09/08/2016 [^] [ответить]     [к модератору]  
  • +2 +/
    Это решает скорее проблему распространения, нежели проблемы производительности ... весь текст скрыт [показать]
     
     
  • 5.44, angra (ok), 11:44, 09/08/2016 [^] [ответить]     [к модератору]  
  • –2 +/
    Ну давай на этапе компиляции определи мне размер переменной, которая будет счита... весь текст скрыт [показать]
     
     
  • 6.51, freehck (ok), 15:50, 09/08/2016 [^] [ответить]     [к модератору]  
  • +/
    Вряд ли Раз мы говорим о jit, значит мы говорим о демоне, ибо иначе jit не окуп... весь текст скрыт [показать]
     
     
  • 7.62, Аноним (-), 17:04, 09/08/2016 [^] [ответить]     [к модератору]  
  • +/
    Еще как окупится Иммутабельность не JIT-а, а переменной в программе, которую JI... весь текст скрыт [показать]
     
     
  • 8.70, freehck (ok), 00:26, 10/08/2016 [^] [ответить]    [к модератору]  
  • +/
    > Иммутабельность не JIT-а, а переменной в программе, которую JIT оптимизирует.

    Мне право же трудно понять, что Вы подразумевали под "(им)мутабельностью JIT-а". :)

     
  • 6.57, Crazy Alex (ok), 16:48, 09/08/2016 [^] [ответить]    [к модератору]  
  • +/
    Ну вот на практике в 99.9% случаев можно заранее предсказать (и ограничить) осмысленный диапазон, который будет вполне эффективно реализован. В результате bignum не будет вообще.
     
  • 2.99, Akzhan (?), 13:45, 19/05/2017 [^] [ответить]     [к модератору]  
  • +/
    Все просто, разница между статической типизацией и динамической типизацией в ско... весь текст скрыт [показать]
     
     ....нить скрыта, показать (19)

  • 1.26, Аноним (25), 08:24, 09/08/2016 [ответить] [показать ветку] [···]     [к модератору]  
  • +/
    не нужно т к для масшабируемых высокопроизводительных приложений есть elixir ... весь текст скрыт [показать]
     
     
  • 2.47, Аноним (-), 12:24, 09/08/2016 [^] [ответить]    [к модератору]  
  • +/
    Нет никакого erlang vm. Есть BEAM -- но это другое :)
     
  • 1.30, Аноним (-), 09:00, 09/08/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    > удобный как Ruby при разработке

    Ребят, может не надо?

     
     
  • 2.35, Michael Shigorin (ok), 09:10, 09/08/2016 [^] [ответить]    [к модератору]  
  • +2 +/
    >> удобный как Ruby при разработке
    > Ребят, может не надо?

    ?

     
  • 1.37, Аноним (37), 09:22, 09/08/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Они изобретают golang?
     
     
  • 2.61, Crazy Alex (ok), 16:57, 09/08/2016 [^] [ответить]    [к модератору]  
  • –1 +/
    надеюсь, что нет - убогих полуязыков и так уже многовато
     
  • 1.38, Demo (??), 09:26, 09/08/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    > Crystal развивается новый язык программирования,
    > разработчики которого намерены создать язык
    > удобный как Ruby при разработке, но быстрый как Си при выполнении

    А как же Smalltalk? o_O

     
     
  • 2.60, Crazy Alex (ok), 16:57, 09/08/2016 [^] [ответить]    [к модератору]  
  • +/
    У которого ни удобства, ни скорости?
     
     
  • 3.73, Demo (??), 08:53, 10/08/2016 [^] [ответить]     [к модератору]  
  • +/
    171 Наша информационная среда LPE приобрела свою мощность, дружест... весь текст скрыт [показать]
     
  • 1.46, Аноним (-), 12:22, 09/08/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Интересно было бы увидеть синтаксические отличия от руби. Статическая типизация с параметрическим полиморфизмом, и возможность компиляции -- весьма недурно.
     
  • 1.49, Аноним (-), 13:40, 09/08/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • –2 +/
    Ещё одна Scala.
     
     
  • 2.54, rob pike (?), 16:08, 09/08/2016 [^] [ответить]    [к модератору]  
  • +/
    Совсем не Scala. Но перспектив никаких.
     
  • 2.77, Аноним (-), 13:58, 10/08/2016 [^] [ответить]    [к модератору]  
  • +/
    > Ещё одна Scala.

    По своей идеологии скорее Rust.

     
     
  • 3.82, Аноним84701 (?), 18:14, 10/08/2016 [^] [ответить]    [к модератору]  
  • –1 +/
    >> Ещё одна Scala.
    > По своей идеологии скорее Rust.

    У раста, справедливости ради, в "идеологии" много внимания уделяется управлению памятью. И оно по умолчанию "ручное" (с поддержкой компилятора и прочими плюшками).
    Ну и "классического" OOП в расте нет.


     
  • 1.52, Аноним (-), 15:53, 09/08/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Где реклама Kotlin?
     
  • 1.66, Аноним (-), 19:58, 09/08/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Хочу си как ява как паскаль!
     
     
  • 2.88, вввв (?), 14:38, 11/08/2016 [^] [ответить]    [к модератору]  
  • +/
    ява и так как с, только урезана и объектно ориентированна
     
     
  • 3.95, Аноним (-), 23:51, 12/08/2016 [^] [ответить]     [к модератору]  
  • +/
    Нифига себе урезана - рантайма на 100 метров А оопешные фичи это здорово Но то... весь текст скрыт [показать]
     
  • 1.90, Аноним (-), 19:22, 11/08/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    "производительность С" доставило :)
    когда он в 1-й тройке-пятерке семых шустрых был? :)
     
     
  • 2.96, Аноним (-), 23:53, 12/08/2016 [^] [ответить]     [к модератору]  
  • +1 +/
    Он обычно второй в очереди - сразу после ассемблера Это, конечно, зависит от, н... весь текст скрыт [показать]
     
     
  • 3.97, КО (?), 17:07, 16/08/2016 [^] [ответить]    [к модератору]  
  • +/
    >Он обычно второй в очереди - сразу после ассемблера.

    Так вот с им родимым и сравнивают, когда особо пропиариться хотят.
    Даже Оракул с Явой в этом был замечен. :)
    Некоторые, из ныне забытых, были даже быстрее оного. :)

    P.S. Язык (компьютерный) сам по себе не быстрый и не медленный. Если безотносительно его реализации и программиста рассматривать. :)

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor