Любое значение для программиста, чтобы понять процессор более глубоко? - PullRequest
5 голосов
/ 28 февраля 2009

Недавно мне пришло в голову, что я (и я думаю, что большинство людей) изучил компьютерное программирование, начиная с чего-то вроде Visual Basic. Я начал задаваться вопросом, начали ли мы сначала с более низкого уровня, будет ли сейчас легче.

Считаете ли вы, что программисту важно понимать такие вещи, как работа процессора, основные инструкции и тому подобное? Я имею в виду, в конце концов, разве мы не говорим с этим в конце концов?

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

Ответы [ 12 ]

1 голос
/ 28 февраля 2009

Языки высшего уровня предназначены для отвлечения нас от архитектуры нижнего уровня системы, над которой мы работаем. Хотя это не означает, что архитектурная информация должна игнорироваться, это означает, что ценность этой информации уменьшается. Знания об архитектуре действительно могут помочь вам по-разному использовать систему, но обычно эти способы включают обход абстракций, которые нам предоставляют языки высокого уровня. Хорошо это или нет, я оставляю вам.

0 голосов
/ 23 ноября 2010

Более важным, чем понимание самой конструкции ЦП, является понимание «12-слойного торта» абстракции под современным языком. Вот почему Элементы вычислительных систем Нисана и Шокена - моя любимая книга по программированию; Вам понадобится «От NAND до Tetris за 12 шагов» с сопровождающими модульными тестами, чтобы убедиться, что вы «выполнили контракт» на уровне чипа, уровне АЛУ, уровне ЦП, уровне машинного кода и т. д.

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

...