LINUX.ORG.RU

Язык программирования Crystal обзавёлся интерактивным интерпретатором

 ,


0

1

Патч был принят, но всё ещё находится в экспериментальном режиме, и соответствующих релизов не подготовлено.
В новой статье блога проекта crystal описаны некоторые подробности по поводу довольно неожиданного для многих изменения. Ниже краткая выдержка:

Зачем нужен интерпретатор?

  • Для быстрого тестирования относительно небольшого объёма кода это может существенно сэкономить время и ускорить общую разработку.
  • Для более простой и качественной отладки.

Почему экспериментальную технологию сразу добавили в общее дерево кода?

  • Чтобы как можно скорее выявить и исправить баги и недочёты.

Примечательно, что в режиме интерпретации используется свой специальный байткод,
который не имеет никакого отношения к байткоду LLVM, на котором написан бэкенд к компилятору crystal.

Для получения новой возможности нужно произвести сборку crystal compiler с ключом interpreter=1 для make. После чего будет возможно использовать ключ i для исполнения в режиме интерпретации crystal i file.cr или просто crystal i для интерактивного режима.

Более подробно о примерах выполнения программ и их отладке с помощью интерактивного интерпретатора в ссылке на подробности.

>>> Подробности

★★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 11)

А разве у него интерпретатор не irb ? Или он сильно с руби разный ? (я его всегда считал компилятор руби кода)

mx__ ★★★★★
()
Ответ на: комментарий от mx__

нет, ЕМНИП, Кристалл это компилятор Руби-совместимого языка. произвольную рубишную программу он выполнить не в состоянии

Virtuos86 ★★★★★
()

Для получения новой возможности нужно произвести сборку с ключом...

Сборку чего? Уточни. Исходного кода компилятора, или что надо компилировать?

Virtuos86 ★★★★★
()

Для быстрого тестирования относительно небольшого объёма кода это может существенно сэкономить время и ускорить общую разработку

Я просто на сайте код тестировал

IIIypuk ★★★
()

Что, теперь можно писать Crystal-портянки, подобно "башевским"?

Korchevatel ★★★★★
()
Ответ на: комментарий от mx__

Или он сильно с руби разный ?

Совсем другой язык.

bread
()

По сабжу: нужно! Уж очень медленная там компиляция. Но насколько оно будет полноценным неясно. Надо пощупать.

bread
()

обзавёлся интерактивным интерпретатором

Очередной скриптонедоязык. Дальше не читал. Не нужно.

Скриптовых языков и так полно.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от X512

Очередная мышевозонедосо. Дальше не читал. Не нужно.

ОС и так полно.

anonymous
()

Если я хочу написать скрипт, мне быстрее и сподручнее использовать python - его и компилировать не нужно. А для чего все новые релизят - это для вузовской практики или зачем?

anonymous
()

Новость уровня метапрога.

anonymous
()
Ответ на: комментарий от X512

Очередной скриптонедоязык

Очередной Ъ. Нет, это не скриптоязык. А новость как раз про то, что туда подвезли интерактивный интерпретатор, а то очень неудобно построчно компилировать в repl.

bread
()
Последнее исправление: bread (всего исправлений: 1)
Ответ на: комментарий от anonymous

Это скриптовый язык типа руби или общего назначения?

Руби тоже общего назначения так-то. Разница в том, что кристал статически типизированный с полным выводом типов. Компилируется в LLVM IR.

bread
()
Ответ на: комментарий от anonymous

Пацаны хотели знакомым синтаксисом рубистов заманить на свое поделие, а руби здох. Но они не отчаиваются.

Virtuos86 ★★★★★
()
Ответ на: комментарий от anonymous

Компилируемые языки обычно слишком низкоуровневые. А есть задачи, где нужна компиляция и высокоуровневость. Полноценный язык лучше костылей вроде cython и микросервис-ориентированного go.

InterVi ★★★★
()
Ответ на: комментарий от Virtuos86

Он везде жив. В т.ч. на нём половина Зюзевского yast'а написана.

Просто некоторые измеряют живость языков программирования по вакансиям с хорошей зарплатой. И соответствующие ниши вычисляют отсюда же. А это неправильный метод.

saahriktu ★★★★★
()
Ответ на: комментарий от saahriktu

Он везде жив. В т.ч. на нём половина Зюзевского yast'а написана.

Не уверен, что зюзевский яст это вообще что-то приличное, с таким-то названием. Что-то не припоминаю, что использование питона в portage считалось кем-то одним из краеугольных камней доминирования питона.

Просто некоторые измеряют живость языков программирования по вакансиям с хорошей зарплатой. И соответствующие ниши вычисляют отсюда же. А это неправильный метод.

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

Virtuos86 ★★★★★
()
Ответ на: комментарий от Virtuos86

в недавнем треде по Руби выяснили уже, что жив только в RoR

Ты же отказался выяснять, сославшись на нехватку времени. Но в каждой бочке затычка почему-то по этой теме. Жена ушла к рубисту?

OSBuster
()
Ответ на: комментарий от OSBuster

Ты что такой агрессивный?) Я подписан на многие теги с разными ЯП, люблю срачики между адептами, знаешь ли. Конкретно в эту тему заглянул, впрочем, потому что как корректор внес свой скромный вклад в подготовку текста новости к публикации и зашел посмотреть на финальную версию. А что много пишу, это временно. Но это если тебе это действительно интересно, а не вспышка бугурта.

Virtuos86 ★★★★★
()
Ответ на: комментарий от Virtuos86

У всех языков свои плюсы и минусы. Несмотря на то, что за новые языки много платят и у них много библиотек, у них много минусов. От того же Питона, например, очень многие плюются.

Поэтому старые языки и продолжают жить.

Вот когда появятся достойные альтернативы - тогда эти новые достойные языки программирования и вытеснят старые.

saahriktu ★★★★★
()
Ответ на: комментарий от Virtuos86

В каком месте я агрессивный? Ты уже несколько дней подряд пишешь всякую чепуху про Руби в разных топиках, но при этом не в курсе текущей ситуации в сообществе и конкретном технологическом стэке. Нет времени на самообразование (по вроде как интересующей(?) тебя теме), но есть время на написание всякого рода нелепиц 24/7. Из этого я делаю вывод, что ты не в себе и ищу причины такого поведения, ибо какое-то классическое «Пастернака не читал» на фоне непонятного интереса.

OSBuster
()
Последнее исправление: OSBuster (всего исправлений: 1)
Ответ на: комментарий от saahriktu

Просто некоторые измеряют живость языков программирования по вакансиям с хорошей зарплатой. И соответствующие ниши вычисляют отсюда же. А это неправильный метод.

Да всё отлично у Руби с деньгами даже в РФ, хотя традиционно Руби это больше про США.

https://habr.com/en/company/habr_career/blog/584514/

OSBuster
()
Ответ на: комментарий от Virtuos86

руби здох

жив только в RoR

Бггг. Значит, RoR это рай. Хотя нет, больше похоже на ад.

bread
()
Ответ на: комментарий от saahriktu

Просто некоторые измеряют живость языков программирования по вакансиям с хорошей зарплатой.

Странно, что мертвый руби по-прежнему в первой десятке по активности на гитхабе. Что они там с ним делают, некрофилы чертовы? Кстати, модный раст ниже перла. Это какой-то лол.

https://madnight.github.io/githut/#/pushes/2021/3

bread
()
Последнее исправление: bread (всего исправлений: 1)
Ответ на: комментарий от rupert

В целом неплохо, но в зависимости от ситуации может чего-то не хватать.
Но привязки с сишным библиотекам там пишутся в принципе легко.

Sorcus
()

А можно подобные новости, маркировать тэгом BDSM или чем-то подобным, чтобы нормальные люди могли их отфильтровывать?

anonymous
()
Ответ на: комментарий от OSBuster

С агро предпочитаю не общаться, извини, пока. Особенно у которых есть время 24/7 молча следить, что я и где пишу. Ответь лучше Максу Лапшину в теме про рубин, а то я «чепуху» пишу, а у него, кажется, мнение схожее.

Virtuos86 ★★★★★
()
Ответ на: комментарий от bread

Кстати, модный раст ниже перла. Это какой-то лол.

По этому рейту надо вообще на шелл переходить и на баше строгать проекты. Скрытый лидер!

Virtuos86 ★★★★★
()
Ответ на: комментарий от Virtuos86

Меня там больше смущает аномальный результат жаваскрипта. Причем он сильно меняется по кварталам. То ли это связано с сезонными обострениями пограмистов, то ли все цифры от балды.

bread
()
Ответ на: комментарий от bread

Странно, что мертвый руби по-прежнему в первой десятке по активности на гитхабе. Что они там с ним делают, некрофилы чертовы?

Top Programming Languages of 2021 Included SQL

Dice Insights назвал 8 языков программирования, которые больше всего искали американские работодатели за минувший год. Данные предоставлены компанией Burning Glass, которая агрегирует и анализирует миллионы вакансий на рынке труда США.

https://insights.dice.com/2022/01/03/top-programming-languages-of-2021-included-sql-java/

OSBuster
()

Как отличить скриптопитуха, если он взял в руки комплируемый строго типизированный язык? Ответ - он считает типы мусорной информацией, ухудшающей читаемость кода.

anonymous
()
Ответ на: комментарий от Gentooshnik

Тоже недоязык. Как они сами пишут, стандарты они не осилили.

X512 ★★★★★
()
Ответ на: комментарий от saahriktu

Несмотря на то, что за новые языки много платят и у них много библиотек, у них много минусов. От того же Питона, например, очень многие плюются.

Питон старше руби.

anonymous
()
Ответ на: комментарий от anonymous

Питон менялся гораздо сильнее. И есть большая разница между Питоном 90-х годов и современным 3-им Питоном. При этом, в те 90-е годы Питон не так сильно был заметен на фоне других языков, в т.ч., например, Perl'а.

saahriktu ★★★★★
()
Ответ на: комментарий от bread

SQL божит как всегда. Фантазии про всесильный ORM и nosql такие фантазии. Но где же модные го и раст?

Так на там же Go при всём хайпе, деньгах и маркетинге до сих пор нет вменяемого ORM, который будет покрывать хотя бы 90% тривиальных задач. И полтора веб-фреймворка (Beego и Gobuffalo) фактически загнулись и не нужны никому, потому что писать сложную бизнес-логику выливается в монструозные и сложно поддерживаемые портянки процедурного бойлерплейта, рассыпающиеся при сколь-нибудь серьёзном рефакторинге или изменении. Поэтому Go это три с половиной корпорации пилящие эти ваши кубернетесы и прочие системные обвязки, а мелкому и среднему бизнесу Go нужен, чтоб спорадически выносить какую-то простую логику в микросервис и это разумеется не будет создавать тысячи вакансий на долгие месяцы разработки. Поэтому все эти наши Laravel/Django/Rails никуда не денутся в ближайшее десятилетия и не умрут, потому что принципиального иного и сильно лучшего-то ничего и нет.

Вот Сбер даже переучивает людей: «Все дороги ведут к Ruby: как мы переучиваем разработчиков с других языков» https://habr.com/en/company/sbermarket/blog/592819/

OSBuster
()
Последнее исправление: OSBuster (всего исправлений: 2)
Ответ на: комментарий от OSBuster

Так они сами пишут что катастрофически нехватает рубистов, переучивают с других языков. Видео не смотрел, но они кретины. Руби очень сложный язык который выглядит просто. На c++ в сбербанк не хотят за пару месяцев переучить с php? Тот кто познал легаси на руби никогда не вернется обратно. Поддерживать сложный проект на нем самоубийство, на языке с утиной типизацией, где философия делать все максимально неявно, запутанно, метопрограммированием сверху посыпано чтобы даже редактор запутался где что, класс это объект, объект это класс, из этого ещё и лепят функциональщину, куда писать логику никто не знает и всякие фреймворки-над-фреймворком придумывают вроде трейлблейзера.

Из хорошего это культура тестирования. Язык не только самый медленный, но и самый багоопасный ввиду вышесказанного, так что все непокрытое обязательно сломается, компилятора никакого нет, так что сломается именно в проде. И тогда одним рубистом меньше, лучше другой ЯП выучить чем нервы тратить. Вот почему рубистов не хватает.

Знаю что «где-то читал» это так себе источник, но я где-то читал статью про говнокурсы вайтишников, куда этих вайтишников потом берут - как раз сбербанк упоминали

Romaboy
()
Последнее исправление: Romaboy (всего исправлений: 1)
Ответ на: комментарий от Romaboy

Язык не только самый медленный

Самый медленный из чего? Медленным он был 10 лет назад, а сейчас вполне себе как Python, в чём-то быстрее, в чём-то медленее, где-то ест больше памяти, а где-то меньше.

Бенчмарк: https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/ruby-python3.html

А в версии, которая вышла две недели назад GitHub и Shopify запилили новый JIT и прибавку к 30% производительности без какого-либо изменения кода:

Бенчмарк: https://speed.yjit.org/

Тот кто познал легаси на руби никогда не вернется обратно.

Куда обратно? Я познал много легаси на Ruby и всё в порядке со мной. Есть и линтеры, код-стайлы и профилировщики. Если брать фреймворки и стандартную библиотеку, то наоборот часто выгодно проапгрейдить проект, потому что из коробки получаешь новые плюшки и синтаксический сахар к ним и можно выкинуть старые костыли и хаки да ещё и получить единообразный и всем понятный вид кодовой базы.

А метапрограммирование это фича, а не недостаток. Именно по этому Ruby так любят выбирать для написания различных DSL. А так-то можно и водой упиться до смерти.

Я так понимаю, что вы когда-то очень давно что-то трогали, вам не зашло или вы не разобрались и теперь плодите стереотипы и делитесь с своей болью.

Основная проблема Ruby это то, что в свое время он долго варился в Японии, а потом выстрелил в США и сразу в бизнес, без томления в. международной академической среде и у него нет и не было покровителя из гигантской корпорации, которая бы маркетингом и кучей литературы его продвигала за свой счёт. Отсюда и малое количество переводной литературы и в пост-совке, где с английским туго, особенно у джунов, у которых ещё всё впереди, выбор Ruby, как первого языка обычно не возникает. Потому что есть тонны литературы по JS/Python/PHP и сосед Вася может в любой момент подсказать и помочь. И как ответвление этой проблемы - долгое время отсутствие версии для Windows, да и появившийсяя порт тянет за собой много nix-багажа, включая MinGW. Сейчас, с появлением Докера и WSL эта проблема не сильно актуальна, но поезд ушёл и для абсолютных новичков тоже всё ещё проблема для быстрого старта.

самый багоопасный ввиду вышесказанного

Что-то как-то много превосходных степеней сравнения в одном сообщении. Не багоопасней любого другого языка с динамической, но строгой типизацией а-ля Python. В этом плане он менее багоопасный JS, у которого типизация слабая. Так что точно не самый. Да, есть TypeScript, но и в Ruby больше года как есть аннотации типов (и минимум IDE от JetBrains отлично их поддерживают из коробки), можно оптипизироваться до смерти, в дополнение к TDD/BDD, если есть желание и/или потребность и свести какую-то «багоопасность» в вакууме до минимума.

из этого ещё и лепят функциональщину,

Словно что-то плохое. А где не лепят? Что может быть плохого в условном паттерн-матчинге? Везде лепят, потому что в некоторых моментах это сильно упрощает жизнь. Но суть всё-таки в том, что для того, чтобы Ruby не казался этим вот всем, чем он кажется вам, нужно очень хорошо знать именно ООП (хороша или плоха эта парадигма это уже отдельный вопрос и не относится только к Ruby), причём не в его классической и слегка извращённой C++/Java/C# ипостаси, а Smalltalk-овой, тогда всё логично и понятно и элегантно, а не весь этот набор страхов, стереотипов и ужасов, который вас преследует.

OSBuster
()
Последнее исправление: OSBuster (всего исправлений: 7)
Ответ на: комментарий от OSBuster

Я так понимаю, что вы когда-то очень давно что-то трогали, вам не зашло или вы не разобрались и теперь плодите стереотипы и делитесь с своей болью

всегда считал, что хейтеры с++ вот примерно отсюда же и берутся

xperious ★★
()
Ответ на: комментарий от OSBuster

нужно очень хорошо знать именно ООП

ООП в любом случае нужно хорошо знать. Чтобы его не применять где и как попало. Это как фехтование нужно не для того, чтобы прохожих рубить в капусту (хотя жабокодеры считают иначе). Практика на руби неплохо прокачивает скилл, а больше нигде в мейнстриме нормально ООП не реализовано.

bread
()
Ответ на: комментарий от bread

ООП в любом случае нужно хорошо знать. Чтобы его не применять где и как попало. Это как фехтование нужно не для того, чтобы прохожих рубить в капусту (хотя жабокодеры считают иначе). Практика на руби неплохо прокачивает скилл, а больше нигде в мейнстриме нормально ООП не реализовано.

Smalltalk (Pharo), но это вообще новичкам не зайдёт, думаю, и точно не мейнстрим, хотя для поковыряться с целью расширения кругозора – штука отличная.

В любом случае, в виду специфического порога входа (боль при использовании чего-то сложнее, чем «Hello, world» на Windows, небольшое кол-во переводной литературы и хорошее знание ООП на старте), Ruby это редко у кого первый язык, а самыми одержимыми крикунами и фанбоями обычно движет синдром утёнка, поэтому и на этом поприще большого пиара ему никто не сделает :)

Поэтому тихо варится в своей нише, в основном в Японии и США. Но сейчас вроде как со всеми завезёнными плюшками второе дыхание открылось, посмотрим надолго ли его хватит.

OSBuster
()
Ответ на: комментарий от OSBuster

Я и правда 2-3 года как не трогал Руби и рад что он развивается.

То что он догоняет второй самый медленный в мире ЯП Python это хорошо, значит Руби уже не самый, а хотя бы делит первенство.

вам не зашло или вы не разобрались

приятно что на вы, я тут мимо проходил и не вкурсе lor традиций, и показалось что тут стиль общения «как бы посильнее обосрать собеседника», так что приятно если не так

Есть и линтеры, код-стайлы и профилировщики

Язык красивый, читать приятно. А понимать не всегда приятно, и линтеры с код-стайлами тут бессильны. Профилировщик тоже не знаю каким тут боком. Если конкретнее то бывало что используется что-то в одном месте и ведет себя не так как нужно, и давай искать а где оно определенно, в руби оно может прийти из наследования, или из миксина, или мета-программированием где-то установится, или ещё черт знает откуда. В нормальном случае проблем нет и все ясно, но иногда бывало что часами искал где метод определен, а он внезапно из какой-то библиотеки и настроено в вообще непредсказуемом каком-то месте.

Ruby больше года как есть аннотации типов

это прекрасная новость, если оно и правда работает, у ruby внезапно появился compile-time, и даже метапрограммирование можно покрыть типами. Если ещё и generic завезли. Может ещё и библиотеки покрыли типами и можно точно знать что откуда возвращается. Но мне слабо верится что это впринципе возможно, скорее всего легкий костыль для примитивных случаев. В таком случае сравнивать с TS некорректно, наверное, с PHP более правильно (не знаю php, но там тоже аннотации добавили).

Не багоопасней любого другого языка с динамической, но строгой типизацией а-ля Python.

Тут был не прав, действительно все подобные ЯП это боль. JS чуть менее опасный потому что у него хотя бы сборка есть, и во время сборки хотя бы ошибки синтаксиса можно словить. А в Руби, да я сам дурак конечно и все делал плохо, но в Руби можно кривовато смерджить изменения и где-то там будет синтаксическая ошибка, но локально запускается и работает так как файлы грузятся лениво, вскроется после деплоя.

Словно что-то плохое. А где не лепят?

В функциональщине много хорошего, спору нет, вопрос на какой глобус эту сову натягивают. Вот в руби функция это класс который принимает аргументы в конструкоре и дает метод call. Писать на порядок больше кода чем это выглядело бы в другом языке - это противоречит самой философии Ruby. Я знаю что есть и lambda, и proc, но их не выйдет на глобальный уровень вытащить, можно в константу, но это тоже странно как-то. По умолчанию все методы иммутабельные, это конечно здорово и по FP, да только труъ FP языки под это оптимизированны, а в руби копировать массивы-объекты далеко не бесплатно, если помнить что он делит первенство по слоупочности.

Но суть всё-таки в том, что для того, чтобы Ruby не казался этим вот всем, чем он кажется вам

Есть за что любить руби, для меня это красота кода, ActiveRecord, множество готовых действительно качественных библиотек, культура тестирования. Окей, может показалось, я всего лет 5 на Ruby работал, может неправильно все понял и там сплошные розочки-цветочки. Зачем я делюсь страхами-ужасами? Да не знаю, может и не нужно, тем-более что тема про Crystal

Romaboy
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.