Во время изучения программирования каждый из нас в какой-то момент оказывается в тупике. Один из важнейших навыков, которые должен освоить каждый программист, — умение быстро найти из него выход. В этом приложении описаны способы решения проблем, которые помогут вам выйти из сложной ситуации.
Если у вас возникли трудности, то прежде всего оцените ситуацию. Прежде чем обращаться за помощью, убедитесь в том, что можете четко ответить на следующие три вопроса:
• Что вы пытаетесь сделать?
• Что вы делали до настоящего момента?
• Какие результаты вы получили?
Ваши ответы должны быть максимально конкретными. Например, в первом вопросе развернутое утверждение «Я пытаюсь установить последнюю версию Python на свой новый ноутбук с Windows» достаточно подробно, чтобы другие пользователи сообщества Python могли вам помочь. Формулировки типа «Я пытаюсь установить Python» не содержат столько информации, чтобы кто-то мог предложить вам помощь.
Ответ на второй вопрос должен быть достаточно развернутым, чтобы вам не предлагали делать то, что уже было сделано: описание «Я открыл страницу https://python.org/downloads/ и выбрал кнопку Download (Скачать) для моей системы. Затем я запустил программу установки» более полезно, чем «Я зашел на сайт Python и что-то скачал».
Что касается последнего вопроса, то при поиске в Интернете или обращении за помощью желательно знать точные сообщения об ошибках.
Иногда в процессе поиска ответов на эти три вопроса вы сами понимаете, где была допущена оплошность, и выходите из тупика самостоятельно. У программистов даже имеется специальный термин для таких ситуаций: «отладка методом утенка» (rubber duck debugging). Если вы четко объясните свою ситуацию резиновому утенку (или любому другому неодушевленному объекту) и зададите конкретный вопрос, то часто сможете ответить на него. Некоторые организации даже приобретают резиновую уточку, чтобы побудить своих программистов к использованию этого метода.
Просто вернитесь к началу и попробуйте еще раз; часто этого оказывается достаточно для решения многих проблем. Допустим, вы пытаетесь написать цикл for на основе примера из книги. Возможно, вы пропустили что-то совсем простое — скажем, двоеточие в конце строки. Повторное выполнение всех действий поможет избежать той же ошибки.
Если вы уже долго пытаетесь решить какую-то проблему, то перерыв — едва ли не лучшее, что можно сделать. Когда мы трудимся над одной задачей в течение долгого времени, наш мозг начинает концентрироваться на единственном решении. Мы забываем о сделанных предположениях, а перерыв помогает взглянуть на проблему под новым углом. Перерыв даже не обязан быть долгим, просто нужно заняться чем-то, что выведет вас из текущего мысленного настроя. Если вы давно сидите на одном месте, то переключитесь на какую-нибудь физическую нагрузку: пройдитесь или выйдите на улицу; может, выпейте стакан воды или съешьте что-нибудь легкое и здоровое.
Если вы начинаете отчаиваться, то попробуйте отложить работу на следующий день. Хороший сон почти всегда упрощает задачу.
В список онлайн-ресурсов этой книги (https://ehmatthes.github.io/pcc_3e) добавлен ряд полезных разделов, посвященных настройке системы и обзорам каждой главы. Просмотрите эти материалы — возможно, вы найдете в них то, что вам поможет.
Вполне вероятно, что кто-то уже столкнулся с такой же проблемой и написал о ней в Интернете. Хорошие навыки поиска и конкретные запросы помогут вам найти информацию для решения ваших проблем. Например, если у вас возникли трудности с установкой Python в новой версии Windows, то поиск по условию установка python windows может привести вас к ответу.
Поиск по точным сообщениям об ошибках тоже может оказаться исключительно полезным. Допустим, при попытке запустить Python в терминальном сеансе в новой операционной системе Windows произошла следующая ошибка:
> python hello_world.py
Python was not found; run without arguments to install from the Microsoft Store...
Вероятно, поиск по полному тексту сообщения принесет полезную информацию.
В результатах поиска, связанного с программированием, особенно часто встречаются некоторые сайты. Я опишу часть из них, чтобы вы знали, чего от них можно ждать.
Stack Overlow (http://stackoverlow.com/) — один из самых популярных сайтов с вопросами и ответами для программистов, который часто встречается на первой странице результатов поиска, связанного с Python. Пользователи публикуют вопросы по возникшим проблемам, а другие участники пытаются дать полезные ответы. Пользователи могут голосовать за ответы, которые, по их мнению, были наиболее полезны, так что лучшими ответами обычно оказываются первые из найденных.
На сайте Stack Overflow можно найти ответы на многие распространенные вопросы по языку Python, поскольку со временем они были хорошо проработаны. Пользователи также публикуют обновления, так что ответы остаются относительно актуальными. На момент написания книги на сайте Stack Overflow были опубликованы ответы более чем на 2 миллиона вопросов, связанных с Python.
Прежде чем публиковать свой вопрос на сайте Stack Overflow, учитывайте следующее требование. Вопрос должен содержать кратчайший пример проблемного кода. Если вы опубликуете листинг из не более чем 5–20 строк кода, выдающих ошибку, и ответите на вопросы, упомянутые в начале этого приложения, то вам наверняка помогут. Если вы поделитесь ссылкой на свой проект с огромным количеством файлов, то люди вряд ли помогут. На странице https://stackoverflow.com/help/how-to-ask опубликовано отличное руководство по составлению грамотного вопроса. Советы, приведенные в этом руководстве, применимы для получения помощи в любом сообществе программистов.
Официальная документация Python (http://docs.python.org/) уже не столь бесспорно полезна для новичков, поскольку написана для документирования языка, а не для разъяснений. Примеры в официальной документации должны работать, но, возможно, что-то в них останется для вас непонятным. Тем не менее это полезный ресурс, к которому стоит обращаться при поиске, а по мере углубления вашего понимания Python он будет приносить еще больше пользы.
Если вы используете конкретную библиотеку (например, Pygame, Matplotlib, Django и т.д.), то в поиске часто будут встречаться ссылки на официальную документацию этого проекта — например, документация http://docs.djangoproject.com/ чрезвычайно полезна. Если вы собираетесь работать с любыми из этих библиотек, то вам стоит ознакомиться с их официальной документацией.
Форум Reddit состоит из ряда подфорумов (subreddits). Участники подфорума r/learnpython (http://reddit.com/r/learnpython/) достаточно активны и настроены благожелательно. Здесь вы сможете прочитать вопросы других участников и опубликовать собственные.
Многие программисты ведут блоги и пишут об аспектах языка, с которыми работают. Прежде чем брать на вооружение любой совет, просмотрите несколько первых комментариев к сообщению в блоге. Если комментариев нет, то к сообщению следует относиться скептически. Вполне возможно, что никто другой не смог убедиться в полезности этого совета.
Discord — еще одна чат-среда с сообществом Python, в которой можно попросить о помощи и читать обсуждения, связанные с Python.
Чтобы поближе познакомиться с Discord, откройте страницу https://pythondiscord.com/ и щелкните на ссылке Discord. Если у вас уже есть учетная запись Discord, то вы можете выполнить вход, используя ее данные. Если же записи еще нет, то введите имя пользователя и следуйте инструкциям для завершения процесса регистрации.
Если вы впервые посещаете Python-площадку Discord, то для полноценного участия необходимо принять правила сообщества. Когда это будет сделано, вы сможете присоединиться к любому из интересующих вас каналов. Если вам потребуется помощь, то отправьте свой вопрос на одном из каналов Python Help.
Slack — еще одна среда для онлайн-общения. Каналы Slack часто используются для внутренней коммуникации в компаниях, но существует и много публичных групп, к которым вы можете присоединиться. Если вы захотите просмотреть Slack-группы Python, то начните с https://pyslackers.com/. Чтобы получить приглашение, щелкните на ссылке Slack в верхней части страницы и введите свой адрес электронной почты.
Оказавшись в рабочем пространстве Python Developers, вы увидите список каналов. Щелкните на ссылке Channels (Каналы) и выберите тему, которая вас интересует. Возможно, вам стоит начать с каналов #help и #django.