Опубликован релиз языка программирования Crystal 1.6, разработчики которого пытаются совместить удобство разработки на языке Ruby с высокой производительностью приложений, свойственной языку Си. Синтаксис Crystal близок к языку Ruby, но не полностью совместим с ним, несмотря на то, что без переработки выполняются некоторые ruby-программы. Код компилятора написан на языке Crystal и распространяется под лицензией Apache 2.0...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=57926
Этим кто-то пользуется? Кажется оно ещё мертвее Ruby
яя им пользуюсь
Why people leaving crystal?
Manas Technology Solutions, 84 codes, Nikola Motor Company, PlaceOS.
>Nikola Motor CompanyЭто которая макеты электрогрузовиков под горку катала?
Она самая;)
Лишь бы ты им не пользовался. А то ныть начнёшь "сделайте мне то, добавьте мне это, как я привык в том одном-единственном языке, который сумел осилить".
Я пользуюсь
А для чего?
Web?
Да, когда узнал о языке, начал использовать вместо Go, так как раньше я на Ruby писал.А так пишу ещё мелкие консольные утилиты, где необходима работа с интернетом, когда лень на Си писать.
В целом мне нравится язык и стандартная библиотека, но скорость компиляции убивает.
удобство разработки на языке Rubyпоржал
Да этим только легаси ускорять.
Версия 1.6
>Изменена логика перегрузкиВ нормальных языках такое делают или в версии 0.х, или в отдельной мажоронй ветке. А тут кто-то через полгода из реп накатит, а потом будет попу вазелином мазать.
Такие вещи там грамотно проектрируют.Я компилировал код с фичами из новых версий старым компилятором и ничего не ломалось.
> Такие вещи там грамотно проектрируют.Что там можно грамотно проектировать для этого случая, если один и тот же код, в зависимости от компилятора, теперь будет разный результат давать?
Условно(!):раньше, старый код/старый компилятор: 2x2=66 (а в логике - "активно покупать!")
теперь, тот же старый код/новый компилятор: 2x2=177 (в логике - "активно продавать!").И разработчик чешет репу: что же там поломалось, что он кучу денег пролюбил, ведь ничего не менял же, только компилятор обновил на не мажорную версию.
А теперь представь что это произошло в глубинах чужих исходников, которые ты себе в проект затащил.
Да, конечно, надо тестами покрывать. Но надо и в отдельной мажорной ветке несовместимую версию компилятора выпускать.
Ну вообще ты прав. Такое себе решение, если язык хочет быть серьёзным продуктом
Когда у языка пользователей целое ничего, это не имеет значения.
Это, кстати, хрень какая-то же.
Более частное теперь менее специфично, чем более общее.
Хороший язык программирования, но его не распиарили так как Go.
А какова его "фишка"?
Golang позиционировался изначально, одна задача - одно решение.
А здесь одна задача и тысяча и одна ночь на решение (выбор одного решения из тысячи).
то есть ты не знаешь фишку, но берешься судить. классика опеннета
Ну тыж не рассказываешь.
> А какова его "фишка"?Нормальная стандартная библиотека, а не как в СИ. Возможность компилировать код в бинарник.
> Хороший язык программирования, но его не распиарили так как Go.И кто пиарит Go? Только не говорите Google, эти Go не любят, проекты на нём не пиарят, не одабривают его использование для своих проектов. Как докажу? Ну во-первых об этом говорят многие гуглеры, а во-вторых крупных проектов на Go, которые Google бы поддерживал, пиарил и продвигал, нет вообще (а первая стабильная версия, по-моему, 12 лет назад вышла, что как бы очень давно по меркам гугла).
>И кто пиарит Go?Что-то странное ты говоришь. Go пиарили изо всех утюгов несколько лет подряд. Это я хорошо помню. Сейчас, может быть, уже не так, но и нужды нет - Go "взлетел", стал популярным (что как раз указывает на говённость этого языка, но это уже другая тема).
> Что-то странное ты говоришь.Я по факту говорю. Гугл утюгам не платил. Никто не платил.
Kubernetes?)
Макросыыы.. а идея была непло.. а что за идея была ? Сделать руби ? Почти получилось
Идея была сделать руби со статической типизацией (и соответственно настолько быстрый насколько позволит LLVM).
Разве из помеси питона с паскалем может получиться что-то хорошее?
Это про Nim. Crystal это скорее помесь С с Ruby.
Есть ли интероперабельность с C ?Т. е. могу ли я в Crystal заюзать любую C либу, как в Kotlin любую Java-либу ?
Интероперабельность с С есть почти у всех языков. Во всяком случае, с бекендом LLVM для этого особых усилий не надо - просто скорми линкеру сишные библиотеки.
Вопрос только в том насколько хорош автоматический конвертер заголовков для этого языка. У кристалла он с одной стороны неплохой (библиотеки типа GSL или LAPACK я конвертил с минимумом ручных правок), а с другой - эээ, слегка мертвый? судя по https://github.com/crystal-lang/crystal_lib/issues/2 есть какой-то альтернативный скрипт, но я его завести так и не смог, так что пользуюсь бинарником конвертера скомиленным еще три года назад.
Нет конечно. Потому что из jar-файла Kotlin может прочитать все классы, интерфейсы и методы со всеми типами. А вот из C-библиотеки ничего кроме имени функции автоматически не получишь. Ни аргументов, ни типов.
А хедеры на что?
Внезапно, для С-компилятора.
Для хедеров есть конвертеры в другие языки
Хедеры далеко не всегда есть. А вот динамическая библиотека с C-нотацией экпорта функций - без проблем.
Наоборот - хедеры уж точно есть, если конечно библиотека опенсорсная. А вот сама библиотека - далеко не всегда (может и не собираться под данную платформу, а только под целевую).
> хедеры уж точно есть, если конечно библиотека опенсорснаяНо вот как раз хедеры есть не всегда. Только для случая C и C++. Имея хедеры для C++ ещё и невозможно однозначно определить имена экспортируемых функций в имеющемся бинарнике динамической библиотеки, поскольку разные компиляторы C++ по-разному их формируют.
И вопрос был в сравнении с Kotlin, который, сидя на JVM, вообще не имеет никаких проблем с восстановлением имён, аргументов и типов из бинарника. И такому подходу никакие хедеры не нужны. В отличии от C, который далеко не всегда используется по-умолчанию.
С котлином - да, не сравнить. В каком-нибудь бейсике так вообще - в библиотеке не то что имена, весь исходный текст доступен, можно поправить под себя если что не так.Но мне кажется странной фраза "А вот динамическая библиотека с C-нотацией экпорта функций - без проблем.". С (и другие нативные языки) как раз позволяют собирать программу имея только хедеры, сама библиотека может быть недоступна. Например, сидя на линуксе линковаться с kernel32.dll.
Ну и примеры библиотек для которых нет хедеров было бы интересно услышать.
Carbon, разумеется.
> Carbon, разумеется.Карбон это замена для Раста. При чем здесь Кристал?
Карбон - это замена Плюсам, всё-таки.
Carbon не замена Расту. Об этом говорится прям на заглавной странице:Existing modern languages already provide an excellent developer experience: Go, Swift, Kotlin, Rust, and many more. Developers that can use one of these existing languages should.
Carbon для тех плюсистов, которым влом изучать что-то совсем новое. То есть замена C++. На этом поле он, конечно, является конкурентом Раста.
Только ленивый ещё свой язык не сделал
:D студентами помню изучали "yacc" то там у каждого были лабораторные работы где мы свои компилируемые ЯП создавали. так вот нужно было отправлять свои поделки в опеннет с приставкой безопасный )))
Вот объясните, нафига в синтаксис пихать слово end? Людям не надоедает его вводить? Неужели нельзя по пробелам блок вычислить или сделать нормальные скобки?