Pull to refresh
28
0.4
Даниил Солопов @dan_sw

Software Engineer, Bachelor of Computer Science

Send message

И много Ваших коллег закончили проект "универ"?

Промозглый окоп и кружащие дроны помогут это понять

Не надо этим никого запугивать. Так себе мотивация. В нормальной стране, где государство заинтересовано в своих гражданах, отчисление из университета и последующий "поиск себя" (даже возможное возвращение обратно на учёбу) ничем не "карается" и это совершенно нормальный процесс. То, что так случилось, и "окопами" сейчас студентов всех запугивают виноваты не студенты, а хреново устроенное государство, в котором жизнь человеческая ничего не стоит.

Так что использовать такой аргумент - это лишний раз вносить вклад в общую пропаганду страха своего государства и места жительства (ни к чему хорошему это не приведёт), которая сейчас много где распространена (особенно в РФ). Всё нормально будет, с продолжением учёбы или без. Учёба в университете не должна быть определяющей человека по жизни. Ваше высказывание можно точно также трактовать как "ну ничего, тюрьма и мучения дадут это понять" - чувствуете, как бредово звучит? Почему я, если не закончу учёбу должен "прощаться со своей жизнью"? Это очень плохая тенденция, не впервые слышу такое мнение. Даже от докторов наук слышал, вроде умные люди, а несут такую хрень.

Студент имеет полное право прервать учёбу, продолжить или не продолжить её и считаться из-за этого "недочеловеком" он не должен, как и считаться "самоубийцей".

Неудачи и удачи человека преследуют всю его жизнь. Важно то, как с этими неудачами человек справляется. "Ой, ничего не получается, пойду лежать на печи" или "Ну щас я возьмусь с новыми силами за эту работу и преодолею весь этот путь"? От этого всё зависит, а не от "закончил он учёбу или нет".

Мой комментарий будет иметь смысл, если этот пост - действительно правда и ты (автор этого поста) действительно находишься в такой ситуации. Я пишу исходя из того, что наши истории чем-то похожи, да и мой опыт может тебе чем-то помочь. А поскольку у нас нет культуры взаимопомощи и взаимоподдержки, то немного внесу вклад в её формирование (авось когда-нибудь через 1000 лет люди наконец будут друг к другу относиться не как "человек человеку волк", а по другому).

Мы с тобой, можно сказать, коллеги, только я обучался в другом университете и худо/бедно закончил бакалавриат, а недавно отчислился из магистратуры на последнем курсе освоив все предметы программы, но не написал статью и не сделал магистерскую диссертацию (а это просто "стыдоба"). У меня мог быть красный диплом (по оценке именно того университета, в котором я сейчас "учусь"), но из-за отсутствия статьи (мне по сути пока не о чем писать и я понимаю, что уже 3-ий месяц после восстановления мне писать всё также не о чем) я был не допущен и отчислен по своей же вине.

В армию меня не забрали только потому, что я удачно устроился в аккредитованную организацию и продолжаю в ней работать. Хотя перспектива "отслужить" меня не сильно пугала, но неплохо так давила на меня с целью продолжать активно исправлять положение по учёбе.

Основная моя проблема заключается в расфокусировки внимания на множество разных независимых друг от друга тем, которые даже не преподаются в рамках моей программы (в частности системное программирование, Linux API, C/C++, CUDA, архитектура GPU, линейная алгебра, и т.д. - предметов таких просто не было в моей программе (она в целом очень хорошая), но я и сейчас считаю их необходимыми для своего личного профессионального роста). Желание освоить "всё и сразу" сильно бьёт по успеваемости в университете. Думаю, что в твоей истории такая проблема тоже имеет место быть.

Сейчас появляется куча "информационного шума": кто-то где-то что-то разработал, что-то открыл, чего-то достиг, куда-то углубился и у него всё получилось. Выходит куча статей, о новых разработанных технологиях и постоянно кажется, что нужно разрываться с одной темы на другую, чтобы просто преуспеть в этом мире. То AI, то CUDA, то квантовое программирование, то ещё что-нибудь. И под напором новостей это ещё больше масштабируется и увеличивается.

Для себя я понял, что смысла изучать "прям всё" - нет. Нужно осваивать программу ВУЗа полноценно (прям именно учиться), даже если в программе есть предметы, теория по которым очень быстро устаревает - лишним не будет. Нужно всецело погружаться в изучение программы и двигаться вперёд. И если даже твои знания и устареют, то ты будешь знать как было "до" и сможешь спокойно изучить что-то новое, у тебя будет фундамент, на который ты сможешь в дальнейшем наращивать всё новые и новые знания.

А свои проекты и задачи выстраивать нужно таким образом, чтобы можно было их потом в качестве курсовой/дипломной/магистерской заявить в университете и продвинуться по учёбе (ну или для научной статьи в журнале, что добавит тебе баллы). Университет сейчас - очень важная организация, для формирования твоего личного будущего. Я знаю о чём говорю - я учился, недоучивался, отчислялся и восстанавливался. Даже сейчас я имею проблемы по учёбе после восстановления и как-то их решаю (и у тебя это получится). Любую проблему можно решить (даже если она кажется "чрезмерно непостижимой"). Главное прилагать к этому усилия.

Даже если тебя сейчас отчислят и ты отслужишь в армии - советую снова попробовать идти и поступать в университет (туда не все идут из-за "отсрочки от армии"). Физическое развитие отлично сочетается с интеллектуальным :) Много времени ты не потеряешь, а наоборот - многое приобретёшь: связи, научный фундамент, академическое знание и многое другое, чего в "обычной жизни" приобрести труднее.

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

это все — осмысленная деятельность или просто очень сложная форма прокрастинации (памагити).

И, к сожалению, это всё именно обычная, обыденная форма прокрастинации. И ничего больше. Не навешивай на неё ярлыки типа "сложная", "многоуровневая", "сверх мощная" - они тебе будут только мешать с ней справиться. Это обычная, простая, самая обыденная прокрастинация, с которой можно (и нужно справляться). Ничего уникального тут нет, с такой прокрастинацией сталкиваюсь я, да и куча других людей во всём мире ежедневно.

Если не поможешь сейчас сам себе - никто, совершенно никто тебе не поможет. Есть только проблема и эта проблема касается только тебя лично. Возьми эту ситуацию (разрешения этой проблемы) под свой контроль и исправь её. По другому никак. Не у всех в детстве (да и во взрослой жизни) были примеры людей, которые демонстрировали стойкость, решительность, уверенность и контроль при встрече с подобными ситуациями и историями, но ты можешь стать таким человеком и послужить для кого-то примером. Таким образом ты даже можешь немного изменить этот мир (оно того стоит).

Удачи!

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

Как будто Вы бы реагировали как-то по другому на этот "факт". Точно также и реагировали бы (если не уже или не раньше). И это не тщеславие.

Представьте - учитесь вы десятилетиями сложному какому-то делу, образование получаете, работаете, а потом вам говорят - вы больше не нужны бизнесу, вы больше никому не нужны, ваша профессия теперь признак "устаревания", когда-то она была популярна и достойна, а теперь её считают смешной и нелепой. А у вас за плечами куча лет опыта, тяжёлая учёба, преодоление разных сложностей в жизни и прочее. И вам тут такое говорят. Ваша реакция? Правильно - вы просто офигеете от такой несправедливости по отношению к вам, проявленной бизнесом ("эффективными менеджерами"). Вы тоже человек и вы тоже офигели бы, если бы с вами такое случилось. Не нужно подавать это в комментарии как будто Вы стоите "выше этого". Нет, не выше. И использование LLM Вам никак в будущем не поможет и не спасёт Вас, если вдруг бизнес повернётся именно такой к Вам стороной, о которой я только что написал.

Все мы люди, и что действительно нужно признать, так это то, что каждый из нас хочет быть счастливым. Хочет достойно прожить свою жизнь, получать достойную оплату труда, иметь возможность проводить время со своей семьей, гордиться своей работой и своим трудом. Все мы ради чего-то да живём и что-то нас радует, а что-то огорчает. И когда какие-то челы в компаниях рассуждают о "замене программистов", увольняют их, а потом "возвращают их обратно" - это нехилый такой звоночек, который заставляет задуматься: а ведь действительно эти челы стремятся всеми силами нас просто взять, заменить и обсмеять. Каждый в этом мире сам за себя, нет у нас культуры взаимопомощи и взаимоподдержки. Бизнес может сожрать тебя со всеми потрохами и даже не поперхнётся, лишив тебя надежд, мечтаний, смысла жизни, а ты даже и не заметишь.

Что делать? Разочаровываться и сдаваться? Или бороться и продолжать идти вперёд? Каждый для себя сам отвечает на этот вопрос.

сегодня профессия писателя кода

Ну оскорбили так оскорбили :) Вы "писателя кода" к программисту не приравнивайте пожалуйста. Это два совершенно и принципиально разных понятия. Писатель кода... даже звучит как-то, странно (комментарий точно не LLM писала? :)). Как-будто какому-то человеку дали задание "перепечатать с листка бумаги в ЭВМ код и запустить, посмотрим что получиться". Программисты вообще не этим занимаются. А вот "писатели кода" может быть :)

Давайте писать только низкоуровневый и оптимальный код!

А лучше сразу на машинном языке!)

Вот только скажи где-нибудь о необходимости дисциплинированного, сбалансированного и без перегибов использования LLM, как тут же появятся комментарии по типу:

"А компилятор это тоже высокоуровневое упрощение! Пишите на машинном языке!"

"Текстовый редактор? Ну это тоже же "высокоуровнево" - пишите в блокноте!"

"Ассемблер и только ассемблер!"

"Ничего лучше двоичного кода не придумали, правильно! Пишите двоичный код!"

"Промпт-запросы это просто высокоуровневый язык программирования, как Python"

Очень много подобных комментариев прочитал, и ровно всех их объединяет одно - взять пример из комментария и возвести его в абсолют (причём я попытался даже границы "баланса" обозначить - хотя бы просто использовать IDE, компиляторы и текстовые редакторы, а не тупо код с LLM копипастить). И ничего больше. Даже уже читаются эти возведения в абсолют как-то обыденно.

А то тут никто самостоятельно программировать не умеет!

В действительности далеко не все, кто использует LLM умеют программировать (тоже, наверное, очевидную вещь сказал, или нет?).

20 лет пишу код, последнее время - всё через LLM и вообще больше не хочу возвращаться к ручному написанию кода.

Ну, это дело Ваше, не осуждаю, но и не поддерживаю :) Я вот программированием занимаюсь 6-ой год (в совокупности) и всё так же "вручную" пишу программный код, создаю алгоритмы, использую структуры данных и изучаю Computer Science (фундамент, так сказать). И мне этот процесс нравится, и я этим хочу заниматься всю жизнь :)

Машина объективно лучше во всём: она не устаёт, она внимательна к каждой детали, она способна переваривать кучу информации.

Машина (в данном случае LLM) действительно во многих интеллектуальных вещах намного круче нас. Она способна за считанные секунды сгенерировать вполне себе неплохой код, который разработчик может использовать. На данный момент LLM самые лучшие поисковые движки (на мой взгляд) и инструменты для анализа и обобщения какой-либо информации. Наш мозг не искусственный, а потому работает и устроен совсем иначе, нежели "мозг" LLM. Не спорю, только... человек то LLM, в таком случае, зачем? :) Ну... если мы такие не идеальные, "плохие", "не лучшие" - складывается ощущение, что что-то тут не так, не находите? Ведь наша система человеческая так устроена, что всё "не лучшее" отсекается рано или поздно, а "лучшее" наоборот - привлекается в большом количестве и объёме. И если так задуматься... то такие рассуждения могут привести к тупику.

Я не считаю, что машины (программы, LLM) лучше людей. Сравнивать машин с людьми - некорректно. Это совершенно два разных существа на концептуальном, физическом и идеологическом уровне. Да машины быстрее считают, да они быстрее анализируют, но и мозг у них "искусственный" и создан людьми. Пусть они хоть в 1000-100000 раз будут быстрее, "умнее" нас, но это не должно быть одним из параметром оценки человека. Мы - абсолютно другие. Мы не машины и сравнивать нас с машинами некорректно.

Зачем мне в 101 раз руками набирать текст, который за меня за считаные секунды набирает машина, а моя функция - лишь проверять написанное?

Ну... для Вас программирование превратилось в обычный набор руками какого-то текста, так что да - ничего удивительного. Для Вас это действительно будет лишней тратой времени (если б мне не нравилось программировать, я бы тоже так рассуждал).

лучше бы тренировал мышцы на теле, а не пальцы - больше пользы было бы.

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

Появление LLM можно сравнить с появлением трактора

Да с чем это появление только не сравнивали. И с трактором, и с текстовым редактором, и ещё с чем-нибудь. Я лично считаю, что появление LLM это в принципе уникальное явление, которое сравнивать с "созданием колеса" или "повсеместной индустриализацией" не стоит. Это просто некорректно. Это не трактор, это программная система, которая способна обрабатывать информацию очень быстро, также как её и выдавать.

Но вы предлагаете всем и дальше учиться махать киркой.

Вы махали когда-нибудь киркой? Или может быть каким-то ручным трудом занимались долгое время (именно физическим)? С программированием это даже не сравнимо. Программирование - это, прежде всего, интеллектуальный и творческий труд. Понятно что не для всех и не во всех работах такое происходит. Где-нибудь в популярном фрилансе фронтендер может спокойно пилить лендинги раз в неделю и зарабатывать деньги. Там об интеллектуальном труде и не задумываются даже - главное скорость. Но всё же в программировании игровых движков, беспилотных автомобилей, да и тех же LLM - есть наука, есть математика, есть куча различных концепций и сложных теорий, без которых просто ничего запрограммировать не получиться. Именно такие задачи и определяют будущее, и их решают программисты.

нам главное работу сделать да побыстрее вернуться к своим личным делам и хобби

Я бы не сказал, что именно это критерий профессионализма. Я бы сказал, что это критерий "работяги", для которого программирование это просто работа, а не что-то большее. Для меня программирование это гораздо больше, чем написание синтаксиса какого-то языка в текстовом редакторе, да последующая его компиляция во что-то "работающее". Язык - это прежде всего инструмент. Программирование - это про системы, про взаимодействие этих систем в определённых средах, это про различные поведенческие паттерны, про математические модели. Системы нас окружают вообще везде. Любой человек из себя представляет систему. Финансовая система нас окружает везде, государство как система, окружающий нас мир - тоже система. Система - это ключевое понятие в программировании. Понимая одну систему, можно понять и многие другие. А зачем это понимание? Да для чего угодно, у всех разные цели.

Когда я отписывал код проекта этой галиматьёй несколько лет назад, то просидел две недели по 8-12 часов. 

Не одним OpenAPI едины. Да и Swagger схемы можно описывать куда проще и быстрее. Но LLM да - помогает в тех случаях, когда не хочется самому писать простой генератор Swagger'a или не хочется искать инструменты для её упрощённой генерации.

повелевать машиной, а не быть самому как машина по набору текста.

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

Я искренне убеждён, что именно машина Вами (и многими другими) будет в действительности управлять и повелевать, а не наоборот. Да она и сейчас уже это делает :)

Скоро люди даже туалетные дела свои будут решать с помощью LLM, не то, что кодить. Мне такое будущее не нравится, я за сбалансированное взаимодействие с LLM'ками, без перегибов. Свободу выбора нужно сохранять, иначе мы превратимся просто в "домашних питомцев" сверхумных машин, которыми управляют группы не очень умных людей (а то и совсем откровенно глупых).

куда теперь идти разработчикам.

Моё личное мнение (куда теперь идти разработчикам) - идти и учиться программировать самостоятельно, хотя бы без нейронных сетей и прочего чрезмерно упрощающего процесс разработки бустинга (компиляторы и текстовые редакторы не в счёт). Становится экспертом в программировании, а не "prompt engineering" или "vibe-coding". В таком случае ни одна компания не сможет вам навязать идею, будто без LLM "высокопроизводительная и высокоэффективная" разработка невозможна.

Люди Linux, Windows писали без LLM, игры серии GTA (это очень большой труд), да сами LLM без LLM сделали, а сейчас стали появляться статьи, в которых обсуждают "проблемы" связанные с появлением платных лимитов на обращение к нейронным сетям.... И как справляться с этой "проблемой" "разработчикам"... Мда...

Если все LLM в мире разом выйдут из под контроля, сломаются или вовсе будут каким-то образом удалены со всех хостов, что же вы будете делать, товарищ программист? Всем скажете, что вы "разработчик" и что не можете ничего разрабатывать без инструментов? Или, быть может, напишите эти инструменты заново, с нуля?

реально почитал комментарии по статье, это позор какой-то...

Также автор этого и последующего комментария:

хабр: "РЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯ ИИИ ПЛОХАААА ПИСАТЬ ПРО ИИ ПЛОХАААА ВОТ ТЕБЕ МИНУСЫ В КАРМУ РЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯ"

 я то автору карму плюсанул из жалости

 хабровское болото уничтожит твой аккаунт за эту статью

Эм... Что?

Любопытно поинтересоваться, а как Вы оцениваете свои комментарии? Они вообще норм?

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

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

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

Очень нехороший вывод. И очень вредный. Т.е., Вы задумались о том, что по настоящему не понимали как устроен LLM (на примере DeepSeek, ChatGPT, <другая модель, которую использует Ваша компания>), после того, как Ваших коллег начали увольнять? Где тут логика? Это ведь просто страх. Страх того, что если не начнёте "разбираться в ИИ" то Вас точно также уволят из компании, как и тех, кто открыто внедрению LLM сопротивлялся. Знаете, лучше быть луддитом или неолуддитом, чем что-то изучать и исследовать из чувства страха и боязни того, что Вас могут уволить из-за "отсутствия ИИ-френдли/ИИ-знаний". Мотивация для изучения "внутреннего устройства LLM" должна быть иная (потому что с такой мотивацией далеко Вы не уедете). Да и не LLM одним едины, есть куча других областей программирования, которыми спокойно и сейчас можно заниматься. Как будто других областей кроме "ИИ" нет.

Ускорение, которое невозможно игнорировать

Возможно. И весьма успешно. Да и "ускорение" ли? Да и всё, что сделано на скорую руку не всегда хорошо работает. Даже если рука "ИИшная".

В нашей команде сегодня процессы построены вокруг искусственного интеллекта

Очень жаль, что не вокруг людей и команды :) Какой-то куль поклонения "ИИ", который сейчас во многих компаниях распространяется.

В целом, производительность выросла в 2 раза без потери качества

Статистики, конечно же, не будет. А субъективная оценка может и обманывать. Сильно обманывать.

Если ты перевыполнил, используя ИИ, то получаешь квартальный бонус. В результате в команде исчезло всё сопротивление — мы больше не делаем только необходимый минимум.

"За деньги - да" :D

Почему люди на Хабре всё ещё отрицают ИИ

Я людь, и я не отрицаю ИИ. Напротив, мне он очень нравится. Он отлично выполняет свою роль в качестве поисковика. Если нужно с чем угодно разобраться - пару промптов и уже можешь выполнить задачу / изучить что-то новое / проверить гипотезу в программном коде, который просто лень писать (но править не лень) и т.д. Зачем мне напарник-кодер? Я и сам могу программный код написать. А вот движок, с помощью которого можно разобраться практически во всём - это прям гениальный инструмент. ИИ для меня именно вот этот движок. Использую его возможности на максимум) Всё реже и реже приходится за ним перепроверять информацию, что не может не радовать.

у многих ИИ вызывает раздражение

В этом виноват грязный и агрессивный маркетинг - куча статей напичкано этим самым словом "ИИ", но авторы, как правило, не понимают истинное его значение. И плодят своими "трудами" посредственные материалы, популяризирующие ту позицию, которую продвигают крупные компании на рынке. Типа "ИИ - есть", например. Или "ИИ решит за вас любую задачу", или "ИИ заменит всех и вся!". Это всё очень сильно бесит. Людям буквально внушают подобными статьями, что они больше не нужны и их обязательно заменят (и не оправдывайтесь, даже Вы страшитесь момента, когда Вас попросят освободить компьютер Claude или ChatGPT). Вы своим материалом подлили масла в этот горящий огонь, вот и всё.

 Я читаю статьи про машинное обучение, применение новых архитектур, инструменты - это качественный контент, который пишут эксперты

Не всегда это пишут эксперты, и не всегда материал качественный.

Статьи, в которых авторы рассказывают, как они популяризировали, внедряли искусственный интеллект вызывают сопротивление у профессионалов, в итоге эти статьи теряются в информационном поле

Ох, бедные "эксперты" с "качественным" материалом... эх, теряются их статьи в инфополе... о нет... как же так... (и это замечательно, покуда теряются в инфополе именно посредственные и не интересные статьи, которые уж точно не писались экспертами. Этакий автофильтр :) ).

Почему у части разработчиков возникло ощущение, что их знания сакральны?

Насколько большая эта часть? Я думаю, что таких разработчиков довольно не много. В любой научной или прикладной дисциплине нет ничего сакрального. Всё можно изучить, хоть паразитологию, хоть квантовую физику - было бы желание. Как думаете, если всё за всех ИИ будет делать (именно настоящий ИИ) - интересующихся людей будет больше или меньше?

В зарубежных компаниях это понимали, там уже прошла волна увольнений

Ну да... зарубежные компании ведь не могут заблуждаться и творить какую-то дичь? Могут, творят, ошибаются, разоряются. Нужно стремиться к тому, что лично для Вас приемлемо в контексте отношения компании (и его руководства) к сотруднику. Если Вам ок, когда Ваших коллег увольняют за своё личное мнение, за желание работать самостоятельно - то ок. Мне вот это не ок.

Сопротивление — естественная реакция, но это процесс не технологический, а психологический. Нам банально лень учиться, мозг выбирает привычное, потому что так он экономит энергию.

"Я понял, что мне надо скорей учить ИИ, чтоб меня не уволили", также автор "нам банально лень учиться". Мда.... ну, такое... Вас хоть с точки зрения аналитической психологии разбирай - будет хороший пример разработчика, который вынужден "впустить в свою жизнь ИИ". И не от личной заинтересованности, а потому что "меня заставили". Без шуток - это не хорошо.

Хотя, есть же стадии принятия. Может быть, у Вас и не было другого выхода. Вот Вы и приняли уже "неизбежное".

В любом случае, удачи Вам. В современных реалиях где "каждый сам за себя" неудивительно, что статьи продвигают идею "замены всех и вся ИИ для экономии бабок". Неизвестно, куда такой путь приведёт человечество в конечном итоге, но мы являемся невольными участниками этого пути, а потому вынуждены каждый по своему мириться с теми или иными ограничениями и справляться со страхом, тревогой и боязнью каждый по своему.

К слову, тут можно проверить ещё и Webpack или Rollup (как с ними ведёт себя React Compiler). Вдруг тут эта проблема отсутствует... До "тщательной проверки" тут ещё далеко.

Я проверил очень тщательно, а вы нет.

Какой вы молодец :) Тогда без явно включенного компилятора тоже имело смысл бы проверить и добавить в статью, что вот без него - всё вполне работает. Мб тут есть баг, и есть смысл о нём команде React.js сообщить.

Вы же предоставили ссылку на пустую песочницу где ничего нет

Я предоставил ссылку на веб-приложение, в котором можно протестировать тот код, который я приложил после ссылки. Мне было лень шарить конкретный пример, к тому же код можно скопировать и вставить куда угодно, а вот ссылка может быть битая (я переходил по вашей ссылке из статьи, и мне не удалось посмотреть ваш пример. Кстати, до сих пор).

используется React с включенным компайлером

Справедливо. Его действительно нужно явным образом включать. Тут я ошибся. Вы же не сам React.js за это "минусовали", а только лишь за компилятор с babel-plugin-react-compiler и vite (исходя из сборки).

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

В любом случае странно, что без явного определения компилятора всё работает корректно (ссылку на редактор и код для проверки я оставил в комментарии выше), а с включённым компилятором - нет. Вероятно тут проблема комплексная.... где-то явно есть баг, который не полечили.

Остальное комментировать неинтересно.

Ну... эм... никто и не просил, собственно :))

Написали бы сразу – вызывается непредсказуемо.

Ну, я же не буду врать :)

Тошнит уже от этих «механизмов» реакта.

Ну так используйте другую библиотеку/фреймворк.

Просто пусть метод render отрендерит результат этого JSX выражения. В чем проблема?

А путь метод не рендерит результат этого JSX выражения при явном вызове render. В чём проблема?

Уже даже сам автор этого недоразумения отказался от своего детища, а вы продолжаете.

Это говорит мне человек, который до сих пор классовые компоненты использует и "искренне" не понимает, почему "хуки не поддерживают лаконичность и удобность ООП". Ага, да.

Вы же себе прямо противоречите.

Прям бесит, когда чел вырывает фразу из контекста и делает вывод по всей статье. Я согласился не с вашими предъявами к рендеру или ООП в хуках - я с другим согласился. Авторам React.js и мейнтейнерам есть над чем поработать в плане общения с пользователями их библиотеки. Вот с этим я согласен, а не со всем, что вы в статье пишите. Вы вроде цитаты умеете соотносить с ответами, так в чём дело?

Я описал в статье сколько это на самом деле стоит.

Ага. На самом деле. Да, конечно. Статистику конкретную я не увидел.

Он обязан не ломать браузерное API.

Эмм... браузерное API? Которое в разных браузерах может отличаться? И React.js его сломал? Хм... ну, это конечно сильно. Если взгляните на какие-нибудь новомодные JS фичи то не все современные браузеры их поддерживают. API у всех разное, кто-то даже движок использует разный, представляете? А значит оценивать работу React.js на этом "своём" движке нужно учитывая его особенности.

Ничего React.js не ломает в контексте браузерного API. Вам показалось :)

Вы действительно считаете, что сломать базовое поведение JavaScript где обращение к геттеру приводит к его вычислению – это нормально?

Ну так... может ну его, этот геттер? :) Зачем он тут нужен? Просто добавили чтобы показать как компилятор React.js захэширует его вызов. Причём сама техника геттеров может успешно никогда вообще не использоваться React.js разработчиками.

А вообще... я буквально только что решил проверить ваш этот пример с геттером и вот что обнаружил - он нормально работает в React 19. Можете и сами попробовать хотя бы и через браузерное решение:

import React, {useState} from "react";

const MyOwnObject = {
  get uniqueId() {
    return Math.random()
  }
}

export default function App() {
  const [count, setCount] = useState(0);
  const up = () => setCount(Math.random())

  return (
    <div>  
      <div>Current count {count}</div>
      {/* "Чудо чудное" MyOwnObject.uniqueId изменяется! */}
      <div>Current unique key {MyOwnObject.uniqueId}</div>      
      <button onClick={up}>Update</button>
    </div>
  )
}

Возможно у вас какие-то свои настройки компилятора установлены. Делаем вывод - возможно вам пора обновить ваш React.js :) Ибо проблемы в новой его версии нет. Возможно и в React.js 18 её нет, я не знаю какая у вас версия. Всё работает нормально. Работает точно так же, как если бы мы подставили вместо MyOwnObject.uniqueId Math.random(). Проверяйте тщательнее свой программный код и не вводите людей в заблуждение :)

Так может вы не будете защищать хуки? Это ведь они к этому приводят, и им приходится чинить их еще больше ломая все?

Да-да-да... виноваты хуки, классы и ещё до кучи. Виноват JavaScript! О... может быть виноват объект Function? Точно! Наверняка асинхронные генераторы, из-за них потом приходится всё чинить!

Нормально делай - нормально будет :) Нет идеальных инструментов для решения прям всех задач. Не одним React.js едины, есть ещё Solid.js, Vanilla JS, Angular, Ember, и до кучи библиотек/фреймворков - копай сколько хочешь. У всех разные подходы, интересные особенности.

Если проблема реально есть - хотелось бы в ней действительно разобраться, а не бросаться громкими лозунгами по типу "React.js плохой! Ломает браузерное API! JavaScript поведение не по документации! Компилятор плохой, потому что геттер не вычисляется!". Это крайне не профессиональный подход.

По верхам? Ну ладно.

Ну да.

Рендер — это не рендер

Чего? Вы сейчас серьёзно? Рендер не рендер только потому, что Вы его явным образом вызвать не можете? Он вызывается периодически при каких-либо изменениях states/props в компонентах (ну и при перерисовке родительских компонентов и других, в принципе разумных ситуациях).

И какой именно React.js Вы ненавидите? Используете классовые компоненты, которые считаются уже довольно таки сильно устаревшими. У них есть много других проблем (например, разница между React.Component и React.PureComponetn), но то, что функцию рендера нельзя явным образом вызвать - не проблема, а механизм работы самого React.js

Ну почему?! О чём они думали? Почему вызов метода render не приводит к рендеру? Это же так очевидно!

Может быть, чтобы разработчики не сломали логику всего проекта случайно? Ведь по сути пример рендера очень простой, а они могут быть чертовски сложными, с различной логикой, условным рендерингом и прочими вещами. Со всеми этими возможностями Вы бы хотели вызывать функцию рендера? Не думаю.

С какой легкостью мы бы подключали внешние источники данных!

Да, в общем-то, и сейчас это делается не трудно. Взял вывел в отдельный контейнер определения источников данных и методов для работы с ними и всё. Например (Redux, connect):

const mapStateToProps = (state, ownProps) => {
	const { database } = state;
	return {
		database: database,
	};
}
const mapDispatchToProps = (dispatch) => {
	return {
		getData: (ids) => dispatch(getDataDispatch(ids)),
	}
}

export default connect(
	mapStateToProps,
	mapDispatchToProps
)(MyComponent);

// MyComponent - какой-то классовый компонент

И ничего плохого в этом нет. Работает, даже на продакшене. Бывают конечно косяки, но где их нет?

Это всё. Зачем целая директория для этого пакета?

Коротко - чтоб Вы спросили :) А если серьёзно, какая разница какой у них код-стайл? Да потребовалась целая директория, для такого маленького пакета, ну и что? А ничего. Работает этот код в отдельной директории или нет - всё равно, главное чтобы он решал свою задачу. Да и, есть вероятность, что кэш импортов здесь как-то участвует (мб что-то оптимизирует), но не уверен.

Какова вероятность, что, обнаружив какой-то баг, я смогу попробовать его исправить и отправить PR, а не ждать и надеяться, что мейнтейнеры когда-нибудь сделают это сами? Около нулевая. Именно поэтому в репозитории React'а висят баги от 2014 года — не потому, что их кто-то другой не может исправить, а потому что это фиктивный open-source. Это системная непрозрачность, и она прослеживается во всём, что делает React.

Почти со всем согласен. Это печальная ситуация.

Как? Как можно было принять такое решение? О чём они думали? Это же абсурд! Я понимаю, что разработчики React'а ненавидят ООП, но не до такой же степени?

Чёрт... если говорить о хуках, то это вообще в целом функциональщина JS. Тут нет ООП, тут есть функциональное программирование на JS. Какой-то... надуманный минус. Не лаконично, согласен, но хуки не рассчитывались на ООП. Собственно, Вы их и в классовых компонентах без обёрток (костылей) использовать не сможете.

Но зачем нужна обёртка, если у событий единый стандарт? React застрял в 2010-х, хотя вышел в 2013. Его «нормализация» событий — это попытка решить проблемы IE8 и старых Firefox, которые давно умерли? Нет ни одной причины иметь SyntheticEvent, кроме как сделать код для React'а несовместимым с чем-то другим.

Я думаю, что это было необходимо из-за особенностей механизмов самого React.js. Да и обязан ли он быть кому-то "библиотекой, с которой можно перенести всё на Solid.js"? Не думаю. Обработчики синтетических событий подхватывают изменённые состояния, в то время как обработчики обычных событий (без специфической обёртки) - нет. Об этих особенностях я даже писал статью в своё время.

React.js не обязан быть тем решением, которое можно перенести на Solid.js, Angular или другие фреймворки/библиотеки. Это... странно :)

Но нет! Compiler намертво закеширует значение, полученное при первом обращении к MyOwnObject.uniqueId, и никогда больше к нему не обратится!

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

А сейчас этого не происходит и это хорошо. Постоянные пересоздания объектов и так мешают React.js быть более эффективным в контексте аллокаций памяти.

React больше не про разработчиков. Он про контроль.

Не согласен. Любая библиотека или фреймворк сопровождаются своими ограничениями. По не эффективной работе с памятью в React.js - согласен (но и тут нужно доп. проверки и исследования), а про остальное... как-то всё надумано и по верхам. Синтетические события и ключевые слова по типу className - это скорее необходимость, чем "ааа, нас лишают контроля! мы не сможем React.js переписать на Solid/Vue/Angular за день!!". Да и весь JSX код всё равно компилируется в JavaScript, а в DOM всё также добавляются div'ы c class, вместо className.

И пока мы молча принимаем его правила — он будет становиться всё более оторванным от реальности.

Чушь конечно. Боюсь представить какая выйдет статья, если Вы по программируете на Angular пару лет :)

Поэтому я ненавижу React.

А мне он очень нравится, также как Solid.js и чистый JavaScript. При правильной работе с ним можно добиться очень неплохого результата.

Да хоть Gemini, всё равно - решение то есть, а бизнес заинтересован только в конкретных готовых решениях. Здесь человек это самое и сделал - готовое решение. И не важно как (бизнесу всё равно), главное что результат есть и довольно таки неплохой (можно взглянуть на бета-версию и repo в GitHub чтоб в этом убедится).

И за это всё оплата только в виде премии... да ещё и после увольнения "обещание всё бесплатно пофиксить" - это прям очень не хорошо. За любую работу нужно получать соответствующее денежное довольствие. Бизнес (вообще любой) ни за что бы на свете (под какими угодно угрозами) не стал бы просто так ничего делать или отдавать другим людям что-то ценное (даже продукты питания, он скорее их сожжёт, чем отдаст организациям которые эти продукты питания отдадут нуждающимся). Поэтому к нему имеет смысл относиться точно также. Любое обновление - плата. Любая работа - плата. Даже если это система написанная с помощью GPT-моделей.

Обещал полгода бесплатного фикса критических багов

Что ж Вы так? Свой труд надо ценить и за него соответствующую плату получать. Тем более работа вышла очень хорошая, UI и серверная часть получилась весьма неплохой. Любые фиксы должны быть платными. Вы всё-таки за такой проект ничего кроме премии не получили, а он точно стоит хотя бы двух зарплат программистов уровня если не Junior+, то Middle уж точно :)

Интересный усложнённый пример вычисления значений по умолчанию. Порой приятно удивляюсь насколько гибкими могут быть выражения на JavaScript :)

Скорее всего не из-за рекламы, а из-за рейтинга. Это ведь статья из блога компании, которая в рейтинге вторая (после RUVDS). Борьба за рейтинг :) Если посмотреть на количество положительных голосов у этой статьи, то смысл публикации статьи с таким содержимым является очевидным.

Думаю, что потом будут статьи о "свойствах объекта" с 50+ положительными голосами (лайками), потом о работе "циклов в JavaScript" с 100+ положительными голосами и, разумеется, статьи о разнице let, var и const в JavaScript с 200 положительными голосами :)

Мы, как читатели (или авторы) можем только сделать вывод из всей этой истории. Например, вывод о том, как именно большие рейтинги компаний на Хабре достигаются. Не кропотливым трудом, а накруткой положительных голосов под "какими надо" статьями. Ничего удивительного :)

Уж про деструктуризацию информации в Интернете вообще полно. Тут например, она тоже очень хорошо разбирается (и на практике, и с теорией, и даже задачи есть!). Тут тоже куча информации по ней (опубликовано на Хабре ещё в 2021 году). Вот тут примеры её использования классные есть. Не пойму, зачем на такие простые темы ещё статьи писать? Давно ведь уже всё разобрано и на разных ресурсах, так что информации по этой теме полно.

Вроде дело то не хитрое, просто берёшь и деструктуризуешь:

const { data, value } = obj;

А написано про особенности концепции, скрытой за этой одной строкой, столько, что с книжкой "Война и Мир" скоро можно будет соревноваться. Про какие-нибудь сложные и продвинутые темы информации не найдёшь, а про деструктуризацию объекта или просто про свойство объекта - всегда пожалуйста, +100500 статей об одном и том же, с разными словами.

Для новичков лучше писать что-то по серьёзнее (моё мнение). Уж складывать 1+1 их учить и рефлексировать об этом не надо, сами научатся (если ещё не научились). Лучше более серьёзные темы задеть, чем писать об одном и том же разными словами и картинками.

1
23 ...

Information

Rating
2,210-th
Location
Иркутск, Иркутская обл., Россия
Date of birth
Registered
Activity

Specialization

Software Engineer, ML Engineer
Middle
C++
Python
TENSORFLOW
Pytorch
Cmake
Linux
Deep Learning
Cuda
Computer Science
Keras