Программирование на Python с помощью GitHub Copilot и ChatGPT. - Лео Портер - E-Book

Программирование на Python с помощью GitHub Copilot и ChatGPT. E-Book

Лео Портер

0,0

Beschreibung

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

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 416

Veröffentlichungsjahr: 2024

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Лео Портер, Даниэль Зингаро
Программирование на Python с помощью GitHub Copilot и ChatGPT.
2024

Переводчик Е. Сенченкова

Лео Портер, Даниэль Зингаро

Программирование на Python с помощью GitHub Copilot и ChatGPT.. — СПб.: Питер, 2024.

ISBN 978-5-4461-4077-0

© ООО Издательство "Питер", 2024

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

Оглавление

Предисловие
Благодарности
Введение
ИИ-помощники меняют процесс программирования
Целевая аудитория
Чего мы ждем от вас
Что вы сможете делать после изучения этой книги
Сложность работы с ИИ-помощниками
Зачем мы написали эту книгу
Предупреждение: остерегайтесь высокомерия
Структура издания
Скачивание исходного кода
Требования к программному/аппаратному обеспечению
Об авторах
О научном редакторе
От издательства
Иллюстрация на обложке
1. Знакомство с ИИ-программированием и Copilot
1.1. Как мы разговариваем с компьютерами
1.2. О технологиях
1.3. Как Copilot меняет систему обучения программированию
1.4. Что еще может для нас сделать Copilot
1.5. Риски и проблемы, связанные с использованием Copilot
1.6. Необходимые навыки
1.7. Опасения общества по поводу ИИ-помощников по программированию
Резюме
2. Начало работы с Copilot
2.1. Настройка компьютера перед началом обучения
2.2. Настройка системы
2.3. Работа с Copilot в Visual Studio Code
2.4. Решение распространенных проблем Copilot
2.5. Первая проблема программирования
Резюме
3. Проектирование функций
3.1. Функции
3.2. Преимущества функций
3.3. Роли функций
3.4. Что является адекватной задачей для функции
3.5. Цикл проектирования функций с помощью Copilot
3.6. Примеры создания хороших функций с помощью Copilot
Резюме
4. Читаем код Python: часть 1
4.1. Почему нужно читать код
4.2. Просьба к Copilot объяснить код
4.3. Топ-10 средств программирования, которые вам необходимо знать: часть 1
Резюме
5. Читаем код Python: часть 2
5.1. Топ-10 средств программирования, которые вам необходимо знать: часть 2
Резюме
6. Тестирование и инженерия подсказок
6.1. Почему крайне важно тестировать код
6.2. Тестирование методом «закрытого» и «открытого ящика»
6.3. Как тестировать свой код
6.4. Возвращаемся к циклу проектирования функций с помощью Copilot
6.5. Пример полного тестирования
6.6. Еще один пример полного тестирования — тестирование с помощью файлов
Резюме
7. Декомпозиция задачи
7.1. Декомпозиция задачи
7.2. Небольшие примеры нисходящего программирования
7.3. Определение авторства
7.4. Определение авторства с помощью нисходящего программирования
7.5. Разбиение задачи обработки на подзадачи
7.6. Итоги нисходящего программирования
7.7. Реализация функций
7.8. Идем дальше
Резюме
8. Отладка и более глубокое понимание кода
8.1. Что вызывает ошибки (баги)
8.2. Как найти баг
8.3. Как исправить баг (если он найден)
8.4. Изменение рабочего процесса с учетом новых навыков
8.5. Применение навыка отладки к новой задаче
8.6. Использование отладчика для лучшего понимания кода
8.7. Предостережение об отладке
Резюме
9. Автоматизация утомительных задач
9.1. Почему программисты создают инструменты
9.2. Как использовать Copilot для написания инструментов
9.3. Пример 1. Очистка текста электронного письма
9.4. Пример 2. Добавление титульных листов в PDF-файлы
9.5. Пример 3. Объединение библиотек изображений телефона
Резюме
10. Создание игр
10.1. Игровые программы
10.2. Добавление случайности
10.3. Пример 1. «Быки и коровы»
10.4. Пример 2. Bogart
Резюме
11. Перспективы
11.1. Паттерны запросов
11.2. Ограничения и перспективы
Резюме

Дэн благодарит свою жену Дояли — без нее эта книга не появилась бы на свет.

Лео благодарит свою жену Лори и детей Сэма и Эйвери за их любовь и поддержку.

Предисловие

Сейчас самое подходящее время для изучения программирования. Почему? Позвольте мне воспользоваться простой аналогией, чтобы объяснить это.

Я люблю печь хлеб. Я делаю это лучше, когда использую миксер, а не замешиваю тесто вручную. Возможно, вы скажете, что вам лень так делать. А я отвечу, что этот способ продуктивнее и шансов на то, что хлеб действительно получится, гораздо больше. Может быть, у вас есть свой пример использования устройства, которое облегчает вашу жизнь, выполняя утомительную или неприятную работу и позволяя вам сосредоточиться на более важных или интересных вещах. Есть ли у вас в автомобиле система помощи при парковке? Я помню, как в Gmail добавили проверку правописания других языков, помимо английского. Родственники моего мужа, живущие в Германии, были так рады, что он стал писать им более длинные письма, — нововведение позволило ему уделять больше времени содержанию.

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

Но есть хорошая новость! Начиная с весны 2023 года радикально новая и, как нам кажется, эффективная поддержка наконец-то появилась. Эта книга учит программированию с помощью одного из самых захватывающих достижений человечества в этом веке: искусственного интеллекта. Она призвана помочь вам развить способность программировать на языке Python для того, чтобы легче и быстрее решать вычислительные задачи, обучая и используя инструмент под названием GitHub Copilot. Это инструмент поддержки программистов, который работает на основе LLM (Large Language Model — большая языковая модель), получая помощь из огромного количества ранее написанных программ. Как только вы научитесь управлять им (к сожалению, это немного сложнее, чем пользоваться миксером), Copilot сможет значительно увеличить вашу продуктивность и успешность в написании программ.

Но стоит ли использовать Copilot? Действительно ли вы научитесь с его помощью программировать? Предварительные результаты обнадеживают: студенты, обучавшиеся с привлечением Copilot и получившие задание по программированию, которое нужно было выполнить без его помощи, справились лучше, чем те, кто учился без него1. Есть разные навыки, которые вам нужно будет отточить с помощью Copilot, в частности декомпозицию задачи и отладку (не переживайте, если сейчас вы не знаете, что это такое). Программисты-практики тоже должны владеть этими навыками, но раньше мы не могли обучать им столь эффективно на вводных курсах, поскольку у студентов просто не хватало «оперативной памяти» — места в мозгу для изучения всех «навыков высокого уровня». Их внимание было сосредоточено на таких мелочах, как орфография и синтаксис языка программирования.

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

Итак, поздравляю! Даже если вы никогда не писали код или учились этому раньше и разочаровались, думаю, что обучение программированию с помощью Copilot изменит вас и позволит вам получить опыт более осмысленного и профессионального написания кода!

Бет Саймон, Ph. D.

1 Kazemitabaar M., Chow J., C.K.T.M., Ericson B., Weintrop D., Grossman T. Studying the Effect of AI Code Generators on Supporting Novice Learners in Introductory Programming. ACM CHI Conference on Human Factors in Computing Systems. April 2023.

Благодарности

Писать книгу о постоянно развивающихся технологиях было непросто. Каждый день работы над ней начинался с чтения новых статей, обзоров, мнений и описаний возможностей LLM. Первоначальные планы приходилось отменять или пересматривать. Новые идеи для последующих глав появились только после того, как мы написали первые главы и получили доступ к новейшим возможностям LLM. Мы благодарим всю команду издательства Manning за их оперативность и помощь на протяжении всего процесса подготовки издания.

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

Мы также благодарим нашего технического редактора Питера Моргана и корректора Марка Томаса. Оба они внесли ценный вклад в улучшение качества книги.

Большое спасибо всем нашим рецензентам. Айшвария Верма, Эндрю Фрид, Энди Визендангер, Бет Саймон, Брент Хонадель, Каир Кананеа, Фрэнк Томас-Хоккей, Ганеш Фалак, Ганеш Сваминатан, Джорджероберт Фриман, Харискумар Панакмал, Хендрика ван Эмде Боас, Ильдар Ахметов, Жан-Батист Банг Нтеме, Калай С.E. Натан, Макс Фаулер, Майя Леа-Лангтон, Микаэль Даутри, Моника Попа, Наташа Чонг, Озрен Харлович, Педро Антонио Ибарра Фасио, Радхакришна Анил, Снехал Бобаде, Шрихари Шридхаран, Тан Ви, Тони Холдройд, Вей Луо, Вонди Вольде — ваши предложения помогли улучшить эту книгу.

Мы благодарим наших коллег за то, что они поддерживали нашу работу и предлагали свои идеи. Многие из этих идей повлияли на наше видение того, как должен выглядеть современный курс по программированию для начинающих. Особая благодарность Бретту Беккеру, Мишелю Крейгу, Полу Денни, Биллу Грисволду, Филипу Гуоу и Джеральду Сусаю Раджу.

Введение

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

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

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

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

ИИ-помощники меняют процесс программирования

Мы познакомим вас с самым новым ИИ-помощником, Copilot, в главе 1, но краткий обзор его возможностей дадим прямо сейчас. Если вы читали заголовки новостей или даже отдельные статьи известных профессионалов в области разработки ПО, рассказывающие о Copilot или ChatGPT, то, конечно, заметили, что мнения экспертов очень разнообразны, иногда полярны. Одни говорят, что использование ИИ означает конец всей программной разработки. Другие считают, что эти помощники настолько несовершенны, что проще обойтись без них. Эти взгляды настолько разнятся, что нам будет несложно поспорить с любым аргументом за и против. ИИ учится на уже существующем коде, так что, если разрабатывается новый инструмент или технология, именно людям придется написать бо́льшую часть исходного кода. В недавней статье один автор высказал мнение, что в мире не так уж много кода (если он вообще есть) для квантовых компьютеров, поскольку все они еще находятся в зачаточном состоянии2. Поэтому люди-программисты пока будут востребованы. В то же время, работая с Copilot, мы видим, насколько это мощный инструмент. Мы оба пишем ПО десятилетиями, и Copilot часто дает нам правильный код гораздо быстрее, чем если бы мы написали его сами. Игнорирование такого мощного инструмента сродни отказу плотника использовать электроинструмент.

Для нас, как преподавателей, совершенно очевидна отличная возможность помочь людям научиться писать программное обеспечение. Почему студенты должны тратить так много времени на борьбу с синтаксисом при написании кода с нуля, если ИИ почти всегда предложит синтаксически правильный код? Зачем им спрашивать у профессоров, преподавателей, друзей или участников интернет-форумов, что именно делает тот или иной блок кода, если ИИ действительно хорошо объясняет код (особенно когда речь идет о вопросах новичков)? И если ИИ часто пишет правильный код при решении распространенных задач программирования (изучая огромные объемы кода, написанного в прошлом), то почему бы студентам не решать эти задачи с его помощью?

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

Целевая аудитория

Аудиторию этой книги можно разделить на две основные группы. Первая — все, кто задумывался о написании ПО (и даже пытался это сделать и потерпел неудачу), чтобы улучшить свою жизнь. Это бухгалтеры, которые расстраиваются из-за того, что их ПО не может сделать то, что им нужно, и им приходится что-то делать вручную. Это ученые, которые хотят быстро анализировать данные, но существующие инструменты не способны выполнять требуемые операции. Мы также представляем себе менеджера, который чувствует, что возможности его программы для работы с электронными таблицами ограничены, и хочет найти лучший способ разобраться в своих данных. Кроме того, мы представляем себе руководителя небольшой компании, который хочет получать уведомления, когда в социальных сетях упоминают его компанию, но не может позволить себе заплатить команде разработчиков ПО за написание такого инструмента. Мы представляем себе программиста-любителя, который просто хочет писать программы ради развлечения — будь то создание собственных небольших видеоигр, пересказы историй с помощью картинок или составление забавных семейных фотоколлажей. Таким образом, первая группа — это все те, кто хочет писать программы, чтобы улучшить какой-то элемент своей профессиональной или личной жизни.

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

Чего мы ждем от вас

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

Работа с книгой потребует только навыков базовой компьютерной грамотности. Это означает, что вы должны уметь устанавливать программное обеспечение, копировать файлы из одной папки в другую и открывать файлы на компьютере. Если у вас таких навыков нет, то вы все равно можете приступить к изучению материа­ла, но учтите, что в ходе чтения могут возникнуть моменты, когда вам придется обращаться к сторонним ресурсам (например, к видеороликам на YouTube о том, как скопировать файл из одной папки в другую).

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

Что вы сможете делать после изучения этой книги

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

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

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

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

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

Сложность работы с ИИ-помощниками

Мы полагаем, что вы готовы к работе с технологией, которая быстро развивается и меняет мир. То, что вы увидите в Copilot, может не совпадать с тем, что вы увидите в книге. Copilot изменяется ежедневно, и мы не в состоянии отслеживать все эти перемены. Более того, Copilot по своей сути является недетерминированным. Это значит, что если вы попросите его решить одну и ту же задачу несколько раз, то он может каждый раз выдавать разный код. Иногда вы получаете правильный код для задачи, но потом можете получить неправильный. Поэтому, даже если вы используете точно такие же запросы (подсказки), как у нас, вы, скорее всего, увидите другие варианты кода, отличающиеся от наших. Бо́льшая часть этой книги посвящена тому, чтобы вы научились определять, правильный ли ответ дал Copilot и, если нет, как его исправить. Короче говоря, мы надеемся, что вы готовы к тому, чтобы начать учиться на передовом рубеже технологий.

Зачем мы написали эту книгу

Мы оба работаем преподавателями и программистами более десяти лет. Заботясь об успехе наших студентов, мы пришли к пониманию, что нам необходимо стать исследователями, изучающими, как студенты осваивают компьютерные технологии и как улучшить их результаты. Вдвоем мы написали около сотни статей в нашей области знаний, исследуя педагогические методы, убеждения студентов и оценки — все в целях улучшения качества обучения молодого поколения.

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

Предупреждение: остерегайтесь высокомерия

Одна из самых печальных вещей, которые мы наблюдаем на занятиях в наших университетах, — это то, как некоторые студенты запугивают собратьев. Мы много раз слышали, как на наших курсах по программированию на Python некоторые из таких студентов пытались показать, что они уже научились программировать на таком-то и таком-то языке, и видели, как это деморализует других участников курсов. Мы стараемся мягко направлять таких хвастающихся студентов на другие, более подходящие курсы; к тому же мы заметили, что они часто оказываются теми, кто не может сдать экзамен в конце семестра, поскольку сильно переоценил свои знания в начале. И не нужно быть лицензированным психологом, чтобы понять, что подобное позерство — следствие низкой самооценки.

Помимо наблюдения за студентами наших вводных курсов, мы замечаем, как разные программисты относятся друг к другу и к своим областям. Например, специалисты по человеко-компьютерному взаимодействию (Human-Computer Interaction, HCI) изучают, как улучшить дизайн ПО, чтобы сделать его более удобным для пользователей. Звучит солидно, не так ли? К сожалению, в течение многих лет компьютерщики считали эту область просто «прикладной психологией», но затем крупные компании показали, что если позаботиться о пользователях технологии, то, возможно, люди оценят ее по достоинству и будут склонны ее купить. Неудивительно, что HCI быстро стало мейнстримом в компьютерных науках. Этот снобизм не ограничивается конкретными областями. Мы видим, как он возникает у программистов на разных языках. Так, программисты на C++ (один из важных языков) говорят весьма глупые вещи, например, что работа на JavaScript (другой важный язык) не является настоящим программированием. (Оно определенно является настоящим программированием, что бы это ни значило!)

Все это, на наш взгляд, непродуктивное и неудачное позерство, которое отталкивает людей от данной области. В комиксе XKCD «Настоящие программисты»3, который мы оба любим, это отлично показано. В нем программисты спорят о том, какой текстовый редактор лучше всего подходит для написания программ. Все программисты используют текстовый редактор для ввода своего кода, и именно это вы начнете делать в главе 2. Идут давние и в основном несерьезные споры о лучших редакторах (emacs — один из многих редакторов). Комикс высмеивает бессмысленность этих дебатов.

Мы говорим об этом прискорбном аспекте, так как знаем, что скажут некоторые люди, которые учатся программировать с помощью Copilot: чтобы научиться писать программы, нужно научиться писать код с нуля. Мы согласны с тем, что будущим профессиональным инженерам в какой-то момент своей карьеры надо научиться писать код с нуля. Но, когда речь идет о большинстве людей и даже о тех, кто только начинает изучать программную инженерию, мы абсолютно не согласны с тем, что написание кода с нуля имеет смысл в качестве отправной точки. Поэтому, если кто-то критикует вас за то, что вы как-то пытаетесь сделать себя, свою жизнь или мир лучше, предлагаем вам последовать совету Тейлор Свифт и просто «выбросить это из головы»4.

Структура издания

Эта книга состоит из 11 глав. Мы рекомендуем вам прочитать все от начала до конца, а не перескакивать с одного места на другое. Это связано с тем, что большинство глав знакомят с навыками, которые будут использоваться в последующих главах.

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

• Глава 2 поможет вам настроить компьютер для программирования с помощью GitHub Copilot (это ваш ИИ-помощник по программированию) и Python (это язык программирования, на котором мы будем работать). Как только ваш компьютер будет настроен, мы воспользуемся Copilot в первом примере программирования: проведем анализ свободно доступных спортивных данных.

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

• Глава 4 — первая из двух глав, в которых вы научитесь читать код на языке Python. Действительно, Copilot будет писать код за вас, но вам нужно уметь читать его, чтобы определить, будет ли он делать то, что вы хотите. И не волнуйтесь: Copilot поможет вам читать код!

• Глава 5 — вторая из двух глав, в которых вы узнаете, как читать код на языке Python.

• В главе 6 рассказывается о двух важнейших навыках, которые необходимо отточить при работе с ИИ-помощниками: о тестировании и инженерии подсказок (prompt engineering). При тестировании вы проверяете правильность работы вашего кода. Инженерия подсказок заключается в изменении слов, которые вы используете, чтобы более эффективно общаться с ИИ-помощником.

• Глава 7 посвящена разбиению больших задач на более мелкие, которые легче решать с Copilot. Эта техника называется «нисходящее программирование», и в главе 7 вы используете ее для разработки полной программы, которая позволяет определить автора незнакомой книги.

• В главе 8 мы поговорим о багах (ошибках в вашем коде!) и о том, как их найти и исправить. Вы узнаете, как строка за строкой пройтись по коду, чтобы выявить, что именно идет не так, и даже как попросить Copilot помочь вам исправить ошибки.

• В главе 9 Copilot поможет вам автоматизировать утомительные задачи. Вы увидите три примера: очистку электронных писем, которые пересылались много раз; добавление титульных страниц к сотням PDF-файлов и удаление дубликатов изображений. Вы сможете применить эти принципы к собственным специфическим задачам.

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

• Глава 11 посвящена новой области: паттернам запросов, которые представляют собой инструменты, увеличивающие эффективность ИИ-помощника по программированию. В главе кратко описаны текущие ограничения ИИ-помощников и рассматриваются возможные перспективы.

Скачивание исходного кода

Во многих книгах по программированию предполагается, что читатель наберет код именно так, как написано, чтобы решить определенную задачу. Наша книга отличается тем, что код, полученный нами от Copilot, является недетерминированным, то есть ваш код, скорее всего, не будет совпадать с нашим. Поэтому мы не предоставляем для скачивания весь код, который вы видите в книге. Мы хотим, чтобы вы сосредоточились на генерации этого кода в Copilot, а не вводили его самостоятельно! Тем не менее у нас есть несколько важных файлов, которыми мы хотим поделиться, и они доступны на сайте издательства: https://www.manning.com/books/learn-ai-assisted-python-programming.

Эта книга содержит множество примеров исходного кода как в виде нумерованных листингов, так и строк с обычным текстом. В обоих случаях исходный код оформляется моношириннымшрифтом, чтобы можно было отделить его от обычного текста. Комментарии или код, написанные нами в качестве запросов для Copilot или ChatGPT, выделены жирным шрифтом, чтобы показать то, что написали мы, а не то, что нам выдала LLM.

Во многих случаях исходный код был переформатирован; мы добавили разрывы строк и изменили отступы, чтобы уместить код на странице. Иногда даже этого было недостаточно, поэтому в листинги добавлены символы перевода строки (➥). Кроме того, комментарии в исходном коде часто удалялись из листингов, когда код описывался в тексте. Многие листинги снабжены аннотациями, в которых поясняются важные нюансы.

Требования к программному/аппаратному обеспечению

Вам понадобится доступ к любому компьютеру под управлением Windows, Mac или Linux, на котором вам разрешено устанавливать ПО. Как вы увидите в главе 2, вам потребуется установить Python и Visual Studio Code (VS Code), а также различные расширения. Кроме того, вам нужно будет зарегистрировать учетную запись GitHub Copilot, который на момент написания книги является бесплатным пробным вариантом для студентов и преподавателей, но для других категорий пользователей за него предусмотрена ежемесячная плата.

2 Yellin D.M. The Premature Obituary of Programming // Commun. ACM, 66, 2 (Feb. 2023), 41–44.

3 XKCD. Real Programmers. https://xkcd.com/378/. Accessed Feb. 1, 2023.

4 Имеется в виду песня Shake it off. — Примеч. ред.

Об авторах

Лео Портер — профессор-преподаватель факультета компьютерных наук и инженерии Калифорнийского университета в Сан-Диего. Наиболее известен своими исследованиями эффекта взаимного обучения на курсах информатики, использования данных кликеров для прогнозирования успеваемости студентов, а также разработкой опросника «Базовые структуры данных» (Concept Inventory). Один из преподавателей популярной специализации Coursera «Объектно-ориентированное программирование на Java: структуры данных и не только», в которой участвуют более 300 000 слушателей. Лео Портер также преподает первый курс программы edX MicroMasters «Python для науки о данных», на который записалось более 200 000 слушателей. Получил шесть наград за лучшие доклады, награду за десятку лучших докладов симпозиума всех времен в честь 50-летия SIGCSE (Special Interest Group on Computer Science Education, Специальная группа по образованию в области вычислительной техники), награду за выдающиеся достижения в области преподавания от Колледжа Уоррена, а также награду от Академического сената за выдающиеся достижения в области преподавания в Калифорнийском университете в Сан-Диего. Является заслуженным членом ACM (Association for Computing Machinery, Ассоциация по вычислительной технике) и ранее входил в состав Совета ACM SIGCSE.

Дэниел Зингаро — доцент-преподаватель Университета Торонто. За последние 15 лет преподавал программирование на Python тысячам студентов и написал книгу по Python5. Кроме того, написал десятки научных статей о том, как преподавать и изучать информатику. Написал две книги для издательства No Starch Press — вышеупомянутую по Python и по алгоритмам6, — которые были переведены на множество языков. Получил несколько престижных наград за преподавательскую и исследовательскую деятельность, в том числе награду «50-летнее испытание временем» и несколько наград за лучшие статьи.

5 Зингаро Д. Python без проблем. Решаем реальные задачи и пишем полезный код. — СПб.: Питер, 2023.

6 Зингаро Д. Алгоритмы на практике. — СПб.: Питер, 2022.

О научном редакторе

Питер Морган — основатель консалтинговой компании по искусственному интеллекту Deep Learning Partnership, базирующейся в Лондоне (www.deeplp.com). Имеет высшее образование по физике, а также степень MBA. Последние десять лет работает в области ИИ, а до этого десять лет работал архитектором решений в таких компаниях, как Cisco Systems и IBM. Написал несколько докладов, статей и глав книг по ИИ, физике и квантовым вычислениям. Консультирует стартапы и предприятия по всему миру по вопросам эксплуатации большой языковой модели (LLMOps) и квантовых вычислений. Вы можете следить за Питером в Twitter (@PMZepto).

От издательства

Ваши замечания, предложения, вопросы отправляйте по адресу [email protected] (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.

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

Иллюстрация на обложке

Рисунок на обложке — это Prussien de Silésie, или «Пруссак из Силезии», взятый из сборника Жака Грассе де Сен-Совера, опубликованного в 1788 году. Каждая иллюстрация прекрасно отрисована и раскрашена вручную.

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