Какую вы знаете литературу о внутренностях С++?

В настоящий момент судьба распорядилась таким образом, что из Python-разработчика я внезапно переквалифицировался в разработчика на C++, и мне приходится постигать его тонкости уже в процессе работы.
За последние несколько месяцев я прочитал уже несколько книжек по С++, но ощущения нормального понимания плюсов так и не пришло. Сейчас читаю Страуструпа, и он всё больше скатывается к банальной архитектуре и ООП, не особо поясняя почему и как работает тот или иной синтаксис, а просто ставя перед фактом, как нужно делать, после чего у меня остается ощущение непонимания что же происходит на самом деле. Более того, он усиленно уходит от описания внутренностей, ссылаясь на "системы где нет файлов" и вставляя в каждом параграфе "это всё, конечно, зависит от реализации". Я понимаю что он описывает только сам абстрактный язык, стараясь показать как его можно использовать и как это должно упростить разработку и проектирование, но хочется чуть больше подробностей, если честно.

В интернете конечно есть много всевозможной информации , и из похожего на правду, могу вспомнить такое www.avabodh.com/cxxin/cxx.html, и естественно кучу ответов на похожие вопросы на SO, но хотелось бы нормальной книги, в которой было бы более-менее системно изложена информация о внутренностях С++.

Из похожих книг я пока наткнулся только "Inside the C++ Object Model" Липмана, но пока до нее руки не добрались, и смущает что она так и не переведена, а это минимум +50% ко времени на чтение.

Собственно сам вопрос: кто какую еще знает литературу(статьи, в конце концов), в которой достаточно подробно разъяснялось бы как действительно работает С++?
Или за действительно подробной информацией уже только к документации конкретных компиляторов?
  • Вопрос задан
  • 489 просмотров
Решения вопроса 4
@SolidMinus
Советую по операционным сетям почитать книжки. Все-таки плюсы - компилируемый язык. С полной поддержкой указателей. И изучить хоть чуть-чуть язык ассемблера. Потом пореверсить свои приложения ( главное, простые, дабы не утонуть в листинге асма). Тогда будет понимание, что C++ - это по-сути своеобразный синтаксический сахар для машинного кода, придет и понимание всего всего, что там происходит, за исключенеим процесса компиляции. Во-всяком случае, так было у меня.

Больше не возникают вопросы по поводу указателей, совсем. Когда видишь, как при отключенном CRT коде классы разворачиваются в чистейший процедурный ассемблерный листинг - начинаешь удивляться насколько все просто в этой идее ООП. Просто взять и завернуть эти бесмысленные вызовы процедур во что-то более красивое.

P.S. Без CRT кода просто твой C/C++ код компилируется в то, что ты написал. Нет ни единой чужой строчки кода. Ты просто видишь, во что компилируется код и понимаешь что все компилируемые языки это просто упрощение жизни, а не изобретение чего-то нового. Все эти парадигмы все равно сводятся к языку ассемблера, какие бы они не были. Собственно, и интерпретируемые языки - это просто ассемблерный код, анализирующий текст и в зависимости от того че там написано выполняющий какие-то действия.

Но есть и минус. Придет полное непонимание интерпретируемых языков в плане работы с памятью. Будешь мыслить уже в контексте указателей. Я иногда реально жестко туплю, казалось бы, на простых элементах языка Python.
Ответ написан
Ptolemy_master
@Ptolemy_master
Практика и еще раз практика!
Попробуйте книгу "Решение сложных задач на С++" порешайте, читайте разъяснения, там, глядишь и понимание придет.
Ответ написан
@Ariox41
Многое из того, что вы хотите есть у Майерса. Он дает советы по использованию различных возможностей C++, в процессе разъясняя, почему нужно делать именно так (т.е. как оно работает), в каких случаях это не работает и почему у некоторых конструкций такой неудобный синтаксис. По C++03 - это "Эффективное использование C++. 55 верных советов улучшить структуру и код ваших программ", там есть немного устаревшие вещи, но для понимания причин добавления различных элементов в новые стандарты это даже полезно. Её дополняет "Эффективный и современный С++. 42 рекомендации по использованию C++11 и C++14" - там про новые стандарты, с предыдущей практически не пересекается.

Много интересных статей на английском (точнее, ссылок на них) есть на https://www.reddit.com/r/cpp/ , но это больше для просмотра актуальных новостей, целенаправленно искать там что-то довольно сложно.
Ответ написан
Комментировать
Nipheris
@Nipheris Куратор тега C++
Advanced C and C++ Compiling
Linkers and Loaders.

Да, на английском. Советую таки читать в оригинале:
а) меньше неточностей;
б) будете привыкать к терминологии, рано или поздно будете понимать быстрее чем в переводе;
в) не все книги переведены (сильно не все, особенно такие).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
Стоит для начала разобраться как работает Си: динамическая память, указатели, массивы, строки, структуры и массивы структур, указатели на них, адресная арифметика. Это база.
На эту базу положите ООП. В свое время С++ начинался как набор макросов для Си.
Так будет проще понять как организованы классы внутри.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы