Формат интерпретации данных и их кодирование в памяти, а также список команд, которые способен исполнить процессор, предопределены производителем CPU и описаны в Instruction Set Architecture процессора?
Да, все верно понимаете. Производители процессоров конечно пытаются стандартизировать свои архитектуры, но все равно остаются ньюансы как у AMD, так и у Intel (если рассматривать только ПК).
Пример документации от Интел:
https://software.intel.com/en-us/articles/intel-sdm
В целом для ПК (именно для ПК) существуют некий стандарт
x86, а также его расширение
x86-64. Именно он описывает набор доступных программисту инструкций, флагов и ячеек данных (регистров).
В рамках этого стандарта каждая инструкция имеет свой
опкод.
Т.е. после компиляции программы в машинный код (двоичную последовательность), опкоды команд будут одинаковы для всех x86-совместимых процессоров (т.е. компиляция идет не под отдельный процессор, а под архитектуру, а самих архитектур много, x86, ARM и т.д.).
Это дает возможность запускать программы с одинаковым результатом как на процессорах Intel, так и на AMD.
Программирование — умение кодировать алгоритмы, предназначенные для исполнения процессором, на языке, синтаксис которого, в конечном счёте - после стадий трансляции символьных масок в последовательность электрических сигналов, предназначен для понимания процессором
Если рассматривать только сам процесс кодирования, то примерно так и есть.
Но сейчас под термином "программирование" подразумевается нечто большее чем простой набор инструкций с клавиатуры.
Программирование - прикладная наука. Без предметной области программирование не существует в принципе.
И именно предметная область зачастую определяет каким будет язык и инфраструктура.
От программиста требуется не только забить алгоритм и откомпилировать исходник, но и зачастую этот алгоритм сначала придумать/скомбинировать. Без знания предметной области этого сделать опять же не получится, либо получится, но малоэффективно.
Вам точно не в "web-dev"..
P.s уж слишком низко полезли. У нас же всё в абстракциях :D
Подобные комментарии рекомендую не принимать всерьез. В веб-разработке зачастую всплывают задачи, требующие знания того, как работает машина на низком уровне.
Это может быть потребность написать свой модуль для PHP, Python, JavaScript (Node.js), либо реализовать программный интерфейс к внешним приложениям/системам.
К сожалению такие задачи не покрываются программистами другой специальности, например системщиками - т.к. они как правило пишут очень низкоуровневые вещи: драйверы устройств, модули ядра ОС и т.д. поэтому веб-разработчикам очень желательно это уметь делать.
В 90% задач конечно это не нужно (особенно где надо "натягивать верстку на движок" =D), но если хотите расти как профессионал и покрывать весь спектр возможных задач в вебе, то это, как говорится, must have.