mirror of
https://github.com/salmer/CppDeveloperRoadmap.git
synced 2025-12-17 04:24:39 +03:00
Rewrote SelfIdentification article
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 72 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 119 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 53 KiB |
@@ -1,43 +1,25 @@
|
||||
# А нужен ли вам C++?
|
||||
|
||||
Первое, о чем действительно стоит подумать: а для чего вам нужен C++?
|
||||
Первое, о чем действительно стоит подумать: для чего требуется изучать C++?
|
||||
|
||||
Не смотрите на C++ в следующей парадигме: "Если вам дали в руки молоток, то всё вокруг становится гвоздями". Язык имеет конкретные ниши применения. Прежде чем инвестировать свое время и силы в изучение, попробуйте поискать и погрузиться в сферы применения языка. Найдите ту, которая заинтересует именно вас. Вот некоторый ряд причин, почему это стоит сделать "на берегу":
|
||||
Язык имеет конкретные ниши применения. Прежде чем начать изучать его, попробуйте поискать и погрузиться в сферы применения. Найдите ту, которая заинтересует именно вас. Стоит внимательно присмотреться к тем нишам, о которых вы имеете только общее представление. Возможно ваши ожидания окажутся иными, по сравнению с реальным положением вещей. Вот некоторый набор примеров, почему это стоит сделать "на берегу":
|
||||
|
||||
- Многие сферы разработки выглядят несколько иначе, в отличие от их романтизированного образа. Например, популярное направление - разработка игр, имеет следующие темные стороны: кранчи (переработки в режиме - живем в офисе следующие полгода), отсутствие внятного менеджмента, работа в "стол"/на выброс и т.д.
|
||||
- Некоторые сферы разработки выглядят иначе, в отличие от их романтизированного образа. В качестве примера возьмем разработку игр. Данное направление имеет много темных сторон: кранчи (переработки в режиме "живем в офисе следующие полгода"), отсутствие внятного менеджмента, работа в стол и т.д.
|
||||
|
||||
- Во многих сферах может быть популярен иной инструментарий. Например, в машинном обучении наиболее распространен язык Python и специализированные библиотеки.
|
||||
- В специфичных сферах может быть популярен иной инструментарий. К примеру, в машинном обучении наиболее распространен язык Python и специализированные библиотеки к нему.
|
||||
|
||||
Стоит внимательно присмотреться к той сфере, о которой вы имеете только общее представление. Возможно она окажется не столь заманчивой и интересной после детального погружения. Потратьте немного времени в исследовании и поиске той ниши, которая вам действительно понравится.
|
||||
|
||||
Второе, на что хочется обратить внимание: язык C++ требует больших временных инвестиций, а также сильную мотивацию. Его не получится выучить по универсальной формуле: "24 часа", "7 дней", "1 месяц". Если вы видите книгу с подобным обещанием - выбросите и забудьте о ней. Вам придется взять какой-либо общепризнанный "кирпич" и прочитать его целиком, попутно выполняя упражнения. А потом ещё несколько "кирпичей" поменьше, чтобы освоить распространённые практики и подходы. По-другому освоить C++ вряд ли получится. На YouTube есть неплохие записи лекций по C++, но информации из них вряд ли хватит, чтобы освоить язык до промышленного уровня владения.
|
||||
# Я уже знаю C/C#/Java/Python и т.д. Могу ли я сразу начать работать на C++?
|
||||
|
||||
<img src="Pics/SelfIdentification/ErrorCpp.jpg" width="400" align="middle">
|
||||
И да, и нет. :)
|
||||
|
||||
**Вывод №1:** Если вы не уверены в своих силах или не готовы к классическому методу обучения по книгам, то вам стоит сделать выбор в пользу более популярных языков программирования. В них вы также сможете найти массу интересных задач для себя в различных сферах. К сожалению C++ - это не тот язык, который позволяет вольности.
|
||||
Вам помогут фундаментальные знания, такие как: понимание процедурной или ООП парадигм или иных знаний общего характера. Но полностью на них полагаться не стоит. Наиболее распространенный случай в котором часто оказываются новички: попытка писать на C++ в парадигмах другого языка. Пример подобной ловушки у разработчиков на Си: писать на C++ в процедурном стиле или "Си с классами".
|
||||
|
||||
<img src="Pics/SelfIdentification/LearnCppInOneVideo.jpg" width="400" align="middle">
|
||||
C++ очень богат на идеи и подходы написания кода. Потому рекомендуется начать его изучение с чистой головой. Подойдите к этому основательно и разберитесь в идеях языка. Это поможет вам эффективно использовать язык в рабочих задачах. Знание других языков вам поможет сравнивать их друг с другом и обнаруживать сильные и слабые стороны.
|
||||
|
||||
# Я уже знаю C/Java/Python/etc., могу ли я сразу начать писать на C++?
|
||||
|
||||
У многих новичков складывается ощущение, что С++ изучается быстро и непринужденно по ряду следующих причин:
|
||||
- наличие лекций в ВУЗе с выполнением лабораторных работ;
|
||||
- знание языка Си или парадигмы "Си с классами";
|
||||
- знание одного из ООП языков: Java, C#, etc.
|
||||
- знание Python, JavaScript и других распространенных языков.
|
||||
|
||||
К сожалению полученный выше опыт крайне тяжело масштабируется на промышленное примениние C++. Недостаточно просто послушать семестр лекций, изучить Си/Python/etc. и сразу же отмасштабировать знания на C++. Почему же?
|
||||
|
||||
- Если говорить про образование в ВУЗах, чаще всего вам дается только базовый синтаксис языка, который позволит писать простенькие программки для выполнения несложных вычислений. Проще говоря - вас учат собрать калькулятор на коленке и не более. Данных знаний и навыков недостаточно, чтобы выжить в промышленном программировании.
|
||||
|
||||
- Если говорить о Си, он является подмножеством C++, но не раскрывает истинной идеи и сути C++. Есть популярное мнение, что сначала изучите Си, а потом переходите к плюсам. Так вот, скорее всего, это вам даже больше навредит на первых порах, а также породит путаницу между концепциями двух РАЗНЫХ языков. Ваша первостепенная задача - получить удовольствие от написания первых программ, а не следовать олдскульным канонам. Потому, если есть возможность проигнорировать Си, то просто сделайте это. Все необходимое для работы с подмножеством Си вы узнаете из книг по C++.
|
||||
|
||||
- Если же говорить об опыте в других языках: C++ - мультипарадигменный язык. Он содержит в себе сочетание разнообразных парадигм, таких как: процедурное, обобщенное, ООП и т.д. Это не значит, что полученный опыт в других языках можно смело выкидывать на помойку. Он облегчит понимание существующих концепций в плюсах, но не поможет уловить тонны нюансов и деталей.
|
||||
|
||||
<img src="Pics/SelfIdentification/CppPython.jpg" width="400" align="middle">
|
||||
|
||||
**Вывод №2:** лучший совет, который можно дать - забудьте всё, что вы знаете о других языках, и начните изучение C++ с чистой головой. :)
|
||||
|
||||
# Как учиться?
|
||||
|
||||
Главное, что нужно усвоить для себя - ВЫ и только ВЫ отвечаете за себя, свое будущее. Только вы заинтересованы стать профессионалом в выбранной сфере. Безусловно, вокруг вас полно людей, которые с радостью помогут советом, но никто не придумает за вас конкретные задачи или программу обучения. Ваш лучший друг в этом деле - вы и Google. Учитесь учиться и искать ответы на возникающие вопросы. К счастью, ваше будущее в IT исключительно в ваших руках и упорстве. Эта сфера награждает тех, кто упорно идет к своей цели. Удачи!
|
||||
Главное, что стоит усвоить для себя - только вы отвечаете за свое развитие. В ваших интересах стать профессионалом в выбранной сфере. Безусловно, вокруг полно энтузиастов, которые с радостью помогут вам советом, но никто не придумает за вас конкретные задачи или программу обучения. Лучший друг в этом деле - вы, Google и учебники.
|
||||
|
||||
Учитесь учиться и искать ответы на возникающие вопросы. Ваше будущее в IT исключительно в ваших руках и упорстве. Эта сфера награждает тех, кто направленно идет к своей цели. Удачи!
|
||||
|
||||
Reference in New Issue
Block a user