Зачем Python-программисту нужен курс по C++?
Мы продолжаем традицию проведения интервью со студентами OTUS. Это позволяет понять, оправдались ли их ожидания, довольны ли они результатами обучения. Накануне мы пообщались с Python-программистом Константином Кормашевым, который обучался у нас на курсе «Разработчик C++».
— Здравствуйте, Константин! В первую очередь хотелось бы поблагодарить вас за то, что согласились побеседовать, ведь многие из студентов OTUS совмещают учёбу с работой, поэтому со свободным временем у них всё печально…
Здравствуйте! Да, вы правы, курсы занимают довольно много времени, ведь они для людей у которых уже есть опыт разработки. Безусловно, обучение в «Отусе» требует ответственного отношения и работы, а чтобы был рост, нужно приложить определённые усилия.
— Что вы можете сказать про курс «Разработчик C++»? Ведь это не первый ваш курс в OTUS, верно?
Да, я был студентом “Отуса” на курсах «Разработчик Python» и «Разработчик Big Data», а моя сфера деятельности как раз связана с Python-разработкой. Что касается «плюсов», то мне этот курс очень понравился, несмотря на то, что я никогда раньше не программировал ни на C, ни на C++.
— А зачем вам вообще понадобилось поступать на этот курс, если вы программируете на «Питоне»?
Дело в том, что меня C++ заинтересовал в контексте его тесной интеграции с Python. Модули, написанные на C++ (или C), можно использовать для расширения возможностей интерпретатора Python, а также для доступа к низкоуровневым возможностям операционной системы. Поэтому я и решил глубже познакомиться с C++, чтобы получить от этого практическую пользу в дополнение ко всему тому, что я знаю о «Питоне».
— Можно ли сказать, что вы получили желаемое?
Вы знаете, когда я столкнулся с миром C++, то можно сказать, что границы моего сознания расширились :))). Дело в том, что многие вещи там делаются абсолютно иначе, чем в “Питоне”. И чем больше я погружался в мир C++, тем понятнее становилось, почему всё реализовано именно таким образом. Эти знания очень сильно обогащают, так, например, я начал уделять внимание системным процессам, которые происходят внутри «Питона». Поскольку часто, когда пишешь на Python, то не задумываешься, почему используешь ту либо иную структуру данных, тот либо иной алгоритм.
— Выходит, начав изучать C++, вы стали лучше понимать «Питон»?
Да, именно так. Теперь я лучше понимаю, что происходит в интерпретаторе «Питона», какой инструментарий мне выбрать и почему, что стоит употреблять, а что нет. Мало того, я начал делать на Python вещи, которые не делал раньше никогда, например, операции с бинарной арифметикой.
— Могли бы вы выделить какое-нибудь занятие или тему на курсе?
Вообще интересных занятий было много, навскидку я могу припомнить занятие про написание аллокатора. Чтобы выполнить задание, мне пришлось проштудировать много информации. Пришлось разобраться, как устроена память в современных системах, а через это лучше понять, как устроена память в питоновском аллокаторе, что реально круто. В итоге я узнал вещи, о которых раньше даже не задумывался. Это совершенно другой, системный уровень понимания просто потому, что язык программирования C++ использует несколько иной подход и апеллирует к более низкоуровневым вещам.
Что ещё… Мне, как человеку довольно далекому от C++, понравилось, что мы прошлись по последним стандартам C++ и разобрали нюансы использования языка, так я заполнил пробелы в проблемных местах. А они были несмотря на то, что я немного готовился к курсу и около месяца читал соответствующую литературу. Всё-таки С++ сложный язык и подходить к нему без подготовки, даже при наличии опыта разработки, по моему мнению, неразумно.
— Что вы читали?
Страуструпа, в основном. Многие находят его скучным, а я считаю что он не скучный, он — фундаментальный :))).
Далее. На курсе много времени уделяли области применения языка. Мы посмотрели стандартные библиотеки, узнали, как работают сети, изучили нюансы, связанные с машинным обучением, базами данных и прочее.
— А может, дешевле было заняться самообучением, чем платить за курс в OTUS?
Да, действительно, бытует мнение, что информации в интернете полно, мол, бери и учись. Но проблема в том, что информации настолько много, и она настолько разного качества, что либо самостоятельное обучение так и не будет закончено, из-за того, что пласт информации обилен и освоить его весь технически сложно, а выделить самое важное нельзя, т. к. непонятно, на что обратить внимание в первую очередь. И мотивация постепенно может сойти на нет из-за масштабов задачи. Либо, если интерес не ослабевает, то получение желаемого результата может занять значительное время, по причинами которые я только что назвал. И здесь каждый должен выбрать сам, что для него важнее. Не забывайте, это ведь C++. И если в Python сложилось некое единообразие написания кода, то на C++ это не совсем так. Язык старый, туда приходят люди с C и приносят с собой свой опыт программирования, например: один использует исключения, другой не использует и т. д., и т. п. Несмотря на это, язык является очень гибким в плане обширных возможностей, что порождает дополнительные проблемы. А курс «Отуса» задаёт определённую канву, в результате чего ты начинаешь ориентироваться и понимать, какой материал действительно ценен, а на какой не стоит обращать внимание.
OTUS позволяет не утонуть в обилии материала, что очень важно. В результате этого экономится время и, как следствие, профессионально растешь гораздо быстрее за счет того, что вся полученная информация релевантна. И я считаю, что в «Отусе» создателями курса проделана титаническая работа по формированию контента и созданию массива релевантной информации. За что им огромное спасибо.
— И вам спасибо, Константин, за такое содержательное интервью! Успехов и благополучия во всём!
P. S. Являетесь студентом OTUS и хотите стать участником следующего интервью? Пишите на электронный адрес [email protected]! Также вы можете рассказать про свой опыт обучения в OTUS в комментариях.