Size: a a a

2020 October 02

SA

Sergey Arkhipov in rannts
Антон, все бы ничего, однако прямо под боком есть язык, в котором люди очень активно пользуются макросами. Называется Elixir. Вроде в Ruby примерно то же самое. Так вот, дебажить взрывы в Phoenix или даже просто Plug в случае этих макросов - это лютое адище.

Я прямо уверен, начнут появляться невинные поделки с макросами, а затем какому-нибудь дебилу придет в голову, что смотрите как можно веб-фреймворк сделать. Макросы на гет/пост и... родится новый Феникс.

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

БС

Байт Словович... in rannts
хорошо что ты не все и не принимаешь участие   обсуждении пепа :-)
источник

БС

Байт Словович... in rannts
то что найдется дибил который родит феникс, ну и пусть. Ты не будешь им пользоваться.
источник

SZ

Sergey Z in rannts
Sergey Arkhipov
Антон, все бы ничего, однако прямо под боком есть язык, в котором люди очень активно пользуются макросами. Называется Elixir. Вроде в Ruby примерно то же самое. Так вот, дебажить взрывы в Phoenix или даже просто Plug в случае этих макросов - это лютое адище.

Я прямо уверен, начнут появляться невинные поделки с макросами, а затем какому-нибудь дебилу придет в голову, что смотрите как можно веб-фреймворк сделать. Макросы на гет/пост и... родится новый Феникс.

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

SA

Sergey Arkhipov in rannts
Макросы в Эрланге еще ну так себе. Парстрансформейшны - это и есть те самые синтаксические макросы
источник

KK

Kirill (Cykooz) Kuzm... in rannts
В целом я согласен с Серёгой. Для меня макросы - это попа-боль в Rust. Их там даже два типа:
- декларативные - можно сравнить с макросами для C, только они работают на уровне токенов парсера
- процедурные - это по сути плагин для компилятора написанный на самом Rust, который имеет информацию не только о токенах, но и о типах данных и им можно делать крутые штуки.

И вот я такой радостный пришёл в Rust - наконец-то IDE будет мне давать исчерпывающую информацию о всех типах данных, всякие автокмплиты и GoTo Definition. Но хер бы там - макросы, блядь, во все поля. И если с декларативными макросами кое как научились в Idea разбираться. Парсят их с некоторыми ограничениями на глубину вложенности. То вот с процедурными всё достаточно печально - это же по сути нативный код, который несколько сыкотно запускать в IDE.
При этом ни там ни там нет Goto Definition. А глазами парсить эти макросы - сомнительное удовольствие. Есть утилитка, которая может тебе весь проект или один модуль "раскрыть" и выплюнуть этот код в консоль - ищи нужный тебе кусок кода сам.
источник

БС

Байт Словович... in rannts
ну дык не используй.. Зачем ты макросы используешь в расте?
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Я и не использую. Только вот все фреймворки их используют
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Даже стандартный println!() - это макрос (хорошо хоть что декларативный)
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Штука мощная, я не спорю - но вот с IDE и отладкой она не дружит почти ни как. Наверное IDE ещё не доросли до этого. Если бы они умели налету раскрывать макросы и показывать код, который они генерят - тогда было бы меньше боли.
источник

БС

Байт Словович... in rannts
это надо в язык встроить возможность, чтобы результат работы макросов отдавать в нормальном виде для дебага и для IDE
источник

SZ

Sergey Z in rannts
Байт Словович
ну дык не используй.. Зачем ты макросы используешь в расте?
наверно это тот случай когда надо привести аналогию из политоты, когда занесли что-то в качестве закона/возможности, ты этого не хотел, но некоторые начали этим активно пользоваться и ты от этого страдаешь.

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

БС

Байт Словович... in rannts
Как наличие макросов заствит страдать тех кто ими не пользуется?
источник

БС

Байт Словович... in rannts
Ну вот теже метаклассы? Ты страдаешь от того что я иногда делаю метаклассы?
источник

SZ

Sergey Z in rannts
ну вот будем мы с тобой в одной команде, ты будешь писать горы метаклассов и макросов, и тебе будет норм.
а я буду страдать, но ты начальник а я дурак.
так и живём.
источник

SZ

Sergey Z in rannts
написал я конечно не про буквального тебя, а про любого коллегу в вакууме, которому норм и неебёт на мнение коллег
источник

РГ

Роман Гладков... in rannts
заставляете все изменения проходить через peer-review и больше никаких метастаз^Wметаклассов
источник

SZ

Sergey Z in rannts
это если у тебя есть политический вес заставить проходить изменения через какие угодно ревью.
источник

AM

Artem Malyshev in rannts
Kirill (Cykooz) Kuzminykh
В целом я согласен с Серёгой. Для меня макросы - это попа-боль в Rust. Их там даже два типа:
- декларативные - можно сравнить с макросами для C, только они работают на уровне токенов парсера
- процедурные - это по сути плагин для компилятора написанный на самом Rust, который имеет информацию не только о токенах, но и о типах данных и им можно делать крутые штуки.

И вот я такой радостный пришёл в Rust - наконец-то IDE будет мне давать исчерпывающую информацию о всех типах данных, всякие автокмплиты и GoTo Definition. Но хер бы там - макросы, блядь, во все поля. И если с декларативными макросами кое как научились в Idea разбираться. Парсят их с некоторыми ограничениями на глубину вложенности. То вот с процедурными всё достаточно печально - это же по сути нативный код, который несколько сыкотно запускать в IDE.
При этом ни там ни там нет Goto Definition. А глазами парсить эти макросы - сомнительное удовольствие. Есть утилитка, которая может тебе весь проект или один модуль "раскрыть" и выплюнуть этот код в консоль - ищи нужный тебе кусок кода сам.
То ли дело racket. Там и макросы нормальные, и линтер сразу для них генерируется, и ide поддерживает. Сразу видно инопланетяне писали.
источник

РГ

Роман Гладков... in rannts
Sergey Z
это если у тебя есть политический вес заставить проходить изменения через какие угодно ревью.
ну с "если" то можно и в продакшене код менять)
источник