Уровень абстракции (программирование): различия между версиями

викификация
(викификация)
'''Уровень абстракции''' предоставляет способ сокрытия деталей реализации определенного множества функциональных возможностей. Модели программного обеспечения, использующие уровни абстракции, включают [[Сетевая модель OSI|семиуровневую модель OSI]] для [[Протокол передачи данных|протоколов передачи данных]] [[Компьютерная сеть|компьютерных сетей]], библиотеку графических примитивов [[OpenGL]], модель ввода-вывода на основе потоков байт из [[Unix]], адаптированную [[MSDOS]], [[Linux]] и большинством других современных [[Операционная система|операционных систем]].
 
В операционной системе Unix большинство типов операций ввода-вывода рассматриваются как потоки байтов, считываемые или записываемые на [[Компьютерная техника|устройство]]. Эта модель потока байтов используется для ввода-вывода в [[файл]], [[Сокет (программный интерфейс)|сокет]] и [[компьютерный терминал]], чтобы обеспечить независимость от устройства ввода-вывода. Для чтения и записи в устройство на уровне приложения программа вызывает функцию открытия устройства, которое может соответствовать реальному устройству, например, терминалу или [[/dev|виртуальному устройству]], например, [[сетевому порту]] или файлу в [[Файловая система|файловой системе]]. Физические характеристики устройства передаются операционной системе, которая, в свою очередь, предоставляет абстрактный [[интерфейс]], позволяющий [[программист]]у считывать и записывать [[байт]]ы в устройство. Операционная система затем выполняет действительное [[преобразование]], необходимое для чтения и записи потока байтов в устройство.
 
Большинство графических [[Библиотека (программирование)|библиотек]], например, OpenGL, предоставляют в качестве интерфейса абстрактную графическую модель. Библиотека отвечает за трансляцию команд, данных программистом, в специальные команды устройства, необходимые для рисования графических элементов и объектов. Специальные команды устройства для [[Графопостроитель|графопостроителя]] отличаются от команд устройства для [[Электронно-лучевой прибор|ЭЛТ]] [[Монитор (устройство)|монитора]], но графическая библиотека скрывает зависящие от устройства детали реализации, предоставляя абстрактный интерфейс, содержащий набор [[Примитивный тип|примитивов]], общеупотребимых для рисования графических объектов.
 
В [[Информатика|информатике]] уровень абстракции -- — это обобщение модели [[алгоритм]]а без реальной реализации. Эти обобщения возникают из общих сходных элементов, которые лучше всего инкапсулируется моделью, выражающей сходство, присутствующее в различных конкретных реализациях. Упрощение, вносимое хорошим уровнем абстракции, позволяет с легкостью использовать повторно полезное понятие или метафору, при этом ситуации, когда это может быть точно применено, легко различимы.
 
Хорошая абстракция обобщает то, что можно сделать абстрактным; допуск специфики нарушает абстракцию и ее успешное применение требует приспособления к каждому уникальному требованию или проблеме.
 
Часто уровни абстракции организуются в иерархию уровней абстракции. [[Сетевая модель OSI]] содержит семь уровней абстракции. Каждый уровень модели OSI ISO инкапсулирует и рассматривает отдельную часть требований по организации связи, сокращая таким образом сложность соответствующих инженерных решений.
 
Известный [[афоризм]] Дэвида Уилера гласит: ''Все проблемы в информатике можно решить на другом уровне окольным путем'';<ref>
[http://www.dmst.aueb.gr/dds/pubs/inbook/beautiful_code/html/Spi07g.html Another level of indirection].
In Andy Oram and Greg Wilson, editors,
''Beautiful Code: Leading Programmers Explain How They Think'', chapter 17, pages 279–291279—291.
O'ReillyO’Reilly and Associates, Sebastopol, CA, 2007.
</ref>
это часто неверно цитируется с заменой "«окольного пути"» на "«абстракцию"». Продолжение от Кевлина Хенни гласит "...за«…за исключением проблем с большим уровнем косвенности."»
 
== Архитектура компьютера ==
 
== Ссылки ==
{{примечания}}
<references />
 
== См. также ==
* [[layer (object-oriented design)|Слой]] в объектно-ориентированном смысле
* [[Инкапсуляция (программирование)]]
* [[Абстракция данных]]
* [[Прозрачность]]
* [[Кольца защиты]]
* [[Программное обеспечение]]
* [[Интерфейс программирования приложений]]
* [[Инженерия программного обеспечения]]
* [[Аппаратное обеспечение]]
* [[База данных]]
* [[Компьютерная сеть]]
 
{{DEFAULTSORT:Abstraction Layer}}