Copilot – твой парный ИИ-программист

27.08.24

Интеграция - Нейросети

Copilot – инструмент, использующий OpenAI для помощи в написании кода в режиме реального времени. Нейросеть обучалась на миллиардах строк кода, в том числе – на языке 1С. А это значит, что мы можем использовать ее для уменьшения рутинной работы в написании кода. О том, как использовать Copilot в ежедневной разработке при написании кода на языках 1С и OneScript, расскажем в статье.

 

 

 

Copilot – это результат работы трех гигантов: OpenAI, Microsoft и GitHub. Эту нейросеть разрабатывали для того, чтобы поменять ваш подход к разработке.

Copilot обучен на миллиардах строк открытого исходного кода, которые предоставил GitHub. Знает много языков.

В том числе, Copilot знает 1С – за это нужно сказать большое спасибо комьюнити, которое заливает свои проекты на GitHub. За счет этого нейросеть смогла обучиться на коде 1С, и мы можем использовать ее подсказки.

 

 

Copilot можно использовать в нескольких IDE.

  • Visual Studio Code – это редактор кода, один из самых популярных на данный момент. Он работает с разными языками программирования, в том числе с 1С.

  • Vim или NeoVim – это консольные IDE. Если у вас нет графического окружения, но вам нужно исправить код, вы ставите себе эту программу, можете поставить на нее Copilot и разрабатывать свои проекты.

  • Visual Studio – это основная IDE для разработчиков .NET и C++ от Microsoft.

  • И семейство IDE от JetBrains – для Java, для Android, для Spring, и другие их отдельные продукты для разных языков программирования.

Во все эти IDE-шки встраивается Copilot, со всеми он хорошо работает.

 

 

Для 1С-разработчика лучшим выбором будет VSC – Visual Studio Code, потому что все комьюнити работает именно в этом редакторе кода. Для 1С в VS Code есть расширение с подсветкой синтаксиса и другие плагины – все, что нужно для комфортной разработки.

 

Как установить Copilot в VS Code

 

 

В Visual Studio Code у вас есть вкладка «Расширения». Во вкладке «Расширения» вы пишете «Copilot» – у вас появляется три расширения:

  • Первое – это GitHub Copilot. Это основное расширение, которое отправляет запросы на сервер, там обрабатывает данные, получает ответ и дает вам какие-то подсказки.

  • Второе расширение, GitHub Copilot Labs, не работает с языком 1С. Оно работает с популярными языками типа Python, Java, .Net и прочего. Это расширение, которое помогает вам исправлять выделенный код. Например, вы можете выделить код и проверить его на уязвимости. Или узнать, скомпилируется код или не скомпилируется, есть ли в нем ошибки. Или выделить код и попросить Copilot переписать его с Python на C# (или на Java).

  • И GitHub Copilot Chat – это ChatGPT в мире Copilot, последняя их разработка, которую они представили не так давно на открытое тестирование. Это такой продукт, в котором вы можете писать свои запросы, получать готовый код, применять к нему какие-то готовые методы. Дальше я покажу.

 

 

Обязательное расширение для Visual Studio Code – это Language 1С (BSL). Это именно то расширение, которое включает вам подсветку синтаксиса и проверку вашего кода – там есть статический анализатор кода.

Без этого расширения вы будете разрабатывать на языке 1С, как в текстовом редакторе – без ничего.

 

 

Первые два месяца Copilot бесплатный.

Чтобы включить Copilot, вы должны авторизоваться на сайте GitHub, зайти в личный кабинет и в разделе Billing включить, что будете пользоваться GitHub Copilot.

Вам дадут два месяца свободного доступа, далее 10 долларов в месяц.

Нельзя оплатить картами РФ. Нужно оплачивать картами Visa, MasterCard.

И для работы Copilot из Российской Федерации, к сожалению, нужен VPN.

 

 

Когда вы установили и активировали все нужные расширения, Visual Studio Code попросит вас авторизоваться через GitHub, чтобы проверить, есть ли у вас оплата для GitHub Copilot – у вас будет показано уведомление «Войдите с помощью GitHub».

Вы заходите на сайт, вбиваете там логин, пароль, GitHub отправляет ответ обратно в Visual Studio Code, и все – у вас все работает.

 

Как пользоваться Copilot

 

 

Допустим, у нас есть какая-то типовая конфигурация и типовая задача – загрузить данные из Excel в документы «Реализация товаров и услуг»

Мы в конфигураторе создали обработку, добавили форму, разместили на ней команду «Загрузить данные» и в модуле формы создали обработчик команды с пустым телом.

 

 

Если мы выгрузим нашу конфигурацию в файлы, откроем их в Visual Studio Code как проект и начнем что-то писать, выпадет подсказка Copilot.

Допустим, мы написали НачатьПомещениеФайлаНаСервер, и Copilot серым цветом предлагает добавить параметр «ЗагрузитьДанные». Мы можем эту подсказку принять кнопкой табуляции либо просто продолжить писать код, игнорируя то, что нам подсказывают.

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

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

 

Что Copilot ожидает от вас для предоставления самых эффективных подсказок

 

 

Напишем передачу файла на сервер полностью. Укажем, что мы хотим передать переменные «ЗагрузитьДанныеЗавершение» и «ПараметрыДиалога». И попробуем проинициализировать переменную «ЗагрузитьДанныеЗавершение».

Начинаем писать:

ЗагрузитьДанныеЗавершение = Новый ОписаниеОпове

Copilot начинает дописывать за нас конструктор ОписаниеОповещения:

ЗагрузитьДанныеЗавершение = Новый ОписаниеОповещения("ЗагрузитьДанныеЗавершение", ЭтотОбъект);
  • первым параметром он передает строку «ЗагрузитьДанныеЗавершение»;

  • вторым параметром – ЭтотОбъект.

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

А второй параметр ЭтотОбъект – это тоже абсолютно стандартная ситуация. Обычно, когда 1C-разработчик пишет оповещение, он передает именно ЭтотОбъект, чтобы в этом модуле вызвать свой метод.

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

 

 

Мы приняли подсказку, которая была в ОписаниеОповещения, начинаем описывать переменную «ПараметрыДиалога», проинициализировали ее. Дальше начинаем писать:

ПараметрыДиалога.Заголовок =

Copilot подсказывает, что здесь должна быть какая-то строка, например, «Загрузка файла».

Опять же, контекста очень мало. У нас есть только метод, который называется «ЗагрузитьДанные», в котором мы помещаем файл на сервер. Исходя из этого Copilot предполагает, что мы будем загружать какой-то файл. Отсюда и подсказка в заголовок.

Далее мы пишем:

ПараметрыДиалога.Фильтр =

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

Обратите внимание, что она грамотно подставляет значение в Фильтр: сначала идет представление, которое будет в диалоге: «Файлы Excel», в скобках маска, а дальше – вертикальная черта и маска файлов. В этом случае она может подсказать достаточно качественно.

И дальше мы пишем:

ПараметрыДиалога.Множе

И опять же идет подсказка МножественныйВыбор = Ложь. Это в принципе стандартные несложные вещи, которые пишут все 1Сники.

 

Контекст важен!

 

 

В чем логика? Я не просто так заострял внимание на контексте.

В первом случае я здесь начинаю писать:

ПараметрыДиалога.Мно

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

ПараметрыДиалога.Много = Ложь;

Единственное, что здесь можно сделать, это просто продолжить писать код – и либо будет подсказка более релевантная, либо Copilot просто не будет ничего подсказывать, чтобы мы дописали сами.

Во втором случае я удалил заголовок и так как контекста стало больше – мы описали, что будем фильтровать файлы Excel, будем выбирать всего один файл, Copilot может дать в заголовок более осмысленную строку: «Выберите файл для загрузки данных». Такая строка пользователю будет более понятна, чем просто «Выберите файл».

 

 

Далее по контексту. Все это мы писали в области ОбработчикиКомандыФормы.

В этой области в основном пишется клиентский код, с директивой &НаКлиенте. Поэтому когда после слов «КонецПроцедуры» мы опускаемся на две строки, пишем знак амперсанда, Copilot анализирует код, который есть на GitHub, и понимает, что в этой области обычно пишется клиентский код, подсказывает &НаКлиенте.

 

 

Если же мы напишем область ВспомогательныеПроцедурыИФункции и поставим знак амперсанда, Copilot выдаст подсказку &НаСервере, потому что в областях СлужебныеПроцедурыИФункции или ВспомогательныеПроцедурыИФункции на форме в основном пишется серверный код – мы в этих областях обычно пишем &НаСервере.

 

Установка контекста через комментарии

 

 

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

Мы можем генерировать наш код с помощью комментариев или документации к методам.

Например, мы написали метод ЗагрузитьДанныеЗавершение, передали необходимые параметры, пишем:

// Если

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

Самое банальное условие, которое в основном пишут все программисты – это условие на то, выбран файл или нет. И она и подсказывает:

// Если пользователь не выбрал файл, то ничего не делаем

Нам это нравится, мы принимаем эту подсказку, спускаемся на одну строку вниз и получаем новую подсказку – код:

Если ОписаниеПомещенногоФайла = Неопределено Тогда
    Возврат;

Обратите внимание, нейросеть никогда не заканчивает условия и циклы, не пишет КонецЕсли и КонецЦикла сразу.

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

Мы приняли этот код, спустились на строку ниже, если мы не начали писать код, она предлагает просто закрыть условие, поставить:

КонецЕсли;

Если вы примете эту подсказку, форматирование сдвинет КонецЕсли влево, и все будет красиво оформлено.

 

 

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

Мы приняли подсказку по проверке на описание помещенного файла, спускаемся на две строки ниже, сразу получаем комментарий:

// Получаем путь к файлу

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

Если же мы здесь хотим, допустим, сохранить наш файл предварительно в каталог временных файлов, мы можем написать свой комментарий, например:

// Сохраняем полученный файл в каталог временных файлов

Тогда мы получим другую генерацию кода.

А если мы, допустим, напишем свою процедуру ПрочитатьФайл, получим файл из временного хранилища и спустимся на две строки, Copilot снова попытается задокументировать следующую строку вне зависимости от того, что в этой процедуре мы ни одного комментария еще не написали.

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

 

 

По документации к методам. Мы до этого создавали процедуру, в ней внутри писали комментарии.

Сейчас мы можем просто в комментарии написать документацию для генерации самого метода:

// Процедура ПрочитатьФайл – читает файл, передает
// данные для создания документа реализации
// Параметры:
// АдресФайла – адрес файла во временном хранилище

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

В данном случае Copilot для чтения Excel создает COMОбъект, хотя использовать COMОбъекты – это не так хорошо, не так красиво. Copilot, как нейросети, все равно насколько этот код хороший или качественный, это самый часто используемый метод для чтения Excel-файлов, значит это какая-то best practice. Он будет подсказывать то, что написано в GitHub.

Но Copilot всегда пытается подстроиться под ваш стиль написания. Если вы первый раз проигнорируете и напишете свою реализацию чтения файла. Первый раз напишете, второй раз напишете. На третий раз Copilot уже не будет вам подсказывать COMОбъект, он будет брать вашу реализацию, которую вы привыкли делать.

 

Как пользоваться чатом

 

Это были возможности по документации к коду. Теперь про сам чат.

 

 

Я не стал использовать COMОбъект. Пошел на Инфостарт, забил в поиск: «методы эффективной загрузки из Excel». Там есть отличная статейка по загрузке Excel через построитель запроса. Я скопировал с сайта код, вставил к себе в модуль. Но он выглядит некрасиво – нужно убрать лишние пробелы и выровнять отступы.

 

 

Мы можем выделить весь участок кода и написать в чат: «Напиши этот код красиво».

Copilot задумается, и будет исправлять наш код так, как он это видит – как это примерно описано в наших репозиториях на GitHub.

Но мне в этом методе не нравится:

  • переменная ПЗ, потому что я не люблю аббревиатуры в коде;

  • и переменная ТаблицаЗначений, потому что я не люблю названия Массив и ТаблицаЗначений.

 

 

Поэтому я могу сказать: «Напиши этот код красиво, ПЗ замени на ПостроительЗапроса, а ТаблицаЗначений на Данные».

В этом случае он исправит код, исправит форматирование и переименует мои переменные.

 

Как и зачем использовать Copilot в ежедневной разработке

 

 

Вот такой код у нас получился – это все генерация Copilot вместе с созданием документа реализации и заполнением табличной части. Здесь все полностью сгенерировано автоматически, кроме той части с переменными ПостроительЗапроса и Данные, которую я редактировал с помощью Copilot чата.

Этот метод ужасный, он нечитаемый, он не поддерживаемый – такой код писать нельзя. В этом случае мы можем выделить весь метод полностью и попросить Copilot разделить этот код.

 

 

Прямо так и пишем в чат: «Раздели код на несколько методов». И Copilot будет вам генерировать разные методы, которые вы можете копировать к себе.

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

 

 

Внутри метода ПрочитатьФайл просто идет наш ПостроительЗапроса и получение файла из временного хранилища. Нейросеть просто переместила тот код, который мы писали, в функцию. А эту функцию вызвала из основного метода.

 

 

Далее она разделила две функции: СоздатьДокументРеализации и ЗаполнитьТабличнуюЧасть – чуть позже скажу, почему.

 

 

Все создатели нейросетей – неважно, это будет ChatGPT, это будет Copilot, это будет еще какая-то нейросеть – они все говорят одну и ту же фразу:

Мы создаем нейросети для того, чтобы вы могли задавать ей какие-то вопросы на своем родном языке.

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

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

Мы рассматривали варианты создания обработки и всегда работали в контексте этой обработки: нам нужно было создать какой-то определенный объект, прочитать какой-то определенный Excel.

Но мы можем просить Copilot создавать какие-то абстрактные методы, которые могут понадобиться везде.

 

 

Например, можем задать вопрос в чат Copilot: «Напиши метод для удаления дублей из массива».

Получаем вот такой код:

  • создаем новый массив для уникальных значений;

  • перебираем исходный массив – проверяем уникальность каждого значения;

  • выбираем только значения без дублей;

  • возвращаем обратно.

 

 

Или просим: «Напиши метод для фильтрации таблицы значений».

Обратите внимание, что Copilot сгенерировал документацию, где описал, какие параметры передаются, какое возвращаемое значение.

Да, в параметрах нет типизации по стандартам, когда мы должны написать через тире для первого параметра тип ТаблицаЗначений, а для второго – Структура. Это все нам нужно будет дописывать самим.

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

Но при этом, если вы сейчас активируете GitHub Copilot, начнете им пользоваться в VS Code и скажете: «Напиши мне метод для фильтрации ТЗ», скорее всего, вы получите код на Python или на JavaScript. Потому что Copilot сходу не понимает, что вы от него хотите.

Вы должны написать: «Напиши мне метод для фильтрации ТЗ на языке 1С». В этом случае, скорее всего, вы получите примерно такой код:

ТаблицаЗначений.Фильтровать(Отбор)

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

  • Когда вы получили непонятный код, вы пишете: «Нет, я хочу метод для фильтрации таблицы значений на языке 1С через запрос».

  • Вы понимаете, что вам выдается код, там у параметра вместо амперсанда стоит знак процента. Вы пишете: «Мне нужен метод для фильтрации ТЗ на языке 1С через запрос, вместо знака процента используй амперсанд».

  • Вы понимаете, что у вас в строке 287:
    Запрос.Текст = “ВЫБРАТЬ ИЗ &ТаблицаЗначений ГДЕ Истина»
    но не передан параметр таблицы значений. Вы пишете: «Напиши метод для фильтрации таблицы значений на языке 1С через запрос, и, пожалуйста, передай таблицу значений в этот запрос».

Когда я такие вещи объясняю своим коллегам или другим людям, с которыми я общаюсь, они говорят: «Я напишу этот код быстрее, чем нейросеть».

Я с этим спорить не буду. Действительно, написать код быстрее, чем кто-либо, можно.

Мы вообще очень любим писать код. И когда какой-нибудь человек, который работает во франчайзи или на почасовке, говорит: «Я закрываю 200 часов», ему говорят: «Я не верю, что ты столько часов пишешь код». В том-то и дело, что программист не всегда должен писать код, программист должен думать. И Copilot старается изменить наши привычки, поменять подход к разработке.

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

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

  • Моя задача как программиста – думать о связи методов, о связи объектов между собой, о том, чтобы мой код был легко поддерживаемый, чтобы сам бизнес-процесс был более гибкий.

  • Моя работа – не в том, чтобы я сел и написал 300 строк кода. Моя работа – в том, чтобы я автоматизировал бизнес-процесс и чтобы в последующем мы не стреляли себе в голову, когда будем его изменять.

 

 

Вы можете в Copilot Chat писать не только «напиши мне код», «сгенерируй код», «исправь код». Вы можете давать какие-то отдельные запросы на работу с кодом, допустим, попросить: «Объясни этот код».

Выделяете код в области редактирования и пишете в чат «объясни код», он пытается вам объяснить, что там делается.

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

Таким же методом я пишу документацию к своему коду. Если я написал какие-то функции – какие-то нагенерил здесь, какие-то написал руками – закинул все в Visual Studio Code, выделил весь код, сказал «дай мне документацию», он мне над каждым методом напишет:

  • какие параметры я передал;

  • для функции напишет возвращаемое значение;

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

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

 

Альтернативы

 

Copilot платный, но у него есть альтернативы, в том числе бесплатные.

 

 

Есть еще другие нейросети, которые мы можем использовать, и не только в Visual Studio Code.

Во-первых, сейчас расплодилось очень много нейросетей, которые просто служат прослойкой между ChatGPT 3.5 и вами.

Если вы напишете в любом поисковике запрос «нейросеть для написания кода», вам вывалится просто тонна всяких разных нейросетей с непонятными названиями. Эти нейросети просто дают вам чат, точно такой же, как у ChatGPT, и обещают написать код по запросу.

Работает это примерно так же, как ChatGPT – если вы будете запрашивать 1С-ный код, что-то вы получите. Но не факт, что это будет что-то хорошее.

Кстати, многие из этих нейросетей еще и платные.

 

 

Tabnine – это одна из самых старых нейросетей, которая есть на рынке, и самая дорогая – ее стоимость от 12 долларов.

Но она умеет работать с Eclipse – те, кто работает в EDT, могут попробовать себе ее поставить, могут попробовать, как она работает.

Tabnine тоже обучалась на GitHub, и у нее нет заявленной поддержки 1С – так же, как и у Copilot.

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

 

 

Следующее – это Amazon CodeWhisper.

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

Но если вы пишете на каких-то еще языках программирования – Python, Java, C#, JS, неважно – можете поставить, она будет для вас абсолютно бесплатна. Просто установите, попробуйте что-нибудь написать, попробуйте что-нибудь сгенерить.

 

 

И Codeium – абсолютно бесплатная нейросеть для частного использования.

Наверное, самая большая – большое количество поддерживаемых IDE-шек, в том числе Eclipse.

И там заявлена поддержка более 70 языков, которые есть на GitHub. Возможно, в них входит 1С, но они не расписывают все 70 языков, они просто говорят: у нас поддержка такого количества языков.

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

По доступности в России без VPN – не подскажу, потому что я пользуюсь только одной нейросетью.

 

Вопросы и ответы

 

Вы сказали, если переписать процедуру несколько раз, сделать ее более оптимальной, то Copilot переучится. Он переучится целиком для организации?

Только под конкретного пользователя. Она старается даже копировать ваш стиль написания кода.

Я работаю с нейросетью полгода. Я ее установил в феврале, оплатил. После этого я начал ее активно использовать в работе, в написании скриптов на OneScript и в работе в 1С.

И со временем я увидел, что она запоминает, как я пишу код. Она запоминает, как я его декомпозирую, как оформляю, как пишу комментарии – при подсказках все это сохраняется. Лично под меня, не под компанию.

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

Только вы передадите свой аккаунт кому-то.

Есть аккаунты для организации. GitHub мало что пока пишет про Copilot. Нет такой документации, прям обширной, чтобы точно сказать. Но, возможно, на аккаунте организации будет возможность обучения сразу всей организации.

А нет у него инструкции «напиши код, как Иванов»?

Возможно, в будущем будет. Сейчас нет.

Есть в документации Microsoft какое-нибудь предупреждение о том, что Copilot все-таки забирает твой код и куда-то его отправляет на дообучение?

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

У нас в 1С большинство запросов имеет огромное количество временных таблиц значений. Copilot такое понимает?

Не пробовал сложные запросы ему скармливать, не пробовал сложные запросы на нем писать.

Простые запросы либо запросы, которые нужно генерировать на лету – как это было с фильтрацией – он пишет очень хорошо.

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

Мне, наоборот, интересно, сможет он написать документацию на основании такого сложного запроса с временными таблицами?

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

Единственное, что он не скажет вам, эффективный этот запрос или нет. Но что запрос выполняет, скорее всего, он напишет.

Знает ли Copilot какие-то методы оптимизации? Допустим, если ему дать запрос в цикле и сказать оптимизировать этот код, что он сделает?

Если вы скажете: «вытащи запрос из цикла», он вытащит. Но его сначала нужно научить, потому что он подстраивается под вас. Потом, впоследствии, вы будете все время сокращать свой промпт, который вы будете отправлять к Copilot. Но изначально, чтобы добиться того, что вы хотите, вы будете писать простыни.

А есть ли у Copilot возможность интегрироваться с каким-нибудь языковым сервером?

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

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

Показывать крутые результаты, которые можно заскринить, поделиться с друзьями, удивиться – ничего себе, как он умеет – он стал где-то через полтора месяца активной работы. Это был вечерний кодинг на OneScript для open source, не для профессиональной разработки. Но он уже начал выдавать мне какие-то результаты, которые меня начали удивлять.

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

Есть ли какие-то варианты завести Copilot в конфигураторе?

У Copilot пока нет API, возможно, в будущем появится. Вы не можете сейчас взять, написать какую-нибудь программу, в которую прокинете Copilot до любой вашей программы, куда вы хотите. Пока такого нет.

Можете оценить время, затраченное для того, чтобы Copilot через полтора месяца тебя удивил? Два часа в день, час в день, полчаса в день,

Два-три часа в день, три-четыре дня в неделю. Получается двенадцать часов в неделю. Двенадцать часов умножаем на шесть недель, получается семьдесят часов. Всего лишь сто часов затратите, и все, Copilot ваш.

Вы говорите, Copilot не может работать с объектной моделью. А если, допустим, в теории, скормить ему на основании метаданных полностью структуру базы данных и потом весь код, который описан во всех модулях – дать ему на обработку, а потом попытаться его спросить?

Как вы ему скормите? У вас не хватит HTTP-запроса, чтобы отправить все это дело на сервер.

А если порциями?

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

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

А если показать ему набор каких-то модулей и сказать: «Найди ошибки в этом модуле» или «Переделай метод в этом модуле». Как-то можно дообучить?

При разработке на 1С мы очень сильно привязаны к контексту. А всякие умные люди, которые пишут умные книги типа «Чистой архитектуры», говорят о том, что ваш бизнес-процесс должен быть оторван от ваших данных. Он должен быть полностью абстрактным.

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

Не надо думать о том, что вы сейчас скормите структуру базы данных или структуру метаданных, и после этого Copilot сразу начнет вам создавать объекты по запросу. Такого, скорее всего, не будет вообще. Скорее всего, он продолжит генерировать вам абстрактный код. Но вам же от этого будет лучше.

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

Это просто обычный пример на уровне:
Документ.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(“Рога и копыта”);

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

Есть ли способ передать кому-то базу знаний с вашими наработками? Может быть, кэш из Visual Studio Code скопировать?

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

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

Возможно, надо просто подождать пару лет, и на Хабре или на Инфостарте будут появляться статьи о том, как мы сейчас круто внедрили Copilot и как мы всем раздали обученную модель.

Я могу сказать, что подписался на бета-тестирование Copilot, и порой он обновлялся и сбрасывал все навыки, которые умел. Например, я просил: «Напиши мне такой-то код», а он мне его писал на 1С, но в стиле C#. Видимо, при переустановке он что-то чистил у себя и после этого забывал о том, как со мной надо работать.

А если в режиме чата ему контекст скормить, он его воспримет или нет?

Я в докладе показывал работу с фильтрацией таблицы значений, где давал ему инструкции: «Это сделай вот так, а это вот так». Если у меня есть объект с какими-то свойствами, и я хочу, чтобы эти свойства заполнились такими-то значениями, тогда он сделает что-то похожее.

Получается, что так же можно и из метаданных какие-то структуры спарсить.

Слишком большие объемы текста он не примет. Там ограничение на количество символов. И в запросе, и в ответе тоже. Он может вам написать полмодуля и сказать: «Извините, я здесь на полуслове останавливаюсь, потому что я не могу передать больше текста одним разом».

Но дальше он продолжает же, правильно?

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

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

А нет информации, какой размер контекста в чате у него?

Я хотел замерить, но не пришлось как-то. Примерно на страницу кода.

А временные лаги какие-то есть?

Если пишешь код – секунд пять, пока он выдает автодополнение либо строку кода.

Если мы говорим про чат, от 15 секунд до 40 секунд. 40 секунд – это прям огромный объемный метод.

А если скормить ему описание из синтакс-помощника и сказать: «Используй для написания алгоритма эту функцию», будет ли он корректно ее использовать? Может ли он выдавать ответы не на основе тех данных, которым он обучился на гитхабе?

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

Если вы передадите ему подсказку по этому методу из синтакс-помощника – маловероятно. Вам будет реально проще написать свой код несколько раз, а потом уже пользоваться Copilot, чтобы он подсказывал вам в этом стиле.

 

*************

Статья написана по итогам доклада (видео), прочитанного на конференции INFOSTART TECH EVENT 2023.

 

Приглашаем на конференции Инфостарта 2025 года

INFOSTART TEAMLEAD EVENT

Не только для разработчиков, но и для руководителей отделов разработки, тимлидов и ИТ-директоров.
Место: Москва
Даты: 24-25 февраля 2025 г.

Подробнее

INFOSTART A&PM EVENT (Анализ & Управление проектами)

Практическая конференция для аналитиков и руководителей проектов 1С.
Место: Санкт-Петербург
Даты: 29-31 мая 2025 г.

Подробнее


См. также

Нейросети Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Оптовая торговля, дистрибуция, логистика Россия Управленческий учет Платные (руб)

Расширение "Искусственный интеллект и нейросети в 1С: Работа с отзывами маркетплейсов" предназначено для применения искусственного интеллекта в повседневной деятельности селлеров на маркетплейсах. Среди функций - работа с отзывами, вопросами и чатами покупателей, диалог с нейросетями, генерация картинок, заполнение описаний номенклатуры и другое.

6000 руб.

03.04.2024    5514    3    0    

8

Мастера заполнения Нейросети Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

Расширение для заполнения описания товара (номенклатуры) с помощью модели ИИ ChatGPT с ключевыми словами. Расширение формирует продающее описание товара по его наименованию с помощью модели искусственного интеллекта. Будет полезно для владельцев интернет магазинов, каталогов товаров и продающих через маркетплейсы. Адаптировано для основных конфигураций: УТ, ЕРП, КА, УНФ. Прошло аудит на 1cfresh.com. Версия для автоматического заполнения

5000 руб.

13.03.2023    17410    45    49    

75

Нейросети Мастера заполнения Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Расширение для заполнения описания номенклатуры с помощью модели ИИ GigaChat от Сбера. Расширение формирует продающее описание товара по его наименованию с помощью модели искусственного интеллекта. Будет полезно для владельцев интернет магазинов, каталогов товаров и продающих через маркетплейсы. Адаптировано для основных конфигураций: УТ, ЕРП, КА, УНФ.

5000 руб.

08.11.2023    2232    11    0    

20

Управление складом и логистикой (WMS) Нейросети Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Цифровая революция и повсеместный переход от аналоговых технологий к цифровым, начавшийся еще в 80-х годах прошлого века и частично продолжающийся до сих пор, внесли крайне важные изменения в логистическую отрасль. Сегодня цифровые технологии в логистической цепочке поставок являются важной и серьезной темой для многих компаний. Находясь на высококонкурентном рынке, эффективно и гибко построенная работа позволяет любой компании получить лидирующие позиции в своей области. Поэтому компании ищут инструменты для помощи в принятии решений и оптимизации своих процессов с целью повышения операционной эффективности, удовлетворения потребностей клиентов и снижения расходов. Сейчас новые технологии и, в частности, искусственный интеллект играют ключевую роль в решении амбициозных задач. По данным авторитетной исследовательской компании Gartner, в 2024 году около 50% логистических компаний будут инвестировать в технологии, поддерживающие искусственный интеллект.

05.09.2024    520    sitec    2    

2

Нейросети Программист Платформа 1С v8.3 Бесплатно (free)

Как в 1С сделать вызов функции для больших языковых моделей (LLM).

15.08.2024    1533    mkalimulin    10    

9

Нейросети Пользователь Платформа 1С v8.3 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Реклама, PR и маркетинг Легкая промышленность, мода и одежда Россия Абонемент ($m)

Расширение для генерации описаний номенклатуры через Yandex Gpt. Создает описание номенклатуры по наименованию и дополнительным параметрам, заполненным пользователем.

3 стартмани

08.08.2024    443    1    Alyona888    0    

0

Нейросети Программист Платформа 1С v8.3 ИТ-компания Россия Бесплатно (free)

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

07.06.2024    10492    Neti    37    

17

Нейросети Бесплатно (free)

Практические примеры применения ChatGPT в 1С.

06.05.2024    13209    improg    22    

72
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Сисой 87 27.08.24 10:57 Сейчас в теме
Отличная статья. Первые шаги новой технологии разработки... Безусловно, 1С нужно тоже двигаться в этом направлении и создавать нейробота, котрый будет знать объектную модель и структуру БД. За этим будущее.
YA_418728146; +1 Ответить
2. wtlz 271 27.08.24 13:09 Сейчас в теме
ждем в конфигураторе )
YA_418728146; rozer; Baszilio; +3 Ответить
3. RustIG 1726 29.08.24 09:52 Сейчас в теме
интересный доклад - спасибо, что развиваете эту тему
YA_418728146; +1 Ответить
4. Darklight 32 30.08.24 10:08 Сейчас в теме
Безусловно за AI-кодогенерацией будущее!
Безусловно - новые IDE уже должны выходить со встроенной AI-кодогенерацией (в Visual Studio 17 (2022), кстати, Copilot уже частично встроен, ждём Visual Studio 18 - где встройка будет полной, а затем Visual Studio 19 где, скорее всего Copilot уже будет в виде AI-ассистента (помните Скрепку офисных продуктов для Windowx 9x), а возможности Copilot будут существенно расширены и распределены по функция IDE. А уже, скорее с Visual Studio 20 уже не Copilot будет встраиваться в IDE - а IDE буде просто оболочкой для Copilot (ну или как там его будут называть лет через 10-15, ведь это уже будет ядром всей системы управления кодом), а там, того глядишь, и новые ЯП начнут появляться - в базе своей основанные на глубокой интеграции с AI-кодогенерацией....

Что до 1С... тут всё туманно! Вроде бы были жалкие потуги по внедрению AI-ассистентов (привет "Татьяна" аналог "кота", о котором никто и не вспомнит и информацию не найдёт, да и не AI она вовсе)!
Появления чего-то встроенного и официального раньше новой платформы (условно "1С Предприятие 9") вообще не стоит! Я бы даже так сказал - что могло бы выйти в ближайшие лет 10-15 как "1С Предприятие 9" могло бы включать какую-то интеграцию с нейролингвистическими моделями но.... это всё пока было бы очень примитивно - не верю я, что не занимаясь специально данной темой долго и упорно можно на раз выкатить что-то годное... но что-то то надо будет!
И не верю, что за пару-тройку десятилетий развития этой "1С Предприятие 9" (9.0, 9.1, 9.2, 9.3, 9.4...) можно будет довести до ума инструмент кодогенерации 1С до.... того что будет, условно, в конкурирующих IDE (даже на момент 9.0, не говоря уже про время 9.4 - вторая половина XXI века).
Но... если, условно, к "1С Предприятие 10" (что ближе к концу века - если вообще эта система доживёт до этого периода, в чём я очень сомневаюсь) тамошние архитекторы (надо понимать, что уже без Нуралиевых, которым AI - видимо чужд, как и вообще революционное развитие платформы) придут к "правильному" решению - что не нужно делать свою IDE (или брать аутсайдеров - привет "Eclipse") - а надо быть в партнёрских отношениях с лидерами (тут, скорее всего, привет "JetBrains" - ну это в идеале, хотя кто его знает, что там будет во второй половине XXI век)! Вот тога в 10-ке будет уже смысл интегрироваться с готовыми решениями по AI и IDE, ЯП, БД - ориентированным именно на глубокую интеграцию с AI - останется только бросить силы на саму платформу среды, и конфигурации к ней - чтобы те тоже максимально базировались на AI технологиях - вот это и будет новый революционный продукт а-ля "1С Предприятие 10" (ну если он так будет называться, в чём я сомневаюсь, либо это будет его последняя инкарнация gjl данным именем - дальше уже нужно что-то более свежее - так как системной подход к работе в ПО к тому моменту уже кардинально изменится - это как сравнивать DOS и Windows (со времён 95)). Но это всё так - лирика, фантазии и "тупые прогнозы" гаданием на кофейной гущи!

Важно то - что не стоит ничего интересного тут ждать в ближайшие 10-летия - в развитии 1С Предприятие пока полный застой....
Но, не стоит сбрасывать мизерный шанс того, что этот застой в последнее десятилетие и в последующее десятилетие связан с тем - то в компании "1С" в строжайшей секретности корпят над чем-то действительно революционным - на что и брошены и все силы и все сверхдоходы от второго расцвета продаж продуктов 1С (с 2022 года)! Так что ждите новую "1С-ку" с "блэкджеком и шл... облаками, и непрерывным лицензированием через строгий онллайн доступ и аренду лицензий"!
YA_418728146; +1 Ответить
5. Darklight 32 30.08.24 11:13 Сейчас в теме
Что до тонкостей AI-кодогенерации. Моё мнение такое - то что делает сейчас Copilot - это "детский лепет" - даже младенческий, и то с натяжкой! Не то что в 1С - даже для "родных для него ЯП"!
Но это не говорит о том, что Copilot бесполезен - даже сейчас он вполне заслуживает внимания - но пока его применение очень ограничено - тем более в 1С - когда нет доступа к контексту всего кода и всей библиотеки фреймворка! Автор доклада не зря взял, в качестве примеров, весьма автономную систему - которой пофиг на контекст конфигурации!
Но куда более интересным и практичным было бы, если бы AI-ассистент владел всем контекстом - кодом, структурой БД (метаданных конфигурации), встроенными библиотеками и.... доступными библиотеками, наработками и прочими доп. модулями (вне установленных в системе)! Но.... тут сразу несколько сложностей:
1. Нужна обязательная интеграция внутрь платформы - для доступа ко всему контексту

2. Нужно обязательное натаскивание на доступные библиотеки (от встроенных в платформу, до дополнительных от всяких там БСП до некоторых, условно, независимых) - хотя, надо заметить, библиотек то как раз не так уж много
, а так же натаскивание на базу знаний готовых решений - что есть на ИТС и некоторых других источниках (в т.ч. на Инфостарт) - хотя, надо признать - что эти знания очень фрагментированы и плохо стандартизованы (хотя для обучения ИИ это не такая уж большая проблема)

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

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

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

6. Нужно дополнить "тупые озёра сырого кода" системой ранжирования (управляемой клиентами) - чтобы можно было эффективно ранжировать разные решения одного и того же - для выбора наиболее эффективных! И Кодогенератор должен уметь предлагать разные варианты решения!

7. Лично моё мнение - всё-таки на ближайшем этапе развития AI-анализа программного кода - чтобы этот анализ был эффективным крайне важно применять ЯП со статической строгой типизацией (оставив все современные фишки с обобщёнными типами и выводом типов, а так же универсальными и составными типами - привет "1С Исполнитель", хотя обобщённых типов туда пока не завезли :-( ) , а так же применяя абстрагирование на основе современного ООП и функционального программирования - только имея строгую типизацию, поддержку контрактного-программирования (но при этом повышая уровень абстракции) кода - можно существенно повысить качество AI-кодогенерации! Натянуть сову (текущий ЯП 1С) на глобус (глубокий AI-анализ контекста) никак не получится - критически нужна глобальная стратегия по смене ЯП!

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

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

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

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

P.S.
И это я ещё ни слово не сказал ни про развитие AI-ассистировали построения архитектуры конфигураций и баз данных; ни про развитие систем автогенерации документации; ни про встраивание в платформу механизмов машинного обучения; ни про развитие систем голосового управления; ни про развитие систем автоинтеграции разных модулей друг с другом; ни про развитие систем автозагрузки и конвертации данных; ни про прочие AI-фишки на пользовательском уровне управления учётом.... например про анализ данных и поиск ошибок.... всё это тоже должно прийти с развитием AI-технологий... но насколько это всё придёт во второй половине XXI века - ещё не известно! Но цели обозначены - и так или иначе к ним человечество будет двигаться....

P.P.S.
Ну если всеобщие политические раздоры и войны не погубят все эти идеи на корню!
Проблем же со стороны противников AI-технологий я тут больших не вижу - всё что я тут обозначил - задачи сугубо прикладные - просто расширенные компьютерные инструменты - исключительно направленные в помощь работникам - а не в противостояние им! И без каких-либо предпосылок на интеллектуальное господство! Ну, по крайней мере, так я это вижу (могу ведь ошибаться).

P.P.P.S.
Прошу не судить строго всё вышесказанное мной - это сугубо моё и только моё личное мнение (которое, ещё и постоянно меняется) - оно не обязано совпадать с вашим и не обязано быть таки же у меня уже "завтра"! Имейте и своё мнение тоже - и оно будет ценным и для меня - если Вы его подробно выскажите, а не оставите только при себе, выплеснув только необоснованную критику!
YA_418728146; +1 Ответить
6. Darklight 32 30.08.24 11:53 Сейчас в теме
(5) Прошу прощения за данную ошибку " хотя обобщённых типов туда пока не завезли :-(" - это- меня переклинило - обобщённые типы, как раз таки, в "1С Исполнитель" уже давно завезли:
пер Arr1 = новый Массив<Строка>()  
пер Arr2: Массив<Строка|Число> = []
пер Аrr3 = [1, Истина  // Тип: Массив<Число|Булево>
пер СоответствиеОбъект = новый Соответствие<Объект, Объект>(1, 2)
пер СоответствиеЧисло = новый Соответствие<Число, Число>(1, 2)

Прошу не ругать за эту ошибку!

А, вот, с ООП всё сложнее - в чистом скриптовом "1С Исполнитель" свои "классы" так и нельзя создавать - а вот в среде "1С Элемент" (прообраз "1С Предприятие 9"?) - контекст позволяет у структур иметь модули и методы - но нет ни наследования, ни полиморфизма - только инкапсуляция, ни свойств, ни событий (кроме встроенных в платформу; с контрактами/интерфейсами не разобрался - что-то есть, но что-то очень странное) - в общем, ерунда на уровне "1С Предприятие 8" - не более того (без нормального ООП, тут опять не будет никакого будущего - а будет только кривой громоздкий код, уровня конца прошлого века)!
YA_418728146; +1 Ответить
7. YA_418728146 572 30.08.24 17:52 Сейчас в теме
(6) Я думаю теперь это надо все оформить в виде отдельной статьи:)
10. Darklight 32 04.09.24 09:08 Сейчас в теме
(7) Эта идея давно есть. Но... пока не имею достаточной базы содержательных примеров - не готов её написать!
Но я потихоньку разрабатываю теоретическую концепцию языка программирования 5-го поколения - который концептуально базируется на AI-кодогенерации. И недавно хорошо продвинулся в базовых архитектурных принципах.
И такие статьи, как это, дают мне новое вдохновение!

А моё мнении такое - если говорить об управляемых платформах обработки данных недалёкого будущего - то им не просто надо внедрять AI-кодогенерацию и AI-ассистентов в пользовательском режиме. Но пересматривать языки программирования - новый ЯП тоже должен быть более AI-ориентированным и более декларативным, более абстрактным, чем просто язык инструкций виртуальной машины как это есть сейчас!
8. YA_418728146 572 30.08.24 17:55 Сейчас в теме
(6) Ну а если говорить серьезно, я до сих пор пользуюсь копилотом и для 1С, и для Оскрипт и для западных языков. Использую и VSC, и разные IDE от JB и Visual Studio от майков. И мне реально становится тяжело работать в голом конфигураторе без AI ассистента. Может он и не дает ультимативный код на уровне эксперта-архитектора, но он здорово облегчает процесс кодогенерации. Это то, что нужно каждому рядовому программисту
9. Darklight 32 04.09.24 09:00 Сейчас в теме
(8) В том то и дело, что даже на уровне текущих возможностей генеративных лингвистических систем, было бы весьма полезно иметь (и активно развивать) такого помощника именно в составе "разработчиских" продуктов 1С (лучше в составе именно 1С конфигуратора, а не 1С EDT - но это уж совсем навряд ли для 1С8 стоит ждать - забила компания 1С на развитие 1С конфигуратора очень большой "болт", хотя подход 1С EDT реально более перспективен, но тут просто неудачен выбор базовой платформы IDE Eclipse, и, скорее всего, есть фундаментальные архитектурные проблемы именно в глубинах самой платформы 1С - хотя - выпусти они 1С Предприятие 8.4 с желанием развивать и свой 1С конфигуратор - то можно было бы взять курс и на переход 1С конфигуратора на новое русло - ведь развивают же они в 1С Элемент свою IDE для конфигурирования (но на данный момент закрытую для стороннего расширения); но, скорее - это уже не путь для 1С Предприятие 8 - возможно только для 1С Предприятие 9, без альтернативного "любимого старого доброго конфигуратора").

Но возвращаясь к теме AI-генерации кода. Да - в какой-то IDE было бы очень полезно иметь такого готового и специально адаптированного (в т.ч. по не публичным конфигурациям) AI-помощника. С официальной поддержкой от 1С (или какого-то иного крупного российского вендора; в идеале - вообще настраиваемого - чтобы разных можно было подключать - но пока достаточно российского - например от YandexGPT - компании 1С писать свой собственный можно, но, на мой взгляд, пока не стоит - слишком хлопотно, пока не до этого, но не свой может оказаться платным дополнением, или доступным только в корпоративной лицензии - что ещё больше бы повысило смысл выбирать КОРП лицензии - но тогда и на пользовательский уровень надо выводить AI-ассистента; но, отчасти, ориентироваться можно на модель распространения "1С Системы взаимодействий" - хотя лукавлю - навряд ли имеет смысл выносить сервер AI на уровень инфраструктуры клиента - тут много своих нюансов - хотя потребность в этом будет очень высокая именно на корпоративном уровне).

Помимо специализированной адаптации модели обучения, поддержки и прямой удобной встройки прямо в привычную IDE, у внедрении AI-ассистента в 1С Предприятие было бы ещё, как минимум, восем очень важных преимуществ:
1. Доступность контекста встроенной библиотеки платформы
2. Доступность контекста всего решения (включая расширения, а ещё и к хранилищу версий конфигурации, или вообще сразу доступ не к одной конфигурации - а ко всему набору всех доступных), а так же доступ именно к текущему контексту, где нужно гегенерировать код (его окружению источников данных и их типов) - что прям ну очень важно будет для качественнй генерации
3. Доступность контекста метаданных, и инфраструктуры развёртывания, настройки СУБД. Причём доступ к метаданным так же повысит и типизируемость, условно, переменных кода - что очень повысит его качество
4. Доступность данных, хотя бы на уровне статистических сведений и настройки решения (что включено, что выключено) и к внешним (доп) обработкам; но в перспективе - и доступ ко всем данным, для проведения более глубокого анализа эффективности тех или иных решений, и даже проведения тестовых прогонов (без фактической акцепции изменений в рабочем контексте)
5. Доступность к средствам профилирования и автотестирования - что ещё больше бы повысило качество генерируемых решений
6. Возможность, таки, определить команду(ы) разработчиков, и её стили кодирования - и подстраивать решения под этот стиль
7. Возможность не только управлять текстовым кодом - но и метаданными
8. Возможность применять умный продвинутый рефакторинг, поиск и анализ кода по всему решению комплексно (даже по внешним обработкам)!

Но серьёзным камнем останется отсутствие в 1С Предприятие 8 статической типизации - впрочем, генеративные лингвистические алгоритмы научились и без неё вполне успешно генерировать код - но для глубокой интегрированности в контекст системы - нужна типизация, доступная на уровне контекстного анализа!

Без этого всего - применение генеративного AI подхода в 1С пока просто детский лепет - хотя и отчасти полезный, но с учётом всех сложностей его использования - реально возьмут на вооружение, то что есть сейчас, очень не многие адепты 1С. Скорее - это интересно тем, кто активно разрабатывает не только в среде 1С Предприятие, но и там, где в IDE это всё уже почти так же глубоко доступно, как я описал выше, и имеют от этого куда большую пользу и удобство, чем в описанном в статье подходе для 1С - тогда применить знакомые (и уже установленные и оплаченные) средства и для 1С - там где это будет полезно - так почему бы и нет? Но для остального большинства - не более того - любопытно, перспективно, да и только и всего!

P.S.
И это я ещё не углубляться в то, как можно применять AI-ассистента в пользовательском режиме - и на что он там смог бы опираться и что обрабатывать - но это прям точно отельная тема!
А если уж внедрять AI технологии на уровне разработки - то надо внедрять их и на прикладном пользовательском уровне!
Но, на мой взгляд, это всё слишком крупное изменение концепции - и тянет уже на целое новое поколение платформы 1С Предприятие 9. А 9-ку братья Нуралиевы боятся как огня (даже 8.4 зарубили) - так что пока они будут выжимать все соки из 8.3 - без таких вот серьёзных революций :-(
Правда официально они ничего не говорят.
Вот, Микрософт - напротив - "трубила" - что Windows 10 будет последней - далее они будут только плавно развивать её! Но... вот уже и Windows 11 давно вышла.... и Windows 12 уже замаячила. но наверно то был заведомо обманный маркетинговый ход (но основе своей конспирологии) - мол не ждите нечётную версию Windows 11 - переходите на чётную Window 10 - всё-рано другой не будет!
Только 1C Предприятие со времён Window 8 так больше и не менялась (зарубленная 1С 8.4 не в счёт).... да в платформах выходили новые релизы, и даже с новыми фишечками - но типовые конфигурации давно застыли в своём развитии - и почти не используют эти новые фишечки! А типовой код, построенный на старых фишечках - просто ужасен! ЯП отстал. Глубокая нехватка свежей крови среди программистов Зато да - спрос на 1С Предприятие 8, даже давно не развивающейся, огромен - за неимением достойных альтернатив - так зачем тогда вообще развиваться...

Впрочем - всё-таки есть у 1С и отдельный альтернативный проект: 1С Элемент - может его и готовят, без лишнего шума, как новую базу для будущей платформы 1С Предприятие 9 - но, как по мне - этот 1С Элемент уже тоже уж очень сильно отстал от мировых тенденций - и ничего особо интересного из себя не представляет - и навряд ли заинтересует и программистов и бизнес!
Оставьте свое сообщение