В общем, у меня нет непосредственной цели заниматься драйверами и микроконтроллера, разве что в общем смысле, а не конкретно этим. Так что вопрос в рамках объектной ориентированного программирования. Поможет ли это в понимании, почему алгоритмы работают именно так, почему некоторые программы некомпилируются и из-за чего это происходит? Как преобразуются типы и т. д? Или же нет смысла лезть глубоко?
Нашел вот эту книгу, думаю, лишь в общих чертах ознакомиться
"Компьютерные системы: архитектура и программирование. Взгляд программиста"
Год: 2005
Автор: Брайант Р., О'Халларон Д.
Другие языки программирования и технологии
Есть ли смысл изучения архитектуры системы при изучении (ООП)?
нужна практика.
как минимум нужно научится писать свой std::string. ведь это легко, нужно хранить указатель на массив и размер массива.
сначала не получится. потом будут скрытые ошибки. потом сможешь снуля написать за час отличный класс, в сотни раз быстрее стандартного.
главное научиться делать неповторяющийся код.
например, в том же классе строки, можно сделать метод увеличивающий память (служебный метод, в private).
понаделать таких мелких методов, и потом просто их последовательно применять.
нужна практика, книги дают некоторые ответы, советы, но лучше практика, изучение чужого кода.
Как можно больше чужого кода.
Один программист пишет в одном стиле, один в другом. Глаза привыкают к разному коду. Изучаются разные способы реализации одной и той же задачи.
Можно прямо капипастить (не всё подряд конечно), на этом тоже идёт обучение. Делаешь свою базу, изучаешь чужое, копируешь часть, редактируешь чтоб работало.
Лучше взять за основу профессиональный код, от разработчиков с мировым именем.
короче, постепенно всё будет становиться понятнее и понятнее. и тогда будет понятен map и прочее.
как минимум нужно научится писать свой std::string. ведь это легко, нужно хранить указатель на массив и размер массива.
сначала не получится. потом будут скрытые ошибки. потом сможешь снуля написать за час отличный класс, в сотни раз быстрее стандартного.
главное научиться делать неповторяющийся код.
например, в том же классе строки, можно сделать метод увеличивающий память (служебный метод, в private).
понаделать таких мелких методов, и потом просто их последовательно применять.
нужна практика, книги дают некоторые ответы, советы, но лучше практика, изучение чужого кода.
Как можно больше чужого кода.
Один программист пишет в одном стиле, один в другом. Глаза привыкают к разному коду. Изучаются разные способы реализации одной и той же задачи.
Можно прямо капипастить (не всё подряд конечно), на этом тоже идёт обучение. Делаешь свою базу, изучаешь чужое, копируешь часть, редактируешь чтоб работало.
Лучше взять за основу профессиональный код, от разработчиков с мировым именем.
короче, постепенно всё будет становиться понятнее и понятнее. и тогда будет понятен map и прочее.
Вальтер Борман
Ну, не знаю. Если на примере математики, то практика, по-моему, чушь. Ну да, повторяешь ты какого-нибудь Гаусса или Эйлера, из раза в раз копируя формулу, но понимания от этого мало. Просто набираешь кучу методов, не зная, как они к этому пришли. Копирование один из самых медленных путей обучения. Если, конечно, я правильно вас понял
Вальтер Борман
А вот переписывание стандартных библиотек, чтобы свои быстрее работали - неплохая идея
Термин "Архитектура системы" имеет другое значение. Это не "железо", и не "архитектура процессора". https://ru.wikipedia.org/wiki/Архитектура_системы
ООП - это одна тема, устройство компьютера - другая.
Чего сложного в ООП? Это 5-20 страниц книги, ну и практика, конечно.
Надо учесть, что бывают разные реализации ООП. Например, в С++ и в Objective-C ООП реализован по-разному. Не вижу смыла изучать сразу все варианты ООП. Изучай язык программирования, и тот ООП, который реализован в этом языке.
ООП - это одна тема, устройство компьютера - другая.
Чего сложного в ООП? Это 5-20 страниц книги, ну и практика, конечно.
Надо учесть, что бывают разные реализации ООП. Например, в С++ и в Objective-C ООП реализован по-разному. Не вижу смыла изучать сразу все варианты ООП. Изучай язык программирования, и тот ООП, который реализован в этом языке.
Вальтер Борман
Ладно, давайте иначе. Недавно изучал контейнер map в с++ ,хотел понять, как он работает изнутри, наткнулся на алгоритм красно-черного дерева, но понимания, как все это выглядит в памяти и почему работает именно так, не прибавилось. Я не имею в виду конкретно map, Но что стоит почитать, чтобы не писать просто запомненный код ==> результат -или заучивать это одной лишь практикой- а понимать причины и следствия каждого элемента в коде?
Если пишешь на С++/C то нужно знать ассемблер и вообще то как работает процессор, защищенный режим, MMU, etc. Помогает находить ошибки, оптимизировать программы и многое другое.
Зная только что-то одно, ты можешь даже не догадаться о том, что можно сделать это какнить иначе, допустим через какой-то системный вызов, и начать делать кастыли... Это так к примеру...
Про книгу ХЗ, но учитывая современные скорости развития, первый твой вопрос должен был быть"А стоит ли читать такую старую книгу?"
А вообще по устройству компьютера ориентируюсь на классику - Таненбаума.
Про книгу ХЗ, но учитывая современные скорости развития, первый твой вопрос должен был быть"А стоит ли читать такую старую книгу?"
А вообще по устройству компьютера ориентируюсь на классику - Таненбаума.
Вальтер Борман
Мне не то чтобы нужно устройство компьютера, скорее, представление, как работают элементы в коде.
Похожие вопросы
- Смысл изучения PHP?
- Какой смысл делить программирование на процедурное и ООП?
- Если изучаешь Java, то ты типо можешь не изучать ооп? Типо ООП уже в Java представляют с изучения или нет?
- Подскажите, в какой среде лучше начать изучение С# ? Основы ООП более-менее известны.
- С чего лучше начать изучение?
- с какого языка проще начинать изучение программирования
- Вопрос по изучению языка Ассемблера под MS DOS. (Нужны советы по программному обеспечению/программированию)
- Какой язык программирования выбрать для изучения для начинающего ? (внутри)
- После одно года активного изучения PHP и Java, можно будет хорошо знать эти языки программирования?(Для сайтостроения)
- С чего начать изучение программирования подростку?