Слой абстракции - Abstraction layer - Wikipedia

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

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

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

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

Компьютерная архитектура

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

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

Ввод, вывод

В операционной системе Unix большинство типов операций ввода и вывода считаются потоками байтов, считываемых с устройства или записываемых на устройство. Эта модель потока байтов используется для файлового ввода-вывода, ввода-вывода сокета и ввода-вывода терминала, чтобы обеспечить независимость устройства. Для чтения и записи в устройство на уровне приложения программа вызывает функцию для открытия устройства, которое может быть реальным устройством, например терминалом, или виртуальным устройством, например, сетевым портом или файлом в файловой системе. . Физические характеристики устройства определяются операционной системой, которая, в свою очередь, представляет собой абстрактный интерфейс, который позволяет программисту читать и записывать байты с / на устройство. Затем операционная система выполняет фактическое преобразование, необходимое для чтения и записи потока байтов на устройство.

Графика

Большинство графических библиотек, таких как OpenGL, предоставляют абстрактную графическую модель устройства в качестве интерфейса. Библиотека отвечает за преобразование команд, предоставленных программистом, в конкретные команды устройства, необходимые для рисования графических элементов и объектов. Специальные команды устройства для плоттер отличаются от команд устройства для ЭЛТ монитор, но графическая библиотека скрывает детали реализации и устройства, предоставляя абстрактный интерфейс, который предоставляет набор примитивы которые обычно полезны для рисования графических объектов.

Смотрите также

Рекомендации

  1. ^ Спинеллис, Диомидис (2007). Красивый код: ведущие программисты объясняют, как они думают. Севастополь, Калифорния: O'Reilly and Associates. С. 279–291.
  2. ^ @kevlinhenney (3 сентября 2012 г.). "Да, это мое следствие" (Твит) - через Twitter.
  3. ^ Таненбаум, Эндрю С. (1979). Структурированная компьютерная организация. Энглвуд Клиффс, Нью-Джерси: Прентис-Холл. ISBN  0-13-148521-0.