Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 43

О, оно ещё и всю переписку сканирует и где-то хранит/анализирует.

Звучит надёжно!

Как швейцарские часы

Видимо логи от кейлоггера в вин11 не очень удобно использовать - только половину переписки видно)

"Дочерняя компания Microsoft, OpenAI" мне кажется эта формулировка некорректно описывает их взаимоотношения.

Да ладно, всё уже понятно. "Это наша корова и мы её доим."

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

В честь чего такой наплыв gpt-ботов? Почти под каждый постом

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

Так GPT-4 уже была доступна, теперь будет доступна GPT-4 Turbo.

Как же они пытаются распиарить этот копилот. Везде и всё суют.

И это здорово, копилот реально крутая штука. Мы с ним за 20 итераций написали программу на C++ при том, что я не владею плюсами совершенно.

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

Попутно копилот давал развёрнутые объяснения того, почему код не собирается и как это исправить (например, в одном месте потребовалось отключить поддержку юникода в свойствах проекта, в другом - использовать иную функцию, потому что используемая устарела, а в третьем - указать в свойствах проекта более современный стандарт C++).

Пытаясь всё это написать с помощью гугла и SO, я бы потратил на порядок больше времени. Да, я мог бы написать этот код с помощью какой-то другой нейросети, но где ещё я, находясь в РФ, могу бесплатно и несложно получить доступ к GPT-4? OpenAI хочет денег и не хочет брать их от "грязного русского". А копилот бесплатен и геоблокировка обходится элементарно - достаточно сменить провайдера DNS.

при том, что я не владею плюсами совершенно

Как тогда вы узнаете, что код работает корректно и не имеет UB и других нежелательных эффектов? Код, который компилируется - это не то же самое, что код, который работает правильно.

код работает корректно

Тестирование. Запуск и дальше смотрю, что то, что нужно было сделать - сделано. Благо там совсем немного действий.

и не имеет UB

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

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

Но на всякий случай я прогнал свой код через статический анализатор PVS-Studio.

восторг от применения подобных ИИ-ассистентов, прямо пропорционален отсутствию знаний в областях, для которых он применяется. Будьте бдительны, особенно c с++, ни один тест не выявит ub в например, таком коде:

auto iterator = vector.begin ();
vector.push_back ( 0 );
while ( iterator != vector.end () ) {...}

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

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

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

«Будьте бдительны, особенно c с++» — на этом можно было прервать предложение. Такой ужас на других языках давно не пишут. В шарпе, например, обходятся LINQ-запросом, в котором описывают, что хотят сделать и где подобную ошибку (модификация в середине потока команд, обеспечивающих перебор) допустить нельзя в принципе.

Здравствуйте, я многопоточное приложение на C# и у меня для вас плохие новости…

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

К сожалению, абстракции как таковые и не каждому студенту доступны.
Использование потокобезопасных коллекций в задаче вполне описываются определёнными паттернами, а gpt пишет код не с нуля, а опираясь на коррелирующие задачи, на которых его обучали.

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

на этом можно было прервать предложение

ну так не я же применяю жпт для с++, а автор сообщения, на которое я отвечаю

А вот не соглашусь ни фига! Это ему так кажется, а на самом деле он применяет «жпт» (хорошее слово, кстати) для WinAPI. Просто довольно естественно писать вызовы WinAPI на языке, который все называют «C/C++».

Приведённый же код написан на C++, а это совсем другой зверь.

Мне надо было переписать батник на скрипт под макос. Начал с копилота и он сначала помогал, но не смог довести до конца, стал тупить.

А вот бесплатная 3.5 помогла и гораздо лучше.

Как-то тестировал на заданиях по русскому языку для третьего класса. В итоге всё равно 3.5 от openai была более корректна, чем копилот 4.0

Это пример ошибки выжившего. Я ежедневно использую и GPT-3.5, и Copilot, но последний даёт гораздо более качественные ответы как в области программирования, так и в большинстве других задач.

Только ты не привёл конкретные примеры, а человек примёр, какая тут "ошибка выжившего"?

Сложный пример не пролезет в комментарии, но попробую показать на простом:

Copilot на GPT-4 без проблем находит ошибку при каждом запросе, GPT-3.5 маловероятно, что сможет дать правильный ответ.

1) Я думаю конкретно эта штука стала популярна до выхода gpt 4 соответственно он был обучен правильному ответу здесь. Я не уверен.


2) Непонятно причём здесь ошибка выжившего.

3) У gpt есть множество версий - четвёрки, турбы, чаты, третьи и все остальные. Чтобы проверить нужно иметь доступ сразу к нескольким. Ответ может зависеть даже от температуры, а не от версии модели.

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

А причём тут ошибка выжившего?

3.5 очень часто ошибается. В комментарии выше пример. Так же 4 лучше разбирает или пишет сложный код.

Никто из них не умеет писать сложный код. Лишь недавно выпустили модель которая более-менее с этим справляется и её нет в открытом доступе. Сложный код gpt пишет для тех кто не умеет программировать вообще, как декорацию.

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

Gpt 4 тоже галлюционирует.

Мы с ним за 20 итераций написали программу на C++ при том, что я не владею плюсами совершенно.

Программирование и так на ладан дышит, а когда друг у друга будут копипастить говнокод ЕЩЁ БОЛЬШЕ…

Для чего, по-вашему, в BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) нужен LPARAM lParam? Для того, чтобы хардкодить в теле колбека строковые литералы? (Правильное решение: передавать при запросе енумерации окон в lParam указатель на статическую переменную, со структурой из двух строковых полей, с оконным классом и заголовком). В чём разница между синхронной (SendMessage) отправкой сообщения WM_CLOSE и прямым вызовом DestroyWindow, и что в данном случае стоило выбрать? Дальше не читал.

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

Все обсуждают, отнимет это говно работу или нет. А по-моему, бояться надо совсем другого: как потом искать квалифицированные кадры.

Правильное решение: передавать при запросе енумерации окон в lParam указатель на статическую переменную, со структурой из двух строковых полей, с оконным классом и заголовком

В комментарии выше я забыл уточнить. В этом случае EnumWindowsProc в коде (это как fubar из примера, размещённого на сайте MSDN — чувствуете УРОВЕНЬ кода, на котором железный дурак проходил «обучение», да?) надо переименовать в CloseFoundWindowProc. Proc это, очевидно, суффикс, означающий, что функция является колбеком, а CloseFoundWindow это её суть: закрыть найденное окно.

В промышленном софте, если там много разных енумераций, можно было бы сделать ProcessFoundWindowProc, и передавать заодно с классом и тайтлом и in-place обработчик («йо, пёс, мы слышали, ты любишь колбеки? поэтому мы засунули колбек в колбек, чтобы ты мог вызывать колбек, вызывая колбек»).

В обоих случаях стоило бы различать пустую строку и нулевой указатель, чтобы различать ситуации «неважно» и «отсутствует». (Т.е. «закрыть любое окно с заголовком “Home” независимо от класса» или, наоборот, «закрыть любое окно с классом “SysList32” независимо от заголовка»).

А вообще, вы такую тему подняли, что хоть целую статью пиши.

Вы оценили тот факт, что WinAPI позволяет закрывать окно, принадлежащее хрен знает кому? Это потому, что там окна это объекты системы, а не чо-попало внутри приложения.

Скоро такого не будет, потому что новые приложения пишутся по большей части как handleless. Окна у них ненастоящие. Это ещё и кроссплатформенно.

Майкрософту бы следовало упаковать всю эту сложность, появившуюся точно больше четверти века назад, во что-нибудь милое типа CloseWindowByClassAndTitle(), т.к. это реально частый кейс. И программисты, не знающие WinAPI (тут дело вовсе не в незнании C++!), могли бы вызывать простую функцию. Не на уровне WinAPI, конечно, а на уровне библиотек.

Но Майкрософт на это забил. Его колбасит с каждым новым управленцем: то UWP, то ещё что-то. А потребность никуда не делась. И вот мы дожили до того, что сначала роль «библиотеки» для этого кода вместо настоящей библиотеки выполнял СтекОверфлоу, а теперь — ещё хуже: теперь это чатбот! Теперь мы через чатботы обмениваемся кодом для вызова. Качество — соответствующее! (Настоящую-то библиотеку вылизали бы, чтоб не стыдно было показывать). Тут не знаешь, смеяться или плакать от такого «прогресса».

P.S. Ещё Майкрософт могла бы упаковать эту сложность в DOM-узлы, чтобы найти окно можно было с помощью $()-селектора, сделав основой всего браузер, но для этого надо было иметь яйца (и мозги).

Но буду честен... подкупают же бесплатной версией GPT-4 Turbo. Захотелось посмотреть, что да как у копилота. Но думаю лень будет

Если речь идёт о том copilot которой сейчас с бингом, то он тупой до невозможности и никакого сравнения даже с gpt-чат 3,5.

Возможно, вы не ту вкладку используете. Стандартная, которая открывается при старте Copilot - это GPT-3.5.

Скоро начнем путаться в версиях и видах Copilot. Устроили зоопарк, две минуты ушло на осознание того что обновление не затрагивает мою версию Copilot Individual от Github.

Каждый день подобные статьи.

Ха-ха... Да ваш ИИ... И погнали минусами пулять.

Стадия отрицания против стадии принятия, холивар. Очевидно ж куда все идет и придет очень скоро.

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

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

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

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

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

На сайте Вольфрама есть такая фраза
"Wolfram|Alpha находит значения не таким образом, как это делают люди...."

Примерно так будет звучать будущее применительно к программированию

Ага, ассемблер.

Думаю, тут основная проблема в том, что ИИ сейчас (причём в очередной раз) идёт по классической кривой Гартнера.

Это когда при знакомстве с любой новой технологией наступает сперва "пик завышенных ожиданий" (особенно если технология достаточно активно продвигается) и все бегают со словами "сейчас мы перевернём мир".

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

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

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Другие новости