Size: a a a

2020 September 21

AB

Alex Bubnov in pro.elixir
я понять не могу, это так идиотов сейчас модно приманивать, синтаксический сахар для синтаксических пчел?..
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
я понять не могу, это так идиотов сейчас модно приманивать, синтаксический сахар для синтаксических пчел?..
Что ты конкретно имеешь в виду?
источник

AB

Alex Bubnov in pro.elixir
Lama Lover
Что ты конкретно имеешь в виду?
Alex Bubnov, [21.09.20 22:31]
да блин. язык можно писать БЕЗ гребаных макросов

Alex Bubnov, [21.09.20 22:32]
более чем достаточно данных

Alex Bubnov, [21.09.20 22:32]
в beam есть атомы, в эликсире есть алиасы и кейвордлисты в конце концов
источник

AB

Alex Bubnov in pro.elixir
для того, чтобы описать что угодно декларативно - не нужен кодогенератор
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
Alex Bubnov, [21.09.20 22:31]
да блин. язык можно писать БЕЗ гребаных макросов

Alex Bubnov, [21.09.20 22:32]
более чем достаточно данных

Alex Bubnov, [21.09.20 22:32]
в beam есть атомы, в эликсире есть алиасы и кейвордлисты в конце концов
Так алиасы создали такую вещь, как разделение неймспейсов
Кейвордлисты делают конфигурацию и опции читаемыми и более интуитивными
источник

AB

Alex Bubnov in pro.elixir
макросы это плохой primary api surface
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
для того, чтобы описать что угодно декларативно - не нужен кодогенератор
Не всегда
источник

AB

Alex Bubnov in pro.elixir
Lama Lover
Не всегда
у тебя в любом случае весь этот dsl сначала соберется в какую-то структуру через module attributes, потом изрыгнется в код.
источник

AB

Alex Bubnov in pro.elixir
хотя, я смотрю в ash.dsl.extension и там всё еще хуже.
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
у тебя в любом случае весь этот dsl сначала соберется в какую-то структуру через module attributes, потом изрыгнется в код.
Да, но писать структуру данных — значит писать огромный конфиг, просто сразу в коде.
Какие у этого проблемы:
Не совсем понятно как описывать взаимодействие с другими такими частями
Структура данных не всегда способно нормально отразить код
Люди говорят на языках, а не конфигами, поэтому некоторые паттерны и общие идеи гораздо проще понять в языке, чем в конфиге
источник

AB

Alex Bubnov in pro.elixir
Lama Lover
Да, но писать структуру данных — значит писать огромный конфиг, просто сразу в коде.
Какие у этого проблемы:
Не совсем понятно как описывать взаимодействие с другими такими частями
Структура данных не всегда способно нормально отразить код
Люди говорят на языках, а не конфигами, поэтому некоторые паттерны и общие идеи гораздо проще понять в языке, чем в конфиге
ну да, лучше смешать данные и их интерпретацию в одну невменяемую компайл-тайм кучу.
источник

AB

Alex Bubnov in pro.elixir
вот я развлекался недавно - набрасывал порт reitit на эликсир, из интереса просто.
reitit написан на не особенно читабельной кложе, без структур, спек и почти без камментов, в него нужно вчитываться и stdlib кложи я толком не знаю, и редактора с lsp у меня нет.
и зачем-то я заглядывал в phoenix.router, где структуры, и камменты, и кодстайл, но при этом dsl на макросах с глобальными переменными.

по высказанной ранее позиции можно понять, какие у меня остались впечатления в сравнении.
источник

AL

Anton Lapshin in pro.elixir
В моём понимании dsl - это ещё один уровень абстракции, как языки программирования сами по себе. И, как и в случае с яп, dsl могут быть в тему или нет, могут быть удобными или нет. Если dsl позволяет ускорить типовую рутину - как, например, генерацию админок, - это, всё-таки, скорее хорошая вещь, нежели плохая. А там, где dsl не позволяет достаточно гибко решить задачу, всегда можно спуститься на уровень вниз, собрав вручную темплейт, контроллер и т.д. соре если очевидные вещи говорю
источник

AL

Anton Lapshin in pro.elixir
Хорош или нет ash надо конечно смотреть внимательно
источник

AL

Anton Lapshin in pro.elixir
Но мой поинт в том, что всё не так однозначно (как и большинство вещей в нашей жизни, кек)
источник

EV

Eugene Vasiliev in pro.elixir
Alex Bubnov
это наверняка уже было для джавы и провалилось.
не, в этих наших рубях есть вот такая шняга
https://github.com/ruby-grape/grape
и она даже немного популярная
источник

AB

Alex Bubnov in pro.elixir
edsl на макросах - нечитаемое говно, пока не доказано обратное, и нужен примерно никогда.
единственное место для макросов - генерация оптимизированных релизных версий.
если в коде нужен using - поздравляю, у вас бойлерплейт, который вы решили замести под коврик, вместо переосмысления "на кой черт мне этот бойлерплейт"
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
edsl на макросах - нечитаемое говно, пока не доказано обратное, и нужен примерно никогда.
единственное место для макросов - генерация оптимизированных релизных версий.
если в коде нужен using - поздравляю, у вас бойлерплейт, который вы решили замести под коврик, вместо переосмысления "на кой черт мне этот бойлерплейт"
Ну ты неправ примерно во всём что ты сейчас написал
источник

AB

Alex Bubnov in pro.elixir
Lama Lover
Ну ты неправ примерно во всём что ты сейчас написал
Всё это сводится к простому - не усложнять на ровном месте то, что можно сделать просто. В чём я неправ?
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
Всё это сводится к простому - не усложнять на ровном месте то, что можно сделать просто. В чём я неправ?
Во-первых, __using__ не про убирание бойлерплейта
Во-вторых, при генерации оптимизированных релизных версий совсем не нужны макросы
В-третьих, почему-то только ты находишь макросы нечитаемыми, когда в большинстве своём хорошие макросы позволяют изящно сократить количество кода и увеличить читаемость
источник