Объектно-ориентированный язык программирования Ассемблер
Ассемблер (от англ. assembler) - язык объектно-ориентированного программирования (ООП), что бы ни утверждали некоторые маркетологи. Под объектом здесь будем понимать любой артефакт - нечто, созданное человеком. Под объектно-ориентированным языком программирования я понимаю такой, в котором возможно конечными средствами реализовать объектно-ориентированный подход, заключающийся в применении принципов абстракции, инкапсуляции, полиморфизма, наследования, декомпозиции и вытекающих из них. Абстракция (от англ. abstraction) означает выделение или извлечение частей среди какого-либо целого. В нашем случае мы имеем дело с написанием инструкций по распределению ресурсов ЭВМ, в чём у ассемблера богатый выбор - можно выделить и извлечь для целей решения задачи любое подмножество подмножеств среди доступных регистров процессора и прочих ёмкостей и источников ресурсов, чтобы в дальнейшем оперировать ими при решении задачи в терминах предметных областей. Это подразумевает возможность декомпозиции (от англ. decomposition) - разделения целого на части c целью упрощённого представления сложного объекта (задачи) в виде совокупности других объектов (задач), в том числе с устранением взаимовлияния (сама инструкция ассемблера представима в форме взаимодействия сигналов в аппаратуре ЭВМ и подвержена анализу и синтезу с точки зрения цифровой обработки сигналов, проходящих в и между КМОП и другими элементами и компонентами), так как использованием одного единственного регистра (ёмкости, источника) в решении задачи большинство программистов ЭВМ не обходятся. Инкапсуляция (от англ. incapsulation) - размещение одного в другом. В нашем случае ассемблер представляет богатый выбор ёмкостей, как одиночных, так и комбинированных, которые можно использовать для произвольной группировки, хранения и обмена различными данными, включая напрямую соответствующие предлагаемым архитектурами ЭВМ типам, причём эти процессы могут быть более детальными и эффективными по сравнению с использованием аналогичных возможностей в других языках, предлагающих объектно-ориентированный подход, что объясняет наличие у языка ассемблера полиморфизма (от англ. polymorphism) - возможности подмены разнородных манипулируемых объектов с сохранением интерпретации манипуляции, например, возникающей в ассемблере при использовании одного регистра как динамической переменной в языках-аналогах неопределённости его содержимого предполагает возможность произведения разнообразных действий над этим содержимым с сохранением его инкогнито в отдельно взятой абстракции. Наследование (от англ. inheritance) - возможность передачи данных с сохранением части абстракций, изначально присущих объекту-источнику данных. В языке ассемблера передача данных возможна из различных источников в различные приёмники, при этом возможно как сохранение абстракций, предполагавшихся программистом, в полном объёме (например, при передаче одного значения из одного регистра в равноценный другой с сохранением этого значения), так и частично (например, при сложении одного числового значения с другим результат может оставаться числовым). В связи с этим, предлагаю дальнейшие дискуссии о категоризации языка программирования (ЯП) ассемблера перевести в русло конструктивного обсуждения необходимости наличия термина ООП, а также rich internet application (RIA) и rapid application development (RAD). Артефактом также является всё, что человек сам себе смог вообразить, то есть представить в своей фантазии. Ассемблер - высокоуровневый и дружелюбный к пользователю язык, поскольку не только позволяет использовать всё то же самое в системе, что предлагают другие высокоуровневые языки, но и открывает доступ ко многим, бывшим изначально доступными, возможностям компьютера, которые современные системы тщательно блокируют, считая пользователя несведущим. Программист волен выбирать типизацию, используемую в коде, - статическую, динамическую или смешанную. То же и с конкретными типами для каждой ёмкости. Ассемблеры всё это позволяют, как на микроконтроллерах, так и на рабочих станциях и мощных серверах. P.S. Тип ёмкости можно менять в отдельные моменты времени по потребности программиста. В ассемблере класс, например, может быть выделен среди прочих значением или комбинацией значений ёмкостей в качестве его имени или вычисляемого соответствия, что недоступно на данный момент в других популярных объектно-ориентированных языках высокого уровня. Описанный приём хорошо сочетается с уже известной идеей High Level Assembly.