stringtranslate.com

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

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

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

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

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

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

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

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

Ввод и вывод

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

Графика

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

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

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

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