GitHub — это самый популярный инструмент для совместной работы над кодом. Некоторое время назад компания выпустила специальный инструмент — GitHub Copilot. Он помогает разработчикам писать код быстрее и эффективнее, предлагая подсказки и целые блоки кода на основе комментариев от разработчика, названиях переменных, функций и т.п.
GitHub Copilot позволяет сэкономить время на написании типовых конструкций и алгоритмов. В этой статье мы расскажем, как использовать GitHub Copilot при разработке на Python, и как он может помочь разработчикам улучшить свою работу и ускорить процесс разработки.
GitHub Copilot — это инструмент от компании GitHub, который в реальном времени предоставляет разработчикам подсказки по написанию кода и функции автодополнения кода. Этот инструмент будет полезен как новичкам, которые только погружаются в язык или библиотеку, так и опытным разработчикам, которые могут не тратить время на создания стандартных функций и конструкций.
GitHub Copilot может быть интегрирован в различные среды разработки, а именно:
И в этих средах разработки GitHub Copilot работает с большим количеством языков программирования:
В дополнение к этим языкам GitHub Copilot умеет работать с популярными фреймворками и библиотеками: React, AngularJS, VueJS, Spring, Django, Ruby on Rails и т. д.
GitHub Copilot предлагает перечень функций, которые могут помочь разработчикам в написании кода:
Сейчас GitHub Copilot распространяется как сервис-подписка со стоимостью 10$ в месяц.
GitHub Copilot предлагает подсказки и автодополнения на основе комментариев пользователя на естественном языке и на основе уже написанного кода. Для этого разработчики из GitHub обучили Copilot на основе общедоступных репозиториев, размещенных на их ресурсах. Поэтому чем больше общедоступных репозиториев на том или ином языке, тем лучше работает Copilot. На менее популярных языках программирования он работает хуже. Выражается это в менее надежных подсказках и в их меньшем количестве.
vds
PyCharm — это среда разработки от JetBrains, в которой доступен GitHub Copilot. Для того чтобы интегрировать его в проект, необходимо совершить следующие шаги:
По завершению оформления подписки вы можете установить плагин GitHub Copilot в PyCharm. Для этого:
Чтобы проверить успешность установки плагина попробуем написать простой код. Начнем писать функцию с очевидным наименованием. Например, функцию сложения двух чисел add(a,b). Когда вы начнете её писать, Copilot предложит вам её завершение. Выглядит это следующий образом:
Код, который предлагает GitHub Copilot, имеет серый цвет и курсивный шрифт. Чтобы принять подсказку плагина нужно нажать Tab. Чтобы её отклонить — Esc. Вот ещё несколько полезных комбинаций клавиш при работе с GitHub Copilot:
Как упоминалось ранее, Copilot предлагает автодополнения не только на основе названий функций, но и на комментариях. Например, попробуем создать функцию перемножения матриц:
def multiply_matrices(A, B):
# Multiply matrix A and B and return the result
GitHub Copilot может предложить такой вариант:
def multiply_matrices(A, B):
# Multiply matrix A and B and return the result
rows1 = len(A)
cols1 = len(A[0])
rows2 = len(B)
cols2 = len(B[0])
if cols1 != rows2:
raise ValueError("The number of columns in the first matrix must be equal to the number of rows in the second matrix")
result = [[0 for j in range(cols2)] for i in range(rows1)]
for i in range(rows1):
for j in range(cols2):
for k in range(cols1):
result[i][j] += A[i][k] * B[k][j]
return result
Проверим работоспособность этой функции. Для проверки результатов воспользуемся библиотекой NumPy:
import numpy as np
matrix1 = [[15,24],[12,44]]
matrix2 = [[112, 22],[55,90]]
m1 = np.array([[15,24],[12,44]])
m2 = np.array([[112, 22],[55,90]])
print(multiply_matrices(matrix1, matrix2),'\n')
print(np.dot(m1, m2))
Результаты:
[[3000, 2490], [3764, 4224]]
[[3000 2490]
[3764 4224]]
Как видим, функция от Copilot правильно выполняет умножение матриц.
GitHub Copilot — это относительно молодой инструмент и имеет некоторые недостатки.
Copilot не тестирует свой код
Код, который предлагает Copilot, может содержать ошибки. Самостоятельно он их не находит, а код, который предлагает пользователю, необходимо тестировать. Также стоит понимать, что в целом он не пишет идеальный код — не только с точки зрения ошибок, но и с точки зрения оптимизации. Резюмируя, можно сказать, что любой код, который пишет Copilot, необходимо проверять.
Конфликты с IDE
Современные среды разработки предоставляют не просто рабочее пространство для написания и отладки кода, но также предлагают собственные подсказки. Например, при использовании встроенной функции PyCharm сообщает пользователю об атрибутах этой функции. Параллельно с этим Copilot тоже будет что-то предлагать пользователю, и это может его запутать.
Вероятность нарушения авторских прав
Это довольно дискуссионный аспект применения Copilot в коммерческой разработке. Поскольку Copilot обучался на общедоступных репозиториях, он, в теории, может предлагать лицензированный код.
Негативно влияет на квалификацию разработчика
Copilot не учит писать код — он пишет его за пользователя. Для младших специалистов может быть важным «набить руку» на типичных функциях и алгоритмах.
Разворачивайте Python-проекты в Timeweb Cloud
Github Copilot — это полезный инструмент для разработчика для выполнения рутинных обязанностей. По исследованиям самого Github этот инструмент положительно влияет на своих пользователей: 74% сфокусировались на более приятных аспектах работы, 88% разработчиков стали продуктивнее, а 96% стали быстрее справляться с повторяющимися задачи. GitHub Copilot стоит воспринимать именно как помощника: того, кому можно что-то делегировать, при этом занимаясь более важными и сложными делами. Но за тем, что создает этот помощник, нужно внимательно следить.