Несколько недель назад я получил доступ к GitHub Copilot, замечательному инструменту для намного более быстрого программирования программного обеспечения на разных языках.
Copilot — это не отдельное программное обеспечение. Это расширение для разных IDE. На данный момент все IDE JetBrains, Visual Studio Code, Visual Studio и Neovim

Установка этого инструмента довольно проста. Просто следуйте официальной документации https://github.com/github/copilot-docs

Функциональность

Инструмент очень мощный. Он предсказывает код на основе искусственного интеллекта и учитывает ваши переменные и стили кодирования из приведенного выше кода. Позвольте мне показать вам несколько примеров:

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

Комментарий Интерпретация

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

Все, что я должен написать, это:

//divide all elements in an array by a number in a function

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

function divide($array, $number) {
    $result = array();
    foreach ($array as $key => $value) {
        $result[$key] = $value / $number;
    }
    return $result;
}

Замена переполнения стека

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

Все, что у вас сейчас есть в голове, это «перевернуть массив». Так почему бы не написать это как комментарий. То, что вы получите, — это функция, которую вы хотите иметь с именем переменной вашего массива!

$myCoolArray = [...];
//some code
//reverse array
$myCoolArray = array_reverse($myCoolArray);

Это означает, что вам больше не нужно гуглить такие вещи. Разве это не круто?

Завершение кода

Такие вещи, как IntelliSense от Visual Studio, часто больше не требуются, потому что GitHub Copilot лучше знает, что вы хотите сделать.

Допустим, вы хотите вызвать функцию деления из приведенного выше примера. Начните вводить $myCoolArray = di, и строка завершится подсказкой

$myCoolArray = divide($myCoolArray, 2);

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

Последствия

Последствия использования этого инструмента для меня довольно ясны. Мы, программисты, можем писать код все быстрее и быстрее, постоянно совершенствуя искусственный интеллект. Но влияет ли это на нашу работу?

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

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

Деятельность разработчика программного обеспечения в 2030 году

Давайте немного пофантазируем и составим список занятий будущего разработчика программного обеспечения.

  • Проанализируйте требования к программному обеспечению. В будущем это будет приобретать все большее значение. Это также важно сейчас, но будет больше в будущем. Генерация кода может работать, только если требования ясны. Если они неясны, программное обеспечение не будет хорошим. Сегодня у нас такая же ситуация, но между требованиями и кодом у нас есть мозг разработчика, способный решать вещи, которые могут иметь значение в более позднем процессе разработки. В будущем у нас, возможно, не будет этого слоя.
  • Спланируйте инфраструктуру программного модуля и спланируйте интерфейсы с другими модулями. Это задача, которая потребуется и в будущем. Никакая машина никогда не сможет сделать это за нас.
  • Создайте программное обеспечение и оптимизируйте производительность и удобочитаемость. Эта часть является старой частью «программирования». Но будущий разработчик не будет писать код. Он сформулирует требования к машине. Мы достигли цели, если требования стейкхолдеров читабельны для машины. Но это будет долгий путь, пока мы не доберемся до этого, потому что ИИ не готов к этому, а заинтересованные стороны не знают, как работают эти машины. Вот почему разработчики программного обеспечения по-прежнему будут необходимы.
  • Протестируйте код на соответствие требованиям. Генерация кода для тестов — это не будущее! Это уже здесь! GitHub Copilot может сделать это за нас. Мы должны проверить сгенерированные тесты и исправить бизнес-логику, если тесты не работают. Процесс тестирования будет аналогичен процессу сегодня, но без написания всего тестового кода самостоятельно.

Заключение

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

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