Как стать автором
Обновить

Комментарии 21

Не всегда объём означает, что книга достойная. Часто бывает, что ради объёма вливается океан воды.
И я бы добавил книг по работе с ОС:
— Charles Petzold. Programming Windows;
— Jeffrey Richter. Programming Applications for Microsoft Windows;
— Mark Mitchell, Jeffrey Oldham, and Alex Samuel. Advanced Linux Programming
и т.д.
Кроссплатформенность Qt в основном позволяет забыть о деталях реализации на конкретной платформе, но знание о том, как оно работает под капотом выручит не раз.
Сколько я книг не читал (довольно мало на самом деле), никогда не находил в них ответа на вопрос, как написать приложение уровня Photoshop.
Обычно это пересказ документации или просто рассуждения автора на заданную тему на много-много страниц. Очень часто авторы книг любят добавлять в конец каждой главы проверочные задания и вопросы. Кто-то их вообще делает?
Вот вы советуете читать учебник по С++ обьемом не меньше 800 страниц. Какой смысл? Узнать все возможные тонкости шаблонного программирования и варианты move семантики? Решить 500 примеров на эту тему? А может лучше просто начать программировать, начать создавать продукт?

Если вы хотите научиться создавать приложения уровня Photoshop — устройтесь в компанию Adobe и погружайтесь в проект там. И строчка в резюме будет неплохая.

Кстати, а что плохого в простых приложениях?
Отрисовка классического «офисного» GUI типа кнопок, прогресс-баров, виджетов, анимации.
Отрисовка любой нестандартной графики типа непрерывно движущихся графиков из миллионов точек.
Работа с базами данных
Работа с сетью
Работа с реестром операционной системы
Работа с принтером
Быстрое (в том числе параллельное) выполнение сложных вычислительных задач.

Все это можно делать и в небольших приложениях-утилитах, благо Qt имеет средства для всех этих задач. Крупные проекты — это нагромождение абстракций. Часто не совсем удачных, но раз уж создали, то используем. За этими абстракциями не видно конечной цели.
Делайте дома для себя небольшие проектики, в котором будут, например, работа с сетью и с БД. Потом сделайте печать отчетов на принтере. Нарабатывайте опыт. Потом вы не раз сможете использовать ваши блоки кода как кирпичики в других задачах.

В самом Qt нет ничего, что бы потребовало чтения 5000 страниц книг. Достаточно знать на базовом уровне С++03, с элементами С++11. Посмотреть примеры приложений, почитать документацию Qt в Assistance.

Подытожу. Решайте проблемы по мере их появления. Начинайте действовать уже сейчас, а разберетесь потом.
> Сколько я книг не читал (довольно мало на самом деле), никогда не находил в них ответа на вопрос, как написать приложение уровня Photoshop.

В первой половине «банды четырех» описывается пример создания текстового редактора похожего на word
Можете дать полное название книги, если возможно?

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


https://refactoring.guru/ru/design-patterns


В конце самой книге приводится пример построения текстового редактора, на изученных в книге абстракциях.

Да, я и говорил про «пример построения текстового редактора» (только мне казалось, что оно идет в начале, а не в конце). Про сами паттерны читать там довольно скучно

А, может и в начале, я уже не помню. Открывал её лет 5 назад. Сегодня я хотел бы почитать что-нибудь про System Design Patterns, но не знаю что.

refactoring.guru/ru/design-patterns — это и есть та самая книга Швеца, в интернет-варианте

Купил себе "банду четырёх", очень тяжело было дочитать хоть до 100 страницы, авторы очень обильно используют сленг и сложные понятия, приходится гуглить и думать что же означает определённое слово, пока что так и не смог осилить эту книгу, трудно написана, ну или я тупой)

"Главное в той книге, что Вы будете читать – объем! Она должна быть большая! "
И тяжелая, чем тяжелее, тем лучше!!! Обложка лучше желтая, но на худой конец сойдёт белая!!!

Итак, «Прасид Пай, Питер Абрахам: Реактивное программирование на С++». 323

В них довольно просто излагаются проблемы, возникающие при параллельном программировании, идет знакомство с простыми путями решения.

Бонусом идут описанные относительно простым языком нововведения C++17, C++14, C++11.

Вот за это спасибо: часто нужно простым и понятным языком.


Тоже на Qt сижу с 2002-го где-то :)

Qt тем и хорош, что заметно облегчает работу с невменяемым C++. Если бы его (Qt) приделали к более разумному языку! Но даже версия для Явы не обновляется уже несколько лет.
А я был бы не против, если бы в Qt завезли ряд фич из C++17. Fold expressions нопремер (а то реализация тех же multi-arg в QString сейчас выглядит слегка убого), поддержка structured bindings тоже кое-где бы не помешала… Qt 6 обещают строить уже на базе C++17, так что ждем!

P.S. Для нелюбителей «невменяемого C++» есть же Qt для питончика.

Берите и собирайте Qt хоть с C++20 и с соответствующими этой версии стандартными библиотеками. Ликбез:
https://habr.com/ru/post/549886/

Вы всерьез считаете, что если собрать Qt C++20 компилятором, в нем, например, волшебным образом в тех же QPoint или QRect появится поддержка их разложения на structured bindings? Вы в курсе, что если у вас не простейший случай (грубо говоря, структура с публичными полями) для этого вообще-то код писать нужно: добавлять в класс соответствующий метод, делать специализации для std::tuple_size и std::tuple_element? То же самое со всякими перегрузками имеющихся методов с поддержкой новых фич из C++17 и C++20 — сами волшебным образом они не появятся от того, что вы Qt новым компилятором собрали.

извиняюсь, думал вам достаточно обновленной стандартной библиотеки.

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Оптимальный путь для новичка это U++
Эти книги научат синтаксису и хитрым трюкам языка, но научат ли они как написать сложнейшую программу типа Фотошоп? Сомнительно. Потому что ни в одной из вышеупомянутых и не ставится задача рассказать как спроектировать сложнейшую программу, в которой существуют тысячи переменных переплетенных между собой с множеством различных неявных уровней абстракций, и как создать эту архитектуру, без лишней сложности, чтоб через месяц можно было с легкостью исправить в ней обнаруженную ошибку, или слегка изменить функциональность.

Взять хотя бы шаблон MVC из наиболее близкой к теме проектирования книги банды четырех. Отделить вид от данных — звучит красиво, но если взять пример из реальной жизни: модель имеет множество дочерних подмоделей причем разных ничего не имеющего общего типов, эти подмоделей имеют свои подмодели и т.д., причем все подмодели создаются динамически, они могут быть упорядочены и менять свой порядок в зависимости от манипуляций над ними пользователя. А также есть множество видов, которые должны иметь такую же древовидную структуру из подвидов, соответсвующих подмоделям, и реагировать (обновляться) на создание, изменение данных, изменения порядка подмоделей. Даже если убрать контроллеры и подконтроллеры. Добавьте сюда еще автоматическое сохранение в файлы данных моделей после манипуляций пользователя (а файлы по сути тоже являются видами (образами) моделей), запись в логи после значимых измененей, и т.д. И программа превращается в жуткий mesh (мессиво). А в теории MVC выглядит очень многообещающе.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории