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

Многие люди думают, что путь к тому, чтобы стать великим разработчиком программного обеспечения, начинается с изучения языка программирования, но что, если я скажу вам, что вам даже не нужен язык программирования, чтобы изучить основные концепции программирования?

Вы можете подумать, что глупо утверждать, что вы можете научиться использовать инструмент, даже не применяя его, в конце концов, в процессе обучения важна практика, и вы правы. Но когда я говорю, что вам не нужен язык программирования, чтобы научиться программировать, я имею в виду, что программирование — это гораздо больше, чем просто знание синтаксиса языка. Недостаточно знать, как напечатать «hello world» на нескольких языках программирования, если вы даже не знаете, что пишете. Давайте проанализируем на примере, почему важно изучить и понять основы предмета, прежде чем применять его на практике.

Например, давайте рассмотрим инструменты; вы, возможно, знаете, что когда гитара находится в стандартной настройке, самая толстая струна при игре на открытой струне издает звук ноты, которую мы называем «ми»; и то же самое происходит на пианино, когда вы нажимаете третью белую клавишу слева направо. На самом деле, если вы начнете копать, то обнаружите, что на многих инструментах можно играть одни и те же ноты, но как это возможно, если все они разные? К вашему удивлению, вы можете ответить на этот вопрос, даже не зная, как играть на каком-либо инструменте, и это действительно просто, если вы просто задаете правильные вопросы.

Начнем с того, что такое нота. Вы можете очень глубоко погрузиться в эту тему, а пока ответим на простом примере. Представьте, что вы слышите приятную для вашего слуха частоту, скажем, 82,4 Гц, и вы хотите ее запомнить, но запомнить число слишком сложно, поэтому вы заявляете, что отныне буква «Е» будет обозначать эту частоту. Теперь предположим, что вы удваиваете эту частоту (82,4 Гц x 2 = 164,8) и понимаете, что она звучит так же, как и раньше, но более резко, поэтому вы также называете эту частоту «ми», но в музыкальных терминах она на октаву выше. Итак, в двух словах, музыкальная нота — это представление или, если хотите, имя, которое мы даем звуку.

Как же могут совершенно по-разному устроенные инструменты издавать одни и те же музыкальные ноты? Итак, как мы сказали, музыкальная нота — это представление звука (то есть частоты), поэтому на самом деле происходит то, что все эти разные инструменты излучают одну и ту же частоту разными способами.

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

Если вы еще не заметили, все, что мы до сих пор упоминали, относится не только к музыке, но и к любой интересующей вас области, в нашем случае к программированию. Точно так же вы можете издавать одну и ту же ноту на многих инструментах, вы можете найти одну и ту же концепцию во многих языках программирования (переменные, функции, операторы, объекты, векторы и многое другое). Прежде чем приступить к изучению языка программирования, убедитесь, что вы понимаете все эти концепции. Как совет, не ограничивайтесь знанием основ, например, часто можно услышать, что переменная — это зарезервированное пространство в памяти, и хотя это неплохо, это идет гораздо дальше. На самом деле переменная — это математическое понятие, принятое в компьютерных науках, поэтому неплохо было бы начать сначала с изучения математического понятия.

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