Слой абстракции


В вычислениях уровень абстракции или уровень абстракции — это способ скрыть рабочие детали подсистемы. Примеры программных моделей, использующих уровни абстракции, включают модель OSI для сетевых протоколов , OpenGL и другие графические библиотеки , которые позволяют разделить задачи для облегчения взаимодействия и независимости от платформы . Другим примером является протокол передачи мультимедиа , который разрешает общий доступ и не требует поддержки общей файловой системы, но ограничивает пользовательский контроль по сравнению с массовым хранилищем.с блочным доступом.

В компьютерных науках уровень абстракции — это обобщение концептуальной модели или алгоритма вдали от какой-либо конкретной реализации. Эти обобщения возникают из-за широких сходств, которые лучше всего инкапсулируются моделями, выражающими сходства, присутствующие в различных конкретных реализациях. Упрощение, обеспечиваемое хорошим уровнем абстракции, позволяет легко повторно использовать за счет выделения полезной концепции или шаблона проектирования, чтобы можно было быстро распознать ситуации, в которых они могут быть точно применены.

Слой считается расположенным поверх другого, если он зависит от него. Каждый уровень может существовать без слоев над ним и требует, чтобы слои под ним функционировали. Часто уровни абстракции могут быть объединены в иерархию уровней абстракции. Модель OSI включает семь уровней абстракции. Каждый уровень модели инкапсулирует и удовлетворяет разные части потребностей цифровой связи, тем самым снижая сложность соответствующих инженерных решений.

Известный афоризм Дэвида Уилера гласит : «Все проблемы в информатике можно решить на другом уровне косвенности». [1] Это часто преднамеренно неверно цитируется, заменяя «косвенность» «абстракцией». Его также иногда ошибочно приписывают Батлеру Лэмпсону . Следствие Кевлина Хенни из этого: «... за исключением проблемы слишком большого количества уровней косвенности». [2]

В компьютерной архитектуре компьютерная система обычно представляется состоящей из нескольких уровней абстракции, таких как:

Программируемая логика часто считается частью аппаратного обеспечения, в то время как логические определения также иногда рассматриваются как часть программного или микропрограммного обеспечения устройства. Прошивка может включать только низкоуровневое программное обеспечение, но также может включать все программное обеспечение, включая операционную систему и приложения. Уровни программного обеспечения можно дополнительно разделить на уровни аппаратной абстракции, физические и логические драйверы устройств, репозитории, такие как файловые системы, ядра операционных систем, промежуточное программное обеспечение, приложения и другие. Также можно провести различие между низкоуровневыми языками программирования, такими как VHDL , машинный язык , язык ассемблера , и компилируемым языком , интерпретатором и языком сценариев . [3]