Pull to refresh
93
0
Евгений Петров @EugeniyPetrov

User

Send message

Это нормально, я покусился на святое :)

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

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

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

Как? Она же натренирована выдавать правдоподобный текст.

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

Можно спросить модель одно и тоже 2мя разными противоречащими способами. Например - "это же правда, что алгоритм А быстрее алгоритма B", а вторым вопросом наоборот что B лучше A. Если модель скажет, в обоих случаях - да, это правда. Значит пи*дит, если скажет в одном случае да, а во втором нет - значит можно доверять.

Опять же тестирование, подставить реальные данные и посмотреть как отработает.

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

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

Но в начале года я погрузился в машинное обучение - это была совсем новая для меня отрасль и я точно говорю что для обучения LLM'ки работают очень хорошо. Да, они ошибаются но вообще далеко не все примеры из интернета работают. Зато часто бывает так, что читаешь какую-то теорию и что-то не понятно и нагуглить ну вообще не получается. Моделям можно позадавать вопросы. Ответы может быть будут неправильные или не идеальные, но в них будет какой-то смысл. Я в конце концов смотрю на результат - есть он или нет.

Так что в этом плане я бы сказал, как раз, что первое применение для LLM - это обучение.

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

Я считаю (мое личное субъективное, ничем не обоснованное мнение), что если взять 2 разработчиков любого уровня. Одному дать LLM модель, а другому не дать. То первый будет перформить лучше на 10% и более. А в случае с джунами, они вприцнипе могут брать LLM и начинать с ними работать нарабатывая опыт и (барабанная дробь) учиться писать код, если сочтут это необходимым.

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

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

Я не призываю набирать на работу бомжей с улицы. Я призываю по сути не требовать знание таблицы умножения, когда у каждого в кармане есть телефон с калькулятором, а вместо этого начать проверять навыки работы с этим калькулятором.

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

Процитирую фразой одного хорошего человека - "утверждение нуждается в формализации и доказательстве."

Ну что же теперь, совсем не брать джунов на работу? Каждый опытный когда-то был джуном и очень вероятно, что его ошибки до сих пор кто-то разгребает. Будь у него 5 лет назад такой инструмент как ИИ-помощник, вы думаете было бы хуже?

  • Про время был уверен, что написал, но в какой-то редакции эта информация из поста видимо исчезла. В ИИ режиме на задачу ушло 1.5 часа. В ручном режиме было бы быстрее, но только потому что код я пишу уже давно, рука набита, хоткеями, сниплетами и прочими генераторами быстро все делаю, а чату нужно писать целые предложения, ждать пока он сгенерирует, выделять текст, вставлять. Это долго. Ну т.е. сейчас я вижу больше проблему с интерфейсом для работы с ИИ. Среднестатистический джун эту задачу делал бы дольше - 100%

  • Нейронки хорошо придумывают названия переменным. Не копипастят код. Субъективно.

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

  • Это было бы интересно, может быть когда-то проведу.

Если есть такое требование то и подход будет другой. Нельзя просто написать алгоритм O(n) и надеяться что он будет работать быстро на 1 млн элементов. Если требование есть, то уже надо думать как проверять. И если не будет удовлетворять производительности то просить его переписать, чтобы удовлетворял.

В прочем в моей статье речь была о задачах совсем другого уровня. Ну разумеется чатгпт не заменит профессоров, которые новые алгоритмы придумывают, речь о 90% CRUD задач, в которых нет никаких требований на 1 млн элементов, нет никаких высоких нагрузок. Нужно просто, чтобы работало

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

LLM модели делают ровно тоже самое, ну только вместо набивания шишек они возьмут скажем наиболее популярное решение, которое в большинстве случаев окажется приемлемым.

Представьте, что вы вообще ничего не понимаете в программировании и вам нужно нанять программиста. Откуда вы будете знать, что программист не сделает ошибку? Да ниоткуда не знаете, и он ее скорее всего сделает. Ну для этого вы наймете еще кого-то, кто проверит.

В конце концов я нигде не писал, что AI-кодер - это низшая ступень развития человечества, они тоже в процессе учатся, они тоже рано или поздно узнают об OWASP Cheetsheets, они могут спросить ИИ а как сделать безопасно. Это просто люди, которые получают тот же код другим способом.

Правда в том, что большая часть программистов напишет тоже самым банальным и простым способом, чтобы оно просто работало. И в 90% реальных задач они даже вероятно будут правы.

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

А как это делает "традиционный" программист, который копирует код со stackoverflow или использует рандомные библиотеки с гитхаба? Методом проб и ошибок, методом тыка, общением с коллегами.

По поводу сложностей алгоритмов, обычно такой задачи сделать линейно а не квадратично не стоит. Стоит задача сделать быстро - именно с таким запросом он и пойдет в ИИ помощник и тот ему, я уверен, все быстро расскажет.

Работодателю нужно решение проблем, а не код. Работодатель как человек мудрый, вероятно, многие вещи мог бы сделать сам, но поскольку рук у него всего 2, то физически не успевает. Если студент журфака сможет (а главное захочет) решать технически задачи за 10% от зарплаты, то я только за. Но он скорее всего не захочет.

А раскажите как распарсить JSON размером эдак в пару сотен мегабайт.
Похоже просто в песочнице долго лежало. Тоже сначала показалось до боли знакомым. Гугл подсказывает что с лета ждало своего часа:
image
А что не так с заголовком то?
Действительно фейк какой то. Ввел туда SHA1 своего пароля — написал что нашел. Скачал файл с хешами — там нету.
Ну наверное нужно сначала определится что защищаем? Обычно защищают пароль или данные кредитных карт, cv2 коды и т.д… — т.е. та информация которая не должна никоим образом хранится на сервере, а следовательно и получить её владея сессией нельзя. Защищается только момент передачи этой информации на сервер.
Если вы считаете что данные профиля — (фамилия имя отчество имейл) — это конфиденциальная информация то либо эту информацию не нужно нигде выводить, чтобы владея сессией нельзя было её получить, либо передавать айди сессии всегда по зашифрованному каналу — а значит шифровать весь трафик.

Есть ещё один вариант — когда переходите на секьюрную страницу — запрашивать пароль. Поднимать новую сессию и там уже показывать нужную информацию. Т.е. как бы отдельный сайт с отдельной авторизацией, только с таким же дизайном.
Если пользователь введет .../show.php?page=123blablabal вы можете задать поведение по умолчанию — пусть даже привести к int и показать страницу с id=123 (хотя в данном случае будет корректным показать 404 ошибку). Но если он введет неверные данные — вы как программист должны об этом знать. Ошибки совсем не обязательно, даже вообще не нужно показывать пользователю, но программист должен знать обо всех случаях которые отработали не так как должны были. Все ошибки нужно логировать и анализировать.

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity