В каком смысле «результатов»? Я не могу же опубликовать куски проекта из-под NDA.
Ну вот, библиотека, сделанная по описанию (ноль ручных правок, рабочая версия с первого раза, три дополнительные итерации по итогам пожеланий сообщества): https://hexdocs.pm/marcli/readme.html
Я вообще, я имел в виду, что вот мой опыт, он мне нравится, если хотите — попробуйте сами.
Если разработчик был столь любезен, что не поломал обратную совместимость в типах — мне удалось добиться рабочего релоада. Но если состояние процесса раньше было типа User, а теперь ExtendedUser — всё ломается, и я не могу придумать, как это починить. Скорее всего, это действительно либо просто невозможно, либо нецелесообразно.
И тут ворвались вы, в белом плаще и на вороном коне:
Все возможно. Только начинать надо с фундаментальных классических трудов, а не с новомодных веяний.
И тут, спустя некоторое количество комментариев, выясняется, что:
Соответственно, это накладывает определенное требование И НА всех и любого клиента, и это требование уровня проектирования системы и предусмотренной возможности расширения этой системы.
О как. Требование-то, оказывается, значительно жёстче, чем у меня (я всего-то просил тип в одном месте сохранить). Вы можете себе позволить рассказывать клиентам (пользователям вашего кода) — как им жить и по каким канонам писать код. Ну что ж, в таких условиях и студент напишет хотрелоад (а я даже написал, вместо демагогии про «правильные архитектуры»).
Может вам будет интересно, […] на Хабре
Нет, мне не интересно, что происходит на хабре. Когда-то, чуть меньше двадцати лет назад, тут водились профессионалы. Сейчас — я захожу только удовлетворить серпентологическое любопытство, да поставить психологические эксперименты над местными хомяками.
Это вот тот самый «фундаментальный классический труд», разрекламированный выше? Понимаю, сам рыбак.
«Абсолютная инкапсуляция» — понятие, которое пришлось придумать в мире ООП, когда был вывернут наизнанку, изгажен до неузнаваемости и фактически испорчен термин «полиморфизм». Круто, чё. Я уже прямо приготовился к каким-то откровениям, а тут банальщина из пятого класса церковно-приходской школы.
Ну и ладно, я со своими (если даже и общепринятыми в разработке) терминологиями в чужие монастыри не хожу. Не потрудитесь объяснить, как мне все это поможет в описанной ситуации (виртуальная машина BEAM без остановки принимает и должна адекватно обработать изменившийся код в ситуации, когда у нас запущено сто тысяч легких эрланговских процессов со старым кодом, и начинают запускаться новые с новым кодом)?
Не, с плюсами-то всё понятно, мы просто выкинем нахрен из их сессий сто тысяч пользователей, остановим весь мир, подменим исполняемый файлик и улюлю. Но меня такие синтетические примеры не очень интересуют. Я останавливать сервис не могу, пардон, простите уж за такое уважение к пользователям.
На вашем языке: плагин изменился и перекомпилировался, но старая версия продолжает использоваться в уже загруженных сессиях. Как вызывающий код должен понять, можно Енкодеру (ваша терминология) передать среди прочих новый параметр, или нет, если старый код рухнет, увидев его, а новый — откажется работать без него?
А теперь давайте рассмотрим тот же самый пример, но на завтипах. (Шутка, не нужно его рассматривать, там всё сложно.)
Технологии виртуальной машины эрланга — больше сорока лет, и она прекрасно справляется до сих пор, пока не натыкается на попытку изменить тип внутри даже заинкапсулированной по самое незабалуйся функции. Тепличные примеры с остановкой мира, повторюсь, не интересуют: я не имею права так издеваться над пользователями.
Типичный хабракомментарий: напыщенный, глубокомысленный, пустой и безнадёжно бесполезный.
С каких ещё трудов? Почему именно с них надо начинать? Кому-то удалось это «всё возможно» сделать, хотя бы авторам этих мифических «трудов»? И, наконец, что именно позволяет думать, что я — необразованный баран?
В общем, хабр во всей его красе: профессионализма — ноль, одни надутые щеки и общие слова.
Вот тут: https://github.com/Nikita-Filonov/ai-review/pull/4 видно, что инструмент предупреждает о делении на ноль. Это же без статического анализа делается, так? Иными словами, PR на несколько тысяч строк (я в курсе, что лучше так не делать, но мир жесток) — будет жрать токены как не в себя и может не уместиться в контекст, так?
Ну я человек простой: рекомендуют проверить — я проверяю. Чтобы не отставать от хайпа, я реализовал акторную модель правильно (как она реализована в эрланге) — и понял, что на этом моё знакомство с растом и закончится: мне визуально не нравится синтаксис, а этого достаточно, чтобы себя от него изолировать.
Но библиотеку я опубликовал, ей даже кто-то пользуется, надо проверить, решил я.
test epmd::server::tests::test_handle_list_nodes ... error: unsupported operation: `clock_gettime` with `REALTIME` clocks not available when isolation is enabled
--> /home/am/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/pal/unix/time.rs:107:22
|
107 | cvt(unsafe { libc::clock_gettime(clock, t.as_mut_ptr()) }).unwrap();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unsupported operation occurred here
|
= help: set `MIRIFLAGS=-Zmiri-disable-isolation` to disable isolation;
Ну как так-то? Нет, MIRIFLAGS=“-Zmiri-disable-isolation” cargo +nightly miri test прошёл, UB у меня, вроде, нет. Но что-то не так в стандартной библиотеке, в коде, который отвечает за операции со временем (!). Серьёзно?
Дело не в том, что я думаю про себя, а в том, как я себя веду. За двадцать лет карьеры на околоруководящих должностях я ни разу не позволил никому отчитать своих подчинённых даже за минимальную оплошность. Однажды мне это стоило увольнения с очень хлебного места, но попытка что-то поручить людям, за которых я отвечаю, или проверить что-то, связанное с их работой, — пресекается безжалостно.
Лермонтова Вы зря задели, он Вам лично ничего плохого не сделал
Во-первых, он у меня несколько стихотворений украл, испортив рифму и нашалив с размером. Во-вторых, право говорить «зря», или «не зря» я что-то сделал — надо заслужить, иначе это выглядит площадным хамством.
Мой личный кодекс руководителя можно легко уместить в одну фразу, сказанную больше двухсот лет назад одним талантливым но излишне пылким рифмоплётом: «Слуга царю, отец солдатам».
С поправкой на то, что слуга тут играет роль шута, которому многое дозволено, и с которым царь советуется, а к мнению — прислушивается.
Ух ты, новое слово в макросостроении! Может, всё-таки, анонимным функциям (closures)? А то это уже не гигиена, а артериальное огораживание (кровь не поступает).
У вас жена, что ли, из богатой семьи? Или вы таксуете по ночам? Не может же быть, чтобы вам кто-то платил за разработку.
Любое решение, завязанное на IDE (и любой иной инструментарий, кроме консольных пайпов) — мертворожденное говно, которое никогда не взлетит вне очень узкого круга академических структур.
Wolfram Mathematica — блистательнейший инструмент, опередивший время на десятилетия. Требовал своего IDE. Остался игрушкой для продвинутых студентов.
Про Матлаб вообще говорить смешно: сделай они импорт/экспорт в текстовые форматы двадцать пять лет назад — уже покорили бы мир.
Список бесконечен.
текст на экране должен соответствовать некоторому мета-языку который напрямую генерирует для имеющихся компиляторов
Я уже раз триста, по-моему, вам сказал: мета-язык никому не должен ничего генерировать, чтобы генерировать — обычные компиляторы подойдут, они и так (нормальные, современные, речь не идет, разумеется, про наколеночные поделия типа го/раста и про мастодонтов типа питона/плюсов) работают с AST.
Ну отвлекитесь вы от витания в облаках, посмотрите, что люди уже сделали, даже ваш собеседник вон приложился: https://hexdocs.pm/metastatic/
А мне кажется, это вы не очень уловили, что написали.
есть вещи естественные для человека, а есть неестественные
Абсолютно.
Потому что утка крякает. А не шум издать утка. Не мыслят люди так.
Да ну? Что там за шум? — Это утка в камышах. «Утка крякает» — это примитивизм, который покрывает только простейшие императивные жизненные ситуации. Чуть более сложные — уже нет.
должны различать «посмотреть все методы утки» и «посмотреть все функции на свете, которые принимают что-то типа утки»
Второе — тривиально (даже grep с удовольствием покажет все имплементации). Первое — в ООП практически невозможно. Потому что вот тот джун унаследовал от утки утконоса (ну ему так показалось, что они похожи), и у вас теперь тут инстанс утконоса, на котором определен метод «не эволюционировать», а метод «крякать» бросает экспепшн. Но по коду, в котором вы понятия не имеете, какой монстр скрывается за каждой переменной, это увидеть совершенно нельзя.
Вы приводите очень хороший аргумент: «есть вещи естественные для человека, а есть неестественные». Но ошибаетесь в том, что естественно мыслить в категориях объектов и методов. Естественно мыслить в категориях сущностей и сообщений (причем, асинхронных). Я не могу заставить вас понять эту прописную истину эксплицитным вызовом метода понять на истансе dz. Я могу только отправить сообщение (комментарий) и надеяться, что вы его получите, а потом обработаете, а потом — если захотите — еще и уведомите меня об этом.
Вот так на самом деле устроен окружающий мир. И такая модель на самом деле для человека естественна, потому что она моделирует именно его, а не безумные рабовладельческие фантазии наподобие утка.крякать. Ну подите заставьте утку крякать, если уж на то пошло. Поэтому там всегда _наблюдаемое_, то есть — шум, издаваемый уткой (если нужен полиморфизм).
А я как раз не на должности тимлида, чтобы смузихлёбы не могли вот эту шарманку затянуть. Я разработчик, просто хороший.
А то взяли моду: как строители напортачили, или таксист не туда привёз — сразу рублём наказывать, а как самих тех же метлой — сразу «мы нетакусики, нас нельзя штрафовать, мы ранимые».
Мне не надо было ничего узнавать, я прекрасно знал всё и так: при микроменеджменте сложнее околачивать груши.
Я не менеджер (и даже не лид), я разработчик (правда немного привилегированный).
Адекватного работника требование сдавать задачи в срок напугать не может в принципе, только смузихлёбы почему-то опасаются такого невероятного унижения.
Использование заезженных тупых штампов двадцатилетней давности — верный признак отсутствия собственных мыслей.
У нас начальник такой дебил, что не в состоянии в срок подготовиться к изменениям в законодательстве (там-то как раз не совсем дегенераты, они одним днём ничего закрыть не требуют), и не способен ни договариваться с партнерами, ни планировать. Но мы жрём кактусы, прикрываясь оправданием всех некомпетентных работников: «Так надо бизнесу!».
Л. Кэролл, «Алиса в стране розовых волнушек».
Это почему ещё? Уже и порадовать себя после того, как закрыл баг, запрещено?!
В каком смысле «результатов»? Я не могу же опубликовать куски проекта из-под NDA.
Ну вот, библиотека, сделанная по описанию (ноль ручных правок, рабочая версия с первого раза, три дополнительные итерации по итогам пожеланий сообщества): https://hexdocs.pm/marcli/readme.html
Я вообще, я имел в виду, что вот мой опыт, он мне нравится, если хотите — попробуйте сами.
Давайте-ка вернемся к истокам. Я утверждал:
И тут ворвались вы, в белом плаще и на вороном коне:
И тут, спустя некоторое количество комментариев, выясняется, что:
О как. Требование-то, оказывается, значительно жёстче, чем у меня (я всего-то просил тип в одном месте сохранить). Вы можете себе позволить рассказывать клиентам (пользователям вашего кода) — как им жить и по каким канонам писать код. Ну что ж, в таких условиях и студент напишет хотрелоад (а я даже написал, вместо демагогии про «правильные архитектуры»).
Нет, мне не интересно, что происходит на хабре. Когда-то, чуть меньше двадцати лет назад, тут водились профессионалы. Сейчас — я захожу только удовлетворить серпентологическое любопытство, да поставить психологические эксперименты над местными хомяками.
Это вот тот самый «фундаментальный классический труд», разрекламированный выше? Понимаю, сам рыбак.
«Абсолютная инкапсуляция» — понятие, которое пришлось придумать в мире ООП, когда был вывернут наизнанку, изгажен до неузнаваемости и фактически испорчен термин «полиморфизм». Круто, чё. Я уже прямо приготовился к каким-то откровениям, а тут банальщина из пятого класса церковно-приходской школы.
Ну и ладно, я со своими (если даже и общепринятыми в разработке) терминологиями в чужие монастыри не хожу. Не потрудитесь объяснить, как мне все это поможет в описанной ситуации (виртуальная машина BEAM без остановки принимает и должна адекватно обработать изменившийся код в ситуации, когда у нас запущено сто тысяч легких эрланговских процессов со старым кодом, и начинают запускаться новые с новым кодом)?
Не, с плюсами-то всё понятно, мы просто выкинем нахрен из их сессий сто тысяч пользователей, остановим весь мир, подменим исполняемый файлик и улюлю. Но меня такие синтетические примеры не очень интересуют. Я останавливать сервис не могу, пардон, простите уж за такое уважение к пользователям.
На вашем языке: плагин изменился и перекомпилировался, но старая версия продолжает использоваться в уже загруженных сессиях. Как вызывающий код должен понять, можно Енкодеру (ваша терминология) передать среди прочих новый параметр, или нет, если старый код рухнет, увидев его, а новый — откажется работать без него?
А теперь давайте рассмотрим тот же самый пример, но на завтипах. (Шутка, не нужно его рассматривать, там всё сложно.)
Технологии виртуальной машины эрланга — больше сорока лет, и она прекрасно справляется до сих пор, пока не натыкается на попытку изменить тип внутри даже заинкапсулированной по самое незабалуйся функции. Тепличные примеры с остановкой мира, повторюсь, не интересуют: я не имею права так издеваться над пользователями.
Типичный хабракомментарий: напыщенный, глубокомысленный, пустой и безнадёжно бесполезный.
С каких ещё трудов? Почему именно с них надо начинать? Кому-то удалось это «всё возможно» сделать, хотя бы авторам этих мифических «трудов»? И, наконец, что именно позволяет думать, что я — необразованный баран?
В общем, хабр во всей его красе: профессионализма — ноль, одни надутые щеки и общие слова.
Как увижу отхожее место, типа хабра, — сразу тянет испражниться, рефлекс.
Вот тут: https://github.com/Nikita-Filonov/ai-review/pull/4 видно, что инструмент предупреждает о делении на ноль. Это же без статического анализа делается, так? Иными словами, PR на несколько тысяч строк (я в курсе, что лучше так не делать, но мир жесток) — будет жрать токены как не в себя и может не уместиться в контекст, так?
А вот тут: https://github.com/Nikita-Filonov/ai-review/tree/da6aabb5b3a6a494c71991d2ce792c26065c69a0/docs/prompts кажется, что stack-agnostic — невероятно громкое заявление, особенно учитывая, что промпты для других стеков придется писать руками из головы, чтобы повторить вот это: https://github.com/Nikita-Filonov/ai-review/blob/da6aabb5b3a6a494c71991d2ce792c26065c69a0/docs/prompts/python/inline/strict.md?plain=1#L21-L23
А теперь, внимание, главный вопрос: чем это лучше, чем «Клод, сделай мне PR»? Цифры, примеры, юзкейсы?
Ну я человек простой: рекомендуют проверить — я проверяю. Чтобы не отставать от хайпа, я реализовал акторную модель правильно (как она реализована в эрланге) — и понял, что на этом моё знакомство с растом и закончится: мне визуально не нравится синтаксис, а этого достаточно, чтобы себя от него изолировать.
Но библиотеку я опубликовал, ей даже кто-то пользуется, надо проверить, решил я.
Ну как так-то? Нет,
MIRIFLAGS=“-Zmiri-disable-isolation” cargo +nightly miri testпрошёл, UB у меня, вроде, нет. Но что-то не так в стандартной библиотеке, в коде, который отвечает за операции со временем (!). Серьёзно?Дело не в том, что я думаю про себя, а в том, как я себя веду. За двадцать лет карьеры на околоруководящих должностях я ни разу не позволил никому отчитать своих подчинённых даже за минимальную оплошность. Однажды мне это стоило увольнения с очень хлебного места, но попытка что-то поручить людям, за которых я отвечаю, или проверить что-то, связанное с их работой, — пресекается безжалостно.
Во-первых, он у меня несколько стихотворений украл, испортив рифму и нашалив с размером. Во-вторых, право говорить «зря», или «не зря» я что-то сделал — надо заслужить, иначе это выглядит площадным хамством.
Мой личный кодекс руководителя можно легко уместить в одну фразу, сказанную больше двухсот лет назад одним талантливым но излишне пылким рифмоплётом: «Слуга царю, отец солдатам».
С поправкой на то, что слуга тут играет роль шута, которому многое дозволено, и с которым царь советуется, а к мнению — прислушивается.
https://cure-lang.org/ же
Ух ты, новое слово в макросостроении! Может, всё-таки, анонимным функциям (closures)? А то это уже не гигиена, а артериальное огораживание (кровь не поступает).
У вас жена, что ли, из богатой семьи? Или вы таксуете по ночам? Не может же быть, чтобы вам кто-то платил за разработку.
Это макросы Шрёдингера, что тут может быть непонятного?
Если не заглядывать в AST, они есть. А если заглянуть — уже нет. Или наоборот.
———
Я хотел ещё про гигиену спросить, но потом решил, что могу не вынести ответа.
Любое решение, завязанное на IDE (и любой иной инструментарий, кроме консольных пайпов) — мертворожденное говно, которое никогда не взлетит вне очень узкого круга академических структур.
Wolfram Mathematica — блистательнейший инструмент, опередивший время на десятилетия. Требовал своего IDE. Остался игрушкой для продвинутых студентов.
Про Матлаб вообще говорить смешно: сделай они импорт/экспорт в текстовые форматы двадцать пять лет назад — уже покорили бы мир.
Список бесконечен.
Я уже раз триста, по-моему, вам сказал: мета-язык никому не должен ничего генерировать, чтобы генерировать — обычные компиляторы подойдут, они и так (нормальные, современные, речь не идет, разумеется, про наколеночные поделия типа го/раста и про мастодонтов типа питона/плюсов) работают с AST.
Ну отвлекитесь вы от витания в облаках, посмотрите, что люди уже сделали, даже ваш собеседник вон приложился: https://hexdocs.pm/metastatic/
А мне кажется, это вы не очень уловили, что написали.
Абсолютно.
Да ну? Что там за шум? — Это утка в камышах. «Утка крякает» — это примитивизм, который покрывает только простейшие императивные жизненные ситуации. Чуть более сложные — уже нет.
Второе — тривиально (даже
grepс удовольствием покажет все имплементации). Первое — в ООП практически невозможно. Потому что вот тот джун унаследовал от утки утконоса (ну ему так показалось, что они похожи), и у вас теперь тут инстанс утконоса, на котором определен метод «не эволюционировать», а метод «крякать» бросает экспепшн. Но по коду, в котором вы понятия не имеете, какой монстр скрывается за каждой переменной, это увидеть совершенно нельзя.Вы приводите очень хороший аргумент: «есть вещи естественные для человека, а есть неестественные». Но ошибаетесь в том, что естественно мыслить в категориях объектов и методов. Естественно мыслить в категориях сущностей и сообщений (причем, асинхронных). Я не могу заставить вас понять эту прописную истину эксплицитным вызовом метода
понятьна истансеdz. Я могу только отправить сообщение (комментарий) и надеяться, что вы его получите, а потом обработаете, а потом — если захотите — еще и уведомите меня об этом.Вот так на самом деле устроен окружающий мир. И такая модель на самом деле для человека естественна, потому что она моделирует именно его, а не безумные рабовладельческие фантазии наподобие
утка.крякать. Ну подите заставьте утку крякать, если уж на то пошло. Поэтому там всегда _наблюдаемое_, то есть — шум, издаваемый уткой (если нужен полиморфизм).А я как раз не на должности тимлида, чтобы смузихлёбы не могли вот эту шарманку затянуть. Я разработчик, просто хороший.
А то взяли моду: как строители напортачили, или таксист не туда привёз — сразу рублём наказывать, а как самих тех же метлой — сразу «мы нетакусики, нас нельзя штрафовать, мы ранимые».
Мне не надо было ничего узнавать, я прекрасно знал всё и так: при микроменеджменте сложнее околачивать груши.
Я не менеджер (и даже не лид), я разработчик (правда немного привилегированный).
Адекватного работника требование сдавать задачи в срок напугать не может в принципе, только смузихлёбы почему-то опасаются такого невероятного унижения.
Использование заезженных тупых штампов двадцатилетней давности — верный признак отсутствия собственных мыслей.
Перевожу со стокгольмского на русский:
Ясно.
Зумеры изобрели LISP.
Этому поделию больше 15 лет. Оно уже не воскреснет, хватит его раскапывать и пытаться расшевеливать. Там буквально всё сделано неправильно.