Pull to refresh

GitHub Copilot

Reading time6 min
Views86K

В современном компьютерном и интернет-мире всё взаимодействие, не только пользователей, а в общем со структурой выстраивается с помощью различных программ, интерфейсов, и подобных им оптимизированных для простого человека сложных разработках. Но кто же занимается непосредственно разработкой различного вида software? Первый ответ, который придет в голову обывателю – это конечно же ПРОГРАММИСТ. Если обобщить в понятие программист всевозможные виды и подходы к разработке, можно согласиться с ответом обывателя. Давайте рассмотрим всех инженеров, backend, frontend разработчиков как единое понятие – программист.

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

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

В своей статье я не только расскажу вам о шаге в будущее, об идеальном применении «Трёх законов робототехники» (по Айзеку Азимову) и настоящем IT прогрессе, а даже покажу это чудо на практике! Речь пойдет о «GitHub Copilot». Настоятельно рекомендую ознакомиться со всем, что здесь будет написано, я уверен, что вы не пожалеете и обязательно воспользуетесь возможностью, которую я вам покажу!

Краткий экскурс в само понятие GitHub Copilot для гуманитария. Существует такой сайт – github.com, представляющий из себя открытый репозиторий, а проще говоря онлайн-сервис хранения и синхронизации кода для программистов и разработчиков приложений. Главной целью этого сервиса и является поддержка совместной разработки проектов и контроля версий.

Летом 2021 года один из крупнейших IT-гигантов компания Microsoft совместно со своей дочерней компанией GitHub объявила о запуске системы Copilot («второй пилот») – нейросети, способной правильно писать код за разработчиков. Давайте попробуем выяснить, как это всё работает, на что способен искусственный интеллект, как получить доступ к сервису, а также сможет ли компьютер написать программу за того, кто думает, что Python это английское название одного из видов змей.

Что такое Copilot?

Генеральный директор GitHub Нэт Фриндман в своём блоге говорит о разработке просто:

«GitHub Copilot — ваш искусственный напарник-программист».

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

Самая интересная способность “Copilot” — превращать обычные человеческие слова и предложения в программный код. Расширение работает на базе нейросети Codex компании OpenAI, которая способна переводить английский язык в язык программирования. По крайней мере, так кажется пользователю.

Получается, программа просто берёт подходящий под контекст код из хранилища данных GitHub. Разве она не ошибается? Может он только мешает своими глупыми вставками!

Давайте проанализируем: В последнем исследовании разработчики сервиса обнаружили, что пользователи приняли в среднем 26% всех подсказок, показанных GitHub Copilot. Также было подсчитано, что GitHub Copilot создает в среднем более 27% файлов кода разработчиков, а на некоторых языках, таких как Python, этот показатель достигает 40%. Однако GitHub Copilot не пишет идеальный код. Он предназначен для создания наилучшего возможного кода с учетом контекста, к которому у него есть доступ, но он не проверяет предлагаемый код, поэтому программа не всегда может работать без дополнительного вмешательства человека или вовсе иметь смысл… Для предлагаемого кода некоторые языки, такие как Python, JavaScript, TypeScript и Go, могут работать лучше, чем другие языки программирования, ведь база для нейросети формируется из анализа разработок других людей, а другие люди пишут на том, что имеет спрос и популярность. Как и любой другой код, варианты, предложенные GitHub Copilot, должны быть тщательно протестированы и проверены. Как разработчик, вы всегда несете ответственность.

GitHub GOpilot

Давайте же применим наш искусственный интеллект на практике. Ниже демонстрируется работа на языке программирования Java. Попросим нашего робота создать программу, перемножающую две матрицы размера 3х3. Писать такой код руками вышло бы 5–10 минут в руках умелого программиста, ведь нужно не только написать, но и продумать алгоритм, как будет происходить умножение.

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

Для этого напишем программе прямым текстом то, что мы от нее хотим: «multiply matrix A and B and return the result». Перемножь матрицы А и Б и верни результат. Примечательно то, как вы можете заметить, что программа выдает подсказки даже в написании ей задачи… Далее просто нажимаем Enter, ждем буквально одну секунду, и программа выдает нам готовый код для поставленной задачи, нажимаем Tab и код интегрируется в нашу программу! Великолепно, идем дальше. Следующим шагом просто создаем экземпляр нашего класса-калькулятора, задаем две матрицы для работы (даже с этим программа помогла, но я решил увеличить матрицы с 2х2 до 3х3 вручную), а затем просто нажимаем Tab, Tab, Tab, Tab и запускаем программу!

Результатом работы данной программы служит такая матрица:

Теперь давайте обратимся к обычному онлайн калькулятору, передадим ему наши исходные матрицы и проверим, не ошибся ли наш помощник???

Невероятно! Результаты идентичны, но вы можете сказать: «Пфф, ну это легко, с нормальными задачами то он не справится, умножать любой может». А давайте проверим!

Типичная задачка на алгоритмы в Java. Написать программу, сортирующую положительные числа методом Cocktail Sort (ниже описан принцип работы этого метода сортировки)

Скопируем задание и вставим его в среду разработки для нашей нейросети:

Запускаем с данными, которые используют в примере составители задачи:

Итог:

Смотрим решение составителей:

import java.util.Arrays;
class cocktailSort
{
    void cocktailSort(int nums[])
    {
	  boolean swapped;
	  do {
		swapped = false;
		for (int i =0; i<=  nums.length  - 2;i++) {
			if (nums[ i ] > nums[ i + 1 ]) {
				//test if two elements are in the wrong order
				int temp = nums[i];
				nums[i] = nums[i+1];
				nums[i+1]=temp;
				swapped = true;
			}
		}
		if (!swapped) {
			break;
		}
		swapped = false;
		for (int i= nums.length - 2;i>=0;i--) {
			if (nums[ i ] > nums[ i + 1 ]) {
				int temp = nums[i];
				nums[i] = nums[i+1];
				nums[i+1]=temp;
				swapped = true;
			}
		}
	} while (swapped);
}
    // Method to test above
    public static void main(String args[])
    {
        cocktailSort ob = new cocktailSort();
        int nums[] = {7, 5, 3, 2, 1, 12, 45};
        System.out.println("Original Array:");
        System.out.println(Arrays.toString(nums));
        ob.cocktailSort(nums);
        System.out.println("Sorted Array");
        System.out.println(Arrays.toString(nums));
    }
}

Смотрим ответ:

Сверяем:

Безупречно.

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

Отдайте мне…

Наверняка вам стало интересно, а как получить это добро и использовать в своих целях? Поспешу разочаровать всех, кто не является студентом или работником Университета ИТМО – с 21.06.2022 сервис GitHub Copilot стал платным, что по мне очень логично, такой функционал не мог долго существовать в свободном доступе… Но если вы всё же студент или сотрудник ИТМО, GitHub Copilot принадлежит вам по праву, и не только он…

GitHub Student Developer Pack

«Learn to ship software like a pro. There's no substitute for hands-on experience. But for most students, real world tools can be cost-prohibitive. That's why we created the GitHub Student Developer Pack with some of our partners and friends».

Для получения привилегий сервисов GitHub, в том числе и Copilot, достаточно зарегистрироваться на сайте GitHub и подать заявку на получение статуса PRO по студенческой «льготе». Для этого будет необходимо прикрепить фото студенческого билета и прикрепить почтовый ящик на домене университета.

Подробная информация, конечно: тут

Установка

Установка сервиса в вашу интегрированную среду разработки тоже до невозможности проста. Покажу на примере PyCharm от компании JetBrains.

Summary.

Внедрение более интеллектуальных систем может привести к огромным изменениям в опыте разработок, инженерии, стартапов и в общем IT сферы. Наверное, не стоит ожидать, что GitHub Copilot заменит разработчиков. Скорее, GitHub Copilot будет сотрудничать с разработчиками, расширять их возможности и позволять им работать более продуктивно, сокращать количество ручных операций и помогать им сосредоточиться на интересной, творческой работе и мыслительном процессе. Также стоит предположить, что GitHub Copilot поможет снизить «входные барьеры», позволяя большему количеству людей изучать разработку программного обеспечения и присоединяться к следующему поколению разработчиков. Необходимо работать над проверкой этих гипотез чтобы делать наш мир лучше!


xhackerino. 2022

Tags:
Hubs:
Total votes 24: ↑9 and ↓15-2
Comments50

Articles