Литература по программированию и около того

Всем привет, второй пост, выложу список литературы по программированию (конкретно по С++ и некотором около технологиям и фреймворкам). Не очень люблю всякие онлайн курсы, ибо как мне кажется довольно поверхностное повествование. 


С++ - прекрасный язык, но в голом виде мало кому нужен, как правило необходимо знание какого-нибудь GUI/Game engine фреймворка, БД, сети, работа с видео-кодеками. Крайне не рекомендуют изучать С++ с изучения Си. Литература:

1) cplusplus.com - справочник по языку, так же можно найти статьи по WinAPI итд.

1) Эккель "Философия С++ Vol 1&2" - вводная книга по языку, правда старая и не включает стандарт С++11(новый стандарт)

2) Липпман "С++ базовый курс" - вводная книга по языку, включает С++11.

3) Джосаттис  "Стандартная библиотека" (2ое издание по стандарту С++11) - можно использовать как справочник.

4) Серия книг Герба Саттера "Решения сложных задач на С++" "Решение новых сложных задач на С++" с Александреску "Стандарты программирования С++"  - Интересные вещи разбираются, читать выборочно т.к. например умные указатели(smart pointers, а разбираемый auto_ptr - считается depricated) уже вошли в стандарт С++11.

5) Серия книг Скотта Мейерса "Эффективный С++" примерно тоже самое серия Саттера, единственное у Саттера нет книги по новому стандарту, у Мейерса есть - шикарная штука.

6) Уильямс "Парарллельное программирование на С++ в действии" - многопоточность стала поддерживаться на уровне стандарта(раньше была реализация от сторонних вендоров) и чтиво по мьютексам, атомарным переперченным.

7) Стивенc "UNIX разработка сетевых приложений" "Unix взаимодействие процессов" - первая книга по сетям, подробный разбор как работают такие протоколы как TCP UDP написание своих клиентов и серверов, вторая - по IPC. Книга по UNIX, подойдут так и для Windows, в реальных проектах не думаю что придется писать свой клиент с нуля.

8) Стивенс "Unix. Профессиональное программирование" - хорошая(лучшая?) книга по POSIX.

9) Рихтер "Windows для профессионалов" - WinAPI

10) Бланшет "QT 4: программирование GUI на С++" - хорошая вводная хоть по Qt хоть и по 4 версии, Саммерфильд "Qt Профессиональное программирование" - в догонку, бесплатная книга по QML (необходимы базовые знания JS), самая лучшая онлайн документация с кучей примеров, готовых решений, уроков на ютубе

11) "Примеры объектно-ориентированного проектирования" (Gang of Four) или Александреску "Современное проектирование на С++" - книги по паттернам, вторая чуть сложнее

12) Седжвик "Алгоритмы на С++" - жестокое чтиво по алгоритмам графам и все такое, с доказательством с задачами.

13) ::boost - открытая библиотека по С++, можно сказать пре-стандарт


C++11 - стандарт 11 года, который внес много нововведений, С++14 - текущий стандарт, по сути доработка над С+11, С++17 - будущий стандарт.


PS Старался охватить основные темы и привести лучших авторов(хоть все книги есть на русском - рекомендую оригинал). Не стал включать книги по смежным темам - SQL, HTML, JS итд.

Почему включил Qt, а XXX не включил?- имхо Qt самый востребованный фреймворк по С++.


PPS Для работы возможно потребуется знание таких технологий как git, svn, tfs, cmake, qmake, qbs

Автор поста оценил этот комментарий

с выходом 21 предыдущие актуальности не теряют, а так же этот самый 21 начнут использовать сильно не сразу

раскрыть ветку (1)
Автор поста оценил этот комментарий

ну вообще ротация 3 года, 3 года мажор релиз (11/17/23), 3 года минор (14/20)

Автор поста оценил этот комментарий

Ну, legacy != deprecated. А от С++ часто отказаться не могут как раз из-за легаси проектов. Ведь уже достаточно языков столько же быстрых, но гораздо более современных.

раскрыть ветку (1)
Автор поста оценил этот комментарий
auto_ptr - legacy?)
показать ответы
Автор поста оценил этот комментарий

Хм... С вопросами - никаких проблем.
Я ведь просто ответил на дизрекомендацию начинать учить Си с С++ и объяснил почему считаю иначе. А ещё я думаю что имеет смысл учить стандарты языка последовательно (С, потом, например, можно начать с С++ 03, потом С++ 11, потом С++ 14) потому что разные проекты могут использовать разные версии языка и знание того, какими фичами ты сейчас можешь пользоваться очень полезно. А из-за того, что C++ обратно совместимый, ничего лишнего изучено не будет (ну разве что по мелочи).

раскрыть ветку (1)
Автор поста оценил этот комментарий
хз, имхо лучше сразу по 11(14) стандарту, например, Липпмана, и не тратить время на deprecated штуки.
показать ответы
Автор поста оценил этот комментарий
не согласен, еще время тратить на изучение всяких маллоков, каллоков, фри, указателей на функции вместо методов, а после переучиваться и думать классами.

Повезет если ученик не любопытный и ему пофигу как оно внутри работает. В ином случае все равно придется сказать что эта самая new это оператор - обертка над системным выделением памяти, вызывающий конструктор после выделения памяти.

Дальше, весь текст, по сути, оффтоп, но я болтать о проге люблю :)

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

"передача только по указателям"
Хз, от ситуации зависит.

"строки в виде указателя на массив"
согласен, сейчас это можно заменить на std::string. Но это болезнь всех легаси проектов, а не С++

"Есть мнение что С++ без обратной совместимости с Си станет намного лучше и будет быстрее развиваться."
Я тоже так думаю. Но изначально я говорил об обучении. Си проще в изучении так как в С++ сильно больше абстракций

раскрыть ветку (1)
Автор поста оценил этот комментарий
а такой козырь как сраные макросы бить нечем и они действительно сраные?)
показать ответы
Автор поста оценил этот комментарий

Дак я про то и говорю, Си в этом плане попроще будет

раскрыть ветку (1)
Автор поста оценил этот комментарий

не согласен, еще время тратить на изучение всяких маллоков, каллоков, фри, указателей на функции вместо методов, а после переучиваться и думать классами. Помнится приходилось работать с гавнокодом на Си++ истоки которого были на Си(возврат инта в виде кода ошибки, передача только по указателям, строки в виде указателя на массив, сраные  макросы).

нененене, нахуй Си

Есть мнение что С++ без обратной совместимости с Си станет намного лучше и будет быстрее развиваться.

показать ответы
Автор поста оценил этот комментарий

Я тоже не осилил Страуструпа читать, а его ещё новичкам советуют.
Может кодер он и годный, но объяснять явно не его призвание)

раскрыть ветку (1)
Автор поста оценил этот комментарий
Начинал с "принципов и практики" Страуструпа - психанул, забросил, потом открыл для себя Эккеля - оказалось все элементарно. Быть может из-за того что английский не является родным для Страуструпа.
Автор поста оценил этот комментарий

В таком случае рассказ будет наполовину состоять из "эту строчку мы объясним когда-нибудь потом".

раскрыть ветку (1)
Автор поста оценил этот комментарий

Нормальная практика (как правило идет ссылка еще и на главу где этот вопрос разбирается), очень нравится в этом плане Адам Фримен, а вот Страуструп - хгммм ...

показать ответы
2
Автор поста оценил этот комментарий

Очень интересно! Следующей прочту книгу из этого списка. Что вы думаете по поводу Герберта Шилдта, а именно его книгу "C++. Базовый курс"? Я начал обучение с неё. Сейчас читаю часть про ООП и мне пока очень нравится.

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Шилдта не читал, но это классика и на сколько я знаю не включает стандарт С++11, единственное порекомендую "Эффективный и современный С++" Скотта Мейерса после нее - только нововведения и как их использовать (lambda auto decltype rvalue for-range async)