0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#статьи</a></p>
1
<p><a>#статьи</a></p>
2
<ul><li>8 окт 2021</li>
2
<ul><li>8 окт 2021</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>Разработчик делится опытом, как Copilot избавляет его от рутины, почему сервис конфликтует с IDE и может тянуть в проект чужой код с GitHub.</p>
4
</ul><p>Разработчик делится опытом, как Copilot избавляет его от рутины, почему сервис конфликтует с IDE и может тянуть в проект чужой код с GitHub.</p>
5
<p>karsten madsen / Pexels / Polina Vari для Skillbox Media</p>
5
<p>karsten madsen / Pexels / Polina Vari для Skillbox Media</p>
6
<p>Онлайн-журнал для тех, кто влюблён в код и информационные технологии. Пишем для айтишников и об айтишниках.</p>
6
<p>Онлайн-журнал для тех, кто влюблён в код и информационные технологии. Пишем для айтишников и об айтишниках.</p>
7
<p>Игорь Камышев</p>
7
<p>Игорь Камышев</p>
8
<p><strong>об эксперте</strong></p>
8
<p><strong>об эксперте</strong></p>
9
<p>Работает в Aviasales в команде веб-платформы - делает жизнь фронтендеров чуть менее болезненной. Ведёт<a>блог</a>и <a>Telegram-канал</a>, где рассказывает про разработку программ.</p>
9
<p>Работает в Aviasales в команде веб-платформы - делает жизнь фронтендеров чуть менее болезненной. Ведёт<a>блог</a>и <a>Telegram-канал</a>, где рассказывает про разработку программ.</p>
10
<p>Copilot - это помощник, который встраивается в IDE. Он умеет превращать английскую речь в код, предлагает подсказки, оставляет комментарии и придумывает названия функциям. Лучше всего система работает с Python, JavaScript, TypeScript, Ruby и Go, но понимает и десятки других языков.</p>
10
<p>Copilot - это помощник, который встраивается в IDE. Он умеет превращать английскую речь в код, предлагает подсказки, оставляет комментарии и придумывает названия функциям. Лучше всего система работает с Python, JavaScript, TypeScript, Ruby и Go, но понимает и десятки других языков.</p>
11
<p>Придумали Copilot в GitHub, поэтому нейросеть обучали на всём открытом коде с платформы. Но она умеет тренироваться и на локальных файлах.</p>
11
<p>Придумали Copilot в GitHub, поэтому нейросеть обучали на всём открытом коде с платформы. Но она умеет тренироваться и на локальных файлах.</p>
12
<p>Создатели Copilot обещают, что ваш закрытый код не попадёт на сервера GitHub. Я тоже так думаю - если бы в GitHub захотели украсть мой код, там бы нашли способ попроще.</p>
12
<p>Создатели Copilot обещают, что ваш закрытый код не попадёт на сервера GitHub. Я тоже так думаю - если бы в GitHub захотели украсть мой код, там бы нашли способ попроще.</p>
13
<p>Я работаю в команде, которая делает инструменты для программистов. Занимаюсь бэкендом и фронтендом, ещё пишу скрипты на Bash. Мне повезло попасть в <a>программу тестирования Copilot</a>, поэтому я пользуюсь его бесплатной бета-версией. Многие знакомые завидуют - их заявки пока не одобрили. Сервис работает как плагин для Visual Studio Code.</p>
13
<p>Я работаю в команде, которая делает инструменты для программистов. Занимаюсь бэкендом и фронтендом, ещё пишу скрипты на Bash. Мне повезло попасть в <a>программу тестирования Copilot</a>, поэтому я пользуюсь его бесплатной бета-версией. Многие знакомые завидуют - их заявки пока не одобрили. Сервис работает как плагин для Visual Studio Code.</p>
14
<p>Первые пару дней Copilot мне не нравился. Я переживал, что подсказки будут неудобными - их придётся перечитывать, чтобы проверить качество кода, и тратить лишние силы. А я стараюсь во время работы экономить энергию и думать по-минимуму.</p>
14
<p>Первые пару дней Copilot мне не нравился. Я переживал, что подсказки будут неудобными - их придётся перечитывать, чтобы проверить качество кода, и тратить лишние силы. А я стараюсь во время работы экономить энергию и думать по-минимуму.</p>
15
<p>Но Copilot начал избавлять меня от рутины. Я работал со Storybook - инструмент помогает изолированно разрабатывать UI-компоненты и сразу отображает их в браузере. Раньше у него был плагин<a>Storybook Addon Knobs</a>, который показывал параметры элементов: например, цвет или размер кнопки. Его запретили, а взамен предложили другой плагин с совершенно новым синтаксисом. Мне пришлось переписывать под него 200 файлов, и это нельзя было автоматизировать средствами миграции.</p>
15
<p>Но Copilot начал избавлять меня от рутины. Я работал со Storybook - инструмент помогает изолированно разрабатывать UI-компоненты и сразу отображает их в браузере. Раньше у него был плагин<a>Storybook Addon Knobs</a>, который показывал параметры элементов: например, цвет или размер кнопки. Его запретили, а взамен предложили другой плагин с совершенно новым синтаксисом. Мне пришлось переписывать под него 200 файлов, и это нельзя было автоматизировать средствами миграции.</p>
16
<p>После первых 15 файлов Copilot так хорошо натренировался, что дальше оставалось только принимать автозаполнение, нажимать Tab и иногда исправлять мелкие ошибки. Я не разбираюсь в нейросетях, поэтому не знаю, как это работает. Но Copilot быстро понял задачу и почти всё сделал сам.</p>
16
<p>После первых 15 файлов Copilot так хорошо натренировался, что дальше оставалось только принимать автозаполнение, нажимать Tab и иногда исправлять мелкие ошибки. Я не разбираюсь в нейросетях, поэтому не знаю, как это работает. Но Copilot быстро понял задачу и почти всё сделал сам.</p>
17
<p>В основном Copilot помогает мне писать на JavaScript и TypeScript. С Bash он справляется не слишком хорошо - нейросеть на нём явно мало тренировалась. Если пишете на Bash, то пока нет смысла пользоваться Copilot.</p>
17
<p>В основном Copilot помогает мне писать на JavaScript и TypeScript. С Bash он справляется не слишком хорошо - нейросеть на нём явно мало тренировалась. Если пишете на Bash, то пока нет смысла пользоваться Copilot.</p>
18
<p>TypeScript - это и есть JavaScript, но в нём есть статическая типизация. Как минимум она даёт классные подсказки в редакторе и валидацию на этапе компиляции. Это помогает стандартизировать разработку, особенно в большой команде.</p>
18
<p>TypeScript - это и есть JavaScript, но в нём есть статическая типизация. Как минимум она даёт классные подсказки в редакторе и валидацию на этапе компиляции. Это помогает стандартизировать разработку, особенно в большой команде.</p>
19
<p>Иногда я пишу на Go, но тут качество подсказок Copilot оценить не могу, потому что только учу этот язык. Автодополнения для Scala мне не понравились. Хотя это очень специфичный язык - для меня он всегда головоломка, а её интереснее решить самому. Конечно, это приятно и весело, но я больше никогда не стану писать на Scala для продакшена. Слишком академичный язык.</p>
19
<p>Иногда я пишу на Go, но тут качество подсказок Copilot оценить не могу, потому что только учу этот язык. Автодополнения для Scala мне не понравились. Хотя это очень специфичный язык - для меня он всегда головоломка, а её интереснее решить самому. Конечно, это приятно и весело, но я больше никогда не стану писать на Scala для продакшена. Слишком академичный язык.</p>
20
<p>Пробовал Haskell, но впечатления ещё хуже, чем от Sсala. Не могу держать в голове все контравариантные типы, моноиды, монады и прочее. В обычной работе это отвлекает.</p>
20
<p>Пробовал Haskell, но впечатления ещё хуже, чем от Sсala. Не могу держать в голове все контравариантные типы, моноиды, монады и прочее. В обычной работе это отвлекает.</p>
21
<p>Copilot неплохо научился подсказывать в Docker Compose - например, сразу после слов "docker compose" он говорит: "Давай порт прокинем". А это и правда хорошая идея. С цифрами не угадывает, но в целом удобно.</p>
21
<p>Copilot неплохо научился подсказывать в Docker Compose - например, сразу после слов "docker compose" он говорит: "Давай порт прокинем". А это и правда хорошая идея. С цифрами не угадывает, но в целом удобно.</p>
22
<p>Я покажу, как Copilot дополняет функции, придумывает им названия и снимает другую рутину. Для примера возьму свой пет-проект с GitHub.</p>
22
<p>Я покажу, как Copilot дополняет функции, придумывает им названия и снимает другую рутину. Для примера возьму свой пет-проект с GitHub.</p>
23
<p><strong>Дописывает функции.</strong>Если я открою файл на TypeScript и напишу "formatDate", Copilot допишет всю функцию за меня. Чтобы сохранить код, нужно нажать Tab.</p>
23
<p><strong>Дописывает функции.</strong>Если я открою файл на TypeScript и напишу "formatDate", Copilot допишет всю функцию за меня. Чтобы сохранить код, нужно нажать Tab.</p>
24
<p><strong>Предлагает сигнатуру функций.</strong>Если я дополню текст, то Copilot не предскажет функцию целиком, но попробует додумать её сигнатуру. Когда нужно посчитать сумму нескольких значений, он тоже предложит свой вариант. Если я внесу правку, сервис сразу подскажет что-нибудь другое.</p>
24
<p><strong>Предлагает сигнатуру функций.</strong>Если я дополню текст, то Copilot не предскажет функцию целиком, но попробует додумать её сигнатуру. Когда нужно посчитать сумму нескольких значений, он тоже предложит свой вариант. Если я внесу правку, сервис сразу подскажет что-нибудь другое.</p>
25
<p>Такие длинные подсказки я не слишком люблю, потому что в них сложно разобраться. Обычно нажимаю Tab и смотрю, подсвечивает ли код моя IDE. Если нет - всё в порядке.</p>
25
<p>Такие длинные подсказки я не слишком люблю, потому что в них сложно разобраться. Обычно нажимаю Tab и смотрю, подсвечивает ли код моя IDE. Если нет - всё в порядке.</p>
26
<p><strong>Создаёт новые функции.</strong>Когда в TypeScript я напишу слово "function", Copilot сам придумает ей название и предложит код - чтобы составить новую функцию, он анализирует соседние. В этом случае он назвал её "handleChange" - я бы и сам так сделал. Удачные варианты попадаются подозрительно часто.</p>
26
<p><strong>Создаёт новые функции.</strong>Когда в TypeScript я напишу слово "function", Copilot сам придумает ей название и предложит код - чтобы составить новую функцию, он анализирует соседние. В этом случае он назвал её "handleChange" - я бы и сам так сделал. Удачные варианты попадаются подозрительно часто.</p>
27
<p><strong>Работает в пустом файле.</strong>Если я создам новый YML-файл и напишу "services", Copilot подскажет корректный код. Сперва что-то пошло не так - внизу окна загорелся красный индикатор, что Copilot не работает, но потом он включился. Помощник может написать целый файл, а мне останется только выставить нужные значения.</p>
27
<p><strong>Работает в пустом файле.</strong>Если я создам новый YML-файл и напишу "services", Copilot подскажет корректный код. Сперва что-то пошло не так - внизу окна загорелся красный индикатор, что Copilot не работает, но потом он включился. Помощник может написать целый файл, а мне останется только выставить нужные значения.</p>
28
<p>Иногда Copilot заедает на каком-то куске кода и он по кругу предлагает одинаковые строки, пока ты с ним что-то не сделаешь.</p>
28
<p>Иногда Copilot заедает на каком-то куске кода и он по кругу предлагает одинаковые строки, пока ты с ним что-то не сделаешь.</p>
29
<p><strong>Пишет большие функции.</strong>Варианты в несколько строк у Copilot обычно получаются хорошо, а большие - плохо. Например, если предложить ему перемешать массив, он напишет функцию из семи строк. Хотя в этот раз она оказалась рабочей.</p>
29
<p><strong>Пишет большие функции.</strong>Варианты в несколько строк у Copilot обычно получаются хорошо, а большие - плохо. Например, если предложить ему перемешать массив, он напишет функцию из семи строк. Хотя в этот раз она оказалась рабочей.</p>
30
<p><strong>Дописывает тесты.</strong>Я хочу протестировать свою функцию "format_number", поэтому напишу "should format in US locale", а дальше помощник всё делает за меня. Получается вполне логичный код, я бы и сам так написал.</p>
30
<p><strong>Дописывает тесты.</strong>Я хочу протестировать свою функцию "format_number", поэтому напишу "should format in US locale", а дальше помощник всё делает за меня. Получается вполне логичный код, я бы и сам так написал.</p>
31
<p>Подсказки Copilot зависят и от проекта, в котором я работаю. Мне кажется, что нейросеть понимает контекст и подстраивается под него. Но если Copilot предлагает слишком длинную подсказку, иногда проще не вчитываться и написать код самому.</p>
31
<p>Подсказки Copilot зависят и от проекта, в котором я работаю. Мне кажется, что нейросеть понимает контекст и подстраивается под него. Но если Copilot предлагает слишком длинную подсказку, иногда проще не вчитываться и написать код самому.</p>
32
<p>Я пишу эту статью в сентябре 2021 года, когда Copilot ещё не вышел из беты, поэтому у него есть пара заметных недостатков. Иногда он конфликтует с IDE, есть вопросы к лицензиям и качеству кода.</p>
32
<p>Я пишу эту статью в сентябре 2021 года, когда Copilot ещё не вышел из беты, поэтому у него есть пара заметных недостатков. Иногда он конфликтует с IDE, есть вопросы к лицензиям и качеству кода.</p>
33
<p><strong>Конфликты с IDE.</strong>Copilot немного ломает подсказки, которые уже встроены в среду разработки. В основном я пишу на строго типизированных языках - когда ставишь точку, IDE сообщает, какие у объекта есть поля. Встроенное автозаполнение появляется спустя 0,2 секунды, а подсказка Copilot - через 2 секунды. Это тормозит работу, когда быстро пишешь код.</p>
33
<p><strong>Конфликты с IDE.</strong>Copilot немного ломает подсказки, которые уже встроены в среду разработки. В основном я пишу на строго типизированных языках - когда ставишь точку, IDE сообщает, какие у объекта есть поля. Встроенное автозаполнение появляется спустя 0,2 секунды, а подсказка Copilot - через 2 секунды. Это тормозит работу, когда быстро пишешь код.</p>
34
<p><strong>Чужой код в проекте.</strong>Copilot может вставлять в проект куски стороннего кода. Есть<a>мнения</a>, что иногда сервис использует части программ с вирусной лицензией - если они попадают в проект, его придётся лицензировать. Но Microsoft дала официальный комментарий и сказала, что берёт все юридические риски на себя.</p>
34
<p><strong>Чужой код в проекте.</strong>Copilot может вставлять в проект куски стороннего кода. Есть<a>мнения</a>, что иногда сервис использует части программ с вирусной лицензией - если они попадают в проект, его придётся лицензировать. Но Microsoft дала официальный комментарий и сказала, что берёт все юридические риски на себя.</p>
35
<p>В Twitter был пост о том, как человек начал вписывать SSH-ключ, а Copilot подставил окончание ключей из чужого проекта. Но автор удалил тред и <a>написал</a>, что нейросеть подсказала случайный ключ.</p>
35
<p>В Twitter был пост о том, как человек начал вписывать SSH-ключ, а Copilot подставил окончание ключей из чужого проекта. Но автор удалил тред и <a>написал</a>, что нейросеть подсказала случайный ключ.</p>
36
<p>Если Copilot предложит специфичный код, который, скорее всего, написан человеком, я отнесусь к этому с опаской. Но пока такого не было.</p>
36
<p>Если Copilot предложит специфичный код, который, скорее всего, написан человеком, я отнесусь к этому с опаской. Но пока такого не было.</p>
37
<p><strong>Незакрытые скобки.</strong>Любая IDE автоматически закрывает скобки: ты добавляешь первую, а она подставляет вторую. Всё налажено, и запутаться сложно. Но если Copilot предлагает подсказку, а ты её отклоняешь, скобки остаются незакрытыми и их приходится закрывать вручную. Мелочь, но раздражает.</p>
37
<p><strong>Незакрытые скобки.</strong>Любая IDE автоматически закрывает скобки: ты добавляешь первую, а она подставляет вторую. Всё налажено, и запутаться сложно. Но если Copilot предлагает подсказку, а ты её отклоняешь, скобки остаются незакрытыми и их приходится закрывать вручную. Мелочь, но раздражает.</p>
38
<p><strong>Ошибки с типизацией.</strong>Хочу, чтобы Copilot понимал систему типов в моём языке программирования. Он часто даёт подсказки с неправильными типами - такой код не скомпилируется.</p>
38
<p><strong>Ошибки с типизацией.</strong>Хочу, чтобы Copilot понимал систему типов в моём языке программирования. Он часто даёт подсказки с неправильными типами - такой код не скомпилируется.</p>
39
<p>За полтора месяца я очень привык к Copilot, и сейчас он для меня почти как стандартное автодополнение кода в IDE. Я просто чаще нажимаю Tab. В основном я пишу несложный код, поэтому Copilot сильно помогает с рутиной, где сразу знаешь, что собираешься написать и какой нужен финальный результат.</p>
39
<p>За полтора месяца я очень привык к Copilot, и сейчас он для меня почти как стандартное автодополнение кода в IDE. Я просто чаще нажимаю Tab. В основном я пишу несложный код, поэтому Copilot сильно помогает с рутиной, где сразу знаешь, что собираешься написать и какой нужен финальный результат.</p>
40
<p>Конечно, иногда система ошибается и за ней приходится править код, но она определённо экономит время. Если сервис ломается, я сразу чувствую, что мне его не хватает. Не будь Copilot бесплатным, я бы за него платил.</p>
40
<p>Конечно, иногда система ошибается и за ней приходится править код, но она определённо экономит время. Если сервис ломается, я сразу чувствую, что мне его не хватает. Не будь Copilot бесплатным, я бы за него платил.</p>
41
<p>Было бы здорово, если бы Copilot сразу разбирался в типах, валидировал свои подсказки и предлагал решения, если типы не сходятся. Хорошо, если это добавят в его новых версиях.</p>
41
<p>Было бы здорово, если бы Copilot сразу разбирался в типах, валидировал свои подсказки и предлагал решения, если типы не сходятся. Хорошо, если это добавят в его новых версиях.</p>
42
<a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
42
<a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>