Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

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

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

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

Ввод и вывод [ править ]

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

Графика [ править ]

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

См. Также [ править ]

Ссылки [ править ]

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