Часть III: Ваше знакомство с программированием

Часть III: Ваше знакомство с информатикой

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

Как это руководство отличается от обычной учебной программы бакалавриата? Программы обучения в университетах сильно загружены теорией. Курсы, которые я предложил в разделе ресурсов, содержат сбалансированное сочетание теории и практики. Это может быть полезно для начинающих инженеров, но не для дилетантов. Вы забываете, где заканчивается теория и начинается практика. Я укажу именно то, что вам нужно изучить в теории, чтобы вы могли идти вперед и практиковать. Теория – это всего лишь инструмент, который поможет вам написать более качественный код на этом этапе, так что не увлекайтесь им слишком сильно.

Интересный факт: во втором семестре разработки у нас был предмет, называемый СУБД (Системы управления базами данных). Люди, которые рисовали лучшие ER-диаграммы для своих проектов баз данных, претерпевали неудачу, когда дело доходило до разработки базы данных для практических приложений. Они были так сосредоточены на правильном представлении деталей диаграммы, что забыли саму причину, по которой они делали это в первую очередь. Я не виню их, их просто никогда не учили, что диаграмма предназначена для них, чтобы создавать лучшие базы данных, а не улучшать свои навыки рисования.

1. Дискретная математика

Дискретная математика представляет собой комбинацию областей прикладной математики, которые неоднократно использовались в информатике. Эксперты в этой области решили объединить все это воедино и дать ему имя “дискретная математика”.

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

2. Структуры данных и алгоритмы

Это основа всего вашего путешествия. На самом деле, вы уже использовали структуры данных и алгоритмы все это время, правда, по незнанию. Теперь мы остановимся на них более подробно.

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

3. Лучшие практики

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

Что вы можете сделать? Потратьте время на понимание и применение принципа DRY (Don’t Repeat Yourself – не повторяйте себя) на практике. Не пишите повторяющийся код, поскольку это замедляет работу и делает вас более склонным к ошибкам. Пишите полезные комментарии и документацию. Когда я начинал, я думал, что это глупо, пока однажды я не открыл старый проект и не понял, что весь мой код неразборчив. Как программист, вам не нужно много запоминать. Вы запоминаете, что важно, и ищите, что нужно.

4. Контроль версий (Git)

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

5. Объектно-ориентированное программирование

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

6. Практикуйтесь усердно

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

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

Итог

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

1. Дискретная математика
2. Структуры данных и алгоритмы
3. Практика
4. Контроль версий (Git)
5. Объектно-ориентированное программирование
6. Practise: Check the links in Part I and II
7. Другое


.

  • February 21, 2020