Журнал инженера-программиста – Telegram
Журнал инженера-программиста
226 subscribers
183 photos
7 videos
148 links
Мир глазами программиста. Истории и размышления.

Автор: @Dementor_AK
https://www.linkedin.com/in/dv-kinash
Download Telegram
Когда кто-то что-то утверждает, важно смотреть Кто и Кому это утверждает. Все относительно!

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

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

Так почему тот же английский считается очень простым, а чешский очень сложным, если все с точностью до наоборот? И тут мы возвращаемся к моему заглавному утверждению!

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

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

TL;DR Почувствуйте себя полиглотом, учите белорусский - самый легкий язык в мире! 🤓
👍6👏4💯42
Media is too big
VIEW IN TELEGRAM
Сервис Hailuo AI вчера запустил неделю бесплатных генераций видео з первого и последнего кадров.

Если вы о таком много слышали и хотели попробовать - ваш шанс!
👍4
Сколько существует платформа 1С8, столько у разработчиков было пожелание добавить туда ООП. И каждое обсуждение таких просьб было поводом для холиваров, в которых правы были одновременно все стороны. Действительно ООП для 1С-программирования не хватает, и действительно чистое ООП в 1С не нужно, и действительно частично ООП в 1С даже есть.

Лично я был в лагере "ничего добавлять не надо" пока не попробовал строгое типизирование в 1С:ЕДТ. К тому моменту я уже знал TypeScript (типизирование в JavaScript) и решение из 1С:ЕДТ на базе комментариев на контрасте сразу выглядело ужасно. А когда стал применять, то от реализации ужаснулся еще сильнее...

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

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


К чему я вспомнил ООП? А к тому, что нормального синтаксического контроля не хватает возможности описывать свои классы/интерфейсы. Есть определяемые типы, но это маленький огрызок от потребности - просто комбинация ссылочных и примитивных типов, когда нужны более сложные структуры. Нужно единое описание заказов для множества коннекторов с различными CRM, единое описание чека для управления драйверами разных фискальных принтерах, единое описание файла для различных хранилищ... Сейчас в типовых библиотеках такие описания эмулируются или через упомянутые функции-конструкторы, или вообще не описаны (используются по факту), или применяют смесь подходов - как в БИД, где одни типы в нескольких имплементациях, а других вообще нет.

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

Вот и готово полноценное ООП с Инкапсуляцией, Абстракцией, Наследованием и Полиморфизмом!

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

▫️ вместо Новый Ордер() условно подставить Новый Структура("Номер, Дата")
▫️ вместо МойОрдер.ПроверитьЗаполнение() подставить Тип_Ордер_Модуль.ПроверитьЗаполнение(МойОрдер), где внутри заменить работу с локальным контекстом на входящую переменную

Элементарно же!

#1С #пятница
👍4👀1
Маленькое достижение - я попал в список каналов на 1С-тематику на TGStat.

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

Посидели, отдохнули, отрефлексировали, попрокрастинировали - можно дальше работать 🤓
👍7🏆53🎉1
Если вы слышали в соцсетях, что NASA назвала санскрит идеальным языком для программирования, то это классический случай "ученый изнасиловал журналиста".

Утверждение является ложным как в общем, так и по частям. Правда лишь в том, что существовал исследователь Рик Бриггс (Rick Briggs), который в 1985 опубликовал в издании AI Magazine свое исследование на тему санскрита - "Knowledge Representation in Sanskrit and Artificial Intelligence", и который тогда работал в организации "Research Institute for Advanced Computer Science" при исследовательском центре NASA.

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

===

С технической стороны писать код на санскрите или на русском не сложно. В C/C++ для этого применяют специальные директивы препроцессора #define. Для Python и Pascal есть специальный инструментарий, которые по словарям делают замену вашего родного языка на английские ключевые слова перед компиляцией - популярная практика во многих школах мира, для которых английских не близок.

Но будет ли код на санскрит автоматически хорошим и безошибочным?

Нет! Как всегда все зависит от таланта программиста и от группы сопровождения (которая для санскрита будет очень мизерной).

===

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

Снова нет! Ни одна LLM не "думает" на человеческих языках. И ChatGPT, и Grok, и Gemini, и Claude, и DeepSeek и все остальные "думают" вне привычного человеку языка - на языке токенов, в который преобразуется входящий промпт, и в который будет в финале преобразован результат.

Так может хотя бы санскрит лучше чем английский будет преобразован в токены?

Нет. Все LLM (даже китайские) обучены на английских текстах, которых подавляющее большинство в интернете и оцифрованных книгах - практически все существующие алгоритмы токенизации текстов (Byte-Pair Encoding или UnigramLM) по своей сути идеально работают только с английским, а все остальные языки обрабатывают по остаточному принципу.

Фраза на санскрите при переводе на токены будет занимать в 4-5 раз больше контекстного окна чем ее английский аналог. Та же история и с латинским языком, который вроде как не только простой и понятный, но и является прародителем английской письменности - увеличение количества токенов будет примерно 1,5-2 (на разных тестовых фразах по разному).

P.S. А вот фразы на бирманском будут требовать в 10-15 раз больше токенов чем их английские аналоги! Крайне не рекомендую общаться с ChatGPT на бирманском 🤓

#сплетни #программирование #AI
👍3
Уже завтра стартует курс "Знакомство с 1С:Напарником". Очно в Москоу по ₽600 или ₽1001 за онлайн (любопытно, что на Инфостарте ценообразование наоборот - за личное общение нужно доплачивать, а не получать скидку).

К моему сожалению, прямого доступа к получению 1С:Напарник до сих пор не дали и в рамках курса будут предоставлять студентам лицензию сроком на 9 месяцев. С одной стороны очевидно, что прошедшие курс должны иметь возможность использовать инструмент на работе - т.е. напарник зарелизят не позднее чем через 9 месяцев. А с другой стороны - подозрительно, что лицензия будет действовать еще полгода после окончания доступа к онлайн материалам!

Прихожу к выводу, что доклады на Инфостарте и старт официальных курсов - это просто переход на вторую стадию полузакрытого бета-тестирования, которое будет длится до следующего года. А еще это возможность для УЦ-1 дополнительно заработать на хайпе 1С-вайбкодинга.
👍2
Виталий Черненко навайбкодил сайт WTF Quiz по материалам викторин, которые регулярно постил у себя на канале.

Сейчас на сайте 141 викторина с вопросами на тему загадочного поведения платформы 1С. Это поведение временами настолько загадочно, что из первых 12 вопросов я смог правильно ответить всего на 5.

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

Для специалистов по платформе (не обязательно программистов) обязательно к ознакомлению!
👍3🔥2
Первый баг, который я зарегистрировал в проекте EDT: https://github.com/1C-Company/1c-edt-issues/issues/1893

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

Хорошо, что у нас CI/CD и ряд тестов перед сборкой релиза - сразу заметили баг. Но весьма неприятно. Воспроизводится на всех последних EDT и версиях платформы. Форму уже несколько дней не удается реанимировать - видимо нарушения во внутренней структуре. Похоже придется делать заново.
👏53👍1
Финальный квест в Гендальфе - это что-то запредельное. Весь вечер пытаюсь подобрать ключик, но видимо разработчики не просто закрыли все уязвимости прошлых семи уровней, но и сделали защиту от векторов атак, которые ранее уже были опробованы.

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

Люблю такие головоломки 🤓
🔥3
Вчера я решил попробовать новый ИИ-инструмент Trae от ByteDance. По сути это клон Cursor (тоже на базе VS Code и похожая бизнес-модель), но с большим числом LLM, более высокими лимитами, более дешевыми планами (Pro за $10/мес против $20 у Cursor) и некоторыми своими ноухау. Они заявляют, что оптимизированы для командной работы над большими проектами со множеством файлов - стало интересно скормить ему какую-нибудь ERP...

📝 Но сегодня я хотел не рекламировать новый инструмент, а обратить внимание на то, с чего начинается установка каждой программы - на лицензионное соглашение. Китайцы выкатили огромный файл, который я естественно не стал читать и просто скормил ИИ для анализа рисков. Большинство пунктов стандартны: запрет на реверс-инжениринг, обучение конкурирующих решений, использование в странах под санкциями США... Но был и интересный момент - весь обрабатываемый контент включая логотипы может использоваться компанией ByteDance для коммерческого использования. Так что нужно держать во внимании, что своего "убийцу Фейсбука" тут лучше не создавать.

👀 Но разве среднестатистические пользователи ПО используют ИИ для анализа лицензионных соглашений? И разве фактически есть выбор отказаться? Это только в анекдотах кто-то читает 50 страниц соглашения и отказывается, потому-что не устроила формулировка...

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

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

🔮 Вы знали, что когда генерируете картинки и видео в Midjourney, то они могут продать на них права в Wirestock, а сервисы генерации аудио Suno и Uncharted Labs продают работы своих пользователей в Sony Music и Warner Music? Понятно, что продаются права не на все подряд, а только на контент, который загружается на YouTube и стриминговые платформы, и который начинает приносить монетизацию - тут внезапно объявляются новые правообладатели и требуют лицензионные отчисления за использование "их собственности". И только в этот момент удивленные "креаторы" узнают, что же на самом деле они подписали не читая своим бездумным кликом "я согласен".

🦄 В идеальном мире соглашение должно быть из коротких и четких пунктов, которые дают ясное представление пользователю, к каким юридическим последствиям могут привести использованию нужного им сервиса. Эти пункты должны быть отключаемы, если пользователь согласен с ограничением функциональности и/или доплатой. А при внесении платежей за использование услуги сервис не должен иметь право развести руками - он должен покрывать убытки, к которым он же привел (в оффлайн бизнесе использование страхования является обычной и часто обязательной практикой).

🔔 Но мы живем не в идеальном мире. Поэтому проверяйте соглашения перед подписанием хотя бы с помощью ИИ.
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍2🔥1
Вчера Гугл Украина запустили новый учебный поток на платформе Google Cloud Skills Boost.

Как и в прошлые годы, за завершение учебного модуля из теории и лабораторных дают бейджик. За накопление бейджиков дают подарки.

Только подарки какие-то странные - смотрите на скрин. За минимальные усилия будут давать большой теплый брендированый худи, а дальше коврик для мышки, носки,... головоломку с панамкой, планер с брелком... Что? При чем если ты получаешь больше бейджей навыков, то теряешь право на получении подарков "низших категорий" - держи свой брелок и забудь о брендированных худи, свитере и футболке.

В прошлом году я не стал участвовать так как за 3-4 бейджа давали бутылку для воды, которую я уже получил в позапрошлом году, а за 5-7 давали носки (ранее они были за 3-4 бейджа). Я поздно узнал о программе и успевал получить максимум 5 бейджей - т.е. или еще одна бутылочка или носки. Логично было пропустить, так как все навыки сохраняются в профиле и повторно получить бейджи за то же самое нельзя (точнее по сообщениям от участников в прошлом году был глюк со сбросом навыков, но его уже устранили).

К слову, спидранеры из учебного чата уже вчера вечером хвастались тем, что за часы прошедшие с момента старта успели получить по 3 или даже целых 4 бейджа.

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

#google #обучение
👍5🥰1
Журнал инженера-программиста
Недавно писал, что хочу послушать доклад Александра Леонова из Магнита об использовании 1С:Напарника. Я еще отметил, что анонс публичного выступления похоже связан со скорым выходом этой технологии из закрытого партнерского тестирования. Сегодня нашел новые…
Подтвердилась моя догадка о выходе 1С:Напарника в открытый доступ до начала конференции Инфостарт Ивент.

С сегодняшнего дня технология доступна всем желающим при условии наличии учеток 1С-разработчика или пользователя ИТС. Каждый может сгенерировать себе или своим коллегам и друзьям ключики в нужном количестве со сроком действия до 01.10.2026

Генерация ключа по ссылке code.1c.ai/tokens , где достаточно нажать кнопку добавления ключа и дать ему название. Как установить плагин ИИ-помощника и где указать созданный ключ, детально описано по ссылке code.1c.ai/easystart

#1С #новости #ai
3
Журнал инженера-программиста
Подтвердилась моя догадка о выходе 1С:Напарника в открытый доступ до начала конференции Инфостарт Ивент. С сегодняшнего дня технология доступна всем желающим при условии наличии учеток 1С-разработчика или пользователя ИТС. Каждый может сгенерировать себе…
Один день с Напарником 🐱

Вчера я целый день провел с 1С:Напарником (он же 1C:Workmate) и готов поделится своими впечатлениями.

Изначально был запланирован единый лонгрид, но я столкнулся с ограничением символов в Телеграм. Поэтому оформил свои мысли в "коротких" сообщениях, которые связал ссылками друг на друга для удобства чтения.

Что собой представляет 1С:Напарник.
Первые обнаруженные глюки.
Функция №1. Объяснение кода
Функция №2. Проверка кода
Функция №3. Исправление кода
Функция №4. Создание документирующих комментариев
Функция №5. Добавить код
Функция №6. Добавить файлы
Функция №7. Отзыв

#1с #напарник #ии #ші #ai #edt #пятница
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
(начало)

Что собой представляет 1С:Напарник?

С точки зрения EDT, Напарник - это плагин, который можно установить из репозитория https://code.1c.ai/plugin/. С точки зрения пользователя тут есть четыре составляющие: строка статуса, окно чата, раздел настроек и меню команд для редактора модуля кода.

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

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

По опыту "GitHub Copilot for Eclipse" было ожидание, что из строки статуса можно открыть меню настроек и чат, но сейчас подобного поведения еще нет.

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

Чат можно открыть через меню "Окна" или он будет открываться самостоятельно при использовании команд из контекстного меню Напарника при редактировании кода. По своей сути - это панель с HTML-полем, куда выводится страничка https://code.1c.ai/chat/#/

Контекстное меню редактирования модуля опишу детальнее ниже.
👍4
(начало)

Первые обнаруженные глюки

Наверное стоит начать с того, что тестировал исключительно на рабочем сервере, так как на домашнем ноуте 1С:Напарник не заработал. На сайты 1С включая code.1c.ai я захожу благодаря Cloudflare WARP и обычно его достаточно для полноценной работы. Плагин с 1С-репозитория успешно установился, настройки применяются, боковая панель с чатом тоже работает, но только весь функционал по работе с кодом мертв - в статусной панели все время красный кружочек и в логах ошибок бесконечные таймауты при попытках достучатся на неизвестные адреса 😵

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

Так же не понял как пользоваться горячими сочетаниями кода. Например, для запуска "объяснятеля кода" указано "ALT + I, E" (см. скриншот выше). Я пробовал нажимать по очереди - очевидно неработающее решение, просто напечатал буквы в редакторе. Пробовал нажать одновременно - ничего. Пробовал нажать одновременно "ALT + I", а потом дожать "E" - не работает. Пробовал "ALT + I", а потом удерживая "ALT" отпускал "I" и нажимал "E" - открывалось меню редактирования (стандартное сочетание клавиш EDT).
👍3
(начало)

1) Объяснение кода (Explain)

Эта команда всегда создает новый чат, в котором первая фраза "Explain code" (вероятно "Объясни код", если выбран российский режим работы), а потом идет копипаста выделенного кода из модуля.

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

По названию переменных и вызываемых функций Напарник строит гипотезу, что тут может происходить: так я попросил объяснить процедуру управления видимостью/доступностью колонок таблицы товаров в инвойсе, а он посчитал, что это фрагмент из ценообразования и вероятно из конфигурации ERP.

Чего тут нет: а) нет понимания, что это вообще за конфигурация, б) нет понимания, откуда вызывается объясняемая функция, в) нет понимания что делают вызываемые в тексте функции.

Т.е. состоянием на сейчас стандартные функции EDT с показом описания вызываемой функции при наведении мышкой и с командой "показа иерархии вызовов" могут рассказать про кусок кода НАМНОГО больше чем Напарник.

Не вижу смысла использовать пока не доработают использование контекста проекта.
👍4
(начало)

2) Проверка кода (Review)

"Проверяльщик", так же как и "обяснялка", создает новый чат, куда копирует выделенный фрагмент кода с инструкцией "Code review" (вероятно на русском "Проверь код").

В ответ получаем размышления Напарника о том, соответствует ли код стандартам разработки 1С или нет. По сути тут дублируется часть стандартного функционала EDT из окна "Проблемы конфигурации", где уже контролируется соответствие написанного кода всем требуемым для конкретного проекта стандартам. Только в отличии от EDT у Напарника еще нет возможности указать локальную специфику.

На текущей стадии, без настройки соглашений стиля для конкретного проекта - это явно нерабочий функционал.
👍5
(начало)

3) Исправление кода (fix)

Показывает окно ввода текста с инструкцией "Find errors in the code", которую можно отредактировать. Только после подтверждения в окошке создает новый чат, где сначала идет системная инструкция "Modify code", потом выделенный фрагмент кода, потом пользовательская инструкция.

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

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

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

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

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

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

Далее в массиве структур с данными продажи Напарник предлагает свойства таблиц платежей, серийных номеров и контрольных знаков сравнивать с Неопределено прежде чем начать с ними работать. Если бы Напарнику был доступен контекст проекта, то он бы знал, что эти свойства существуют и заполнены как минимум пустыми массивами. И почему сравнение с Неопределено, если по стандартам нужно использовать метод Свойство()?

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

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

4) Создание документирующих комментариев (Generate doc comments for method)

Если эту команду вызвать в каком-то методе, то он от начала и до конца скопируется в новый чат с Напарником с системным промптом "Generate a docstring" (сгенерируй документацию?). В ответ возвращается комментарий, который можно установить методу (процедуре, функции).

Во всех протестированных случаях Напарник ленился и генерировал описание исключительно по названию метода лишь иногда упоминая параметры в формулировке "Сделай то-то на основании Параметр1 и Параметр2". Практически не отличается от стандартного описательного комментария, которую генерирует сам EDT. Преимущество Напарника в виде LLM, которая может проанализировать суть метода и написать что-то более "глубокое", никак не проявилось.

Описание параметров меня вообще расстроило, но было закономерным из-за неумения Напарника работать с контекстом. В моем примере, на вызов функции явно передавался массив; сама EDT в коде понимала, что тут массив и предлагала его методы; сама EDT при генерации комментария правильно указывала тип параметра - а вот Напарник сделал так:
PaymentData - <Type> - Payment data


Была надежда, что хоть может умеет делать комментирование выделенного блока кода - EDT так не имеет, так как "не понимает" суть кода в отличии от LLM. Но выделение проигнорировалось и был предложен комментарий на всю функцию.

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