1. Инфраструктура на будущее не нужна и запрещена. Всё равно придётся ломать API. Боль от миграций надо уменьшать другими способами (LTS версии, конвертаторы кода, методы-прокладки, shading, etc.) & 2. Ни единого дубликата кода быть не должно. Дубликация кода это не рациональное решение, это нехватка мозгов для его исправления.
>>3457776 (OP) А как вы вообще на работу устраиваетесь на жабе? ИДЕ и нейронка сейчас пишет весь код за программиста, джуны не нужны в принципе. Да и сама жаба вскоре отпадет, когда в контекст нейронки можно будет запихнуть весь проект на миллиарды строк кода и она за секунду выдаст код на современном языке типа голанга.
>>3457963 >Да и сама жаба вскоре отпадет, когда в контекст нейронки можно будет запихнуть весь проект на миллиарды строк кода и она за секунду выдаст код на современном языке типа голанга. Не забывай про ежедневный приём таблеток.
>>3457962 Чтобы убрать полностью дубликацию кода надо сделать систему типов очень мощной и разрешить жаванам делать очень много всякого. Неглупые люди сверху на это не пойдут. Они же понимают, кто такие жаваны и насколько им опасно давать такие инструменты.
Без этого дубликация в той или иной степени все равно будет, терпим..
>>3458053 Я же уже сказал, что тебе еще надо? Без kind у тебя нет четкой разницы между контекстом и значением, иначе говоря коллекции и значения - это одно и то же. Что из этого следует, ты не можешь сделать метод, который абстрагируется не по значению, а по тому, что его как бы хранит. Типа того: <A, B, F> F<B> functor(F<A>, Function<A, B> f);
Также без kind у тебя есть только крайне ограниченные интерфейсы, а не тайпклассы.
>>3458074 Ну это базовый уровень. Функтор фактически интерфейс для функции map любой коллекции. Потом идет развитие из функтора в аппликативный, если раньше функтор принимал чистую функцию и обернутое контекстом значение, а потом сливал их, то теперь он берет обернутую контекстом функцию и обернутое контекстом значение. Ключевая разница в том, что теперь сливаются два контекста. <A, B, F> F<B> applicative(F<A> v, F<Function<A, B>> f); Третье и финальное развитие - это bind. Когда на входе чистая функция, которая в итоге оборачивает результат в контекст и значение в контексте. Bind по сути берет и вытаскивает из контекста значение и передает этой функции, получая еще один контекст. <A, B, F> F<B> bind(F<A> v, Function<A, F<B>> f); <A, F> F<A> pure(A a); Пример в жабе, это map - https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html#map-java.util.function.Function- это bind - https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html#flatMap-java.util.function.Function- Тогда Functor - это интерфейс для map, а Monad интерфейс для bind, ну и еще pure. Как вершина, типы позволяют изолировать ресурсы, создавая сколемы - https://thoughtsfactorial.com/posts/2021-08-07-the-st-trick/ В виде картинок, может понятнее будет - https://www.adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html
>>3457968 Чел, что ты несешь. Для систем-типов-enjoyеров уже всю дорогу существовала скала, которая жила-жила, да так и померла. Какие нахуй неглупые люди...
Всем давно и плотно похуй на дубликацию кода. Программисты необучаемые блять - косплеят жалкие косплеи на ФП да переизобретают одно и то же по тыще раз, называя это развитием. Никакой теории заговора не надо.
И вот ты говоришь - "нужно сделать систему типов мощной джаванам"... Нахуя, если джаваны даже половины возможностей имеющейся системы типов не используют?
Чтобы эффективно работать в мощной системе типов, надо уметь мыслить абстракциями. А для этого надо чтобы мозг иметь хотя бы чуток прокачанный в математический уклад, чтобы не выпадать в осадок от пресловутых названий артефактов из терката. А таких людей не то чтобы много. На порядки меньше чем лоускильных квадратногнездовых промптеров. Поэтому джава именно такая, какая есть. Живи с этим.
>>3458335 Так это не я же предлагал убрать дубликацию, я наоборот согласен с тобой, что это не баг, а фича жабы. Все правильно делают, жаванам ничего доверить низя, что явно показывает история с unsafe
>>3458335 чел, индустрии надо чтобы чем более лоускильная макака может высирать рабочий код - тем лучше. Тем продукты дешевле и маржа больше. Нахуй никому не нужен твой пердолинг и вышмат, он денег не приносит
>>3458335 >>3458580 О каких скиллах ты говоришь, если ты не способен в базовое изложение своей мысли? Не говорю даже о том что ты не осилил даже систему типов джавы. Ты тупой дегенерат, гиперкомпенсирующий это самоудовлетворениями через рассказы твоей мамки что раз никто тебя не понимает то ты самый умный.
>>3458598 Да. Залутал себе недавно повышение, после того, как в одиночку в полу-функциональном стиле переписал лагающий как говно сервис, который стайка промытых дебилов не могла год (!) оптимизировать. Теперь их зарплаты принадлежат мне, хехе.
>>3458815 >в функциональном стиле >оптимизировать Выбери что-то одно.
> Теперь их зарплаты принадлежат мне, хехе. Если отойти от того что вся эта история пиздёж который палится на банальном непонимании вообще всего, что можно понимать, можно проиграть с веры в святой срыночек. На полном серьёзе думать что в такой ситуации, даже в случае повышения, а не простого "спасибо", 98% дополнительной прибыли не забрал бы себе кабан, а маняоптимизатор не получил бы на рыло +10к к зп?
>>3458832 > редактуры Какой редактуры? Это шизофазия. Смысла в этом нет. Это не редактура.
> Дюже интересно, на основании чего ты сделал такой вывод На основании того, что система типов джавы всеобъемлющая, а тебе её внезапно не хватило для чего-то, что намекает на вывод о том что тебе не хватило лишь мозгов.
Ну говорю же - промытка. Все, иди уже траву трогать
>веры в святой срыночек
Зачем верить. Оклад жирно подняли - чек. Лычку до арха подняли - чек. Дебилов на мороз выгнали - чек. А то что кабан там свои сверхплибыри получает - мне похуй. Заглядывать в чужой карман - удел инфантилов и коммуняк в острой стадии.
>>3458843 > Ну говорю же - промытка. Все, иди уже траву трогать Слив засчитан.
> Зачем верить. Оклад жирно подняли - чек. Лычку до арха подняли - чек. Дебилов на мороз выгнали - чек. А то что кабан там свои сверхплибыри получает - мне похуй. Заглядывать в чужой карман - удел инфантилов и коммуняк в острой стадии. Жирно это с безумных 150к до фантастических 200к? Лул.
>>3458844 Даже не так. Ещё забавнее. Вот. >>3457970. Тупой дегенерат, непреклонно верующий в свою умственную исключительность (что правда, только в обратную сторону), порвался с того что ему сказал что он тупой дегенерат раз повторяет писанину свою и начал обвинять монитор и сидушку в проблемах прокладки между ними.
>>3458870 Что карактерно, функтор-фаг (>>3458369) сразу адекватно отшутился и ушел в закат. А ты рвешься полтреда. Сходи на улицу, сходи, малой - трава тебя ждет.
>>3458780 У меня нет диагноза, чтобы пить таблеточки. Тебе судя по всему виднее.. Какие посоветуйте? >>3458847 Это разные люди, це ми >>3458002 . Впрочем и я тоже не топил, что в жабы нужна прям мощная система типов. Нет, ЕСЛИ нужно убрать дубликацию кода, то надо сделать Х. Но мне лично никак не мешает дубликация и бойлерплейт, чего я очень много раз тут писал. Напоминаю дежурно - лобок говно.
Для спрингозависимых, я считаю, что дубликация была, есть и будет и для жабы это норма. Если тебя не устраивает, единственный вариант - терпеть. Если читать не попой, то ты не найдёшь противоречий.
> Впрочем и я тоже не топил, что в жабы нужна прям мощная система типов. Нет, ЕСЛИ нужно убрать дубликацию кода, то надо сделать Х. > Но мне лично никак не мешает дубликация и бойлерплейт, чего я очень много раз тут писал.
> Для спрингозависимых, я считаю, что дубликация была, есть и будет и для жабы это норма. Если тебя не устраивает, единственный вариант - терпеть. Если читать не попой, то ты не найдёшь противоречий. Аргументов как я понимаю помимо повторения одного и того же уже обоссанного по 500 раз не будет?
>Напоминаю дежурно - лобок говно. А я в ответ проигрываю дежурно с дегенерата который оправдывает бойлерплейт от своих кривых рук инструментами и рвётся от решения последних проблем этих инструментов, ведь оправданий своим кривым рукам больше вообще не остаётся.
Я с тобой и не начинал спор, потешный. Нахуй ты мне сдался, о чем с тобой вообще говорить? Меня функциональщик выше заинтересовал, у которого нет kind и который запостил лекцию об артефактах терката со ссылками, с ним я и перекинулся парой комментов. Че ты влез и что донести пытаешься - известно лишь твоему полыхающему очку, не иначе.
>подразумевает что скала чем-то лучше джавы в плане типов
А ты решил по этому поводу чтоли поспорить? Малой, остановись - не загоняй себя в залупу...
>>3458889 > А ты решил по этому поводу чтоли поспорить? Малой, остановись - не загоняй себя в залупу... Я как бы с самого начала именно по этому ссал долбоёбу которому яйца танцевать мешают на рожу.
>>3458887 >нет ты Да сдался ты мне. Я ж собой интересуюсь, какой диагноз и тд. >рвётся от решения последних проблем Мы говорим об инструменте, который не может для дочернего класса-имплементации сгенерить конструкторы или сделать хоть что-то с рекордом/совместить гет и сет. Это якобы решение сплошь и рядом пронизано какими-то дебильными ограничениями. И бойлерплейт из одной области - поля класса, перетекает в область анноташек. Открываешь класс, а он весь желтый блять. Четка.
>>3458949 > Да сдался ты мне. Я ж собой интересуюсь, какой диагноз и тд. Я не психиатр, я программист. Хотя могу предположить что тебя в детстве били, какие таблетки против этого не ебу.
> Мы говорим об инструменте, который хрю пук хрю пук >1 Композицией воспользуйся, делов-то. Или билдером. Не велика проблема и точно не делает ВЕСЬ ломбок говном.
>2 Ты какие ещё геттеры аннотации добавлять собрался?
>3 Нахуй тебе геттеры рекорду, шизяра?
> Открываешь класс, а он весь желтый блять. Четка. Тебя жёлтые в детстве выебали?
>>3458952 >Или билдером Билдер не дает гарантии, что все обязательные поля будут хоть чем-то заполнены. Т.е. скажем добавил я поле и потом надо искать через using все это и добавлять везде, в случае конструктора - ошибка компиляции. >Композицией воспользуйся Мне иерархия нужна. Ты не видишь, что это event? Мне нужны супертипы, для слушателей типа логгеров. >Ты какие ещё геттеры аннотации добавлять собрался? Я хочу совместить две аннотации лобка в одну общую. Чтобы я не ставил @Getter @Setter, а просто @GetSet. Ну это в самом простом случае. Ишью с 15 года для этого - https://github.com/projectlombok/lombok/issues/557 >Нахуй тебе геттеры рекорду, шизяра? Допустим существует древнее говно, которое не поддерживает fluent getter.
>Я не психиатр Ну и не ставь мне диагнозы. Мне неприятно.
>>3458969 > Ну и не ставь мне диагнозы. Мне неприятно. Не нужно быть психиатром, чтобы понять наличие психических заболеваний. Психиатром нужно быть чтобы их по психиатрическим нормам классифицировать.
> Я хочу совместить две аннотации лобка в одну общую. Чтобы я не ставил @Getter @Setter, а просто @GetSet. Ну это в самом простом случае. Ишью с 15 года для этого - https://github.com/projectlombok/lombok/issues/557 Ну пиздец уписался бойлерплейта, лишнюю аннотацию повесил. Ещё претензии к лобку будут?
> Мне иерархия нужна. Ты не видишь, что это event? Мне нужны супертипы, для слушателей типа логгеров. Зачем тебе иерархия для ивентов? Ты про мультиколл, например слушаешь AbstractFoo, а тебе прилетает FooZalupnii и FooBanketnii? Это респонсибилити шины ивентов, где нужен альтернативный наследованию способ реализации мультиколла.
> Допустим существует древнее говно, которое не поддерживает fluent getter. Так и рекордом тогда не пользуйся.
>>3458995 >чтобы понять наличие психических заболеваний Еще раз. Мне неприятно. Делай мне приятно, в чем ваша проблема??? >лишнюю аннотацию повесил Не утрируй. У меня по пять аннотаций минимум, начиная с гетсет, заканчивая акцессорами и филддефолтами. Вот какую себе задачу ставит лобок? Убрать бойлерплейт и он с ней не справляется, просто перенося этот бойлерплейт в анноташки. Может это и короче, но шило на мыло. И с кучей исключений, когда случай сложнее pojo. >где нужен альтернативный наследованию способ реализации мультиколла Пример давай. Я просто пик хуйнул. Вчом я неправ >Так и рекордом тогда не пользуйся. Нет, хочу рекорд. Его оракл больше любит и добавляет ему нескучные фичи.
>>3459016 > Еще раз. Мне неприятно. Делай мне приятно, в чем ваша проблема??? Ну заплачь, дегенерат.
> У меня по пять аннотаций минимум, начиная с гетсет, заканчивая акцессорами и филддефолтами. Это ты утрируешь, лол.
> Убрать бойлерплейт и он с ней не справляется, Справляется. Есть дырки просто где он не убирает ВЕСЬ бойлерплейт, но это мизер.
> Пример давай. Я просто пик хуйнул. Вчом я неправ Какой ещё пример? Это ты показываешь примеры, я лишь попытался угадать что в твоей дурной головушке было.
> Нет, хочу рекорд. Его оракл больше любит и добавляет ему нескучные фичи. Придётся без нескучных фич.
>>3459020 >Ну заплачь Я и заплачу, ты че думаешь, хех.. >но это мизер В моих юзкейсах обычно или лобок принципиально становится бесполезен иба слишкам сложна или наоборот, просто все в этих аннотациях.. Золотой середины просто нет, ты или терпишь или терпишь. >Какой ещё пример? Ну создается событие в spring-event. Я хочу его подслушать, для целей логгирования. Создавать для каждого события отдельный подслушиватель глупая затея, вот делаю централизовано - по иерархии классов просто подслушиваешь и усе. Потом порядок задается с помощью BEFORE_COMMIT и AFTER_COMMIT. Удобно. Ты говоришь, что это неправильно. Как правильно? >Придётся без нескучных фич. Ну придется без лобка. Пошел он нахуй, правила мне навязывать.
>>3459031 > В моих юзкейсах обычно или лобок принципиально становится бесполезен иба слишкам сложна или наоборот, просто все в этих аннотациях.. > Золотой середины просто нет, ты или терпишь или терпишь. Могу предположить что юзкейсов у тебя значит вообще не было и ты экстраполируешь какое-то теоретическое тыканье. Я пишу кода дохуя, лобка хватает, иногда терпеть приходится конечно, но хули нам джаванам не особо часто это встречается и точно не чтобы отказываться от лобка от этого.
> Ну создается событие в spring-event. Я хочу его подслушать, для целей логгирования. Создавать для каждого события отдельный подслушиватель глупая затея, вот делаю централизовано - по иерархии классов просто подслушиваешь и усе. Потом порядок задается с помощью BEFORE_COMMIT и AFTER_COMMIT. Удобно. > Ты говоришь, что это неправильно. Как правильно? Это и есть мультиколл. Мультиколл должен быть отделён от иерархии в том числе по этой причине (а вообще там миллион причин почему и когда не нужна иерархия, но нужен мультиколл).
> Ну придется без лобка. Пошел он нахуй, правила мне навязывать. "сгорел сарай, гори и хата"? Чем мешает это тебе использовать его за исключением этого странной надуманной ситуации где тебе внезапно нужны обозначенные словом гет методы в рекорде?
>>3459035 >юзкейсов у тебя значит вообще Ну конечно не было, ты же лучше меня все знаешь, какой код я писал, что занимаюсь, какое у меня хобби, где работаю. >Мультиколл должен быть отделён от иерархии Я не понимаю, что ты имеешь ввиду. > за исключением этого странной надуманной Всяко лучше выкидывания рекорда, для того чтобы удолетворить требования лобка. Впрочем похоже, если отдельно на каждый параметр геттер накинуть, то все ок. Звучит логично, конечно, а не как дебильная хрень.
>>3459042 > Ну конечно не было, ты же лучше меня все знаешь, какой код я писал, что занимаюсь, какое у меня хобби, где работаю. Я тебе показал причины по которым я это считаю.
> Я не понимаю, что ты имеешь ввиду. Отвязка вызова множества ивентов через одну точку от иерархии.
> Всяко лучше выкидывания рекорда, для того чтобы удолетворить требования лобка. Ты в первую очередь пытаешься удовлетворять требования какой-то легасной хуйни которой ОБЯЗАТЕЛЬНО нужно иметь метод названный через get. У неповески геттера на рекорд есть причины — нахуй тебе геттеры в рекорде где они уже генерируются? Впрочем можешь попробовать скомпилировать, мб это вообще баг плагина для жидеи чисто.
>>3459061 >от иерархии Нет, а как ты это сделаешь? Под каждый event отдельный подслушиватель, который вызывал бы общий метод для логгирования или че? Ну заебно писать 100500 методов. Или их маркируют как-то.. >пытаешься удовлетворять требования какой-то легасной хуйни Это совершенно другое, тебе не понять. >есть причины Например? Чтобы меня побесить? И это не баг жидеи
>>3459069 > Нет, а как ты это сделаешь? Под каждый event отдельный подслушиватель, который вызывал бы общий метод для логгирования или че? Ну заебно писать 100500 методов. Или их маркируют как-то.. Создаётся метаивент и добавляются методы конвертирования в этот метаивент. Слушается метаивент. Конечно должна быть поддержка этого со стороны шины ивентов, например автоматическая конвертация по той же иерархии или по полям при эксплицитном объявлении. Без поддержки платформы тоже можно, хоть ты правда и сказал заёбно, но 100500 надо писать не под каждую задачу, а под каждый метаивент, что на уровень меньше.
> Например? Чтобы меня побесить? И это не баг жидеи Я же буквально в том же посте сказал её...