LINUX.ORG.RU

О бедном Crystal замолвите слово

 , , ,


2

7

Рассматриваю варианты на замену Go для личного проекта. Сообществом Crystal высказывается мнение, что он то как раз на эту роль и годится, во всём превосходит первый и незаслуженно обделён вниманием (это же слышу от апологетов Nim). Go, конечно, куц и по возможности я бы предпочёл не популяризировать посредственный ЯП, если есть варианты. На Ruby никогда не писал, но после беглого ознакомления некоторые элементы заходят. Кто заглядывал под хвосткапот этому Crystal? Там всё серъёзно или я-его-сварила-из-того-что-было, как в V?



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

Более того, когда я писал первую статью про питон на хабр, мне сразу посыпались гневные комменты «да ты не понимаешь» и минуса под моими комментариями.

Вот это тоже проблема, тоже из-за непонимания социума. Не надо никогда писать про негатив: «сломано/не работает/тормозит/глючит», ну не любят люди такое, что поделать. Даже если это правда.

Пиши про хорошее: «как мы ускорили петон в 10 раз» и мелким шрифтом ‘переписав все на Си’ - зайдет на ура.

«Как построить космолет из говна и палок», «как лечить косоглазие после десяти лет в tiling wm», в крайнем случае «почему и за какие грехи нас наказывают через systemd».

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

пониманием как работает общество.

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

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

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

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

Но видишь ли товары в РФ точно также производятся и продаются, покупают их по тем же причинам что и везде. Безусловно в каждом обществе есть свои особенности, но они в рамках погрешности.

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

Но видишь ли товары в РФ точно также производятся и продаются, покупают их по тем же причинам что и везде. Безусловно в каждом обществе есть свои особенности, но они в рамках погрешности.

Совершенно не согласен.

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

Type hints для людей ввели. Без неё более менее большая программа разваливается на куски. До появления type hints была мода делать огромные блоки с комментариями где описывался тип каждой переменной.

В достаточно сложной программе типы фактических данных не описываемы типами питона. То есть, у тебя есть int, который описывает номер хоста в кластере, этот int модет быть от 0 до 4, а ты передаешь 18 — это ошибка типа, но соответствующих типов в питоне нету.

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

В рантайме их действительно нет, это для людей и для IDE ошибки ловить.

Слишком примитивные ошибки оно ловит, оно защищает только от самых отбитых бездарей, который будут тащить полученное извне значение без приведения через все модули. И то даже в таком раскладе тпиы не помогут, потому что часто при получении извне статической проверки не происходит. То есть, настоящая безопасность типов и модульность — это практики кодописания и навыки самого кодера, а не аннотации и mypy.

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

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

Более того, для этого вообще не обязательно что-то знать и уметь, но есть проблема — таким образом ты получаешь огромные массы даунов, не способных учиться и анализировать информацию, то есть, прилежных членов общества.

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

Я ХОЧУ ЭТО УВИДЕТЬ!

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

Вот это тоже проблема, тоже из-за непонимания социума. Не надо никогда писать про негатив: «сломано/не работает/тормозит/глючит», ну не любят люди такое, что поделать. Даже если это правда.

Речь шла про мое несогласие с популярными взглядами. Ну типа кому-то нравятся красные фломастеры, кому-то зеленые — и тут выбегает какой-то чёрт в комментариях «А МНЕ ЖОЛТЫЕ, Я В КНИГЕ ЧИТАЛ ЖОЛТЫЕ ТОЛЬКО НУЖНЫ» — попытка разъяснить ему, что бывает более одного подхода, не имеет успеха, все остальные прохожие просто проходят мимо с мыслями «два дурака выясняют, кто из них двоих дурак» — и правильно делают, я в итоге примерно к тому же и пришел.

Так получилось, что хабр «въехал на ролс-ройсе, разбрасывая деньги» — и мы получили 95% пользователей не способных критически мыслить и принимать решения. Хотя было время, когда технический уровень на хабре был весьма солидным, это было сообщество задротов.

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

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

То есть, у тебя есть int, который описывает номер хоста в кластере, этот int модет быть от 0 до 4, а ты передаешь 18 — это ошибка типа, но соответствующих типов в питоне нету.

Это тебе скорее всего Coq и Idris нужны. Но могу ошибаться. Хотя если количество хостов в кластере может меняться динамически - скорее всего и они не помогут.

То есть, настоящая безопасность типов и модульность — это практики кодописания и навыки самого кодера, а не аннотации и mypy.

Я уже выше писал что это подсказка программисту, а не проверка в рантайме.замена docstring который описывает типы параметров и результата.

пример:

def print_number(num: int):
    print("The number is ", num)


if __name__ == '__main__':
    print_number(1)
    print_number("one")

Печатает:

The number is  1
The number is  one
Elidee
()
Последнее исправление: Elidee (всего исправлений: 3)
Ответ на: комментарий от mx__

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

Это примерно как учиться 4 года работать на коболе, а потом прийти писать на делфи. Ну да, много чего по другому. В Москве много чего западного работает, к слову, но в глухой деревне тебя вообще не поймут.

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

Но видишь ли товары в РФ точно также производятся и продаются, покупают их по тем же причинам что и везде. Безусловно в каждом обществе есть свои особенности, но они в рамках погрешности.

Ты точно знаком с американским обществом, где в среднем (среднем!) домохозяйстве порядка 70% расходов ­— это автомобиль, жилье, и медицина? Там подход «у нас есть деньги и они нам не нужны» был в одно время очень популярен, но уже меняется, и старые маркетологи начинают страдать, потому что не знают, как продавать умеренность в потреблении.

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

Я ХОЧУ ЭТО УВИДЕТЬ!

Давно была мысль взять инстаграммные ролики от инфоциган и переозвучить их с помощью нейросети.

Типа сначала я занималась эскортом потом вебкамом а теперь пишу на Rust модули к ядру. И чтоб это было от лица типичной колхозной «Маши город Тверь».

Или взять запись передачи «Пусть говорят» и переозвучить под реалии ИТ. Или взять ролик Пучков - Жуков и озвучить всю твою дичь про петон.

Идей много интересных.

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

если количество хостов в кластере может меняться динамически - скорее всего и они не помогут

Ну хотя бы отрицательные числа можно будет отсеять, и то хорошо.

Получается, статической (во время компиляции) проверки типов не всегда достаточно (точнее, практически всегда недостаточно) и нужны дополнительные динамические проверки (во время выполнения).

Неплохо, если имеется стандартный способ это делать (как spec в кложе).

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

Я уже выше писал что это подсказка программисту, а не проверка в рантайме.замена docstring который описывает типы параметров и результата.

А я по сути отвечал вот про что:

def print_number(num: int):
    print("The number is ", int(num))


if __name__ == '__main__':
    print_number(1)
    print_number("one")

The number is  1
Traceback (most recent call last):
  File "/home/user/deleteme.py", line 7, in <module>
    print_number("one")
  File "/home/user/deleteme.py", line 2, in print_number
    print("The number is ", int(num))
ValueError: invalid literal for int() with base 10: 'one'
byko3y ★★★★
()
Ответ на: комментарий от byko3y

Извините у ВАС ошибка про другое.

Мы же (как я понял) писали про, когда в IDE вводишь начало функции то в некоторых IDE вылазит подсказка с перовой строки функции а в некоторых подсказках содержит doc

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

В Москве много чего западного работает, к слову, но в глухой деревне тебя вообще не поймут.

Что говорил Кутузов ? И если ориентироваться только на Москву то увы. Хотя странно, люди приехавшие в Москву из этих глухих деревень, почему то думают что работает у них будет работать и в глухих деревнях.

У них что память стирается что ли по приезду ?

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

примечательно

как чел вполне практикующий на python

имеет очень специфические представления о:

одна фраза:

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

крч чел реально адекватен аудитории Гоблина

даёшь больше python программистов

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

Type hints для людей ввели. Без неё более менее большая программа разваливается на куски. До появления type hints была мода делать огромные блоки с комментариями где описывался тип каждой переменной.

В достаточно сложной программе типы фактических данных не описываемы типами питона. То есть, у тебя есть int, который описывает номер хоста в кластере, этот int модет быть от 0 до 4, а ты передаешь 18 — это ошибка типа, но соответствующих типов в питоне нету.

Так это и в условном Расте не опишешь, там столь же условного u2 нет (хотя он и не подошел бы). Надо свой тип городить, числоподобный, или энум.

Virtuos86 ★★★★★
()
8 января 2024 г.
Ответ на: комментарий от EXL

Уж C++-программисты могли себе сделать нормальную систему сборки

Есть мнение, что её таки сделали и может, даже не одну, но не смогли распиарить и навязать. Мне вот синтаксис bazel понравился (хотя по реализации есть недостатки), кто-то хвалил premake, кто-то waf, но всё это почему-то на обочине.

// Да, я отвечаю на комментарий 4-месячной давности, но вроде бы принципиально за эти 4 месяца ничего не поменялось.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
13 марта 2024 г.
Ответ на: комментарий от loveFX

Если б в Crystal была коммерция он бы может наконец взлетел. Пока никакой особой коммерции - денег с пожертвований им хватает примерно на 1 (одного) фуллтайм программиста. Как раз недавно прогнали с этого поста чувака который во многом запилил поддержку винды и вернули того который сделал многопоточный шедулер.

А так это мой любимый язык. Синтаксис руби, скорость llvm, строгая типизация лучше чем в паскале. Из минусов разве что сборщик мусора (хотя с тех пор как я стал фанатом ецс он меня почти не напрягает и теоретически можно поднапрячься и избавиться от него) ну и время компиляции, да - оно не так чтобы большое, но на фоне, скажем, fpc - оно напрягает. Экосистему я минусом считать отказываюсь, все равно если писать своё она будет еще хуже, а существующим языкам до кристалла по красоте (имхо) далеко. Ну и есть генератор байндингов к сишным библиотекам.

Сделал на нем кучу игор на джемы, несколько никому не нужных библиотек и даже на работу смог маленькое гуи приложение на нем протащить (а потом дельфи fmx портировали на линукс, смысл писать новое гуи пропал если можно скомпилить под линукс старое, а шеф вообще фанатом питона стал).

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

Ой какую тему я пропустил в прошлом году =)

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

Ну тебе может и убивают что-то, а я от процесса написания кода на Ruby получаю удовольствие. А вы жрите своей лаконичный Питон.

Короче, вкусовщина сплошная.

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

Шедевр! 🤣 Ну да, куда лучше, когда «this» берется из ниоткуда в классе – «видишь суслика? а он есть!» А вот «self» не суслик, его все видят. Тут мы, кстати, приходим к по-настоящему основной идее Путона: «явное лучше неявного». Хотя бы оцените последовательность реализации заявленного принципа в основополагающей примете языка.

Ну и вызывай тогда «методы» как foo(bar, baz), а не как bar.foo(baz).

Явное же лучше неявного. (с)

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

Именно поэтому есть золотое правило: «одна функция - не длинее одного экрана». Деды еще в 70х придумали.

Знаешь один дзенский афоризм? Щя расскажу.

- В чём суть буддизма? - спросил Бо Цзюи.
- Не делай зла, твори только добро, очищай себя - таково учение всех Будд, - ответил Дорин, повторяя слова исторического Будды.
- Даже трёхлетний ребёнок знает это! - воскликнул Бо Цзюи.
- Верно. Даже дети знают эту заповедь, но восьмидесятилетние старики не могут следовать ей, - ответил Дорин

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

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

а Crystal не пробовал? Потому что мне синтаксис руби казался офигенным но при этом сам руби уж очень тормозным. А Crystal помимо скорости еще и добавляет к синтаксису Ruby строгую типизацию - (почти) нигде типы не указываешь, но если вдруг такого метода нет или не проверили результат на nil, то получаем ошибку не в рантайме а при компиляции.

kipar_2024
()