stringtranslate.com

Абстракционный слой

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

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

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

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

Архитектура компьютера

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

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

Ввод и вывод

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

Графика

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

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

Ссылки

  1. ^ Хохпе, Грегор (9 марта 2012 г.). Шаблоны интеграции предприятий: проектирование, построение и развертывание решений для обмена сообщениями (серия Addison-Wesley Signature (Fowler)) . Addison-Wesley Professional. ISBN 978-0321200686.
  2. ^ Spinellis, Diomidis (2007). «Глава 17. Другой уровень косвенности». Красивый код: ведущие программисты объясняют, как они думают . Севастополь, Калифорния: O'Reilly and Associates. стр. 279–291. Архивировано из оригинала 6 марта 2024 г.
  3. ^ Хенни, Кевлин [@kevlinhenney] (3 сентября 2012 г.). "@drunkcod Да, это мой вывод :^)" ( Твит ). Архивировано из оригинала 29 марта 2022 г. – через Twitter .
  4. ^ Таненбаум, Эндрю С. (1979). Структурированная компьютерная организация . Энглвуд Клиффс, Нью-Джерси : Prentice-Hall. ISBN 0-13-148521-0.