Абстракция слой
При вычислениях уровень абстракции или уровень абстракции - это способ скрыть рабочие детали подсистемы. Примеры программных моделей, которые используют слои абстракции, включают модель OSI для сетевых протоколов , OpenGL и других графических библиотек , которые позволяют разделить проблемы для облегчения совместимости и независимости платформы .
В информатике слой абстракции является обобщением концептуальной модели или алгоритма , вдали от какой -либо конкретной реализации. Эти обобщения возникают из широкого сходства, которые наилучшим образом инкапсулируются моделями, которые выражают сходства, присутствующие в различных конкретных реализациях. Упрощение, обеспечиваемое хорошим слоем абстракции, позволяет легко использовать повторное использование, перегоняя полезную концепцию или шаблон дизайна, чтобы можно быстро распознать ситуации, где она может быть точно применена. Просто сочинение элементов нижнего уровня в конструкцию не считается слоем абстракции, если он не вытесняет пользователей от своей основной сложности. [ 1 ]
Считается, что слой находится на вершине другого, если он зависит от него. Каждый слой может существовать без слоев над ним, и требует, чтобы слои под ним работали. Часто слои абстракции могут быть составлены в иерархию уровней абстракции. Модель OSI содержит семь слоев абстракции. Каждый слой модели инкапсулирует и учитывает различную часть потребностей цифровых коммуникаций, тем самым уменьшая сложность связанных инженерных решений.
Знаменитый афоризм : Дэвида Уилера «Все проблемы в информатике могут быть решены с помощью другого уровня косвенности ». [ 2 ] Это часто преднамеренно неверно процитируется «абстракцией», заменяемой «косвеной». [ Цитация необходима ] Это также иногда ошибается с Батлером Лэмпсоном . Следствие Кевлина Хенни к этому: «... за исключением проблемы слишком большого количества слоев кодекса». [ 3 ]
Компьютерная архитектура
[ редактировать ]В компьютерной архитектуре компьютерная система обычно представлена как несколько уровней абстракции, таких как:
Программируемая логика часто считается частью аппаратного обеспечения, в то время как логические определения также иногда рассматриваются как часть программного обеспечения или прошивки устройства. Прошивка может включать только программное обеспечение для низкого уровня, но также может включать все программное обеспечение, включая операционную систему и приложения. Программные слои могут быть дополнительно разделены на слои аппаратной абстракции, физические и логические драйверы устройств, репозитории, такие как файловые системы, ядра операционной системы, промежуточное программное обеспечение, приложения и другие. Различие также может быть сделано из низкоуровневых языков программирования, таких как VHDL , машинный язык , язык сборки, до скомпилированного языка , интерпретатора и языка сценариев . [ 4 ]
Ввод и вывод
[ редактировать ]В операционной системе UNIX большинство типов входных и выходных операций считаются потоками байтов, считываемых с устройства или записанными на устройство. Этот поток модели байтов используется для ввода -вывода файла, ввода -вывода и ввода -вывода -терминала для обеспечения независимости устройства. Чтобы прочитать и записать на устройство на уровне приложения, программа вызывает функцию, чтобы открыть устройство, которое может быть реальным устройством, таким как терминал или виртуальное устройство, такое как сетевой порт или файл в файловой системе Полем Физические характеристики устройства опосредованы операционной системой, которая, в свою очередь, представляет собой абстрактный интерфейс, который позволяет программисту читать и записывать байты с/на устройство. Затем операционная система выполняет фактическое преобразование, необходимое для чтения и записи потока байтов на устройство.
Графика
[ редактировать ]Большинство графических библиотек, таких как OpenGL, предоставляют абстрактную модель графического устройства в качестве интерфейса. Библиотека отвечает за перевод команд, предоставленных программистом в конкретные команды устройства, необходимые для рисования графических элементов и объектов. Конкретные команды устройства для платтера отличаются от команд устройства для CRT монитора , но графическая библиотека скрывает детали реализации и зависимых от устройства, предоставляя абстрактный интерфейс, который предоставляет набор примитивов , которые, как правило, полезны для рисования графических объектов.
Смотрите также
[ редактировать ]- Интерфейс программирования приложения (API)
- Двоичный интерфейс приложения (ABI)
- Компилятор , инструмент для абстракции между исходным кодом и машинным кодом
- Аппаратная абстракция
- Информация скрывается
- Слой (объектно-ориентированный дизайн)
- Нарушение пространства имен
- Защитное кольцо
- Операционная система , уровень абстракции между программой и компьютерным оборудованием
- Программное обеспечение
Ссылки
[ редактировать ]- ^ Хохпе, Грегор (9 марта 2012 г.). Образцы интеграции предприятия: проектирование, строительство и развертывание решений обмена сообщениями (серия подписей Аддисон-Уэсли (Фаулер)) . Аддисон-Уэсли Профессионал. ISBN 978-0321200686 .
{{cite book}}
: CS1 Maint: Год ( ссылка ) - ^ Spinellis, Diomidis (2007). «Глава 17. Еще один уровень косвенности» . Красивый код: ведущие программисты объясняют, как они думают . Себастополь, Калифорния: О'Рейли и Ассоциированные. С. 279–291. Архивировано из оригинала 6 марта 2024 года.
- ^ Henney, Kevlin [@kevlinhenney] (3 сентября 2012 г.). «@drunkcod Да, это мое следствие:^)» ( твит ). Архивировано из оригинала 29 марта 2022 года - через Twitter .
- ^ Таненбаум, Эндрю С. (1979). Структурированная компьютерная организация . Энглвуд Клиффс, Нью-Джерси : Прентис-Холл. ISBN 0-13-148521-0 .