Files
CppDeveloperRoadmap/Grades/PreJunior.md
Sergey Tyulenev 358146a743 Fix typos
2021-06-16 00:46:55 +03:00

12 KiB
Raw Blame History

Pre-Junior C++

Кто это?

Это человек, который освоил синтаксис языка и способен написать несложную программу без использования сторонних библиотек. Программа способна выполнять различные действия, например:

  • выполняет арифметические вычисления;
  • взаимодействует с файлами: чтение и запись;
  • ожидает ввод данных с клавиатуры;
  • выводит результаты работы и иные данные данные в консольное окно;
  • и т.д.

Что ожидается по умению написания кода?

  • Способность создать и собрать небольшой рабочий проект на C++ при помощи одной из IDE: Visual Studio, Qt Creator и т.д.;
  • Умение пользоваться отладчиком при помощи IDE;
  • Понимание процесса компиляции и сборки программы на C++;
  • Способность написать приложение, содержащее арифметические или логические операции и алгоритмы, условия и циклы;
  • Умение написать приложение по работе со стандартным потоком ввода/вывода;
  • Умение работать с указателями и ссылками;
  • Знание из какого вида памяти состоит приложение;
  • Базовое понимание ООП в рамках C++: Наследование, полиморфизм, инкапсуляция.

Что ожидается по общим навыкам?

  • Желание учиться и впитывать новые знания;
  • Желание разбираться в возникающих проблемах;
  • Умение составить запрос на русском языке, чтобы найти ответ на проблему в поисковике или в соответствующей литературе;

С чего же начать?

  • Прежде чем начать изучения языка, рекомендуется начать свое погружение со следующей книги: Чарльз Петцольд - Код. Тайный язык информатики: Ozon Books

    Данная книга расскажет вам об устройстве компьютера простым языком. Здесь отсутствуют какие-либо сложные технические или академические детали. Книга содержит в себе основы основ, которые вряд ли потеряют свою актуальность. Она познакомит вас с миром компьютеров, а также объяснит их устройство, что поможет вам лучше понять фундаментальные идеи языка C++.

  • Если вы начинаете изучать язык самостоятельно, то порекомендую вам выполнять разработку первых программ или упражнений в IDE: Microsoft Visual Studio (Community Edition). На сегодняшний день, это наиболее дружелюбная IDE к новичкам, как в установке, так и в использовании (и бесплатна!). Это позволит сконцентрироваться непосредственно на изучении языка, а не на борьбе с рабочим окружением. На сайте компании вы найдете небольшой учебник, который расскажет, как установить Visual Studio, создать консольный проект и написать первое приложение: MSDN

  • Есть много книг, по которым можно начать изучение языка. К сожалению, многие из них безвозвратно устарели, либо написаны слишком сложно. Но все-таки есть наиболее актуальная и дружелюбная книга, с которой стоит начать свой путь изучения C++: Стивен Прата - Язык программирования C++. Лекции и упражнения (шестое издание): Ozon Books

    Книга максимально дружелюбна к новичкам, не требует наличия каких-то специфичных знаний, а также имеет набор упражнений к каждой главе. Они помогут вам отработать и понять фундаментальные возможности языка.

  • В дополнение к учебнику, стоит порекомендовать следующие видео лекции:

    • Илья Мещерин
    • Тимофей Хирьянов

Рекомендации и советы

Про обучение

  • Не существует "серебряной пули", которая поможет вам выучить C++ за день/неделю/месяц. Будьте готовы к самостоятельной работе и изучению материала из различных источников в течение продолжительного времени, прежде чем вы сможете пройти собеседование, и получить свой первый оффер.
  • Если чувствуете, что не понимаете какую-то тему, поищите альтернативные источники.
  • Практика и только практика даст вам возможность освоить C++! Без регулярного написания кода, большая часть того, что вы прочитаете или услышите - забудется.
  • Не пытайтесь писать идеальный код. Ваша основная задача - написание РАБОЧЕГО кода, который делает ровно то, что от вас требуется. Вы должны научиться "общаться" с компьютером. Это сродни изучению иностранных языков. Сначала вы говорите много и небрежно, но со временем, ваш навык оттачивается, начинаете лучше чувствовать грамматику, увеличиваете свой словарный запас и т.д.
  • На первых порах не стоит концентрироваться на таких ресурсах, как Leetcode или CodeWars. Цель этих порталов - отработать навыки использования классических алгоритмов и структур данных. Эти площадки спроектированы таким образом, чтобы максимально отгородить вас от нюансов языков программирования. На первых порах, это не принесет вам особой пользы, лучше сконцентрируйтесь на самом языке и его возможностях.

Про мотивацию

  • Учитесь в своем ритме, а также в любом возрасте! Не ведитесь на истории: "я программирую с пеленок", "паяльником владею с яслей", "вывожу из запоя/снимаю порчу при помощи ассемблера". Большинство подобных историй - это систематическая ошибка выжившего, или попытка потешить свое самолюбие за ваш счет. У вас достаточно способностей, чтобы научиться программированию, в том числе с нуля, в том числе и на C++!
  • Большинство проблем, с которыми вы столкнетесь, скорее всего уже решены до вас. Если вы не можете найти ответ в интернете, попробуйте переформулировать запрос иным образом. Рано или поздно вы придете к правильному ответу. Если после этого ответа так и нет, то попробуйте переписать свой код более простым путем/пересоздать проект и т.д. Помните, вы должны изучать язык, а не бороться с рабочим окружением на первых порах. Борьба с окружением может вас привести к полному разочарованию и потере мотивации.
  • Помните, что многие опытные разработчики тоже встречают проблемы и застревают в "очевидных" местах. Просто возьмите паузу, позанимайтесь чем-то другим, а через какое-то время возвращайтесь к проблеме.
  • Найдите единомышленников, которые также начинают свой путь. Так вам будет интереснее погружаться в изучение языка, а также делиться знаниями и опытом друг с другом. Это также поможет выработать в себе навык командной работы. Времена "вольных художников" подошли к концу. Практически везде, вам придется работать в команде.

Про английский язык

  • Большинство проблем проще искать на английском языке, но если ваш текущий уровень владения им не очень высокий - не мучайте себя. Так вы можете слишком быстро потерять мотивацию и разочароваться. Большинство проблем на первых порах, с которыми вы столкнетесь, спокойно можно отыскать и на русском языке.
  • Если чувствуете, что ваш английский слабоват - то лучше начните его изучение с более простых и приятных вещей: сериалы, видеоигры, художественные книги, новостные сайты или статьи на интересующие вас темы. За несколько месяцев можно значительно улучшить навыки восприятия информации на английском языке.