Цикл статей :
Что делать, если программирование кажется сложным Часть 1
Что делать, если программирование кажется сложным Часть 2
Решил продолжить тему, потому что для многих она сейчас является актуальной. У многих людей написание программ вызывает сложность. И это с учетом того факта, что человек может, вроде бы, понимать какой-то язык программирования. Вы читаете какую-нибудь статью или книгу, вам кажется всё понятным из прочитанного, но как только дело доходит до практики, то вы не знаете как применить полученные знания и с чего начать. Жизненно? Напишите в комментариях, если с вами такое было.
Бывает даже такое, что вы можете понять и объяснить другому человеку увиденный в интернете кусок кода, но имеете проблемы с навыком решения задач с нуля.
Как научиться мыслить как программист
Во время программирования, рано или поздно, встречаются моменты, когда нужно отложить редактор кода и решить какую-то задачу. Далеко не всегда получается сразу писать код. Не всегда высокоуровневые идеи легко трансформируются в исходный код. Надо понимать, что программирование — не врожденный природный дар. А соответствующее мышление можно развить с помощью тренировок.
Решение задач программирование — это деятельность, которая отличается от обычного заучивание синтаксиса определенного ЯП или библиотеки.
Что нужно прокачивать для формирования мышления программиста
— Глубокого знания синтаксиса 2-3 языков программирования с учетом всех побочных эффектов ( side effects ), которые возникают в результате использования возможностей языка. Почему желательно изучить несколько языков? Потому что одни и те же задачи реализуются по-разному на разных языках. И это отрывает вас от привязанности к определенному языку. Этой привязанности быть не должно, так как язык программирования — это всего лишь инструмент.
— Знание основных алгоритмов и структур данных. Это помогает переносить сущности реального мира в абстрактные модели программы.
Основные книги:
1. Алгоритмы. Построение и анализ. Изд. 3-е 2013 Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн ( Скачать книгу )
2. Алгоритмы. Вводный курс [2014] Томас Х. Кормен ( Скачать книгу )
3. Алгоритмы. Руководство по разработке Скиена ( Скачать книгу )
— Знание Computer Science в целом. Информатика очень обширна, поэтому нужно иметь общее представление для правильной настройки своего мозга. Книги для того, чтобы разобраться в Computer Science самостоятельно.
— Много практики решения задач. Максимальное развитие приходит с большим количеством практики. Начать можно с чего-нибудь простого ( 1400 задач по программированию [2020] Златопольский ).
Далее можно переходить к более сложным задачам на специализированных ресурсах:
Где решать задачи по программированию - Часть 1
Где решать задачи по программированию - Часть 2
— Попытаться реализовать свои проекты с нуля и до рабочего приложения. Это может быть небольшая игра, полезный бот для сбора данных, какой-то парсер для анализа данных и получения информации с определенных сервисов.
— Теория иногда бывает слишком абстрактной. Поэтому можно попробовать походить на собеседования в попытках устроиться на реальную работу начинающим разработчиком.
Почему помогает математика
Математика — это одна из самых точных наук, в которой находится огромное количество задач для любого уровня подготовки. Трудно себе представить что-то, что могло бы развивать мозг лучше, чем математика. Всей жизни не хватит вам чтобы глубоко разобраться даже в 2 - 3 разделах этой великой науки. Но постоянные тренировки дадут о себе знать. В частности, решение различных задач по дискретной математике поможет вам научиться мыслить инструкциями, разбивать большую сложную задачу на маленькие более простые подзадачи. Это очень полезный навык. Если вы умеете разбивать задачу и мыслить дискретно, то способны объяснять компилятору то, что вы от него хотите. А это поможет вам лучше подружиться с программированием.
Хорошие книги по математике:
Как не ошибаться. Сила математического мышления [2018] Джордан Элленберг
Как решать задачу [1961] Д. Пойа и другие книги автора
10 лучших книг о том как научиться читать и думать
Модельное мышление. Как анализировать сложные явления с помощью математических моделей [2020] Пейдж Скотт
Лучший язык для того, чтобы начать
Я уже неоднократно писал про то, что считаю язык C лучшим языком для начинающего программиста. Да, этот язык сложен по сравнению, например, с Python. Зато в ходи изучения низкоуровневых аспектов и структур данных на этом языке, у вас не возникнет сложностей в изучении любого другого языка программирования. Особенно с C-подобным синтаксисом.
Керниган Б., Ритчи Д. Язык программирования С
Изучаем программирование на C [2013] Дэвид Гриффитс, Дон Гриффитс
Скачать 4 книги Стивена Прата по C и C++
3 книги по C++ от эксперта: Герб Саттер (Herb Sutter)
C++. От ламера до программера [2015] Эллайн
Что делать с отчаянием
Часто такое бывает, что даже спустя годы практики и изучения компьютерных наук, вас ставит в тупик какая-нибудь ЕГЭ-шная задача по информатике. Или же нужный вам алгоритм не работает, хотя вы уже несколько часов исправляете код и ищете возможные комбинации. В такие моменты нападает отчаяние и ощущение себя полным идиотом. Чувствуешь себя самым глупым человеком в мире, неудачником, который не способен заниматься чем-то серьезным. Такие моменты нужно мужественно пережить. Если у меня не получается что-то более 5 часов подряд, то стараюсь закрыть ноутбук и заняться другими делами. Может даже пойти на пробежку или тренировку, просто погулять, поделать другую работу. Удивительно, но мозги всё равно продолжают работать над неприятной задачей. Бывает, что даже во сне. Только вот такая работа мозга в фоновом режиме менее стрессовая, чем сидеть сутки за компьютером и безрезультативно смотреть на экран. Когда занимаешься другими делами, то в конце концов мозг формирует и обтачивает идеальный алгоритм решения, рабочую идею. И когда эта идея уже полностью сформирована до мелочей, можно смело возвращаться к редактору кода и решать проблему с новыми силами. И в 95% случаев это помогает. Напишите в комментариях, были ли у вас такие ситуации, когда идея решения приходила только после хорошего отдыха.
Какой компьютер нужен для программирования
В студенческие годы я прекрасно программировал на маленьком маломощном нетбуке Toshiba NB510 (10-дюймовый глянцевый TN дисплей 1024 x 600 пикселей. Процессор Intel Atom 1,6 ГГц, RAM 2 Гб, HDD 320 Гб.). И в общем-то хватало для работы. Хотя и были минусы. Оперативной памяти было мало, да и дисплей был слишком маленький, чтобы видеть достаточно кода в IDE. Приходилось постоянно заниматься перемоткой вверх-вниз.
Потом появился у меня Lenovo G565. Это уже был большой ноутбук, на котором долгое время ничего не зависало. Ноутбук отработал 10 лет, а потом сгорела видеопамять. К сожалению, у этой модели система охлаждения была плохой. Горячий процессор висел на одной тепловой трубке вместе с чипсетом и видеокартой. Всё это друг друга нагревало и GPU сдался первым. Возможно, если его перепаять, то будет работать. Надо как-нибудь решиться :)
Сейчас уже около 6 лет я пользуюсь ноутбуком Asus K501LB. За всё это время он меня ни разу не подвел. Это не игровая машина, но по работе тянет все среды разработки. Единственное, что уже включается с напрягом, так это различные среды 3D-моделирования, вроде КОМПАС, AutoCAD и 3ds MAX. Вот тут уже не хватает ресурсов CPU и RAM.
На мой взгляд, самые лучшие решения ноутбуков сейчас предлагают Asus, HP и Lenovo (серия Thinkpad). Однако, стоит понимать, что за портативность и компактность вы всегда переплачиваете деньги. Если вы всегда занимаетесь программированием дома, то гораздо дешевле собрать себе ПК. Особенно, если бюджет не сильно большой, что актуально для школьников, студентов, да и в целом многих людей.
Если же бюджет позволяет, то для работы можно подобрать себе какой-нибудь проверенный временем и отзывами девайс. К примеру, неплохой Thinkpad T495s. Модели серии T всегда славились надежностью, как по железу, так и по прочности корпуса.
Продолжение следует...
Расскажите в комментариях как вы относитесь к программированию, всё ли у вас получалось с первого раза, по каким книгам вы учились. Думаю, что начинающим это будет очень полезно.
Если Вам нужен репетитор по физике, математике или информатике/программированию, Вы можете написать мне или в мою группу Репетитор IT mentor в VK
Библиотека с книгами для физиков, математиков и программистов
Репетитор IT mentor в VK
Репетитор IT mentor в Instagram
Репетитор IT mentor в telegram