Информация об изменениях

Сообщение Re: Что сложно дается ChatGPT? от 22.01.2023 15:07

Изменено 22.01.2023 15:29 vsb

Re: Что сложно дается ChatGPT?
Здравствуйте, Shmj, Вы писали:

S>Надеюсь, вы уже попробовали ChatGPT?


S>Вопрос такой. Заметили ли вы его слабые стороны?


У него нет экспертных знаний.

Он натренирован на интернете. В интернете 99% знаний от нубов и для нубов, 1% знаний от экспертов. Инструмент по сути статистический, поэтому он выдаёт ответы, подходящие для нубов.

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

S>Одна из очевидных — малый контекст. Т.е. в него нельзя загрузить весь свой проект — можно только 1 экран кода, грубо говоря, и уже по одному конкретному вопросу работать.


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

S>Ну для Кубера оно смогло сделать конфигурации, их без чтения тоже не так просто сделать.


А вот скажи, ты эти конфигурации сам вообще проверял? Т.е. пробовал поставить кластер, следуя советам от Чата? Реальный кластер на реальном (или виртуальном) железе. С этим самым LetsEncrypt. Задеплоить туда статический <p>Hello world. Потом ещё было бы неплохо поддерживать этот кластер в течение некоторого времени, делать апгрейды нод. А то ведь дьявол-то в деталях.

S>Вот вы сможете написать прямо сейчас чтобы на уровне кубер была поддержка SSL-сертификата от Let's Encrypt, лоад-балансер и 3 рабочие ноды на основе Docker? Не думаю что сможете — нужно читать достаточно много документации, готовое тоже не просто найти. А оно смогло.


Так уж получилось, что я последний год с разной степенью интенсивности работаю с кубером. Я поднял кластер для своей текущей компании, полностью с нуля, в том числе и TLS там настраивал с относительно нетривиальной конфигурацией (часть хостов для внутренней сети, часть для внешней).

Сразу замечу. На основе Docker в 2023 году куб поднимать это полная глупость. Куб с докера переехал давно и современные версии на докере не работают. Сегодня куб надо понимать на containerd.io. Т.е. вот так походя тебе Чат рекомендует сетап, на который ты потом потратишь несколько недель, мигрируя боевой кластер на другой рантайм. Вот тебе пример, где нубство Чата выльется в реальные затраты, в то время как любой эксперт тебе это скажет. Ну а Чат просто начитался старых статей.

Если хочешь — можешь в этой теме скинуть то, что тебе Чат насоветовал. Могу попробовать что-то прокомментировать. Дело в том, что поднять кластер это тема действительно нетривиальная, если речь не о готовом решении в облаке. Я долго мудохался с вышеупомянутым лоад балансером, вплоть до чтения кода в гитхабе определенных компонентов, чтобы выяснить важные нюансы. И я уверен на 100%, что Чат мне тут не помог бы. Такие вещи постигаются только литрами выпитого кофе и часами экспериментов. При этом сразу замечу, что я далёк от экспертного знания куба, хотя и полным нубом уже, наверное, не являюсь.

Ещё могу привести пример, на котором Чат не смог написать правильный с моей точки зрения код.

Имеется такая задача — сгенерировать пароль из букв. Букв 26. На JS.

Первая попытка — он сгенерировал пароль через Math.random(). Ну это никуда не годится. Пароли должны генерироваться криптографическим ГСЧ.

Когда я ему на это указал — он сгенерировал их через SecureRandom. Но там есть такой нюанс: SecureRandom генерирует целиком байты. Он сгенерировал значение от 0 до 255 и потом привёл его к 0-25. Что-то вроде floor(n / 255 * 26).

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

Поэтому правильный подход: сгенерировать число от 0 до 255, поделить его на 8, получить число от 0 до 31. И дальше, если оно меньше 26 — вернуть его. А если не меньше — то повторить всё сначала. В этом случае генерируется 100% равномерное распределение. Это — правильный код.

Ну с натяжкой можно принять другой подход: сгенерировать 6 байтов, преобразовать их в число от 0 до 2^48 — 1 и потом как в пункте с 1 байтом действовать. Тут уже перекошенностью точно можно пренебречь. Почему 6 байтов? Потому, что в JS целые числа представимы до 2^53.

Это те вещи, которые хороший программист должен учитывать. А нуб про них даже не думает. Как и Чат.

Возможно я бы смог довести Чат до нужного решения. Ну как я нуба смогу довести до нужного решения, если он будет терпелив, я буду терпелив и буду задавать ему наводящие вопросы. Хотя в случае с Чатом моё терпение кончилось первым.


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

Но я вполне допускаю, что лет через 10 он станет на голову выше, т.к. 10 лет назад Чат представлялся всё же больше фантастикой, даже для его текущего уровня. И тогда вполне может заменить и меня. Ну поживём-увидим. Картошку с помидорами сажать и курей разводить, думаю, мне никто не помешает. Проживём как-нибудь.
Re: Что сложно дается ChatGPT?
Здравствуйте, Shmj, Вы писали:

S>Надеюсь, вы уже попробовали ChatGPT?


S>Вопрос такой. Заметили ли вы его слабые стороны?


У него нет экспертных знаний.

Он натренирован на интернете. В интернете 99% знаний от нубов и для нубов, 1% знаний от экспертов. Инструмент по сути статистический, поэтому он выдаёт ответы, подходящие для нубов.

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

S>Одна из очевидных — малый контекст. Т.е. в него нельзя загрузить весь свой проект — можно только 1 экран кода, грубо говоря, и уже по одному конкретному вопросу работать.


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

S>Ну для Кубера оно смогло сделать конфигурации, их без чтения тоже не так просто сделать.


А вот скажи, ты эти конфигурации сам вообще проверял? Т.е. пробовал поставить кластер, следуя советам от Чата? Реальный кластер на реальном (или виртуальном) железе. С этим самым LetsEncrypt. Задеплоить туда статический <p>Hello world. Потом ещё было бы неплохо поддерживать этот кластер в течение некоторого времени, делать апгрейды нод. А то ведь дьявол-то в деталях.

S>Вот вы сможете написать прямо сейчас чтобы на уровне кубер была поддержка SSL-сертификата от Let's Encrypt, лоад-балансер и 3 рабочие ноды на основе Docker? Не думаю что сможете — нужно читать достаточно много документации, готовое тоже не просто найти. А оно смогло.


Так уж получилось, что я последний год с разной степенью интенсивности работаю с кубером. Я поднял кластер для своей текущей компании, полностью с нуля, в том числе и TLS там настраивал с относительно нетривиальной конфигурацией (часть хостов для внутренней сети, часть для внешней).

Сразу замечу. На основе Docker в 2023 году куб поднимать это полная глупость. Куб с докера переехал давно и современные версии на докере не работают. Сегодня куб надо понимать на containerd.io. Т.е. вот так походя тебе Чат рекомендует сетап, на который ты потом потратишь несколько недель, мигрируя боевой кластер на другой рантайм. Вот тебе пример, где нубство Чата выльется в реальные затраты, в то время как любой эксперт тебе это скажет. Ну а Чат просто начитался старых статей.

Если хочешь — можешь в этой теме скинуть то, что тебе Чат насоветовал. Могу попробовать что-то прокомментировать. Дело в том, что поднять кластер это тема действительно нетривиальная, если речь не о готовом решении в облаке. Я долго мудохался с вышеупомянутым лоад балансером, вплоть до чтения кода в гитхабе определенных компонентов, чтобы выяснить важные нюансы. И я уверен на 100%, что Чат мне тут не помог бы. Такие вещи постигаются только литрами выпитого кофе и часами экспериментов. При этом сразу замечу, что я далёк от экспертного знания куба, хотя и полным нубом уже, наверное, не являюсь.

Ещё могу привести пример, на котором Чат не смог написать правильный с моей точки зрения код.

Имеется такая задача — сгенерировать пароль из букв. Букв 26. На JS.

Первая попытка — он сгенерировал пароль через Math.random(). Ну это никуда не годится. Пароли должны генерироваться криптографическим ГСЧ.

Когда я ему на это указал — он сгенерировал их через SecureRandom. Но там есть такой нюанс: SecureRandom генерирует целиком байты. Он сгенерировал значение от 0 до 255 и потом привёл его к 0-25. Что-то вроде floor(n / 255 * 26).

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

Поэтому правильный подход: сгенерировать число от 0 до 255, поделить его на 8, получить число от 0 до 31. И дальше, если оно меньше 26 — вернуть его. А если не меньше — то повторить всё сначала. В этом случае генерируется 100% равномерное распределение. Это — правильный код.

Ну с натяжкой можно принять другой подход: сгенерировать 6 байтов, преобразовать их в число от 0 до 2^48 — 1 и потом как в пункте с 1 байтом действовать. Тут уже перекошенностью точно можно пренебречь. Почему 6 байтов? Потому, что в JS целые числа представимы до 2^53.

Это те вещи, которые хороший программист должен учитывать. А нуб про них даже не думает. Как и Чат.

Возможно я бы смог довести Чат до нужного решения. Ну как я нуба смогу довести до нужного решения, если он будет терпелив, я буду терпелив и буду задавать ему наводящие вопросы. Хотя в случае с Чатом моё терпение кончилось первым.


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

Но я вполне допускаю, что лет через 10 он станет на голову выше, т.к. 10 лет назад Чат представлялся всё же больше фантастикой, даже для его текущего уровня. И тогда вполне может заменить и меня. Ну поживём-увидим. Картошку с помидорами сажать и курей разводить, думаю, мне никто не помешает. Может даже придумают какого-нибудь андроида, который эту картошку копать будет за доступные деньги. Проживём как-нибудь.