Другие языки программирования и технологии

Есть ли смысл изучения архитектуры системы при изучении (ООП)?

В общем, у меня нет непосредственной цели заниматься драйверами и микроконтроллера, разве что в общем смысле, а не конкретно этим. Так что вопрос в рамках объектной ориентированного программирования. Поможет ли это в понимании, почему алгоритмы работают именно так, почему некоторые программы некомпилируются и из-за чего это происходит? Как преобразуются типы и т. д? Или же нет смысла лезть глубоко?
Нашел вот эту книгу, думаю, лишь в общих чертах ознакомиться
"Компьютерные системы: архитектура и программирование. Взгляд программиста"
Год: 2005
Автор: Брайант Р., О'Халларон Д.
нужна практика.

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

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

главное научиться делать неповторяющийся код.

например, в том же классе строки, можно сделать метод увеличивающий память (служебный метод, в private).

понаделать таких мелких методов, и потом просто их последовательно применять.

нужна практика, книги дают некоторые ответы, советы, но лучше практика, изучение чужого кода.
Как можно больше чужого кода.

Один программист пишет в одном стиле, один в другом. Глаза привыкают к разному коду. Изучаются разные способы реализации одной и той же задачи.

Можно прямо капипастить (не всё подряд конечно), на этом тоже идёт обучение. Делаешь свою базу, изучаешь чужое, копируешь часть, редактируешь чтоб работало.

Лучше взять за основу профессиональный код, от разработчиков с мировым именем.

короче, постепенно всё будет становиться понятнее и понятнее. и тогда будет понятен map и прочее.
АЛ
Александр Лебедев
30 074
Лучший ответ
Вальтер Борман Ну, не знаю. Если на примере математики, то практика, по-моему, чушь. Ну да, повторяешь ты какого-нибудь Гаусса или Эйлера, из раза в раз копируя формулу, но понимания от этого мало. Просто набираешь кучу методов, не зная, как они к этому пришли. Копирование один из самых медленных путей обучения. Если, конечно, я правильно вас понял
Вальтер Борман А вот переписывание стандартных библиотек, чтобы свои быстрее работали - неплохая идея
Термин "Архитектура системы" имеет другое значение. Это не "железо", и не "архитектура процессора". https://ru.wikipedia.org/wiki/Архитектура_системы
ООП - это одна тема, устройство компьютера - другая.
Чего сложного в ООП? Это 5-20 страниц книги, ну и практика, конечно.

Надо учесть, что бывают разные реализации ООП. Например, в С++ и в Objective-C ООП реализован по-разному. Не вижу смыла изучать сразу все варианты ООП. Изучай язык программирования, и тот ООП, который реализован в этом языке.
Вальтер Борман Ладно, давайте иначе. Недавно изучал контейнер map в с++ ,хотел понять, как он работает изнутри, наткнулся на алгоритм красно-черного дерева, но понимания, как все это выглядит в памяти и почему работает именно так, не прибавилось. Я не имею в виду конкретно map, Но что стоит почитать, чтобы не писать просто запомненный код ==> результат -или заучивать это одной лишь практикой- а понимать причины и следствия каждого элемента в коде?
Если пишешь на С++/C то нужно знать ассемблер и вообще то как работает процессор, защищенный режим, MMU, etc. Помогает находить ошибки, оптимизировать программы и многое другое.
Slam 69
Slam 69
24 328
Зная только что-то одно, ты можешь даже не догадаться о том, что можно сделать это какнить иначе, допустим через какой-то системный вызов, и начать делать кастыли... Это так к примеру...
Про книгу ХЗ, но учитывая современные скорости развития, первый твой вопрос должен был быть"А стоит ли читать такую старую книгу?"

А вообще по устройству компьютера ориентируюсь на классику - Таненбаума.
Вальтер Борман Мне не то чтобы нужно устройство компьютера, скорее, представление, как работают элементы в коде.