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

1. С чего начать?
В первый день изучения программирования большинство людей задаются вопросом, как мне следует учиться и какие книги мне нужно читать?
Для начинающих программистов, независимо от того, есть ли у вас образование в области информатики или нет, я советую сначала купить книгу вроде «XXX: от новичка до мастера» (найдите такую, у которой много хороших отзывов). Лучше также дополнить её видео и сочетать видео с книгами: от установки программного окружения до выполнения первого «Hello World!».
Некоторые также могут услышать на форумах, как бывалые разработчики советуют купить «Thinking in XXX». Такие книги очень хороши и являются библией языка XXX, но лично я считаю, что они не подходят для начинающих. Для новичков такие книги — сущий кошмар, и они легко могут погасить ваш энтузиазм к обучению.
Конечно, книга вроде «XXX: от новичка до мастера» подходит только для начального уровня. Как только вы пройдёте вводный этап, её можно сжечь. Если вы хотите стать опытным, я всё же советую серьёзно изучить «Thinking in XXX».
Что касается примеров в книге, я советую набирать каждую букву самостоятельно, а также самостоятельно тестировать и выполнять их. Поначалу это может быть медленно, но это процесс, через который необходимо пройти. Никогда не используйте ctrl+c и ctrl+v.
2. Как решать проблемы при их возникновении?
При изучении языка программирования вы столкнётесь с самыми разными странными проблемами. Чаще всего у начинающих встречаются ошибки синтаксического формата, например:
- Забыли поставить точку с запятой в конце инструкции, пропустили закрывающую скобку, пропустили пробелы и так далее.
- Опечатки в ключевых словах или именах переменных, например, $example написан как $runob или String как Strng.
- Два знака равенства (==) для сравнения на равенство написаны как один (=), а в некоторых случаях вы даже не можете использовать два знака равенства (==) для определения равенства.
- Несоответствие типов при присваивании, например присваивание строки целочисленному типу.
- Непоследовательные отступы (Python).
- ……
Перечисленные выше типы ошибок очень часто встречаются у новичков. Если это синтаксическая ошибка, то в IDE, как правило, есть хорошие подсказки, и вы можете просто исправить её, следуя подсказкам. Но всем всё же следует быть внимательнее в повседневной практике и вырабатывать хорошие привычки программирования.
Некоторые ошибки отображаются только после выполнения — куча английских подсказок, в которых вы узнаёте каждую отдельную букву, но не можете понять ни одной, когда они собраны вместе. В этот момент многие теряются и не знают, что делать. На самом деле не паникуйте, сохраняйте спокойствие. Это всё бумажные тигры. Достаточно внимательно посмотреть на них, а если не понимаете английский, воспользуйтесь инструментами перевода, такими как Google и Baidu Translate, — понять содержание ошибки очень легко.
Например, следующий пример:
……failed to open stream: No such file or directory in ……
Если вы можете это понять, смысл на самом деле очень ясен — файл не найден. Если не можете понять, то после отправки в Google Translate получается:
......Failed to open stream: No such file or directory......
Теперь понимаете, да? Затем посмотрите, какой файл, включённый в код, указан неверно, и измените его на правильное имя файла или путь к файлу — проблема решена.
Если вы всё ещё не можете понять это по-китайски, то я просто в недоумении...
Подведём итог: пишите код внимательно и тщательно, следите за форматированием, не будьте небрежны и используйте хорошую IDE, чтобы помочь выработать хорошие привычки программирования. Когда встречаете ошибки, внимательно смотрите на них. Если не можете понять, переведите с помощью инструмента перевода и посмотрите ещё раз.
3. Где мне найти людей, чтобы задавать вопросы и общаться?
Если мы уже внимательно посмотрели на сообщения об ошибках и всё ещё не знаем, как решить проблему, то на этом этапе я предлагаю использовать следующие подходы для её решения:
- Ищите свою проблему и потребности в поисковых системах (Baidu, Google, Bing и т. д.), чтобы посмотреть, не сталкивался ли кто-нибудь с такой же проблемой, как у вас.
- Задавайте вопросы на технических форумах, таких как: Baidu Knows, CSDN, V2EX и т. д. Однако лично я не рекомендую их, потому что приходится ждать, пока люди ответят, эффективность слишком низкая, и ответ может быть не тем, который вы хотите.
- Группы QQ: найдите активную группу QQ по изучаемому языку и задавайте вопросы в группе. Если кто-то ответит — отлично. Если никто не отвечает, советую проверить уровень активности участников и напрямую написать нескольким активным. Если они не слишком заняты, они должны помочь вам решить вопрос.
- Лучший и самый прямой способ — спросить технических специалистов рядом с вами. Одной их фразы может быть достаточно, чтобы всё стало вам ясно.
Нам также следует часто сохранять в закладки хорошие технические статьи, например: CSDN, Cnblogs, Example, Jianshu, InfoQ, 51CTO, Zhihu и т. д. Больше читайте об опыте и кейсах старших товарищей и проверяйте их самостоятельно. Это очень помогает накапливать знания.

4. Важен ли английский?
Нужно ли очень хорошо знать английский, чтобы изучать программирование? Нет, не нужно.
Важно ли умение владеть английским? Очень важно.
Хотя сейчас существует много китайских технических документов, блогов и форумов, вы всё ещё можете изучать язык программирования, не зная английского. Но вы должны понимать, что официальная документация и комментарии в исходном коде многих языков программирования написаны на английском, и многие передовые технологии также на английском. Если вы не читаете английские документы, много сути нельзя понять, а некоторые переводы также неточны.
Кроме того, самое важное — многие сообщения об ошибках также на английском. Если вы хорошо знаете английский, вы можете напрямую понять содержание подсказки. Если не понимаете, всё равно придётся использовать инструмент перевода.
Когда ищешь решения многих проблем, результаты, которые вы получаете от Baidu, могут быть такими: хех... Но если вы можете описать проблему на английском и бросить это описание в поисковую строку Google (требуется VPN/средство обхода блокировок), в 80% случаев первый результат поиска и есть нужный вам ответ.
Поэтому я настоятельно рекомендую учить распространённые английские термины, используемые в языках программирования. Если ваш английский слабый, используйте инструменты перевода, чтобы помочь себе читать. Со временем вы оцените преимущества.
Например: debug => debugging, debugger => debugger, abstract => abstract, abstract base class => (ABC) abstract base class, abstract class => abstract class, import => import, include => include, array => array, command line => command line, comment => comment, commit => commit, compatible => compatible, compiler => compiler, component => component, array => array, thread => multithreading, multi-thread => multithreading, и т. д.

Подробнее см.:Распространённые английские термины в программировании。
5. Подведение итогов и обмен опытом
Я считаю, что подведение итогов — самая сложная часть для всех, как в школе, когда вас просили каждый день писать в дневник — по сути, очень немногие могли продолжать это делать.
Но в процессе изучения программирования я всё же советую всем обобщать подводные камни, с которыми вы столкнулись в повседневной практике, и записывать процесс своего обучения. Не обязательно делать это каждый день, но лучше каждые 3–5 дней подводить итоги и размышлять о прошлом обучении. В частности, можно записывать документы со спецификациями и программные скрипты, например:
- Стандарты кодирования на языке XXX
- Методы логических проверок в языке XXX
- PHP: получение текущего URL
- Регулярные выражения для сопоставления адресов электронной почты и номеров телефонов
- Рекурсивный код для древовидных структур
- Решения проблемы с искажёнными китайскими символами
- Инкапсуляция кода подключения к базе данных
- ……
Я считаю, что эти функции точно не придётся писать всего лишь один или два раза в процессе программирования — они будут использоваться очень часто. Поэтому каждый может обобщить эти вещи и записать их в своих облачных заметках (Youdao Cloud Notes, Evernote).
И наконец, делитесь. Если у вас есть хорошие решения проблем или вы считаете, что ваш метод лучший в мире, вы можете делиться ими, в том числе на различных блог-платформах.
Здесь я рекомендую делиться своими учебными заметками на Example в процессе обучения. На Example включена функция заметок (требуется регистрация). Для первой публикации вам нужно отправить свои заметки на электронную почту администратора (429240967@qq.com).
После прохождения проверки вам выдадут код приглашения для регистрации, и с этого момента вы сможете вести свои заметки на нашей платформе. Содержание заметок должно быть простым и понятным и не должно отклоняться от содержания соответствующей статьи. Используйтепростое описание + фрагмент простого кодав качестве формата. Как показано на рисунке ниже: