Вы видите копию треда, сохраненную 11 сентября в 01:13.
Можете попробовать обновить страницу, чтобы увидеть актуальную версию.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

Предыдущий: >>3469179 (OP)
хуйню уровня completablefuture и executor не знаю
а самое главное - не разбираюсб в терминологии/бест практис многопоточки
thread диспетчер, thread процессор и прочая хуйня - как я должен о ней узнать? где пишут о создании такой хуйни?
нахуй нужен тред/раннабл если есть КОРУТИНЫ это же виртуальные потоки, да?
>как я должен о ней узнать? где пишут о создании такой хуйни?
Книга с поездами
>нахуй нужен тред/раннабл если есть КОРУТИНЫ
Джавовые корутины - стекфул. У тебя память быстро забьется и еще баги могут случиться из-за чего встанет вообще все. За корутинами обычно следит сборщик мусора, из-за чего STW мусорщик просто встанет на секунд 5-10 (зависит от нагруженности) и все полетит. Корутины круто, не спорю, но стеклесс круче для серверов. В Котлине такие. Потоки же позволяют тебе самолично дергать ровно столько, сколько надо потоков и ты сам ими управляешь, а не алгоритмы какого-то индуса.
> нахуй нужен тред/раннабл если есть КОРУТИНЫ это же виртуальные потоки, да?
Корутины медленные очень и код засоряют. Неудобства ради тормозов.
Ты попал в классическую корпоративную ситуацию: проект сырой, онбординга ноль, документация — адская каша, команда — 1.5 человека. Это не уникальный случай, а реальность в большом количестве энтерпрайзов. Смотри:
📦 1. Стягивай проект и собирай инфу как агент под прикрытием
Твоя первая задача — узнать структуру проекта, не понимая пока сути. Делай это по слоям:
🔹 Уровень 1: "Что это вообще"
Стянуть проект, собрать, посмотреть README.md, docker-compose.yml, build.gradle, .env — всё, что хоть как-то говорит о системах и зависимостях.
Где backend, где frontend (если есть), как запускается, какие микросервисы (если они есть).
Прогнать проект локально, даже если не работает до конца — важно видеть хоть что-то в логах.
🔹 Уровень 2: "Что он делает"
Есть ли какие-то контроллеры (@RestController, @Controller, @RequestMapping) — начинай смотреть с них.
Что вызывает, как это мапится, где хендлеры, где бизнес-логика (Service слои).
Пройдись от входящего запроса до репозитория.
🧠 2. Конфлуенс — не для чтения, а для копания
🔹 Пробей такие штуки:
Архитектура системы (ищи ключевые слова: архитектура, architecture, диаграммы, структура).
CI/CD пайплайны — ты должен понимать, как твой код попадает на dev/stage/prod.
Контракты API — swagger, postman, openapi — если найдешь, тебе будет сильно легче.
📌 Если конфлуенс кишит сотнями страниц: используй поиск. Ищи по ключам: auth, env, run, deploy, architecture, flow, login, token, jira, dev-url, db.
👤 3. Доставай второго бэка — максимально вежливо, но настойчиво
Вот как:
Привет! Я только подключился к проекту, пока немного теряюсь в структуре — можешь, пожалуйста, подсказать, с чего лучше начать? Есть ли какой-то минимальный онбординг, или хотя бы цепочка "от запроса до базы", чтобы врубиться? Очень помогло бы 🙏
— Если нормальный человек — поможет.
— Если не отвечает — пробей у тимлида/ментора/пм-а — попроси назначить buddy.
🧩 4. Строй ментальную карту проекта
Параллельно с копанием — веди личный Notion/Obsidian/Markdown. Заноси туда всё, что понял:
Бизнес-фичи и какие модули за что отвечают.
Как логика течёт по слоям.
Названия сервисов, баз, очередей, шины, брокеры.
Это даст тебе контроль над хаосом.
🛠️ 5. Изучай стек по ситуации
Твоя задача — выучить не “всю Джаву”, а именно тот стек, который юзается в этом проекте.
Проверь:
Spring Boot (какая версия? webflux или обычный mvc?)
Security (OAuth2? JWT? Keycloak?)
Базы: PostgreSQL? Oracle? Mongo?
Kafka / RabbitMQ?
Swagger / OpenAPI?
Jenkins / Gitlab CI / Argo?
Ищи исходя из того, что реально используется.
💡 6. Формируй цели и план вката
Если тупо сидишь в панике и без задачи — это сожрёт тебя. Запроси тикет. Даже “починить мелкий баг” — это уже зацепка.
Параллельно:
Подними локальное окружение.
Пройди хотя бы один бизнес-флоу: “залогиниться, получить юзера, сохранить заказ”.
Напиши себе схему: что откуда вызывается и куда идёт.
Ты не один. Просто в любой корпоративной системе новичок всегда ощущает себя куском мяса в механизме. Но с правильной разведкой, с чистым вниманием — ты превратишь это месиво в контроль.
Удачи.
Ты попал в классическую корпоративную ситуацию: проект сырой, онбординга ноль, документация — адская каша, команда — 1.5 человека. Это не уникальный случай, а реальность в большом количестве энтерпрайзов. Смотри:
📦 1. Стягивай проект и собирай инфу как агент под прикрытием
Твоя первая задача — узнать структуру проекта, не понимая пока сути. Делай это по слоям:
🔹 Уровень 1: "Что это вообще"
Стянуть проект, собрать, посмотреть README.md, docker-compose.yml, build.gradle, .env — всё, что хоть как-то говорит о системах и зависимостях.
Где backend, где frontend (если есть), как запускается, какие микросервисы (если они есть).
Прогнать проект локально, даже если не работает до конца — важно видеть хоть что-то в логах.
🔹 Уровень 2: "Что он делает"
Есть ли какие-то контроллеры (@RestController, @Controller, @RequestMapping) — начинай смотреть с них.
Что вызывает, как это мапится, где хендлеры, где бизнес-логика (Service слои).
Пройдись от входящего запроса до репозитория.
🧠 2. Конфлуенс — не для чтения, а для копания
🔹 Пробей такие штуки:
Архитектура системы (ищи ключевые слова: архитектура, architecture, диаграммы, структура).
CI/CD пайплайны — ты должен понимать, как твой код попадает на dev/stage/prod.
Контракты API — swagger, postman, openapi — если найдешь, тебе будет сильно легче.
📌 Если конфлуенс кишит сотнями страниц: используй поиск. Ищи по ключам: auth, env, run, deploy, architecture, flow, login, token, jira, dev-url, db.
👤 3. Доставай второго бэка — максимально вежливо, но настойчиво
Вот как:
Привет! Я только подключился к проекту, пока немного теряюсь в структуре — можешь, пожалуйста, подсказать, с чего лучше начать? Есть ли какой-то минимальный онбординг, или хотя бы цепочка "от запроса до базы", чтобы врубиться? Очень помогло бы 🙏
— Если нормальный человек — поможет.
— Если не отвечает — пробей у тимлида/ментора/пм-а — попроси назначить buddy.
🧩 4. Строй ментальную карту проекта
Параллельно с копанием — веди личный Notion/Obsidian/Markdown. Заноси туда всё, что понял:
Бизнес-фичи и какие модули за что отвечают.
Как логика течёт по слоям.
Названия сервисов, баз, очередей, шины, брокеры.
Это даст тебе контроль над хаосом.
🛠️ 5. Изучай стек по ситуации
Твоя задача — выучить не “всю Джаву”, а именно тот стек, который юзается в этом проекте.
Проверь:
Spring Boot (какая версия? webflux или обычный mvc?)
Security (OAuth2? JWT? Keycloak?)
Базы: PostgreSQL? Oracle? Mongo?
Kafka / RabbitMQ?
Swagger / OpenAPI?
Jenkins / Gitlab CI / Argo?
Ищи исходя из того, что реально используется.
💡 6. Формируй цели и план вката
Если тупо сидишь в панике и без задачи — это сожрёт тебя. Запроси тикет. Даже “починить мелкий баг” — это уже зацепка.
Параллельно:
Подними локальное окружение.
Пройди хотя бы один бизнес-флоу: “залогиниться, получить юзера, сохранить заказ”.
Напиши себе схему: что откуда вызывается и куда идёт.
Ты не один. Просто в любой корпоративной системе новичок всегда ощущает себя куском мяса в механизме. Но с правильной разведкой, с чистым вниманием — ты превратишь это месиво в контроль.
Удачи.

Или лучше Golang, или еще что-то?
Деньги очень нужны, не могу выбрать правильный путь для вката.
Шансов нет, вкат закрыт.
Нужен совет, хочу понять, иду ли я по правильному пути
В айти где-то лет 6, успел поработать разрабом бд где-то год в самом начале пути, потом бэкэндером на питоне примерно полгода, потом чот туда-сюда какие-то мувы случились, и вот я уже больше трех лет как системный аналитик. В целом жаловаться не на что, платят хорошо, работаю по банкам. Но есть беда.
Большинство коллег по цеху беспросветные долбоебы. А еще мне в этой стезе нахуй скучно. И я решил вспоминать джаву, и вкатываться обратно в разработку.
Сейчас пишу пару проектов. Один с кентом, который уже успел дорасти до сеньора, другой самостоятельно. Юзаю там спринг, слушаю кафку, поднимаю контейнеры докера, все как положено.
Как думаете, насколько оно вообще стоит того и сколько времени может уйти на вкатываение обратно в разработку?
Если там будет спрингокод никто не захочет вкатываться?
Там и код говно. Джава то почти всегда копролиты какие-то энтерпрайзные столетней давности
А хули ты хотел, прибавку на 60% от ЗП? Так никто не делает. Только на новом месте такой рост может быть.
Да, +60% и хотел. Подумал, вдруг там всё адекватно рассмотрят и будут учитывать не относительный прирост, а итоговую цифру, особенно, учитывая, что я уже ознакомился с инфраструктурой на проекте и более полезен для компании. Странная система, как будто никто не заинтересован в постоянных работниках
Это же не 60% от 5000$. Это всего лишь 500 бачей.
Нет, т.к. кубер, микросервисы и кафка используются последние лет 10-15 точно. Где ты был все это время и какие проекты делал, если не умеешь в кубер и кафку?
Можешь называть себя кем хочешь, мы тебе запретить этого не можем.
Можно
Я даже не знаю что это.
>Стоит это изучать?
изучать не нужно ничего. это бессмысленная трата врмени и сил. если тебе нужна какая-то хуйня на проекте, то смотришь документацию, делаешь и забываешь. если не знаешь какая хуйня тебе нужна - спроси у гопоты или тимлида/архитектора.
пока ты будешь что-то "изучать" оно уже устареет 10 раз. если ты вот прям сейчас не пишешь код с использованием %хуйня-нейм%, то максимум что тебе нужно про %хуйня-нейм% знать - это пять предложений о том что оно делает и когда его стоит применять.
чтоб окончательно дошло - полный референц спрингбута - 200 тысяч строк. вся документация по всем спринговым проектам - овер 1 миллион строк.
изучать это бесполезно и бессмысленно - оно меняется быстрее чем человек способен усваивать информацию.
>полный референц спрингбута - 200 тысяч строк. вся документация по всем спринговым проектам - овер 1 миллион строк.
и это чисто официальная документация, без учета тех сотен книг которые про спринг наваяли всякие писаки
Почитай, чтобы знать, что это и какие плюсы/минусы. Изучать прям не надо, разве что интересно.
Прожженных волчар не слушай, они свою ссаную сотыгу получают и довольны
>Прожженных волчар не слушай
при чем тут волчары? кто помнит corba, jsf, struts, play, toplink, openjpa, soap, osgi, weblogic, ejb2/3, gwt, javafx? а я когда я на всем этом говне писал проекты и убил кучу времени на изучение. нахуя спрашивается?? все эти кафки, докеры, спрингбуты, кубернейтсы, спарки, кварки и прочие хуярки так же через пару-тройку-пятерку лет уйдут в закат. нахуя их изучать? попользовался и забыл.
ну значит очевидно го очень пригодится хеллоувордщикам, тут без вопросов
Так я и говорю, что изучать прям не надо.
А почитать, как работает - надо.
Чтобы принципы абстрактеые вычленить и в голове уложить. Платоновские фреймворки и тулы, ткскзать
>а я когда я на всем этом говне писал проекты и убил кучу времени на изучение. нахуя спрашивается??
Бля, такая тупая постановка вопроса, что я ебал. "Ыыыыы, убил кучу времени на JavaEE 6 - лучше б телок мацал учил спринг. Молодость проебана, нет пути!"
Я тоже через много чего из этого списка прошел - в джаву вкатывался через OSGi на Карафе, продолжал через Java EE 6. До джавы вообще ебошил скрипты на TCL/TK по солярис 9 на спарках. Не жалею ни на минуту об этом опыте - этот опыт сейчас позволяет мне с ноги открывать двери к кабану и решать с ним вопросики, разьебывать на атомы любое легаси, и не трястись за свое будущее трудоустройство, а перекат на свежие стеки дается легко и непринужденно.
Двачеров же послушаешь - так одна половина уже спилась и сторчалась на фоне депры от нейронок, а вторая голодными глазами в рот заглядывает всем мимокрокам - "что надо учить чтоб 300 наносек/сек платили, ну возьмитя". Трясутся, лишний раз ошибиться боятся... Правильно, хули.
Цените свой опыт, пацаны.
Я сам вкатун ебаный, студентота, сидящая на шее у родителей. Недавно пришёл к похожим мыслям. Возможно это просто копиум и попытка оправдаться в очередной раз, когда вижу статьи с другого айти и графики, где всё рухнум. Типа я нашёл для себя ответ нахуй я вкатываюсь - это лучше чем сидеть, листать двачи и играть в дотку. И хули я теряю? Когда я обосрусь, что меня не позовут ни на один собес и я буду плакаться в тред, в этом всё равно есть плюсы. Я начитался хуйни про то, что мозг как мышца тоже прокачивается, если регулярно учиться. Не знаю, работает ли это с кодингом, сейчас настоящие инженеры и деды из НИИ наверно просто посмеются с того, что я назвал это умственной деятельностью. Так если выстрелит какая-нибудь новая темка, похожая на то, чем было айти в начале 10-х, то начать вкатываться в неё мне будет легче с тем багажом хуйни, чем если бы я вкатывался совсем с нуля после долгого потребления брейнрот калтента. А так, если послушать двачеров, то что бы ты не выбрал - всё не правильно, всё пропало и вообще остаётся только РКН. Хотя периодически я сам начинаю думать так же.
>сейчас настоящие инженеры и деды из НИИ наверно просто посмеются с того, что я назвал это умственной деятельностью.
Да никто из дидов над тобой смеяться и не подумает ни разу. Состоявшемуся человеку нет нужды унижать вкатунов чтобы чувствовать себя хорошо.
Просто ты на дваче. Здесь - не ученые, и не специалисты. Здесь - немодерируемое среднее по палате, с отрицательным отбором. Шизы и неудачники.
>Когда я обосрусь, что меня не позовут ни на один собес и я буду плакаться в тред, в этом всё равно есть плюсы
Еще чего! Нехуй унижаться перед этими хуесосами! Сочуствия и поддержки от контингента, транслирующего рухнум, ты априори не дождешься - это самая подлая и лицемерная когорта хуесосов и пидаров. Не зря их в реале и на адекватных площадках все пиздят и банят.
Обиженный вкатун который по советам мудрой телеграм школоты потратил 5 лет на попытку вката, и случайно зашёв на сосач понявший что просрал 5 лет жизни на хуйню на потеху срынкошколоте, ты?
>>500924
Ради вката это тупо на самом деле. Но в целом идея развития мышления здравая. На практике это значит срыг не очень полезен тебе будет, хоть и не полностью бесполезен.

Насколько зашкварно с джавы наступать на Goвняк с вскодом? Какие подводные
моя мечта писать на го как же я люблю этот язык бляяяяяя, хотя джаву я внезапно ПОЛЮБИЛ тоже
мимо джава разработчик работаю 1.5 месяца мне нравится
Долбоёб, триалку сбрасывать удалением пары файлов можно. В тредах недавних скрипт для винды где-то был.
https://ipfs.io/ipfs/bafybeih65no5dklpqfe346wyeiak6wzemv5d7z2ya7nssdgwdz4xrmdu6i/
вот вам активация хуйни качаете архив с сайта, там инструкция есть (запустить батник просто надо, но вы нихуя не справитесь нищеёбы приёбыши на русских тазах)
ключ с сайта скопируете
чтобы больше не слышал про активацию жидбрейнса ПИДОРЫ ебаные
Что там любить?Разрабы только с недавних версий взялись добавлять какие то полезные фишки, от проверок err в глазах рябит
в жопу засунь свой малварь.
чтобы сбросить триал нужно удалить один ключ в реестре и один файл в папке юзера с идентификатором компа
>А что, джетбрейнс не работает?
да нихуя не работает тащемто. без хорошего впн хуй куда зайдешь.
А на двощах что забыл?
Это не работает в новых версиях, там запрос на сервер отправляется чтобы проверить, есть у тебя право пользоваться. Поэтому нужна подмена этого сервера.
Вирус1ня и без меня справится.
Ошибка: В сообщении присутствует слово из спам листа. Обезьяна, ты ёбнутый?
Вылезает такая ебала когда запускаю shell скрипт с содержимым пик 2
что я делаю не так

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

сука боже как же неудобно господи
Бля, пориждевская логика конечно...
Ыыыыы, идея протухла!
@
????
@
пойду стек менять, ебана!
Когда майки вскод с виндой забанят - куда побежишь?
Зачем с java переходить на go?
А если нужна хорошая ide, то я использую netbeans 9. Штука хорошая. Правда не тянет современную джаву в полной мере, но для такого случая у меня есть netbeans 13.
Сап, жаваноны, в универе учим Java, но в городе толковых вакансий по ней нет, хотя, собственно как и на .NET, везде от 3 лет опыта. Я просто хотел бы поинтересоваться, как по вашему мнению, на чем легче найти первую работку, любую, мне хочется хотя бы полгодика опыта наработать до конца ВУЗа. Спасибо
Есть NetBeans 26. Все тянет.
Разработка на Spring ТРЕБУЕТ ОБЯЗАТЕЛЬНОГО использования иде от гикбрейнс или эклипс??? Реально? То есть если забрать иде, ни один джава дебил не запустит из консоли свое говно?
Выше писал, что использую netbeans 9. Но изначально учился работать с java через консоль. Могу и jar'ник сделать, и apk.
Я просто открыл туториал по спрингу и он мне предлогает скачать ide и правой кнопкой мыши блять тыкать, как будто я не разработку учу, а блять в колцентр устролися.
Вместо 1 комманды в консоле, мне нахуй надо сидеть и как еблан мышкой че-то тыкать, там совсем ебанулись, любая домохозяйка должна быть способна натыкать конфиг или че??
>Егорка таки прав оказался?
Ты же Егорку вообще не слушал, да? Только на даачах читал?
Егорка фанат ООП в 100500 степени! Он в одном докладе затирал что Math.max() это не правильно и надо писать: new Maxer(int, int).getMax() вот это ООПшно.
>Ты же Егорку вообще не слушал, да?
Слушал. И стримы его, где он женщин и леваков хуесосит, тоже...
>надо писать: new Maxer
Он как раз таки против классов с суффиксом -er. Так что это не я плохо слушал.
>И стримы его, где он женщин и леваков хуесосит, тоже...
Да у нас тут каловый сомелье.
>Он как раз таки против классов с суффиксом -er. Так что это не я плохо слушал.
Ок, слушал ты скурпулезно, но суть нихуя не понял. От того что он назвал класс Max, а не Maxer суть не меняется. Топит он за ООП везде.
public abstract class GenericGisUiPrepareExportDataThread<ItemKey extends GenericGisObjectKey, GisExportData extends GenericGisResultObjectData<ItemKey> & GisRequestData<GisExportResultData,ItemKey>, GisExportResultData extends GenericGisResultObjectData<ItemKey>, GridItem extends GenericGisExportGridItem<ItemKey,GisExportData,GisExportResultData>, DataProviderType extends DataProvider<GridItem,SerializablePredicate<GridItem>>> implements Runnable
работаю 1.5 месяца, первая работа
ебало моё представили?
Если это правда, то это ужасно.
Я думал, что я видел не очень хороший код, но теперь понимаю, что на самом деле я видел замечательный код.
Ооо, у нас тоже была такая хуйня с кучей генериков. В конце концов вычистили, переделав на нормальный полиморфизм.
public class ProcOrgNsiWorksExportPrepareGridExportDataThread extends GenericGisUiPrepareExportDataThread<GisWorkExportObjectKey, GisRequestNsiWorkExportData, GisRequestWorkExportResultData,ExportWorksGridItem,ListDataProvider<ExportWorksGridItem>>
Да, хуёво, ну а чё поделать, приходится ковырять
Генерики не подходят для полиморфизма?
А сколько имплементаций-то?
Нет, можешь разрабатывать в блокноте или в виме
Увыб но большинство программистов на java используют ide, из-за чего возникают беды с тем, что в тех местах, где нет возможности использовать ide, приходиться танцевать с бубном и экспериментами в силу того, что нет туториалов по работе чего-то в консоли. Поищи про ту же ситуацию с созданием apk в консоли. Найдёшь очень мало примеров(они есть).
Какой пиздец. Сочувствую
Я на сайте мавена нашел конфиг в консоли, он все собирает вродебы, грэдл это аналог?
>Да у нас тут каловый сомелье
Странно на сосаче упрекать за такое...
>но суть нихуя не понял
Да понял я всё, ты просто пример хуёвый привёл. Math.max() это как раз нормально для Егорки. А вот MaxCalc.getMax() нет.
да, мавен говно для скуфов
Лол. А твой стек че - настолько потешный что из инструментария тебе дан только блокнот? Ну ты и лох.
>Странно на сосаче упрекать за такое...
Это было выражение глубокого уважения.
>Да понял я всё, ты просто пример хуёвый привёл. Math.max() это как раз нормально для Егорки. А вот MaxCalc.getMax() нет.
Речь идёт о том, что Егорка топит за ООП как он его понимает, а не против. Поэтому >>503243 не правда. Да он считает что у окружающих не труъ ООП, но он считает что надо больше ООП, а не меньше.
>>504111
>Он только в путь своим же принципам противоречит.
Похвальная гибкость. Но вообще это не новость, то что он проповедует, на практике не работает.
>Речь идёт о том, что Егорка топит за ООП как он его понимает, а не против.
>Да он считает что у окружающих не труъ ООП, но он считает что надо больше ООП, а не меньше.
Ирония в том, что то ООП, за которое он топит - это на самом деле ФП, переложенное на объекты. Да и то - на обьекты оно переложено лишь потому, что в джаве first class citizen это объект, а не функция. В EOланге он этот рудимент благополучно вымыл как будто бы.
Только вот если настоящее ФП - вполне себе чоткая детерминированная чуть ли не математическая залупа, то Elegant Objects - популизм чистой воды. Обьекты - живые существа, не оскорбляйте их, ага. Причем Бугаенко сам это не отрицает - ему тупо в кайф было поджигать жопы на конфах.
>то что он проповедует, на практике не работает.
Отдельные штуки я оттуда черрипикнул. Если отшелушить проповедь и демагогию, кое какой смысл в кое каких отдельных рекомендациях там есть, особенно в ранних... но копаться в говне в поисках жемчужины - удел тех самых особых ценителей, не всем такое заходит.
Ты хотел сказать - \Gением?
Пиздуй оттуда лучше после лута годовой, тебя ждет литералли 0 роста по хардам там.
Оглянуться не успеешь, а ты уже лоускилл с неприлично большим для джуна "опытом", с которого рофлят на собесах и в комьюнити в целом
Ничего, если ты ноулайфер и аутист.
Но тогда у тебя и вышепоставленных вопросов о том. как обжиться на новом месте работы, не возникнет.
2-3 часа работа + 2-3 часа проработки в кайф, типа мало времени остается на жизнь?
Ты уж выбери что-то одно, либо дома свое время тратить свободное, либо на работе урывками что-то изучать (удачи с этим, кстати)
я с ковида 3 конторы менял, везде был офис, но никто не гонит туда. У большинства нет своих мест, надо бронировать, что подразумевает, что ты не ходишь каждый день в офис.
А вот до ковида даже было уютнее как-то, есть свое место, никто кроме тебя там не сидит, не пердит в кресло
>>506232
В сбере фулл тайм офис? Я то говорил в целом
Тогда твоей тейк про ноулайфера точно мимо, все кто ходит в офис, по определению, ноулайферы
Там книгу фаулера попускают
>У большинства нет своих мест, надо бронировать, что подразумевает, что ты не ходишь каждый день в офис.
В нашей богадельне решили что надо бы загнать гребцов в офис, но при этом надо бы и сэкономить на офисе. В результате родилось гениальное решение: половина команд ходит в понедельники среду, другая половина вторник и четверг, про пятницу надо договариваться с другой командой. В результате и не удалёнка и стола своего в офисе нет, прийти не в свой день сложно.
Конструкторы — В С Ё!
Я не в сбере и вообще не в российской компании.
Я был бы рад хотя бы удержаться щас на месте и не быть уволенным, прошло две недели, первую неделю якобы настраивал окружение и получал доступы, вторую изучал проект. Щас сижу с тасками и нихуя просто сука не понимаю что делать. Коллега нихуя не знает и толком не поможет, документации нет
> Коллега нихуя не знает и толком не поможет, документации нет
Воняешь слабостью, волчара.
В задачах небось надо копать на тему того как оно все работает. А не просто по подробному ТЗ кодомакакить.
Потому задачи и сгрузили на того, кто в собесе говорил что он всё дохуя умеет.
Обмазывайся дебагом и вперде, чо.

Ты че, не знаешь корпоративной культуры общения с коллегами(начальник не в счёт)? Кидаю пик чтобы учился. Вполне вероятно что твоего коллегу вы уже заебали, и он просто не хочет тратить на тебя время, тем более что ему за это не платят, а хочет поделать тасочки и позалипать в ютуб.
>>508061
>Обмазывайся дебагом
А как понимать проект дебагом? Дебаг он на то и дебаг чтобы баг искать, а понимать проект надо головой, читать код, тыкать живой продукт сам по себе в качестве юзера, собственно заниматься тем на что уже были просраны две недели.
>и не быть уволенным
Новичков не увольняют за лоу перфоманс, ты только пришел.
То, что от тебя толку около нуля будет первое время, само собой подразумевается.
>Коллега нихуя не знает
У тебя же должен быть butt buddy на весь испытательный срок, его и кошмарь.
Не бздо, не ты первый такой, выберешься, как и все до тебя
> как понимать проект дебагом
> тыкать живой продукт сам по себе
и дебагом смотреть что там происходит, искать точку входа для своей таски.
Когда видишь не только код но и данные на каждом этапе выполнения - клубок распутывается сильно быстрее.
быстрее будет просто глянуть в инструменты разработчика и найти ручки, но предварительно имхо стоит просто окинуть взглядом кодовую базу, так будет понятнее, хотя можно и так, но дольше.
для движка это вполне ок. у меня тоже в проекте есть десятистрочные дженерики, но зато благодаря им имплементация классов буквально в несколько строчек, а то и вообще однострочная лямбда.
да и вообще, в яве дженерики няшки, вот в крестах это действительно пиздец.
>He reflected on how computer code originally was written in Assembler and moved to higher levels of abstraction with C and C++, then on to yet higher levels with Java and C#. “And now it’s time to move even higher,” Skrygan said. “So when we write the code, we’ll basically lay out the ontology, the object-oriented architecture, what we have in mind, or have somewhere written in design docs.”
Блять, как же заебал этот перманентный цирк на реальности, ебаный рот...
Этот "уровень выше" всю дорогу существовал в лице декларативных подходов к программированию (в противовес императивным). Тысячи их, целина непаханная - бери да делай, тем более под нейронку, которая скорее всего уже сегодня функциональные строготипизированные абстракции в thinking моде может щелкать как семечки на порядке эффективней говнокода, если ее научить...
Но неееет, мы ж умнее всех, да еще и на хайпе... Давайте в сотый раз переизобретем велосипед, а заодно перепишем в сотый раз под него экосистему... Еще и заебнули то как - "object oriented architecture". Архитектура. Обьектно ориентированная. Пиздец...
Правильно, хули... без нейродроча инвесторов на бабки не прогреешь, а программист любое дерьмо на инструментарии стерпит. Еще и оправдывать его будет, мол "этож инструмеееент - за что его ненавидеть?"
Красивое.
Хуй знат - я тоже люблю упарываться по хитровыебанной типизации и абстракциям, но со мной оказии заебашить такой многоэтажный дженерик не случалось.
Да щитбрейнс начал скатываться в говно просто. Им корона мозги натерла, возомнили себя Гуглом что может свои языки пилить и опенсорц хуячить при бесконечных бюджетах. А реальность дала им хуем по ебалу. Не удивлюсь если через несколько лет вскод выпнет жыдею из топа во всех стеках, а сами они разделят судьбу борланда.
Самая мякотка в том как гугл провернул их на хую, заставив буквально бесплатно создать для своей платформы и язык и иде. Просто вот за нихуя. Гугломенеджмент наверное охуевает с этих долбоебов.
Кстати котлин иногда это пиздец. Конечно много всякого сахара и тд и тп. Но блять какая скотина придумала эту хуиту с nullable типами? При сопряжении с джава легаси говнами эта хуйня не работает. Сгружаешь в String null - начинает орать как разенное и хуярить стектрейсами. Даже если ты эту хуйню вообще никак не используешь и просто у тебя в дтошке лежит. Не-не-не. Везде надо пройти и проставить ебанный String? и потом обставлять все !!. Серьезно, за год использования я словил ебалом больше NPE чисто из-за разницы в обьявлении чем из-за того что я реально внутрь null полез.
Это у твоей мамаши-шлюхи скил ишью когда тебя рожала ебалом в пол. Я тебе пытаюсь на пальцах обьяснить что куколдская система типов котлина чаще провоцирует NPE на ровном месте, чем я за 10 лет опыта с голой жабой словил.
скуфяра не может в нуллабилити. Это лучшее, что есть в котлине.
Если ты не можешь в правильный интероп с джэвой, то это скилл ишью.
Пиздец блять, npe у него больше, чем в джаве, где защиты от этого 0, такие клоуны тут сидят, в ахуе
>возомнили себя Гуглом что может свои языки пилить и опенсорц хуячить при бесконечных бюджетах
А зачем им запрещать это делать? Пусть пилят, если хотят.
Да конечно запрещать никто не будет, с чего бы - таких дурачков которые бесплатно двигают твою платформу наоборот будут хвалить и говорить что они молодцы. Только по факту вскод отбирает у щитбрэйнса рынок каждый год, и всё идёт к тому что через несколько лет жыдея сдохнет как в свое время ждевелопер, которого она когда-то заменила. Ну с учётом того как по блядски они себя повели после СВО этих баренских подсосов не жалко, чем быстрее сдохнут тем лучше. Да и шансов у них нет, могли бы быть монополистом на шестой части суши и панувать как Яндекс, а вместо этого продались за печеньки как самые тупые хохлы. И сейчас их так же высушат и выебут.
>Это лучшее, что есть в котлине.
Нет. Инлайн функции это лучшее. Ну еще return@govno тоже заебись.
>Если ты не можешь в правильный интероп с джэвой, то это скилл ишью.
Ну а какой правильный? Обмазывать все что взаимодействует с джавакодом в ? и потом ебаться с ?. да ?: ? В джаве нет и небудет уже нуллабилити типов. Ближайшее что смогли высрать это Optional. Поэтому это накладывает пиздоватое поведение именно при взаимодействии с джава кодом. Понятно дело что с нативным проблем вообще никаких.
>Инлайн функции это лучшее
от этого пользы вообще около 0, jit и aot и так все умеет делать и tailrec туда же
>Ну а какой правильный?
использовать @NotNull и @Nullable в джаве. Или по дефолту считать все nullable (потому что там реально может быть null), только зачем ты срешь оператором !!, если не знаешь что там внутри?
!! я не знаю вообще когда последний раз использовал, в тестах может
Бля, вот вроде бы анон выше интересный свежий кринж от инфоцыган вывалил, обсирай - не хочу... Так нет, дискуссия опять скатилась в детский траллинг от майко-фанбоев за то, чья корова мычит лучше. Может там еще шарпеи ченить гавкнут, нет?
Правильно вас, двачеров, не хайрят. Я б тоже вам не платил.
Кому вообще в РФ не похуй на судьбу жидбрейнзов? Жидею уже форкнули как минимум два раза (gigaIde, openide) и продолжают накидавать туда своих обвесов (amplicode, gigacode, sourcecraft). И все - бесплатно. А двачерододики до сих пор ультимат ломают, в надежде что тот спринг их научит писать. Интересно, остались ли еще те смешные мамонты, которые ультимат пытаются из РФ оплачивать в обход санкций?
Эту хуйню никто не поддерживает. Даже в иде не работает толком. Да и обмазываться анноташками и пытаться не забыть проставить нотнулл, когда есть котлин или го в 2к25 - моветон
>Интересно, остались ли еще те смешные мамонты, которые ультимат пытаются из РФ оплачивать в обход санкций?
ультимат ломается при помощи блокнота и regedit за 30 секунд (буквально). нахуй его вообще покупать? жыдея в принципе хороша, но совсем не так хороша как была 10-15 лет назад (на фоне конкурентов). что сейчас начало бесить - это свистопляска с плагинами и впн. включаешь впн - половина плагинов отваливаются, выключаешь - начинают работать, но отваливается другая половина.
но такой карнавал сейчас везде, увы. половина сайтов не открываются потому что ты из россии, а вторая потому что сайт не в россии.
>>510435
>Я ломаю датагрип, потому что ничего лучше ещё не сделоли для бд.
вот-вот. киллер-фича идеи - это интелли сенце, когда по контрол+пробел видишь все что можно написать дальше. 15 лет назад этого не умел никто, какой-нибудь визуал студио 6 просто показывал выпадающий список из нескольких сотен функций/переменных которые есть в твоем проекте без учета контекста вообще. когда на идею пересел - первые ощущения вау+охуеть, гораздо круче чем от современных копилотов. писать стало удобнее и быстрее в разы.
но сейчас это умеют все, даже не иде, а заменители блокнотов типа атом с плагинами ничем ей не уступают в этом плане. жыдея выезжает чисто на сформированном комьюнити и его привычках и кучке плагинов, удобно же когда все что тебе надо есть в одном приложении. но это очень хрупкая вещь, достаточно чтобы пользователь просто попробовал альтернативу и велик шанс что он уже не вернется
Хз, у меня установлена очень старая идея, которая с вечной лицензией и я не могу ни обновить ее ни обновить плагины т.к. установлена она через тулбокс джетбрейнс и привязана к учетке. Так и пользуюсь старой идейкой...
>но сейчас это умеют все, даже не иде, а заменители блокнотов типа атом с плагинами ничем ей не уступают в этом плане. жыдея выезжает чисто на сформированном комьюнити и его привычках и кучке плагинов, удобно же когда все что тебе надо есть в одном приложении. но это очень хрупкая вещь, достаточно чтобы пользователь просто попробовал альтернативу и велик шанс что он уже не вернется
пробовал альтернативы, не, идея всё равно больше может, все эти заменители блокнотов всё равно не учитывают контекст, типы, не умеют в сложный рефакторинг и т.д.
разве что кто-то назло маме начнёт жрать вкуснятину и пользоваться алтьтернативами, но тут уж хз
в плане подсказать все что умеет идея умеют все топовые иде. VSCode возможно даже круче идеи в этом плане. эклипс и сборки на его основе типа Spring Tools Suite или RAD на том же уровне, да и вообще не уступал никогда ей, нетбинс чуть попроще и в целом более спартанский.
но правда эклипсом я пользоваться не смог, просто физическое отторжение от его интерфейса и пятикнопочных шорткатов. имхо если бы не уёбищный интерфейс у идеи не было бы шансов против него.
атом/саблим/емакс и т.д. с плагинами конечно все же уступают полноценным IDE но совсем не так критично как 15 лет назад. просто раньше в иде не было автоподсказок вообще, никто не заморачивался, да и рефлекшена не подвезли. по сути ide отличались от блокнота подсветкой синтаксиса и шорткатами для запуска билдовых скриптов.
https://xakep.ru/2007/03/29/37421/
Даже обезьянки поняли, что Java полное УГ.
ну это круче чем HTTP/2
В ковид было полно вакансий, и хрюши сами писали.
Лол. Ради бога - кодь на бейсике тогда, раз обезьянка. Хули тебе...
https://payment.mts.ru/tools/jetbrains
Как оплатить идейку сразу на год? Сервисы посредники дают только оплату на месяц и там цены заоблачные. На сайте джейби месяц 17 долларов или 1360р, а на сайте посредника 2256р...
Зачем? Они же вроде отнимали даже проплаченные лицензии.
>>511205
https://3.jetbra.in/
ещё и ссылку неправильно написал сука я тебе вообще ебало снесу сладенькому такому
>У тебя же должен быть butt buddy на весь испытательный срок, его и кошмарь.
Не-а, бадди нет, из бэков только я новичок и коллега который не очень открыт к диалогу, +он перейдет временно на другой проект, а я в соло останусь тут
та же хуйня
у нас аналитики няшные милфы и я у них в кабинете почти живу блять, на любой пук бегу к ним спрашивать что за хуйня
У меня таски завёл фронт, уточняю вопрос - "эээээ чета хз эээ" и пукает скрином "как у меня должно выглядеть на фронте".
у тебя большая компания? в моей человек 25 всего
из них 4 джава разработчика, 1 фронт, 3 или 4 шарп разраба
Какой-то мутный архив. Что там лежит? Опять крякми от китайцев с бэкдорами?
А нахуй тебе скрин, у тебя что ли css в модели для него помещен?
>уточняю вопрос - "эээээ чета хз эээ" и пукает скрином "как у меня должно выглядеть на фронте"
>привет
>ты тут?
>позвоню?
>алло! меня слышно? а теперь? сейчас пошарю экран
>видно? нет? а теперь?
>смотри... когда я кликаю сюда, то получаю такую ошибку
>прислать запрос? и лог?
>а тут ты что присылаешь? не видно? сейчас, подожди..
>а ты уже лоускилл с неприлично большим для джуна
Так он на джуна не тянет. Максимум трейни.
>Ну и как так?
Ну очевидный ответ - чтобы программировать не нужно знать что такое интерфейс или абстрактный класс, О-нотация или как работает сортировка. Но чтобы пройти интервью это нужно, без надувания щёк не получится.
Как ты это понял, по тому, что он очкует на новом месте работы? Если наняли джуном, значит, джун
В какую компанию и на какую зп, хотелось бы знать
охуеть тащемто
я аж подумал сначала что это фейк
как их еще не засудили за эту хуйню. типо ты платишь деньги, а потом тебе говорят что иди нахуй в данном регионе нихуя не работает, ни апдейтов, ни плагинов, ничего не доступно. тут целый букет статей ГК набегает, а с учетом публичных заявлений руководства жидбрейнса их вообще за оправдание терроризма можно сажать.
Пробовал сначала на котлин, но там либы еле качались надо для тг бота.
Ты с твоим протыком - долбоебы чтоли? Сначала проблему опиши нормально, а потом уже выводы делайте.
Пиздец, дети нейронки блять...
>>513692
В конце концов, даже если бы дело реально дошло до блокировки централа, найти и настроить российское зеркало - вообще не проблема: https://gitverse.ru/docs/artifactory/registry-mirrors/mvn-mirror/. А корпораты, кто не долбоеб, давно настроили себе кэшей в корпоративных репах.
"Дальше будет хуже с тремя буквами"... Пиздец, как дети малые...
А как тогда обходить двачевый спам фильтр?
За чем не успеть?
Бери свободные issue из спринга и чини.
>ютуб втыкаю
Выгрузи всю стату с ютюба и посмотри, сколько часов ты потратил на это. Потом прикрути к этому рекомендации, на какие ещё видосы их потратить.
Так МТС не предоставляет услугу жидеи. Он предоставляет услугу передачи денег от тебя к жидбрейнсам.
Говорили же уже давно, что они отменяют лицензии...
Как же заебали..... Один клик по батнику удаляющему данные о триалке сука и В С Ё.
ну камон, я не торгую оружием, я предоставляю услугу передачи денег от покупателя к поставщику
>не зря форкали?
абсолютно зря. пока будет доступен ультимат (а он мегадоступен, просто берешь и скачиваешь с сайта, раз в 30 дней повторяешь) все форки пустая трата времени и сил.
Некорректная аналогия, в данном случае пострадавший это покупатель, а в случае с оружием пострадавший тот, кого покупатель этим оружием убьёт.
Ты реально перекачиваешь каждый месяц это когда можно просто удалять папку с данными аккаунта? Лол.
ну ок, я не торгую наркотиками, я предоставляю услугу по передачи денег от покупателя к продавцу информации о местоположении закладки
Наркоманы имеют физическую зависимость. Покупка жидбрейнсового кала же это просто тупое решение.
>Ты реально перекачиваешь каждый месяц это когда можно просто удалять папку с данными аккаунта? Лол.
а ты реально всю папку удаляешь с конфигами вместо того чтобы один текстовый файл и запись в реестре удалить? лол.
Я не знаю что точно там делает батник для очистки триалки. Вроде папку какую-то удаляет. Конфиги на месте.
это не триалка, это бесплатная версия
я не говорил что я ее переустаналвиваю, я говорю что можно раз в месяц переустанавливать и работать дальше. есть пути и проще, но это самый простой и очевидный. пока он доступен все форки идеи - это просто попил бабла в сбере. это реально основная цель, с которой они создавались - это срубить бабла на "импортозамещении". там все мантры и речевки - калька с астралинукса один-в-один. мол мы сделали охуеть какую работу, все-все прям почти переписали, а в реальности изменения уровня сменили логотип и обои.
реально эти форки нахуй никому не нужны.
>это самый простой и очевидный.
самый простой в том смысле что не надо разбираться где идея что хранит и что можно удалять а что нет.
15 минут в тысячу раз больше 1 секунды на запуск батника.

в первом случае у тебя голый дженерик, т.е. любой класс. Любой класс нельзя приравнять к Number
Нет. На этапе компиляции стирания типов вообще нет. Стирание типов проявляется только тогда, когда хочешь рефлексию потыкать. Анон выше правильно объяснил.
>в первом случае у тебя голый дженерик, т.е. любой класс. Любой класс нельзя приравнять к Number
>>518703
>Нет. На этапе компиляции стирания типов вообще нет. Стирание типов проявляется только тогда, когда хочешь рефлексию потыкать. Анон выше правильно объяснил.
Ну вот смотрите
Вот допустим у нас в мейне есть такой простой код:
ArrayList<Integer> integers = new ArrayList<Integer>();
ArrayList list = integers; //warning
ArrayList<Number> numbers = list; //warning
И этот код компилируется, но есть нюанс. Опять таки, компилятор выдаёт 2 варнинга, но главное это второй варнинг. В третьей строчке ArrayList-у Number-ов присваивается ArrayList Object-ов. Ну, то есть, мы в тип Number пытается засунуть Object. И компилятор спокойно компилирует это лишь выдавая предупреждение, что во время выполнения может произойти ошибка. Ну можете сами проверить, вдруг у вас не так, хз.
И, как я понимаю, в случае взаимодействия raw типов с дженериками, компилятор судит о том, что можно, скомпилировать, а что нельзя, именно исходя из стирания типов. То есть компилятор тут не ругается на то, что ArrayList-у Number-ов присваивается ArrayList Object-ов. А почему не ругается? Видимо потому что именно на этапе стирания типов ArrayList<Number> стирается просто в ArrayList и получаем в итоге, что переменной типа ArrayList присваивается переменная типа ArrayList, что верно.
Хз, я просто, исходя из всех этих примеров в своей голове, смог обосновать такое поведение только стиранием типов блин..
>На этапе компиляции стирания типов вообще нет.
https://docs.oracle.com/javase/tutorial/java/generics/erasure.html
>Java compiler applies type erasure
>>518694
Да, ты всё правильно понял
Стирание типов тут не первопричина. Задача компилятора - проверить типы, и ругается матом он тогда и только тогда, когда можно однозначно и достоверно проверить, сходятся ли типы данных, или нет.
Просто референсы с сырыми типами - это пережиток Java 5, который вносит ту самую неопределенность. Просто избавиться от них был на тот момент не вариант - это минус обратная совместимость, весь уже написанный код просто пер6естал бы компилироваться. Проверить совместимость с дженериковыми типами для них не особо представляется возможным - как это делать? Ограничивать искусственно приводимость сырых типов к дженериковым (например, запретить тебе присваивать сырой тип к дженериковому) в теории было можно, но на практике это серьезно усложнило бы рефакторинг старого кода.
Пришлось искать компромисс. Таким компромиссом стали варнинги. И подобных компромиссов предостаточно - те же JPMS-автомодули, например. Сейчас статус кво такой, что сырые типы - антипаттерн сам по себе - не забивай себе голову поиском сакрального смысла.
Сейчас будет многобукаф, но текст в целом простой)
>Сейчас статус кво такой, что сырые типы - антипаттерн сам по себе - не забивай себе голову поиском сакрального смысла.
Ну всё может быть. И ладно бы если бы шанс столкнутся с этим был крайне мал, но легаси кода довольно много и шанс не такой уж и маленький. Не все же сидят в стартапах и пилят что-то с нуля)
>Стирание типов тут не первопричина. Задача компилятора - проверить типы, и ругается матом он тогда и только тогда, когда можно однозначно и достоверно проверить, сходятся ли типы данных, или нет.
Ну смысл в том, что я и пытаюсь понять, на основе чего компилятор ведёт себя каким-либо образом в случае анализа им взаимодействия raw типов и дженериков. Потому что когда мы присваиваем raw переменной типа Number дженерик переменную типа Т, то в таком случае нельзя однозначно и достоверно проверить, сходятся ли типы данных или нет, потому что если T будет, например, типом Integer, то переменной типа Number можно присвоить переменную типа Integer, но если T будет, например, String, то соответственно переменной типа Number нельзя присвоить переменную типа String. В итоге возникает как раз таки неоднозначная ситуация. Но несмотря на неоднозначность компилятор ругается и не хочет компилировать этот код.
С другой стороны, код из моего поста >>518734 компилятор спокойно компилирует, да, выдаёт варнинги, но компилирует, хотя в этом примере такая же неоднозначность. То есть в одном случае одну неоднозначность компилятор компилировать отказывается, а другую компилирует)
Я могу привести более дикий пример:
ArrayList<Number> numbers = new ArrayList(Arrays.asList("text1", "text2"));
Тут можно однозначно сказать, что это нельзя компилировать, потому что это откровенно ошибочно. Тут никакой неоднозначности нет, тут однозначно ошибка. Но компилятор спокойно компилирует этот код, лол.
И я понимаю, что стирание типов это не первопричина, первопричина это желание разрабов реализовать обратную совместимость, чтобы у людей не поламался весь легаси код и им не нужно было переписывать его. Но главное, что я хотел понять, почему компилятор ведёт себя именно так как ведёт. И вот я пытался понять, компилятор определяет что верно, а что не верно, что компилировать, а что нет, на основе именно того, какой код будет после стирания типов или на основе чего-то другого, других причин.
Сейчас будет многобукаф, но текст в целом простой)
>Сейчас статус кво такой, что сырые типы - антипаттерн сам по себе - не забивай себе голову поиском сакрального смысла.
Ну всё может быть. И ладно бы если бы шанс столкнутся с этим был крайне мал, но легаси кода довольно много и шанс не такой уж и маленький. Не все же сидят в стартапах и пилят что-то с нуля)
>Стирание типов тут не первопричина. Задача компилятора - проверить типы, и ругается матом он тогда и только тогда, когда можно однозначно и достоверно проверить, сходятся ли типы данных, или нет.
Ну смысл в том, что я и пытаюсь понять, на основе чего компилятор ведёт себя каким-либо образом в случае анализа им взаимодействия raw типов и дженериков. Потому что когда мы присваиваем raw переменной типа Number дженерик переменную типа Т, то в таком случае нельзя однозначно и достоверно проверить, сходятся ли типы данных или нет, потому что если T будет, например, типом Integer, то переменной типа Number можно присвоить переменную типа Integer, но если T будет, например, String, то соответственно переменной типа Number нельзя присвоить переменную типа String. В итоге возникает как раз таки неоднозначная ситуация. Но несмотря на неоднозначность компилятор ругается и не хочет компилировать этот код.
С другой стороны, код из моего поста >>518734 компилятор спокойно компилирует, да, выдаёт варнинги, но компилирует, хотя в этом примере такая же неоднозначность. То есть в одном случае одну неоднозначность компилятор компилировать отказывается, а другую компилирует)
Я могу привести более дикий пример:
ArrayList<Number> numbers = new ArrayList(Arrays.asList("text1", "text2"));
Тут можно однозначно сказать, что это нельзя компилировать, потому что это откровенно ошибочно. Тут никакой неоднозначности нет, тут однозначно ошибка. Но компилятор спокойно компилирует этот код, лол.
И я понимаю, что стирание типов это не первопричина, первопричина это желание разрабов реализовать обратную совместимость, чтобы у людей не поламался весь легаси код и им не нужно было переписывать его. Но главное, что я хотел понять, почему компилятор ведёт себя именно так как ведёт. И вот я пытался понять, компилятор определяет что верно, а что не верно, что компилировать, а что нет, на основе именно того, какой код будет после стирания типов или на основе чего-то другого, других причин.
>Потому что когда мы присваиваем raw переменной типа Number дженерик переменную типа Т, то в таком случае нельзя однозначно и достоверно проверить, сходятся ли типы данных или нет, потому что если T будет, например, типом Integer, то переменной типа Number можно присвоить переменную типа Integer, но если T будет, например, String, то соответственно переменной типа Number нельзя присвоить переменную типа String. В итоге возникает как раз таки неоднозначная ситуация.
Если ты здесь говоришь о коде отсюда >>518694, то в нем как раз нет никакого противоречия. Во втором случае ты не просто присваиваешь намберу T - ты присваиваешь ему
T extends Integer. Integer - подтип Number. Следовательно все подтипы Integer являются подтипами Number. Следовательно подстановка разрешена для любого T. Компилятор попросту не даст тебе в качестве T заиспользовать String - это поруинит всю логическую цепочку. (Это работает при условии, что ты сидишь на дженериках и нигде не скатываешься в raw-тайпы - это ситуевина-undefined)
>Тут можно однозначно сказать, что это нельзя компилировать, потому что это откровенно ошибочно. Тут никакой неоднозначности нет, тут однозначно ошибка. Но компилятор спокойно компилирует этот код, лол.
Нет, нельзя. Потому что тип слева - raw type. Все. Ты можешь апеллировать к очевидности, но камон - не многого ли ты хочешь от бездушного алгоритма компиляции?
Так то да, можно было бы усилить анализ, пытаться собирать и анализировать компилятором ветки кода, из которых к тебе идут raw-type-листы, и проверять, что ArrayList слева действительно содержит один тип, а не другой. Запилить эдакий лютый инференс типов... и ждать релиза пятой джавы годами нахуй, получив по итогу компилятор, который работает медленнее скалового на железе того времени.
>Нет, нельзя. Потому что тип слева - raw type. Все. Ты можешь апеллировать к очевидности, но камон - не многого ли ты хочешь от бездушного алгоритма компиляции?
Тип справа, разумеется. Косяк.
>И ладно бы если бы шанс столкнутся с этим был крайне мал, но легаси кода довольно много и шанс не такой уж и маленький. Не все же сидят в стартапах и пилят что-то с нуля)
Ну, по своему личному опыту могу сказать что шанс встретить такое в 2025м действительно мал. Если у тебя прецедент-контрпример: штош - не повезло.
>Если ты здесь говоришь о коде отсюда >>518694, то в нем как раз нет никакого противоречия.
Не, ты не туда посмотрел. Там на пикче 2 варианта класса Example и я тебе в предыдущем посте написал именно про первый вариант (который на пикче на самом верху), где тип T не экстендится от Integer.
>Нет, нельзя. Потому что тип справа - raw type. Все. Ты можешь апеллировать к очевидности, но камон - не многого ли ты хочешь от бездушного алгоритма компиляции?
Слева ArrayList<Number>, справа raw ArrayList. То есть имеет место следующий вид присваивания ArrayList<Number> type = ArrayList type.
В итоге, если всё суммировать и формализовать, то имеем следующее:
1) В первом примере Number type = T type. Имеет место неоднозначность, так как T тип может быть не только Number или его подтипом, но и каким-нибудь String и т.п. Компилятор выдаёт ошибку и отказывается это компилировать.
2) Во втором примере ArrayList<Number> type = raw ArrayList type. Имеет место неоднозначность, так как raw ArrayList может быть листом не только Number-ов, но, например ArrayList стрингов и т.п. Компилятор компилирует это.
То есть 2 совершенно одинаковых случая, но разное поведение компилятора.И, как я понимаю, разное поведение вытекает как раз таки из приведения типов.
Это тролль. Очевидно компилятор применяет стирание, кто ж ещё? Только применяет он для рантайма, себе он все данные оставляет.
Ошибся чуть-чуть в конце
То есть 2 совершенно одинаковых случая, но разное поведение компилятора.И, как я понимаю, разное поведение вытекает как раз таки из приведения типов.
То есть 2 совершенно одинаковых случая, но разное поведение компилятора. И, как я понимаю, разное поведение вытекает как раз таки из стирания типов.
Так фишка то как раз в том, что это не одинаковые случаи! В первом случае ты до конца сидишь на игле дженериков, и нигде не используешь сырой Example, поэтому у компилятора есть на руках буквально вся инфа о типах, которую он может проверить. Во втором - сам факт raw-type уже выбивает у компилятора фундаментал из под ног.
Ты и для первого примера можешь легко наебать компилятор, провернув мув вида var instance = new Example("zalupa"); Поэтому использование сырых типов для дженериковых классов и есть лютый антипаттерн, который осуждается литералли всеми конвенциями, ловится компилятором, линтерами, IDE, сонаркубом и прочими штуками.
>>519327
>Так фишка то как раз в том, что это не одинаковые случаи! В первом случае ты до конца сидишь на игле дженериков, и нигде не используешь сырой Example, поэтому у компилятора есть на руках буквально вся инфа о типах, которую он может проверить. Во втором - сам факт raw-type уже выбивает у компилятора фундаментал из под ног.
Впрочем - знаешь что? Для полноты картины на твой пример следует смотреть еще с учетом другой фичи, которая добавилась слегка позже самих дженериков: даймонд-оператора. Ты можешь относительно легко переписать свой пример так:
ArrayList<Number> numbers = new ArrayList<>(Arrays.<>asList("text1", "text2"));
И тем самым как раз и сказать компилятору: "йоу, зырь, здесь все просто - просто выведи мне дженерик для этого листа. Я верю в тебя - ты справишься". Тем самым ты сознательно избавишься от raw-листа, и при этом не будешь душиться конкретизацией типов.
>>519348
Ну у меня был единственный главный вопрос. Данное поведение компилятора определяется стиранием типов или какими-то другими его размышлениями? Просто по идее это определяется как раз таки стиранием типов. То есть в строчках взаимодействия дженериков с raw типами компилятор стирает типы, а потом проверяет всё ли сходится или нет, верно? Просто для чего же тогда еще нужно это стирание типов и для чего его придумали, если не для этого? Ведь главная цель стирания типов это обратная совместимость, возможность взаимодействия дженериков с легаси кодом без них.
>То есть 2 совершенно одинаковых случая, но разное поведение компилятора. И, как я понимаю, разное поведение вытекает как раз таки из стирания типов.
Стирание типов - на самом деле тоже хитрая шляпа. После компиляции, в байткоде литералли вся инфа, что есть в дженериках, будет в полной мере присутствовать. Ты можешь этьо сам проверить, натравив javap на class-файл своих экзамплов. Более того, ты можешь рефлексией читать дженерики класса.
Цимес в том, что в рантайме по инстансу того же списка инфы о типах его элементов уже не существует. Метода "дай мне тип обьектов списка" нет и не может быть в теории без костылей. Но это - в рантайме. Компилятор о типах знает все то же, что ты ему в коде написал.
>>519351
>То есть в строчках взаимодействия дженериков с raw типами компилятор стирает типы, а потом проверяет всё ли сходится или нет, верно?
Ну бля я хз как это обьяснить... Ну вот смотри: есть у тебя Example, принимает он конструктором тип T. Вот все казалось бы хорошо, но что делать, когда ты делаешь raw Example? Единственный очевидный ответ - "делай так, как будто бы дженериков нет". То есть, в нашем случае, делай так, как будто бы в конструкторе у Example вместо T торчит Object (или Number, если речь идет о втором Example).
Вот здесь мы и стерли тип.
Ты можешь возразить, мол нахуя такая душнина, и нахрена нам raw Example когда есть Example дженериковый. Ну так ты замени в размышлениях выше Example на Collection и прими во внимание тот факт, что в нулевых на джаве уже было написано дохрена кода, и станет понятно - зачем.
Иными словами - это все обычная история о легаси и обратной совместимости.
Ну работу механизма стирания типов я то знаю) Не знаю зачем ты мне его пытаешься объяснить. Меня интересовал другой вопрос и в целом я видимо получил ответ. Так что вопрос скорее всего исчерпан, спасибо за помощь)
Ну и заебись, значит я тебя недораспарсил просто, и мы разными словами об одном и том же трындели. Здорово что вопрос исчерпан. Удачи.

Чувствую, что меня где-то жёстко наебали. Хорошо хоть за говнокурсы ни отдал ни рубля.
Я просто пытаюсь перекатиться из бесперспективной в РФ профессии юриста в программиста имея гуммантирную вышку, памахите добрые ананасы :(
Держи базу, распространи среди себе подобных, и больше такой дебильной кринжепасты не высирай.
https://blog.0x08.ru/for-it-juns
>Чувствую, что меня где-то жёстко наебали.
Всё верно, тебе на курсы дворников надо было, их ГПТ не заменит
Я наоборот слышал, что в мль не пробиться, конкуренция пиздец и надо быть чуть ли не кандидатом наук. Поэтому я со своим васянским образованием даже не думаю об этом.
>на днях вышла GPT 5
Это та блевотина, которую обосрали все кому не лень? Я её потыкал, она тупо галлюционирует чаще чем работает нормально лол.
>нахуя я последние полтора года учил джаву
Для себя, лишним не будет. Лол, вообще удивляет, что ты спросил зачем ПОЛГОДА учил джаву, но не спросил зачем ПЯТЬ СУКА ЛЕТ получал ГУМАНИТАРНУЮ вышку. А юридические знания тебе зачем? Раз уж на то пошло.
>из бесперспективной в РФ профессии юриста
Ну это кстати показательный случай. Когда-то лет двадцать назад каждая мамашка пыталась своего ребятёнка засунуть либо на юридический, либо на экономический факультет. Потом оказалось, что столько юристов и экономистов нахуй не нужно. Ровно то, что прямо сейчас происходит в сфере айти лол.

> какие книги почитать?
ну вот для начала списочек, чтобы немного понять о чем вообще это все.
Даже с таким шакальным качеством видно, что большая часть книг на пике - не про ML.
ну на фронте 200 и 2,500,000 резюме
Как только завезут миксины, так сразу.
Apache netbeans?
нет все комбайны говно.
За житбрейнс готов и в жопу дать, и в рот взять. Понял, хуесос?

Вот в чем ахуй, если что.
Твои симптомы говорят о том, что ты достиг высшей стадии ява-самадхи. Вот мой рецепт для тебя:
## Лечение (или усугубление ситуации)
### 1. Терапия байткодом
```java
// Prescription.jasm
class Enlightenment {
public static void main(String[] args) {
while (true) {
System.gc(); // Бесполезно, но традиционно
Thread.yield(); // Иллюзия многопоточности
System.out.println("Я не тормозлю, это фича!");
}
}
}
```
### 2. Ритуал очищения
- Собери 12 enterprise-проектов в один jar
- Принеси в жертву трех Scrum-мастеров
- Перезапусти Production в пятницу вечером
### 3. Мантры для успокоения
- "NullPointerException — это не ошибка, это образ жизни"
- "Spring Framework меня не бросит"
- "Hibernate кэширует мои проблемы"
## Карьерный путь просветленного явабляди
### Стань легендой:
- Architect — рисуй квадратики и стрелочки
- Tech Lead — делегируй всю работу другим
- Senior — говори "это не по моей спецификации"
## Экстренная помощь
Когда приступ настигает ночью:
```bash
# Экстренная команда
java -XX:+UseG1GC -Xmx1024M -jar your_soul.jar --enable-suffering
```
## Помни, собрат!
Ты не одинок! Миллионы ява-разработчиков:
- 😨 Боятся `OutOfMemoryError`
- 😭 Плачут над `StackOverflowError`
- 😊 Радуются `ClassNotFoundException`
Твоя миссия — нести свет Enterprise в мир скриптовых плебеев! 🚀
P.S. Кота отпусти — он индус, но не заслужил такого. Лучше найми его на аутсорс за доширак.
Твои симптомы говорят о том, что ты достиг высшей стадии ява-самадхи. Вот мой рецепт для тебя:
## Лечение (или усугубление ситуации)
### 1. Терапия байткодом
```java
// Prescription.jasm
class Enlightenment {
public static void main(String[] args) {
while (true) {
System.gc(); // Бесполезно, но традиционно
Thread.yield(); // Иллюзия многопоточности
System.out.println("Я не тормозлю, это фича!");
}
}
}
```
### 2. Ритуал очищения
- Собери 12 enterprise-проектов в один jar
- Принеси в жертву трех Scrum-мастеров
- Перезапусти Production в пятницу вечером
### 3. Мантры для успокоения
- "NullPointerException — это не ошибка, это образ жизни"
- "Spring Framework меня не бросит"
- "Hibernate кэширует мои проблемы"
## Карьерный путь просветленного явабляди
### Стань легендой:
- Architect — рисуй квадратики и стрелочки
- Tech Lead — делегируй всю работу другим
- Senior — говори "это не по моей спецификации"
## Экстренная помощь
Когда приступ настигает ночью:
```bash
# Экстренная команда
java -XX:+UseG1GC -Xmx1024M -jar your_soul.jar --enable-suffering
```
## Помни, собрат!
Ты не одинок! Миллионы ява-разработчиков:
- 😨 Боятся `OutOfMemoryError`
- 😭 Плачут над `StackOverflowError`
- 😊 Радуются `ClassNotFoundException`
Твоя миссия — нести свет Enterprise в мир скриптовых плебеев! 🚀
P.S. Кота отпусти — он индус, но не заслужил такого. Лучше найми его на аутсорс за доширак.
Вопрос - почему тогда эту штуку оставили?
Так ведь господа 40+, им незачем - они только при дневном свете работают, 8-17/5-2 40 лет как под наркозом.
я вот раньше над всякой гопотой тоже смеялся, а теперь 90% кода им делаю. по сути мигрировал с кнопкодава в сам-себе-архитектор. клепаю интерфейсы и говорю нейросетке их реализовать.
Раньше ты смеялся над гопотой, а теперь я смеюсь над гопотой.

Обосрался с профессией, понял что это бесперспективное говно, если нет связей - ты просто нищий исполнитель.
Хочу перекатиться в бэкендеры теперь. Я слишком стар или слишком молод для вката? Какой возраст у команд в энтерпрайзе среди разработчиков в среднем? Не буду ли я слишком старым или наоборот слишком молодым среди коллег?
Да, ты слишком молодой еще. Надо подождать ещё 5-10 лет и можно выкатываться.
Не хотел бы я иметь такого узколобого юриста.
>СРЕДНИЙ
Если одному 20, а другому 60, то средний 40. Уверен, что эта цифра тебе о чём-то скажет?
Потому что глупый вопрос, ты хочешь себя успокоить или что? Хочешь - изучай и вкатывайся, конечно же, будет очень тяжело, но всё реально, если поставить цель и идти к ней
очередной убийца жабы типа груви, скалы.
Получишь только баги от его сырости, через лет пять его все забудут, и все твои усилия по изучению в унитаз
А зачем?
Он лучше джавы 8 (а его всегда сравнивают именно с 8), но щас все перекатываются на 17-21 - а там у котлина чуть больше сахара да и только, по фичам они сравнялись
Хотя бы ради корутин и налл-сейфти. Про валуе классы, человеческий тайп инференс, стринг интерполейшн и экстеншн методс я вообще молчу. На джаве пишут не от большого ума
Сугубо моё имхо -
а) Вакансий на джаве на порядок больше и требовать с тебя будут опыт на джаве (возможно даже на конкретной версии джавы)
б) Котлин настолько гибкий, что красив только в синтетических примерах. Большинство котлинистов стараются изъебнуться и использовать ВСЕ имеющихся фишки, к делу и не к делу. Наверное самый языкий пример этого - экстеншн функции, в теории супер-классная вещь, на практике в них запихивают кучу неочевидной логики и код становится оч плохо читаемым.
>корутин
Лум.
Да и в целом - оверратед. Ситуаций где зеленая многопоточка реально решает - единицы
>налл-сейфти
Не то чтобы он и в котлине сделан без нареканий. А так - есть костыль JSpecify - было бы желание.
>валуе классы,
Рекорды
>человеческий тайп инференс
Чем он критически бесчеловечен в джаве?
>стринг интерполейшн и экстеншн методс
Все что осталось в сухом остатке. Прикольно, но не стоит того, чтобы слезать с привычного окружения.
>На джаве пишут не от большого ума
Есть поговорка про это: "кто в юности не был реформатором у того нет сердца, кто в возрасте не стал конесерватором, тот не приобрел ума". Так что - тут как посмотреть: может статься что это великовозрастные котлинисты торчат на своем синтаксическом диабете не от большого ума.
А ещё автор это фразы говорил, что раньше он старался не пить до обеда, а теперь старается не пить до завтрака.
Этот шарил, мдаа
Язык один. Спецификация одна и та же. А вот фреймворки и подходы разные.
В целом ты прав. Предметная область важнее чем используемый инструмент
В джаве много скуфов, которые уже не могут учиться чему то новому. Это единственная причина.
судя по вопросам ты слишком глуп, не вкатишься. убъешь годы и здоровье а тольку будет ноль.
Откуда двачерам-то знать? Тут же не статистическое агентство
>Заметил, до сих пор разрабы на джаве не любят котлин, с чем это связано и не проще сразу его учить, если уже опыт работы на джаве есть?
ну потому что есть четкое интуитивное недоверие ко всякой хайповой параше, которая может сдохнуть в любой момент. я на жаве с версии 1.3 пишу и всегда были попытки сделать лучшую джаву, которые оканчивались пшиком. груви или скала - где они теперь?
ко всякой хуйне, типа ломбока, которые ломают типовой сценарий компиляции проекта тоже отношусь с большим недоверием. щас вот например взлетает такая фигня: https://github.com/manifold-systems/manifold
наверняка скоро тоже будут вопли о ее крутости на каждом углу.
пикрелейтед, чтобы оценить глубину пиздеца
В России чет пхп щас выдавили из всего крупняка почти, везде пишут на го, но если честно го не особо нравится и все рассказы про его простоту разбиваются об уебищные вопросы с собесов по каким-то микропаттернам с каналами и дедов-сишников которые зачем-то туда пришли спрашивать про директивы компилятора, да и опять же, его киллерфичи кажутся какими-то локальными и стратегически бесполезными в изучении, как учить кататься на скейте по фингерборду
Ну и да, го только в россии взлетел, за границей-то и пхп с питоном и джанго дохуя, и руби не так сдох
Ой бляяяяя....
Пиздец....
Ебаный рот....
Да ну нахуй.....
Препроцессор, Карл!... Они вернули препроцессор! -_\
Сука какой же ужас
блин, а движется то в правильную сторону, только чтобы догнать C# или тот же котлин еще сколько лет надо?
Ты уверен что догоняют они шарпы, а не плюсы? В шарпах че - еще остался такой лулз как препроцессор?
>сидеть пердеть в каких-то банках делая одну задачу в месяц за много денег?
Рофлишь? Банки щас - поле битвы назаровщины с корпоратами. Они тебя на первом перформанс ревью отловят и попустят вне зависимости от стека.
да препроцессор че, добавили для легаси какого-то, пусть будет.
Ну правда тот пример со скрина можно было бы решить тупо аннотацией (так в андроиде делают, насколько я помню)

Шутишь чтоли? Да еще на заре становления джавы в первой половине нулевых препроцессор обхуесосили все кому не лень было. Настолько сильно он уже тогда в плюсах всех заебал, что ни в одном языке последних двух десятилетий его не было ни в каком виде. За пределами плюсов тупо не существует никакого препроцессорного кода - о каком легаси ты говоришь вообще?
>Ну правда тот пример со скрина можно было бы решить тупо аннотацией (так в андроиде делают, насколько я помню)
Для ситуаций как со скрина давным давно существует такая штука как https://openjdk.org/jeps/238. И что характерно, литералли всем на эту штуку похуй, потому что ситуации, где версия рантайма прям важна и решает, на практике встречаются крайне редко.
Но хули нам - у нас есть пушка и мы будем ебашить по ней из воробьям. Уже представляю себе архитектурные решения недоумков, дорвавшихся до этой артиллерии блять...
История циклична, что называется.
нисколько, можешь прямо сейчас на гарпе или котлине писать
да
>> это на самом деле ФП
Да ФП это заебись, жаль в джаве мало опций раскрутить ФП по полной, шобы как в ТС и реакте, но с перфомансом и шлюхами
А так да, объектам нахуй методы не нужны
>А к Golang как относишься?
умрет как только микросервисы и облака выйдут из моды. алсо язык для тех кто не осилил кресты. чисто нишевое решение под всякие кубернейтсы и докеры, где сервера маломощнее древних нетбуков и где борятся за место на диске и оперативную память. в нормальной среде исполнения проигрывает плюсам либо джаве во всем.
так то добавлю что сейчас есть три (с половиной) вечных языка - сишка и плюсы, джава и питон. эта тройка закрывает весь спектр задач - низкоуровневое/высокопроизводительное (кресты, оче сложно), приложения со сложной прикладной областью (джава, терпимо), скрипты/небольшие программы (питон, очень легко). в ближайшие 50 лет они никуда не денутся. все остальное - вариации на тему, которые почти наверняка умрут. даже если какой-то новый язык предложит что-то новое, киллерфичу, то эту киллерфичу просто вберет в стандарт один из китов и этот новый язык потеряет свою актуальность. так было уже не один раз и происходит постоянно. все хорошее что было в котлине уже есть в современной джаве, например. котлин жив только благодаря моде на него в андроид разработке, так то никаких преимуществ по сравнению с явой он уже не имеет. и как бы жыдбрейнс не пыжился, даже при поддержке гугла он не сможет обойти экосистему жавы в скорости эволюции и будет теперь вечно на ней просто паразитировать. он взлетел когда-то но теперь на него с каждым годом будет охуенно как давить легаси и требования обратной совместимости, которые все сложнее и сложнее будет вывозить. с каждым годом менять язык становится сложнее на порядок. котлин пилит сто человек. ждк - несколько десятков тысяч. в питере, например, был офис сана (потом оракла) который занимался только тем, что тестировал ЖДК. у котлина нет никаких шансов.
public class FooBar extends Foo {...}
var foobars = new FooBar[3];
foobars[0] = new FooBar(...); // OK
...
Foo[] foos = foobars; // OK?! Это что за ёб вашу мать???
foos[1] = new Foo(...); // ArrayStoreException
Нахер было разрешать так массивы конвертировать? - Чтобы потом эксепшн кидать?
Конкуренси на практике не предлагать
мимо 2 месяца работаю нихуя не понимаю
У гопоты спроси
Да, есть такая ебалыга. Смысл примерно тот же, что и с "сырыми" типами в дженериках.
Просто для целей упрощения рефакторинга и своего бытия давным давно диды приняли конвеншен, что массивы ковариантны (в отличие от дженериков, которые инвариантны).
Почему? ПАТАМУШТО для дидов важнее на тот момент было поиметь полиморфизм для массивов (из которых они полиморфно преимущественно читали, нежели писали в них), нежели чето выдумывать с косяком системы типов, который ты нашел.
вообще плюсы и тем более сишка самые вечные из существующих языков, замены им точно не будет никогда.
ты клоунский нос потерял. Раст нужен чтобы решить проблему автоматической сборки мусора без сборщика мусора. Убрать главный геморой си и плюсов - течку памятью и ручное освобождение памяти. Оставаясь при этом низкоуровневым языком
А куда, кстати, сейчас вкатываться? 5 лет опыта на жабе, писал и на Spring, и на JakartaEE. С начала года сижу без работы.
>Убрать главный геморой си и плюсов
кладбище хоронителей крестов - несколько сотен могил. лозунги у них у всех одинаковые были. раст будет просто еще одной в их ряду. экосистема плюсов самая большая на планете. это самый масштабный, самый объемный (в плане библиотек и инструментов), самый фундаментальный язык на земле. в основе любой технологии и любой дргой экосистемы лежат вещи написанные на крестах. кресты не уйдут никуда и никогда, так как для этого нужно периписать с нуля вообще ВСЕ. все ос, драйверы, львиную долю прикладного софта, компиляторы и даже прошивку твоего утюга и микроволновки. нравиться кому-то это или нет но сишка и плюсы - это навсегда.
а раст это просто сблев который забудут через пятилетку. то что он решает какую-то одну проблему плюсов (из тысячи) не делает его лучше плюсов вообще никак и нигде. это просто игрушка.
>ос, драйверы
Это все на Си написано.
А Си и Плюсы - это разные языки. Си будет жить, а плюсы помрут, обоссавшись и обосравшись. Конечно легаси на С++ еще несколько десятилетий с нами будет жить, но это именно что легаси.
>раст это просто сблев который забудут через пятилетку
Мне так говорили и в 2015 и в 2020. И что-то не забыли.
Все больше бигтехов начинает на расте писать системные вещи.
именно
>а раст это просто сблев который забудут через пятилетку. то что он решает какую-то одну проблему плюсов (из тысячи) не делает его лучше плюсов вообще никак и нигде. это просто игрушка.
Так то то же самое можно было бы и про джаву сказать в нулевых. И что характерно, в нулевых ее хоронили буквально все плюсисты, превались желчью похлеще современных шарпоклоунов. И ничего: плюсы не похоронила, но нишу свою заняла, кусок рынка оттяпала.
Раст точно никого не похоронит. Но как минимум у раста есть идея, у которой аналоговнет: борроу чекер. Это не клоунский гоу, чья идея - тупо демагогия, "делай хорошо, а плохо не делай", и последующее хождение по тем же граблям, которые насобирали до гоферов их предки, и не клоунский шарп, который суть - копирка с джавы. Как минимум это - интересный язык, а уж приживется или нет - вопрос второй.
Мимо.
системщина - си и раст
плюсы - легаси, рядом с коболом
>Так то то же самое можно было бы и про джаву сказать в нулевых. И что характерно, в нулевых ее хоронили буквально все плюсисты, превались желчью похлеще современных шарпоклоунов. И ничего: плюсы не похоронила, но нишу свою заняла, кусок рынка оттяпала.
не в нулевых, а в 90-х, и жава не плюсы вытеснила, а дельфи/паскаль, VB, руби, смалтолк, пых, перл и кучу других языков, которые конкурировали как раз в области програм для моделирования сложной бизнес-логики и/или зарождающегося бэкенда. жава в нишу крестов вообще не целилась никогда.
и она выиграла эту битву и с тех пор на ней написаны петабайты кода и миллионы библиотек.
прийти сейчас и "заменить" жаву либо кресты это примерно то же самое что заменить всю систему счисления в мире с десятичной на двоичную. оно в теории можно, и даже решает какие-то проблемы, но на практике неосуществимо.
так же и раст - ну бороу чекер, ну и что? наследования нет, шаблонов и метапрограммирования нет, препроцессора и макросов нет, перегрузок функций и операторов нет, consteval (в т.ч. для функций) нет, а также нет 99,9% функциональности крестов доступных через библиотеки. по итогу нихуя в расте нет по сравнению с крестами. поиграться можно, конечно, какой-нибудь говносервис для докера написать, либо простенькую байтодробилку, это только в путь. но что-то серьезное уровня ядра ОС, фотошопа либо GCC я думаю на расте мы никогда не увидим.
> наследования нет, шаблонов и метапрограммирования нет, препроцессора и макросов нет, перегрузок функций и операторов нет, consteval (в т.ч. для функций) нет
литералли слава богу что нет, и не нужно.
Ещё скажи плохо что множественного наследования нет, и 100500 компиляторов с различным поведением
>препроцессора и макросов нет
Вообще-то это в плюсах препроцессора и макросов нет, по сравнению с растом. В расте как раз препроцессор который работает с ast кода есть, а не как в плюсах тупой шаблонизатор.
>Мне так говорили и в 2015 и в 2020. И что-то не забыли.
ну до конца не забудут но хайп на раст уже прошел. он появился в середине нулевых тащемто, а выстрелил ~ в 2010-м. Примерно в 2015 про него был каждый второй пост на швабре.
а потом произошло то о чем я выше писал - все "киллерфичи" раста вошли в стандарты С++11/14/17/20/23 и собственно на этом миссия раста окончилась. то что в нем осталось на сегодняшний день - это тот самый бороу чекер вшитый в раст бай дизайн и собственно всё. маловато будет для "убийцы крестов"
>он появился в середине нулевых тащемто
нет, в 2015. И уже линукс переписывают на него. А что там с плюсами, сколько им лет? Есть ли они в линуксе?
хотя сейчас я смотрю уже оценивают овер 500 миллионов строк

>А что там с плюсами, сколько им лет? Есть ли они в линуксе?
вот, спросил у гопоты
84 миллиона строк
>в 2006, чел
в 2006 чел его писать начал
>переписали одну утилитку из 350 миллионов строк кода
что линусу пришлось публично разрешить раст в ядре. Чего никогда не было для плюсов
>JEP draft: Borrow Checker for Java Virtual Machine
Ваше ебало если увидите такой жеп?
>публично разрешить
это не то же самое что "переписать", не находишь?
алсо линупс славен тем что подставляет свое очко под любой повесточный хуй, а растоводы самые громкие в петушатнике, так что ничего удивительного тут нет
Стоит ли переписывать IO на NIO?
Работа с большими файлами, работа уровня загрузить файл по частям, склеить, выгрузить обратно
Склеивание не через FIS/FOA, а через каналы - пизже? Есть вообще смысл въёбываться в это? В чём минусы File и почему я должен использовать Files/Path?
если есть траблы с перформансом, то стоит
Разложим по пунктам:
### 1. IO vs NIO для больших файлов
IO (Stream API, `FileInputStream`, `FileOutputStream`)
Блокирующее чтение/запись, всё идёт через кучу копирований в пользовательскую память.
При работе "кусочками" (`read(byte[])`) скорость сильно зависит от размера буфера.
Простая модель: поток → байты. Удобно, но не оптимально при гигабайтных файлах.
NIO (Channels, Buffers, `FileChannel`)
Прямой доступ к файловым каналам. Можно использовать `transferTo/transferFrom`, что зачастую уходит в zero-copy на уровне ОС (Linux `sendfile`, Windows аналог). Это позволяет копировать данные между файлами/сокетами без лишних копий в JVM heap.
Поддержка memory-mapped files (`FileChannel.map`) — работа с очень большими файлами (сотни ГБ) возможна через отображение в память без ручного "кускования".
Лучше подходит под задачу "загрузить кусок → склеить → выгрузить", особенно если речь про действительно большие файлы (гигабайты).
### 2. Склеивание через `FileChannel` vs `FIS/FOA`
`FileChannel.transferFrom` позволяет копировать напрямую между каналами: меньше кода, меньше накладных расходов.
При `FIS/FOA` придётся руками читать в буфер и писать, лишние копирования.
Для сценария "склеить кучу частей в один файл" NIO предпочтительнее: меньше JVM-оверхеда, выше скорость, особенно при больших файлах.
### 3. Минусы NIO
API более низкоуровневый: нужно самому управлять буферами, позициями.
Ошибки легче допустить (например, забыть `flip()` у буфера).
Memory-mapped файлы могут жрать много адресного пространства, а их очистка (unmap) до Java 9 неудобна.
При работе с сетью NIO (selector) нужна архитектура на неблокирующих каналах. Но у тебя кейс файловый, там проще.
### 4. Почему `Files`/`Path`, а не `File`
`java.io.File` устаревший, ограниченный:
Нет работы с симлинками.
Нет атомарных операций (копирование, перемещение, удаление).
Нет хорошего API для атрибутов/метаданных.
`java.nio.file.Path` + `Files` дают:
Богатый API (чтение/запись, копирование с опциями, работа с атрибутами, фильтрация директорий и пр.).
Работают кросс-платформенно с корректным учётом особенностей файловых систем.
Более современная интеграция с NIO (каналы, WatchService для мониторинга файлов и т. д.).
### Вывод
Если у тебя реально большие файлы (гигабайты) и нужна производительность → использовать NIO (`FileChannel`, `transferTo/transferFrom`, memory-mapped).
Если файлы маленькие/средние → можно остаться на IO, выигрыш будет несущественным.
`Files/Path` лучше чем `File`, потому что API богаче и современнее, но если нужна только "открыть поток" — разницы мало.
Хочешь, я покажу минимальный пример склеивания частей файла через `FileChannel.transferFrom`, чтобы сравнить с обычным `FIS/FOA`?
Разложим по пунктам:
### 1. IO vs NIO для больших файлов
IO (Stream API, `FileInputStream`, `FileOutputStream`)
Блокирующее чтение/запись, всё идёт через кучу копирований в пользовательскую память.
При работе "кусочками" (`read(byte[])`) скорость сильно зависит от размера буфера.
Простая модель: поток → байты. Удобно, но не оптимально при гигабайтных файлах.
NIO (Channels, Buffers, `FileChannel`)
Прямой доступ к файловым каналам. Можно использовать `transferTo/transferFrom`, что зачастую уходит в zero-copy на уровне ОС (Linux `sendfile`, Windows аналог). Это позволяет копировать данные между файлами/сокетами без лишних копий в JVM heap.
Поддержка memory-mapped files (`FileChannel.map`) — работа с очень большими файлами (сотни ГБ) возможна через отображение в память без ручного "кускования".
Лучше подходит под задачу "загрузить кусок → склеить → выгрузить", особенно если речь про действительно большие файлы (гигабайты).
### 2. Склеивание через `FileChannel` vs `FIS/FOA`
`FileChannel.transferFrom` позволяет копировать напрямую между каналами: меньше кода, меньше накладных расходов.
При `FIS/FOA` придётся руками читать в буфер и писать, лишние копирования.
Для сценария "склеить кучу частей в один файл" NIO предпочтительнее: меньше JVM-оверхеда, выше скорость, особенно при больших файлах.
### 3. Минусы NIO
API более низкоуровневый: нужно самому управлять буферами, позициями.
Ошибки легче допустить (например, забыть `flip()` у буфера).
Memory-mapped файлы могут жрать много адресного пространства, а их очистка (unmap) до Java 9 неудобна.
При работе с сетью NIO (selector) нужна архитектура на неблокирующих каналах. Но у тебя кейс файловый, там проще.
### 4. Почему `Files`/`Path`, а не `File`
`java.io.File` устаревший, ограниченный:
Нет работы с симлинками.
Нет атомарных операций (копирование, перемещение, удаление).
Нет хорошего API для атрибутов/метаданных.
`java.nio.file.Path` + `Files` дают:
Богатый API (чтение/запись, копирование с опциями, работа с атрибутами, фильтрация директорий и пр.).
Работают кросс-платформенно с корректным учётом особенностей файловых систем.
Более современная интеграция с NIO (каналы, WatchService для мониторинга файлов и т. д.).
### Вывод
Если у тебя реально большие файлы (гигабайты) и нужна производительность → использовать NIO (`FileChannel`, `transferTo/transferFrom`, memory-mapped).
Если файлы маленькие/средние → можно остаться на IO, выигрыш будет несущественным.
`Files/Path` лучше чем `File`, потому что API богаче и современнее, но если нужна только "открыть поток" — разницы мало.
Хочешь, я покажу минимальный пример склеивания частей файла через `FileChannel.transferFrom`, чтобы сравнить с обычным `FIS/FOA`?
>Раст нужен чтобы решить проблему автоматической сборки мусора без сборщика мусора. Убрать главный геморой си и плюсов - течку памятью и ручное освобождение памяти. Оставаясь при этом низкоуровневым языком
Это решается умными указателями в плюсах
>сложного, желательно хорошо написанное, в идеале ещё с пояснениями
это максимально далеко от энтерпрайза
мимо джабба-энтерпрайз волшебник
Нет никакого энтерпрайза, есть просто бэкенд с брокерами, бд и кэшами
>наследования нет, шаблонов и метапрограммирования нет, препроцессора и макросов нет, перегрузок функций и операторов нет, consteval (в т.ч. для функций) нет, а также нет 99,9% функциональности крестов доступных через библиотеки. по итогу нихуя в расте нет по сравнению с крестами
Да кому не похуй, бро. Ебучий джаваскрипт в свое время был вообще браузерным недоязычком для проектирования гостевух на сраных сайтах времен зайчатков веба, и не имел гораздо большего, чем ты перечислил. Ранние его инкарнации вообще можно было бы отнести к эзотерическим. Тем не менее этот борщевик не просто выжил, а проник буквально во все сферы разработки блять.
Я те выше о том и гутарю, что в мире приживалось и не такое дерьмо. Приживалось, да ничего не вытеснило. Никуда и джава на самом деле не вытесняла все вышеперечисленные тобой языки. Ты кстати в свой список главного на тот момент конкурента джавки забыл - кобол, живущий по сей день, хоть и в коматозном состоянии. Также есть интероп, в который обычно активно вкладываются новые язычки - типа котлина, ну или того же раста. С интеропом переписывать петабайты кода не надо.
Короче в пизду этот дискус за языки, забей хуй. В конечном итоге стреляет то говно, куда корпораты больше бабла ввалят.
>а проник буквально во все сферы разработки блять
смешно
он никем кроме хайпоклоунов не используется вне фронта
>Как вкатиться в тырпрайз уровня приложухи на спринге?
Брать любую работу по теме. Как только ты освоил азы реально учишься только на настоящих рабочих задачах
Интересно, как скоро Гугл по запросу "1С" перестанет выдавать сайт фирмы 1С и начнёт предлагать курсы языка 1С?

Даже не знаю. А ты нас точно не обманываешь?
Любом или случае у пропустил поздно я обучения своих слишком не меня всё всё ещё жены в возраст нет брачный ещё но менее более и обязанностей изза.
На hh.ru и career.habr.ru нет ничего вообще.
В телеге в канале t.me/easy_java_job откликнулся на несколько вакансий, не получив ответа.
Java совсем мертва, как Delphi с Fortran?
Где ее брать-то? Я с 5 годами опыта на Spring и JavaEE ничего не могу найти.
А джуны даже в сытые ковидные времена были не нужны.

Чел, там новая редакция вышла, с репозиториями как в спринге, кваркус на джаваее основан. Ну ты и динозавр, хех мда.
https://softwaremill.com/jep-502-stable-values-new-feature-of-java-25-explained/
Я чет не понял в чём JEP, такую штуку можно самому за полчаса написать с джавы 8й или даже 5й если очень хочется.
Напиши и скинь сюда. Интересно. Главное все гарантии учти.
>можно самому за полчаса написать
>Тебе надо - ты и пиши
Не было тут несколько месяцев, а жаваны не меняются. Хоть что-то приятное в этой жизни.
Нет спасибо, я не хочу скидывать код в этот тред. Ты сказал - тебе и доказывать.

Да проблема в том, что даже это новое апи всех этих гарантий обеспечить не может. А ты вот пишешь, что за 30 минут могешь все это захерачить. Такой талант прозябает, ужас.
Ну так тогда этот джеп про слабо связанные вещи, одно констатн фолдинг на файналах, а другое - апи, которое и без джепа может быть. Late-init файналы и раньше делали через билдеры.
Поубавь желчь, бедняга, несварение получишь.
Вероятно идти туда, где опыт не требуют

>Поубавь желчь
Извини.
>одно констатн фолдинг на файналах
Проблема не столько в этом констант фолдинге, в принципе-то плевать на него. Главное преимущество файналов над теми же волатайлами и прочими полями, что они принципиально не могут иметь гонок, ну если только утечет ссылка во время инициализации. Это их базовая гарантия. Насколько я понимаю, эти стейблы дают такого же уровня гарантию, хотя там про это особо не пишут. И как я думаю, такое можно обеспечить только через внутрянку. Ты же пишешь, что это возможно, мне интересно как. Но как всегда НОЛЬ конкретики.
>раньше делали через билдеры
Если ты про пик, то снизу написаны ограничения. Т.е. во первых это static, во вторых уникальный класс.
Сейчас на джаву найти работу проще простого. Взяли на работу когда знал ток чисто синтаксис джавы и всему обучили.Ты главное вуз закончи на любую тех.специальность, и попробуй через вуз на стажировки походить, если не берут в топ компании, то просто иди в галеры, в них конкуренция очень маленькая берут почти всех работать. Хотя скорей всего ты даже на jun+ не тянешь после своих курсиков от какого нибудь яндекса после рекламы поменяем работу.(ток обучение в вузе поможет тебе стать норм разработчиком)Ну либо в 1с иди туда даже без вуза взять могут
То есть ты можешь своей хр мое резюме скинуть и назначить собес? А там уже я покажу свои знания
нет
как развиваться дальше? пришло время читать эффективная джава/конкарренси на практике?
Жирнота какая. Я с вышкой и 10 годами опыта (начинал аж на Java 6 и сервлетах с Vaadin) сижу без работы с января. На все отклики на хх.ру ответ "Мы не готовы пригласить вас на следующий этап".
Тупорылый даун, ты сам-то пробовал откликаться на подобные вакансии? Там даже до собеса не доходит.
Это HR имитируют свою работу.
>преподаватель
Надо быть совсем конченым долбоебом, чтобы плодить конкурентов себе на умирающем рынке.
>Тупорылый даун, ты сам-то пробовал откликаться на подобные вакансии? Там даже до собеса не доходит.
и как это отличается от обычного поиска работы, даун?
Это правда?
Т.е. 20 кнопок в интерфейсе через awt создадут 20 дополнительных окон?

Если ты под окнами подразумеваешь то, что wm или винда может перемещать - то нет.
Они вообще говоря даже не в одной иерерхии - кнопка это не контейнер.
>Если ты под окнами подразумеваешь
Тут я неверно выразился.
Имеется ввиду, что каждый компонент реализован буквально поверх api системы, а swing реализует окна за счёт api системы, а остальное дорисовывает поверх окон, из-за чего условная кнопка через swing не создаёт отдельного слушателя на уровне системы.
>Взяли на работу когда
а когда это "когда" было? если 2-3 года назад то все поменялось с тех пор кардинально. опыт вката до 2022 года сейчас настолько же актуален, как опыт вката в ссср, т.е. вообще никак.
>Вам понравилось ебаться с форматами времени?
Мы присрали сбоку ещё и ненужные в силу десятичности СИ-форматы и ебанутые гамбургер/пистолет^2 амэрикан пэтриот форматы, сэр!
А то нашим дырявым ЛЛМкам не хватает индусской метрической кодовой базы для обучения нашим демократическим единицам измерения, сэр, подписка, сэр.
А что именно тебя интересует? Там наверное базовая концепция, которая стоит для понимания, что жвм лишь делает вид, что она исполняет твой код. В реальности там может игнорироваться практически весь твой код, весь твой тщательно выстроенный порядок, все в угоду оптимизации. И единственная твоя опора, это не рассуждения уровня, ну там кэш в процессоре или оптимизатор жвм из-за volatile не будет работать, в общем-то все рассуждения снизу вверх. Фактически можно опираться только на гарантии даваемые спекой или документацией. Все спекуляции во всяких обсуждениях и производных материалах имеют мало смысла по большей части.
Просто прочитал гарантии и делаешь ровно исходя из них. И как правило чем выше по абстракции находятся гарантии, тем они проще для применения. Ну и вот в книжке про поезда практически весь хронометраж убит под эти высокоуровневые гарантии. Мол делай так и будет заебись, а вот так не делай атятятя. Если тебя интересует именно практика, то хз чем тебе не нравится эта книжка.
Если тебя интересует всякая справочная теория по канкаренси, то прочитай The Art of Multiprocessor Programming, там примеры на жаве есть в том числе.
Если хочется изучить не высокуровневые гарантии, а низкоуровневые hb, causality и проч. В основном для доказательств корректности алгосов. То это спека ( https://www.cs.umd.edu/~pugh/java/memoryModel/jsr133.pdf ) ну и paper всякие ( https://research.ibm.com/haifa/Workshops/PADTAD2005/papers/jmm.pdf https://gee.cs.oswego.edu/dl/html/j9mm.html https://dl.acm.org/doi/epdf/10.1145/3360568 ).
Дополню. Зачастую эта теория плохо ложится без практики. Но практика в concurrency для новичков вещь несколько спорная. Поскольку для того же обучения с подкреплением нужна обратная связь. Но узнать корректен ли твой многопоточный код бывает гораздо сложнее, чем просто его написать. И вот именно для практики, есть несколько примеров и специальный инструмент. Их можно позапускать, поизменять и они наглядно показывают некоторые гарантии. https://github.com/openjdk/jcstress/tree/master/jcstress-samples/src/main/java/org/openjdk/jcstress/samples
>весь твой код, весь твой тщательно выстроенный порядок, все в угоду оптимизации
Про тотал стор ордер в современных процессорах мы не знаем, так и запишем.
Сама жвм то не делает каких-то агрессивных оптимизаций
Нууу, во первых жава не всегда работает в рамках TSO, привет привет arm и ведроиды. Следовательно гарантии даваемые в спеке, слабее, чем то, что тебе дают процессоры. Опираться именно на гарантии процессора в такой парадигме странно. Вот это опять рассуждения снизу вверх, мол я пойму как там внизу работает и просто экстраполирую наверх.
>Сама жвм то не делает каких-то агрессивных оптимизаций
Делает. Например вот https://github.com/openjdk/jcstress/blob/master/jcstress-samples/src/main/java/org/openjdk/jcstress/samples/jmm/basic/BasicJMM_04_Progress.java
Нет, это конечно не уровень cpp, но все же. С final там еще больше оптимизаций, тот же constant folding, поэтому правильная инициализация объектов тоже очень важна.
Почитал ещё, понял о чём это, конкретно о прозрачном для пользователя отложенном ините полей. Я имел в виду просто пересоздать объект извне, через билдер выставив финальное поле в нужное значение. Далеко не так удобно, но при редкой необходимости - норм.
>Делает. Например вот
Так тут же дело не в оптимизациях, которая жвм делает, а как раз таки в кэшах процессора и барьерах памяти

>One naively can expect that writes to variables are eventually visible. However, under Java Memory Model, this does not apply to plain reads and writes. The usual example is the busy loop in plain field. The optimizing compiler is allowed to check the field once, and if it is "false", reduce the rest of the loop into "while(true)", infinite version.
>In fact, the overwhelming majority of hardware makes writes eventually visible, so what we minimally want is to make the accesses opaque to the optimizing compilers. Luckily, that is simple to do with VarHandles.{set|get}Opaque.
Ну по написанному, это именно жвм делает, кмк. А не кто-то еще. В том же шарпе, например, вроде такой хуйни нет.
И потом, жвм дает те гарантии, которые не дают процессоры. Out-of-thin-air safety ( https://github.com/openjdk/jcstress/blob/master/jcstress-samples/src/main/java/org/openjdk/jcstress/samples/jmm/basic/BasicJMM_01_DataRaces.java ) и causality (пик) .
Т.е. в некоторых ситуациях jmm слабее, чем то, тебе дают процессоры, в некоторых сильнее. Поэтому знание про процессоры, кэши и прочее, мало тебе поможет, а может даже и помешать...
>>533190
Смотри, когда ты пересоздаешь объект, ты удлиняешь цепочку. Т.е. если раньше у тебя было прямая инициализация в файнал поле, то теперь инициализация объекта с файнол полем в волатайл поле. Т.е. теперь это волатайл рид, а не файнал. И гарантии меньше. Преимущество файналов, что тебе не требуется, чтобы вся программа была корректно синхронизована, т.е. если даже где-то будет гонка, корректно инициализированное файнол поле не пострадает и будет видно всем аболютно корректно. А волтайл поле тебе не дает такой гарантии. Если где-то случилась гонка, то все, ВСЯ цепочка закорупчена. А не только ее часть. На практике это называют например частично иницилизированный объект и прочее.
>В том же шарпе, например, вроде такой хуйни нет.
Какой хуйни? Если ты про
>The optimizing compiler is allowed to check the field once, and if it is "false", reduce the rest of the loop into "while(true)", infinite version.
то нетовский JIT тоже это может делать (и делает).
Когда я писал всякую хуйню, проверяя, может ли он вот свернуть цикл в while(true), предполагая, что ну наверное visibility там нет, следовательно, и он может свернутся, но чет никак. Вот пост даже https://2ch.hk/pr/arch/2024-02-19/res/2920885.html#2932312 (

Если бы ещё эти пикчи грузились...
Там вроде в цикле вызывается Console.WriteLine(), а JIT не знает может ли WriteLine() изменить то поле, так что он генерит код, который каждый раз читает поле. А вот если JIT знает что в теле цикла нет такого кода, который мог бы изменить поле, то он прочитает его один раз.
Пикчи (код: https://godbolt.org/z/8dfjafe4s ):
M() - читает только 1 раз
M2() - читает каждый раз, вызов метода, т.к. не знает может ли метод WriteLine() именить поле
M3() - читает только 1 раз, вызов метода, но JIT знает что у этого метода нет сайдэффектов (захардкожено в JITе)
M4() - читает только 1 раз, хоть и присвоение reference типа это вызов метода в котором есть write barrier, у этого метода нет сайдэффектов
Ну там есть сообщение, где еще код сохранился:
> https://sharplab.io/#v2:EYLgxg9gTgpgtADwGwBYA0AXEBDAzgWwB8ABABgAJiBGAOgCUBXAOwwEt8YaBhCfAB1YAbGFADKIgG6swMXAG4AsAChlxAMyUATOS7KA3svJHyfKKwnYMMcsAgRB5APoAzQdgDmipcfKHjp80trYhRyAFkqAAoASj8jA28fYwB3AAsha0iAQhc3d1jEpPIEoqMAXzjyCsLfGoCLK0pQsM0YypLSgBMIBmBhcmxyAF5yUi9S8jSM8mzcjwKJjomjQYBqEeoaMMtUmlFWJkjsaPHS6p9z40r6oKbwtTaapaTu3v7BkbHKnyn+2dd5t9jM8JmsRgA5CB8I4nIHlSqXIyVADaYRgGFSEE6AEl+IJImiMVjcXxBAB5PhsCBMXA0SHYpiCA4HfIAXWuZga1lefWskOhPPeC2BcMoAHZRqd4UpqkA== Но почему здесь (в M1()) он загружает _flag каждый раз - я хз. Может, код такой, потому что у него размер меньше. Ну и JIT, даже в .NET 8, неидеален.
Вообще, я хотел указать, что это оптимизация именно на уровне вмок, а не процессоров. В шарпе это работает не во всех случаях и зависит от JIT и если бы это именно кэши процессоров или еще что-то было, то не думаю, что вообще были бы случаи, когда нет вечного цикла.
Если я использовал WriteLine, то это конечно ошибка, поскольку например в жабе, она вызывает synchronized. В шарпе наверное тоже внутри есть локи какие-нибудь, которые влияют на конечный результат оптимизации.
а зачем так закапываться в это? Какой профит? В 99.9% проектах с этим никак не сталкиваешься.
Тот код это "наглядный" пример оптимизаций компилятора (и пример того что компилятор опирается на свой memory model).
>а зачем так закапываться в это? Какой профит? В 99.9% проектах с этим никак не сталкиваешься.
Микрооптимизации, любопытство, х.з.
А вообще всякие synchronized и lock, скорее всего, были сделаны, чтобы можно было в тупую обернуть в них нужный код и всё просто работало (и при этом относительно эффективно), без закапывания в memory model и т.д.
Так не качай через впн, там просто пару букв заменить и можно будет скачать. Точнее говоря там заблокировали шлюз, который редиректит на прямые ссылки с плагинами, но сами прямые ссылки все еще работают. Т.е. если ты подменишь сам шлюз, то все будет работать. Руками ты это сделаешь или свой редиректор напишешь значения не имеет.
А доверять вот этой фсбшной параше - себе дороже.
А иначе никак. Подписку на идейку не оплатить, новую версию не скачать, даже плагины не обновить. Вот так, да... Всякие AI штуки тоже не работают как и сторонние сервисы вроде клода или чатгпт
>вы заблокировали мне доступ к вашей программе пожалуйста возьмите мои деньги ради бога дайте полакомиться
ебать браток о ВПН/проксях слышал когда нибудь?
Я тебе говорю, для скачивания, что жидеи, что плагинов НЕ НУЖЕН даже впн. Тебе просто надо использовать другие ссылки, предоставленные самими жетбрейнсами. Вот написал небольшую подмену в репозитории и все https://pastebin.com/iD7mei20 . Оборачивается в нужный пакет и как влитой в системе. Плюс этот малварь сверху сюда запихнул недавно, поскольку все, теперь требует другую страну даже для триалки. А сам install скрипт малваря очень кривой по сути, поскольку он вмешивается в .bashrc/.zshrc, что как бы пошел нахуй.
>не оплатить
Ну ты по бумажной почте или голубиной там деньги отправь. Может примут.
>как и сторонние сервисы
Китайскими пользуйся.
Нахера? Че тебе мешает просто скачать openide?
>>533888
>А доверять вот этой фсбшной параше - себе дороже.
Ты так говоришь, как будто это ФСБ с РКНом тебе жидею перекрыли, да так, что "ололо, как же они исчерпали кредит доверия". Инфантильная какая то предьява.
>>534378
>Подписка на идейку
Для лохов. Сильному не нужно, слабому не поможет.
>плагины не обновить
Ну закроешь вопрос с маркетплейсом, и будут тебе апдейты.
>клод или чатгпт
имеет кучу аналогов разной степени прокачанности, начиная от отечественных развивающихся аналоговнетов типа gigacode и sourcecraft, и заканчивая плагином continue AI, который можно заточить и кастомизировать под все доступные тебе бэкенды - хоть олламу локально разворачивай, если мощей хватает, хоть к провайдерам цепляйся, и который есть в openide маркетплейсе бесплатно и без регистрации.
Все перебанили и теперь ничего не работает. Даже впску не оплатить, т.к. зарубежной карты нет
>Вот написал небольшую подмену в репозитории и все https://pastebin.com/iD7mei20
Сорри, не понял как этим пользоваться
>Плюс этот малварь сверху
Какой малварь?
>Ну ты по бумажной почте или голубиной там деньги отправь
>Китайскими пользуйся.
Твоя ирония мне понятна. По факту китайский дипсик даже в подметки не годится Claude, ChatGPT и Gemini.
По факту пришлось оплачивать подписку через мтс
>Для лохов. Сильному не нужно, слабому не поможет.
Иначе не получить последнюю версию с апдейтами и багфиксами
>имеет кучу аналогов разной степени прокачанности, начиная от отечественных развивающихся аналоговнетов типа gigacode и sourcecraft, и заканчивая плагином continue AI, который можно заточить и кастомизировать под все доступные тебе бэкенды - хоть олламу локально разворачивай, если мощей хватает, хоть к провайдерам цепляйся, и который есть в openide маркетплейсе бесплатно и без регистрации.
Это даже не смешно. Сейчас бы сравнивать локальный поделки на открытых моделях и дипсик, когда клод, гемини и чатгпт уже вышли на недостижимые результаты. Про континью вообще поржал - это даже не близко если сравниваем с Junie и другими ассистентами встроенными в IDE. Локальная LLM? Не имеет смысла, т.к. у тебя нет столько вычислительных мощностей. Anthropic Claude ты все равно не заменишь, а получать подсказки и автокомплит прямо в IDE - бесценно
>даже в подметки не годится Claude, ChatGPT и Gemini.
А что там за иновация произошла? Да и как тебе ии вообще помогут в работе, если весь код - это нда?
>а получать подсказки и автокомплит прямо в IDE - бесценно
Или ты на похуях его нарушаешь? Или ты безработный хуй?
>Сорри, не понял как этим пользоваться
Спроси у чатгопоты.
>>534512
>Инфантильная какая то предьява.
Окей. Давай другую, там всего пара сотен плагинов. А не все, что существуют. Это прямо написано в проекте - они взяли самое популярное и вставили себе. Все, что не подходит по лицензии и имеет малую популярность не попало.
>По факту китайский дипсик даже в подметки не годится Claude, ChatGPT и Gemini.
полная хуйня
из перечисленного тобой только гопота откровенный мусор, остальные на одном уровне. гугл может чуть получше других но не настолько чтобы заморачиваться с впном и подпиской. клауда вряжена пиздец и код пишет хуже дипсика. буквально на днях решал одну задачку, дипсик справился - клауда нет. выводы сделал. так что дипсик ничем не хуже, а то и лучше других.
Вот это уже предьява по делу, да.
>когда клод, гемини и чатгпт уже вышли на недостижимые результаты
Какие тебе клод и гемини, если ты - Барнаул, Алтайский край, але? Ты - лох что-ли? Без клавдии работать вообще не способен? Хуевые новости тогда, че, с трудоустройством тебя ждут проблемы. Ливай из страны, пока границы открыты.
Самое тупое что щас можно сделать со своей экспертизой - подвязаться на хуету, которую у тебя в любой момент вышибут, оставаясь при этом резидентом РФ.
У меня же блинь очень-ооочень большой пет проектик с kafka, gRPC, Spring Boot, Security и postgresql ! А тут на тебе! В анкетах указывал что готов поахать и сосать аки папа карло.
В общем дочитываю Effective Java и попробую че нить на гошке запилить и податься на него в рабство. Пожелайте смерти удачи! <3
>gRPC
Зачем?
И они не смотрят пет проекты. Делать им нечего вот, как заниматься неверотяно трудной работой по оценке чужого кода, а еще наверное локально разворачивать это все. Максимум их возможностей прочитать readme, да и то вряд ли.
Тем более, что это сбер и наверное какой-то нибудь тинек, с озоном. Подал бы еще в гугл и сокрушался, аче не взяли

>это сбер и наверное какой-то нибудь тинек, с озоном.
ну а кудаж еще.
я просто физически не могу жить без понтов.
Лига цифровой экономики гребет всех подряд на стажировку.
И почему же такого перспективного разработчика без опыта не взяли, вот только тебя им и не хватало же. Наверное в го так тоооочно возьмут, разглядят алмаз, среди кучи г. Удачи, с таким амбициями, у тебя все обязательно получится.
Так вкат уже мёртв
Так и помру быстрее, чем вкачусь окончательно
Сейчас еще поступил в вуз чтобы вышку получить. Там задания дают на c и на питухоне. Еще будет ебаный c#
Согласен, нормальный человек веб-парашу чистить не будет.
Это только начало, у меня 3 года опыта, а я один хуй зубрю какую то парашу про кафку, постгрес, кубер и тп чтоб старшим гребцом на галеру побогаче взяли, конца и края этому не видно.
Еще и опыт постоянно обесценивается, как раньше был червем пидором без опыта, так и сейчас херки нос воротят. Через 3 года уже будут требовать минимум 10 с выпиской из трудовой.
>если весь код - это нда
Полная хуйня, чисто де юре, да, де факто ни один кабан кабаныч не из госухи не будет тебе предъявлять, если ты таски двигаешь, ему самому это тупо не выгодно, плюс, в случае если уже прям прижимает, то даже так есть варианты
Да хуй знает, нарушать закон и ради чего.. Автокомплита от нейрокала? А это реально того стоит? Типа чем он настолько пиздаче, обычного автокомплита от жидеи? Мне реально интересно.
Кмк, им пользуются те, кто базовые функции даже не освоил.
Единственное, это вот какие-то изолированные задачаки решить, но это не автокомплит, а что-то принципиально иное. Да и скажем, может ли нейронка гарантировать, что её решение точно нихуя не затронет и все точно будет работать. Сомневаюсь, а это львиная часть работы.
Meh, тесты... Единственное, с чем нейрокал действительно хорошо ИМХО справился, это написание комментов к коду. Все.
Автокомплит нейронки отключается в настройках плагинов первым, ибо в 90% случаев он пиздит и спамит некомпилируемую хуету, нежели предлагает чето годное. Любой долбоеб который при мне ноет о том, что ему автокомплита от нейронки критически не хватает, идет нахуй по профнепригодности на первом перформанс ревью.
Агент-мод - нормально, под пиво пойдет в отдельных ситуациях.
https://flix.dev/
>No null value
>No reflection
Блин, реально классный язык. Еще самое прикольное, насколько я могу понять вообще, тут уже нет боксинга.
>Monomorphization to avoid unnecessary boxing of primitives.
Т.е. у них уже настала вальхалла.
Надо будет скачать, попробовать. Хотя и печально, что скорее всего это будет нишевым язычком.
>Т.е. у них уже настала вальхалла.
Ага, разбежался. Если это JVM-based язычок по типу скалы, вальхалла там настолько же настала, насколько и в джаве.
Ну хз, комментарии ихние.
>The parent poster is correct. We do monomorphization, hence Flix types are unboxed. For example, a `List[Int32]` is a list of primitive integers. There is no boxing and no overhead. The upshot is that sometimes we are faster than Java (which has to do boxing). The downside is larger bytecode size-- which is less of a factor these days.
>Caveat: Flix sometimes has to box values on the boundary between Flix and Java code -- e.g. when calling a Java library methods that requires a java.lang.Object due to erasure in Java.

Ееемае, он еще и написан на скале. Это уже прецедент джавы через два рукопожатия чтоли...
Вообще странно, что он не написан на самом себе. Как тот же ghc, да и javac.
>The downside is larger bytecode size-- which is less of a factor these days.
Аа, ну то есть они байткододрочат? Окей, тогда претензий ноль.
Нет, они просто видимо делают специализации коллекций под примитивные типы, вроде как в Eclipse Collections.
Ну не души. Понятно что если они делают поделку поверх JVM и заявляют что избавились от боксинга, значит под капотом они жонглируют примитив-специфичными артефактами. У них тупо другого выхода и быть не может. А чтобы швы наружу не торчали, они байтодрочат. И не то чтобы это было что то зазорное. Все JVM-based языки занимаются байтодрочем в том или ином виде.

Мне еще нравится, что они вообще все взаимодействие с java запихнули в io монаду. Примерно как котлин, они тоже сначала весь код из жабы сделали недоверенным, мол а мы вот не знаем, есть ли у вас там null или нет, ставьте знаки восклицания. Потом они съехали с этого и просто сделали доверенным его - главное удобство. Посмотрим как тут выйдет по итогу.
>Мне еще нравится, что они вообще все взаимодействие с java запихнули в io монаду.
Так это типичный трюк функциональщиков - все, что нечисто по своей сути, запихивать под шконку IO. И дело даже не в null. Без IO все мантры об отсутствии сайд эффектов бьются об реалии на местах.
В этом контексте потешно слушать хейтеров, которые наслушались джуновский восторженный визг про чистые функции, монады так и не осилили, и такие "ыыыыы, ФП не работает".
И нахуй это надо? Какой-то ноунейм язык от ноунеймов, который нигде никогда использоваться не будет.
Вот котлин взлетел потому что, он был от хоть каких-то неймов, которые могли предложить гуглу сделку - гугл пиарит котлин, а они разрешают на хороших условиях гуглу юзать свою иде для андроид студио.
Что эти могут предложить?
Гугл кстати хорошо умеет пиарить языки: котлин, го, еще дарт +- известный и используется в мобилках.
>In the future, this programming model will support new Java Platform APIs, such as classes that encode different kinds of integers and floating-point values, and new Java language features, such as user-defined conversions and mathematical operators for domain values.
Так так так. Это че, перегрузку операторов таки завозят?
Тебе виднее.
К чему ты это написал?
Используется, в основном для всяких апи гитвеев, где надо мерджить и процессить данные.
Если тебе нужен не блокирующий сервер и не хочешь ебаться с реактивным кодом, то я бы юзал котлин с корутинам (можно заставить работать поверх webflux) или го. А ну можно еще ноду
А как сахар может мешать? Условно, любая вещь поверх асма - это уже сахар. Вот с другой стороны, наверное круто, если твой язык содержит минимум кейвордов/языковых конструкций и они настолько пластичны, что из них можно делать собственные конструкции. Т.е. то, что в другом языке требует отдельного кейворда, в твоем языке просто комбинация простейших конструкций. И сахар в такой парадигме, это ad-hoc решение, то, что можно было решить в общем, решается вот для конкретной задачи и прибито гвоздями.
Сахар хорош до определённого предела. Когда его столько, что ты уже код нормально читать не можешь, - это говно ебаное.
Ну не знаю. По моему читаемо, просто привыкнуть надо. Там не столько уж много этого сахар, кмк. Можешь привести пример нечитаемого кода и сравнить его с аналогом на жаве?
Вы видите копию треда, сохраненную 11 сентября в 01:13.
Можете попробовать обновить страницу, чтобы увидеть актуальную версию.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.