Комментарии 21
И я бы добавил книг по работе с ОС:
— Charles Petzold. Programming Windows;
— Jeffrey Richter. Programming Applications for Microsoft Windows;
— Mark Mitchell, Jeffrey Oldham, and Alex Samuel. Advanced Linux Programming
и т.д.
Кроссплатформенность Qt в основном позволяет забыть о деталях реализации на конкретной платформе, но знание о том, как оно работает под капотом выручит не раз.
Обычно это пересказ документации или просто рассуждения автора на заданную тему на много-много страниц. Очень часто авторы книг любят добавлять в конец каждой главы проверочные задания и вопросы. Кто-то их вообще делает?
Вот вы советуете читать учебник по С++ обьемом не меньше 800 страниц. Какой смысл? Узнать все возможные тонкости шаблонного программирования и варианты move семантики? Решить 500 примеров на эту тему? А может лучше просто начать программировать, начать создавать продукт?
Если вы хотите научиться создавать приложения уровня Photoshop — устройтесь в компанию Adobe и погружайтесь в проект там. И строчка в резюме будет неплохая.
Кстати, а что плохого в простых приложениях?
Отрисовка классического «офисного» GUI типа кнопок, прогресс-баров, виджетов, анимации.
Отрисовка любой нестандартной графики типа непрерывно движущихся графиков из миллионов точек.
Работа с базами данных
Работа с сетью
Работа с реестром операционной системы
Работа с принтером
Быстрое (в том числе параллельное) выполнение сложных вычислительных задач.
Все это можно делать и в небольших приложениях-утилитах, благо Qt имеет средства для всех этих задач. Крупные проекты — это нагромождение абстракций. Часто не совсем удачных, но раз уж создали, то используем. За этими абстракциями не видно конечной цели.
Делайте дома для себя небольшие проектики, в котором будут, например, работа с сетью и с БД. Потом сделайте печать отчетов на принтере. Нарабатывайте опыт. Потом вы не раз сможете использовать ваши блоки кода как кирпичики в других задачах.
В самом Qt нет ничего, что бы потребовало чтения 5000 страниц книг. Достаточно знать на базовом уровне С++03, с элементами С++11. Посмотреть примеры приложений, почитать документацию Qt в Assistance.
Подытожу. Решайте проблемы по мере их появления. Начинайте действовать уже сейчас, а разберетесь потом.
В первой половине «банды четырех» описывается пример создания текстового редактора похожего на word
Вообще по словам "банда четырёх паттерны" вы её нагуглите буквально первой же ссылкой. Однако я не рекомендую читать эту книгу, а рекомендую просто зайти вот сюда например, чтобы всё то же самое в более удобоваримом виде понять.
https://refactoring.guru/ru/design-patterns
В конце самой книге приводится пример построения текстового редактора, на изученных в книге абстракциях.
Купил себе "банду четырёх", очень тяжело было дочитать хоть до 100 страницы, авторы очень обильно используют сленг и сложные понятия, приходится гуглить и думать что же означает определённое слово, пока что так и не смог осилить эту книгу, трудно написана, ну или я тупой)
"Главное в той книге, что Вы будете читать – объем! Она должна быть большая! "
И тяжелая, чем тяжелее, тем лучше!!! Обложка лучше желтая, но на худой конец сойдёт белая!!!
Итак, «Прасид Пай, Питер Абрахам: Реактивное программирование на С++». 323
…
В них довольно просто излагаются проблемы, возникающие при параллельном программировании, идет знакомство с простыми путями решения.
…
Бонусом идут описанные относительно простым языком нововведения C++17, C++14, C++11.
Вот за это спасибо: часто нужно простым и понятным языком.
Тоже на Qt сижу с 2002-го где-то :)
P.S. Для нелюбителей «невменяемого C++» есть же Qt для питончика.
Берите и собирайте Qt хоть с C++20 и с соответствующими этой версии стандартными библиотеками. Ликбез:
https://habr.com/ru/post/549886/
Взять хотя бы шаблон MVC из наиболее близкой к теме проектирования книги банды четырех. Отделить вид от данных — звучит красиво, но если взять пример из реальной жизни: модель имеет множество дочерних подмоделей причем разных ничего не имеющего общего типов, эти подмоделей имеют свои подмодели и т.д., причем все подмодели создаются динамически, они могут быть упорядочены и менять свой порядок в зависимости от манипуляций над ними пользователя. А также есть множество видов, которые должны иметь такую же древовидную структуру из подвидов, соответсвующих подмоделям, и реагировать (обновляться) на создание, изменение данных, изменения порядка подмоделей. Даже если убрать контроллеры и подконтроллеры. Добавьте сюда еще автоматическое сохранение в файлы данных моделей после манипуляций пользователя (а файлы по сути тоже являются видами (образами) моделей), запись в логи после значимых измененей, и т.д. И программа превращается в жуткий mesh (мессиво). А в теории MVC выглядит очень многообещающе.
Оптимальный путь новичка в мире C++/Qt