Как учиться программированию и не чувствовать себя абсолютным дураком?

В принципе я всё изложил в вопросе.

Естественно мои знания вообще не структурированы и обрывочны. Поэтому первое(0), что я попрошу подсказать, как выстроить свои знания. Этого будет, как мне кажется достаточно. Но если у вас есть куча времени читать то, что я написал ниже... то спасибо за такую щедрость

1.Может какой совет или мини история из жизни.

2.Мой прогресс в том что я стал понимать (не знать, а понимать\осознавать) как работают void. Потом я вспоминаю, что в заметках у меня есть пункт "хотя бы лизнуть библиотеку STL".

3.Также у меня встал вопрос как сохранять результат действия программы для дальнейшего использования(как игрушку для битья я выбрал калькулятор хочу реализовать решение по формулам, а там ясно дело нужно использовать полученные решения из прошлых действий. Так же можно придумать много фишек которых можно прикрутить даже к консольному варианту).

4.Как использовать массивы?

5.Как читать книги (Например, туже "банду четырёх" про Паттерны) и не стрессовать от объема информации и некоторой сложности в восприятии ее?
  • Вопрос задан
  • 1362 просмотра
Решения вопроса 2
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
  1. Берёшь учебник по языку для начинающих, читаешь, экспериментируешь с примерами.
  2. Разобравшись с основами, берёшь учебник для среднего уровня, читаешь, экспериментируешь с примерами.
  3. Берёшь и читаешь учебник по стандартной библиотеке, практикуешься.
  4. Читаешь учебники/документацию по прикладным областям, вроде сетей, баз данных и прочему. Конечно же, практикуешься.
  5. Устраиваешься на работу.
  6. Где-то года через два-три появляется необходимость, а с ней и возможность понимать паттерны проектирования.
  7. Читаешь учебник по паттернам. Может, для начала что-нибудь проще GoF.
Ответ написан
@majstar_Zubr
C++ & gamedev
Пройдет через два года. Или через один, в зависимости от того, как свободное тратится.

Просто прокачивайся.

Макконнел, Кент Бек, Фаулер, Керриган. Сначала структурное, ООП после проработки Рефакторинга. Макконнел в первую очередь, часть про архиьектуру и проектирование нужно пропустить в первый раз, он написал полный гайд, практически, про структурную парадигму и как работаться с массивами.

Обязательно нужно проработать вопрос про ОС (Таненбаум) и устройство компиляторов. Самостоятельно сравнить модели памяти, которые предлагает ОС, Си и C++.

Шаблоны GoF после GRASP, SOLID, YAGNI и TDD и обильного велосипедостроения длительностью ~год.

Книги нужно не просто читать, а разбирать примеры и искать инфу дополнительно. То же самое относится к статьям, вблогам, лекциям, курсам. Если голова пухнет - это признак того, что книгу/вмдео читать/смотреть ещё рано, потому что мозг не может сложить инфу в красивую структуру знаний. Паттерны бесполезны без проработки и без усваивания Рефакторинга. То же самое к архитектурным относится, которые бесполезны для понимания, если не усвоено DDD. Паттерны сначала лучше прорабатывать на каком-нибудь C#. Если уже в состоянии писать компилирующийся код на C++, то с C# никаких проблем не будет. На C++ паттерны прорабатывать стоит только проработки идиом C++.

Что касается самого C++, то cppreference, youtube и все книги, которые только удастся найти. Если на книгу очень много ссылок в интернете, статьях, видео, это значит, что ее нужно прорабатывать в первую очередь.

Для систематизации знаний нужно найти ментора или курс и / или прочесть документацию по технологии раза три.

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

Развитие в первые годы похоже на спираль, поэтому ко всему "изученному" придется возвращаться пару раз.

Насчёт пункта три. Все советуют обязательно прорабатывать алгоритмы, сложность вычислений и структуры данных, паттерны проектирования и архитектурные шаблоны именно в такой последовательности, потому что концепции одни и те же, а реализации разные. Любую информацию можно сохранить хоть в файле, хоть на стеке, вопрос главный - для чего, в каком scope она нужна и какие нужны гарантии и ограничения. Самое лучше место, чтобы узнать это, на текущий момент это GitHub.
У вас в вопросе рядом существуют два уровня - уровень передачи информации между сессиями использования одного приложения и уровень передачи данных между модулями в домене приложения "калькулятор" во время исполнения. В первом случае вам подойдёт сохранение инфо в обычном тестовом файле в своем статически определенном know-how формате (чтобы раньше времени не лезть в сериализацию и парсинг), что делается просто, быстро и средствами STL, а во втором случае вам нужно строить модель домена из классов, абстрагирующих операции, и как-то реализовать простой синтаксический анализатор; в этом случае передача промежуточного результата будет в виде какого-то объекта, и о его виде и задачах с ходу сказать нельзя, потому что все зависит от ТЗ и конкретного набора формул, которые требуется обрабатывать; и к тому же во втором случае без сторонних библиотек не обойтись, иначе слишком растянется процесс.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Hcuy
@Hcuy
Профессионально считаю ворон.
С каждым днём вы узнаете и учитесь новому, вчера вы знали меньше чем сегодня и так далее, сравните себя сейчас и себя месяц назад, разница будет очевидна. Вы стали на порядок умнее. Это должно избавить вас от мысли что вы дурак. Удачи в обучении!
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега IT-образование
software engineer
Почитай "путь дурака". Это не о программировании, но возможно это позволит тебе не чувствовать себя дураком, или не чувствовать себя глупо в неудобной ситуации.
Ответ написан
@Sagrer
Недопогромист-байтомучитель %)
Чувствовать себя дураком при изучении чего-либо - это нормально. Чем больше человек знает, тем лучше он понимает всю ничтожность своего уровня знаний. И только настоящие дураки себя дураками никогда не чувствуют, т.к. они просто не могут понять что они дураки. Загуглите как нибудь эффект Даннинга-Крюгера ))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы