Giter Club home page Giter Club logo

cppdeveloperroadmap's People

Contributors

albrt-dev avatar anvartdinovtimurlinux avatar beeblerox avatar capoyon avatar dmitrievdmitriya avatar lusipad avatar marleeeeeey avatar mpstv avatar romanwrites avatar salmer avatar sd57 avatar stenbone avatar uberchili avatar wngtk avatar yaroslavche avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cppdeveloperroadmap's Issues

Spelling error

Spelling error in the translation into Russian. The screenshot shows everything.
image

Этап "Алгоритмы и структуры данных"

Добрый день, предлагаю подсказать "как измерить" знания по алгоритмам и структурам данных. Например, указать на ваш взгляд примерное кол-во решенных задач на leetcode.com (для junior/middle/senior свои числа), или рэндж по цветам codeforces.com (например, junior это серый-фиолетовый и тп)

Надеюсь, это поможет адекватно и прозрачно оценивать начинающим свои силы, что от них ждут на собесе:)

Неопределённое поведение следует включить в первый этап вместе с отладкой

С одной стороны, в первый этап включён отладчик:

изображение

С этим я согласен: надо уметь получать в итоге работающий код, а с первой попытки код работает редко. Отладчик очень сильно помогает.

С другой стороны, неопределённое поведение возникает только на третьем этапе, уже даже после ООП, правила трёх/пяти, ссылок, сырых указателей, утечек памяти:

изображение

Мне кажется, про неопределённое поведение надо рассказывать сразу же, как обучающийся может написать программу с UB. В противном случае интуитивное ожидание от программы с ошибкой — "произойдёт что-то логичное". Компьютеры же детерминированы и логичны. Да и на JavaScript/Java/Python/HTML/практически любом другом языке программирования ошибочная программа может выдать неверный ответ, зависнуть, упасть с исключением, но в любом случае проблему можно будет логично отследить до точки возникновения, а в подавляющем большинстве случаев укажут на строчку, где ошибка возникла.

В случае с C++ это категорически не так. Программа может падать, а отладчик может показывать на return 0; в main(), на int x = v.size(), на последнюю } в функции, на случайную } в программе после выхода за границу массива. Это всё сильно сбивают с толку обучающихся. К тому же фразы вроде "нельзя читать из неинициализированной переменной" даже при расскаже об UB первые несколько месяцев воспринимаются не как UB, а как "в неинициализированной переменной, очевидно, лежит просто какой-то случайный мусор". В частности, легко предположить, что если нам неважно, что там за мусор, то программа хотя бы не упадёт, но это неверно. Легко предположить, что если мы прочитали что-то за границей массива, то у нас либо прочитался мусор, либо всё сразу упало, а не упало через десять строк в вообще другой функции.

И это всё не считая проблем, которые могут возникнуть при висячих ссылках, ручном управлении памятью, reinterpret_cast.

Я предлагаю передвинуть неопределённое поведение в первый этап и считаю, что без этого отлаживать программы на C++ становится сильно сложнее. Необязательно его изучать досконально, но необходимо перестать считать, что "очевидно же, что выход за границы массива так не проявится". Например, вот здесь есть хорошее введение (исходник).

Вопрос

Привет.
Видимо, это единственный способ связаться по поводу созданной Mind-карты по изучению С++, так что пишу здесь. Рассчитываю на ответ :)
Я новичок в С++. Можно сказать, знаю базу языка, общепредоставленные основы, одинаковые от сайта к сайту и от книги к книге. От типов данных до классов.

Просмотрел всю вашу карту. Условно понятно, что чтобы быть разработчиком С++, надо понимать все перечисленные вещи. Даже указан порядок изучения. Однако совсем непонятно, а что собственно делать, что именно программировать, чтобы набираться опыта, какие задачи реализовывать на языке, чтобы осваивать навыки с mind-mapa. То есть на карте показано, ЧТО нужно знать, но не КАК это узнать, в каких ситуациях ЭТО нужно и нужно ли вообще. В целом-то не ясно даже, с чего начать.

Вот, и я, как новичок, в небольшом тупике. Базу усвоил, с алгоритмами и алгеброй поигрался. И хочется как-то развиваться дальше, в последствии трудоустраиваться. А что пытаться программировать-то.... И как эта карта вообще может мне помочь.
Mind-карта составлена вроде как и для новичков, а вроде и совсем никак неопределённость не уменьшает.
Может, будут какие-то общие советы, как использовать собранную карту с пользой? И как быть новоиспечённому зачатку программиста на С++? :(

"Return to main page" button

I believe, that this is a good idea to add button in the end of the articles, so the user can return to page with other articles and links.

[mistranslation] Occam's Razor

«Бритва Оккама» по-английски — это "occam's razor", а в карте сейчас "Okkama blade"

Function programming paradigm should be added to the roadmap

Hello,
First of all, great work!
I think that you should add FP (functional programming) paradigm to software design, mainly side-effect-less functions and immutability. I even think that those principles should be learnt prior to OOP. [https://www.manning.com/books/functional-programming-in-c-plus-plus](Ivan Cukic's book) is a great resource, but it's probably more for middle to expert level. There is also [https://www.packtpub.com/product/hands-on-functional-programming-with-c/9781789807332](Alexandru Bolboaca's book) which is less advance.

Which Stroustrup book(s) to avoid? Warning is ambiguous.

On Learn C++ using the book by Stroustrup

Which states:

Learn C++ using the book by Stroustrup
A highly damaging thesis taking origin from the “Old Guard” or someone born with a keyboard in hand.

Those who had extensive experience of development in other languages (C, Fortran, Delphi, etc.) and transitioned to C++ are most likely to give this piece of advice. Stroustrup wrote this book like a reference, therefore one needs to use it in the appropriate manner, which requires some knowledge of the language. Better look at the Books section, you’ll find books for any level of language proficiency.

What book are you referring to? BS has authored several books in the past few years including:

  1. Programming -- Principles and Practice Using C++
  2. A Tour of C++
  3. The C++ Programming Language

What is the correct order?

I have reviewed the route but, on the right side (hard skill) there are sections separated by steps, I cannot understand the correct order. In principle there are 4 very clear steps, then 1, 3, 5 Then 1, 4 and 2. I'm confused 😮‍💨

image

Демонстрационные примеры

Добрый день. Предлагаю для каждого "дорожного пункта", где это возможно, добавить ссылку на godbolt, где будет приведен демонстрационный пример. Например, человек открывает карту, идет по пунктам Hard skills - Синтаксис языка - Базовые операции - Циклы for/while, щелкает на последний пункт и видит примеры живого применения циклов с комментариями.
Так же можно добавить ссылки на статьи по теме "дорожного пункта".

Add a databases topic

I think it will be great to add databases for juniors-level. This skill is actually necessary nowadays.

Add an optional field about multithreading using OpenMP

In the section about multithreading, in addition to the standard library, you can add a topic about using OpenMP as a multithreaded programming tool in C++. Also tell the reader to read about the difference between the standard library and OpenMP.

Roadmap engilsh spelling remarks

There's some Russian characters after "choose one of the popular IDEs"

  • Occam is spelled with two 'C's, not two 'K's.
  • Uint tests should be unit tests.
  • Virualization -> virtualisation (whether you want * British or American English is up to you, but at least put the T there).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.