Что должен знать программист без профильного образования
Мы собрали список дисциплин, которые должен знать программист без профильного образования, помимо самого языка программирования.
Многие разработчики рано или поздно начинают задумываться о том, что еще им нужно изучить, чтобы стать Джуном или повысить квалификацию. Для кого-то это новый фреймворк, а для кого-то – основы матанализа, которые он никогда не изучал. Какие из университетских дисциплин могут помочь программисту и в каких случаях?
Давайте разберемся, что должен знать программист без профильного образования.
Теория графов
Если вы занимаетесь алгоритмами поиска или планируете это делать – вам понадобится дискретная математика, в частности, теория графов. Практически все алгоритмы поиска и сортировки основаны на деревьях.
Математическая логика
Математическая логика нередко используется в кодинге, начиная незамысловатыми условиями if/else и заканчивая работой с БД, так как любой SQL предполагает оперирование с множествами.
Чаще всего нужна булева алгебра. Изучите и поймите правила преобразования логических выражений: это поможет в понимании логики работы условий и при построении алгоритмов.
Теория вероятностей и математическая статистика
Математическая статистика в программировании нужна для создания отчетов и тестирования, обработки собранных данных и построения рабочих процессов. То же можно сказать и о теории вероятности, но она, в свою очередь, затрагивает и другие смежные области, например, разработку игр.
Вот примерный список разделов программирования, где помогут эти две дисциплины:
- Компьютерное зрение.
- Биржевые торговые роботы.
- Data mining.
- Системы принятия решений и нейросети.
- Алгоритмы шифрования и крипто-анализ.
- Предсказание процессов, системы анализа вероятностей.
- Распределенные вычислительные системы.
- Анализ производительности распределенных вычислительных систем.
Базы данных
Обработка и хранение данных – это важная часть рабочего процесса огромной части программистов. Базы данных используются и в вебе и в системном программировании. Чтобы лучше понимать теоретическую подоплеку хранения данных, модели организации и язык запросов – попробуйте начать с нашей подборки.
Теория алгоритмов
Этот раздел математики поможет не только в создании алгоритмов при разработке программ, она научит вас оценивать сложность того или иного алгоритма и целесообразность его применения в программе.
Моделирование
Моделирование – описание реальных объектов и процессов в формальных терминах. В общем случае программист без профильного образования сможет лучше понимать не только процессы объектно-ориентированного программирования, изучив математическое моделирование.
Защита компьютерной информации
Для рядового программиста защита информации может заканчиваться на элементарной цифровой гигиене. Но сейчас речь именно о фундаментальных принципах сохранения информации приватной: вы должны понимать, как написать и защитить программную и аппаратную части.
Для определения защиты информации в России даже существует свой ГОСТ (Р 50922—96), который определяет компоненты информационной защиты, а также то, как они должны быть защищены.
Микропроцессорные системы
Если вы занимаетесь электроникой и ее программированием, или вам это просто интересно – необходимо приступить к фундаментальному изучению микропроцессорных архитектур. Вы будете лучше понимать как микроконтроллеры и микропроцессорные устройства, так и вычислительную технику в целом.
Операционные системы
Пользоваться операционными системами может каждый, а понимать на уровне внутренних процессов – нет. Если вы системный программист без профильного образования – эта дисциплина будет чрезвычайно полезна. И даже если нет – вы узнаете много не только о строении системы, но и о программировании в целом. К примеру, чтобы лучше понять Unix-подобные системы, для начала прочтите наше руководство по написанию системного ядра.