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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
Addbot (обсуждение | вклад)
м Перемещение 10 интервики на Викиданные, d:q1200992
Нет описания правки
Строка 7: Строка 7:
В операционной системе Unix большинство типов операций ввода-вывода рассматриваются как потоки байтов, считываемые или записываемые на [[Компьютерная техника|устройство]]. Эта модель потока байтов используется для ввода-вывода в [[файл]], [[Сокет (программный интерфейс)|сокет]] и [[компьютерный терминал]], чтобы обеспечить независимость от устройства ввода-вывода. Для чтения и записи в устройство на уровне приложения программа вызывает функцию открытия устройства, которое может соответствовать реальному устройству, например, терминалу или [[/dev|виртуальному устройству]], например, [[сетевому порту]] или файлу в [[Файловая система|файловой системе]]. Физические характеристики устройства передаются операционной системе, которая, в свою очередь, предоставляет абстрактный [[интерфейс]], позволяющий [[программист]]у считывать и записывать [[байт]]ы в устройство. Операционная система затем выполняет действительное [[преобразование]], необходимое для чтения и записи потока байтов в устройство.
В операционной системе Unix большинство типов операций ввода-вывода рассматриваются как потоки байтов, считываемые или записываемые на [[Компьютерная техника|устройство]]. Эта модель потока байтов используется для ввода-вывода в [[файл]], [[Сокет (программный интерфейс)|сокет]] и [[компьютерный терминал]], чтобы обеспечить независимость от устройства ввода-вывода. Для чтения и записи в устройство на уровне приложения программа вызывает функцию открытия устройства, которое может соответствовать реальному устройству, например, терминалу или [[/dev|виртуальному устройству]], например, [[сетевому порту]] или файлу в [[Файловая система|файловой системе]]. Физические характеристики устройства передаются операционной системе, которая, в свою очередь, предоставляет абстрактный [[интерфейс]], позволяющий [[программист]]у считывать и записывать [[байт]]ы в устройство. Операционная система затем выполняет действительное [[преобразование]], необходимое для чтения и записи потока байтов в устройство.


Большинство графических [[Библиотека (программирование)|библиотек]], например, OpenGL, предоставляют в качестве интерфейса абстрактную графическую модель. Библиотека отвечает за трансляцию команд, данных программистом, в специальные комадны устройства, необходимые для рисования графических элементов и объектов. Специальные команды устройства для [[Графопостроитель|графопостроителя]] отличаются от команд устройства для [[Электронно-лучевой прибор|ЭЛТ]] [[Монитор (устройство)|монитора]], но графическая библиотека скрывает зависящие от устройства детали реализации, предоставляя абстрактный интерфейс, содержащий набор [[Примитивный тип|примитивов]], общеупотребимых для рисования графических объектов.
Большинство графических [[Библиотека (программирование)|библиотек]], например, OpenGL, предоставляют в качестве интерфейса абстрактную графическую модель. Библиотека отвечает за трансляцию команд, данных программистом, в специальные команды устройства, необходимые для рисования графических элементов и объектов. Специальные команды устройства для [[Графопостроитель|графопостроителя]] отличаются от команд устройства для [[Электронно-лучевой прибор|ЭЛТ]] [[Монитор (устройство)|монитора]], но графическая библиотека скрывает зависящие от устройства детали реализации, предоставляя абстрактный интерфейс, содержащий набор [[Примитивный тип|примитивов]], общеупотребимых для рисования графических объектов.


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

Версия от 14:16, 1 октября 2013

Типичное представление архитектуры компьютера в виде последовательности уровней абстракции: аппаратного обеспечения, прошивки, языка ассемблера, ядра операционной системы, операционной системы и приложений (см. также[1]).

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

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

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

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

Хорошая абстракция обобщает то, что можно сделать абстрактным; допуск специфики нарушает абстракцию и ее успешное применение требует приспособления к каждому уникальному требованию или проблеме.

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

Известный афоризм Дэвида Уилера гласит: Все проблемы в информатике можно решить на другом уровне окольным путем;[2] это часто неверно цитируется с заменой "окольного пути" на "абстракцию". Продолжение от Кевлина Хенни гласит "...за исключением проблем с большим уровнем косвенности."

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

С точки зрения архитектуры компьютера система часто представляется моделью из пяти уровней абстракции: компьютерная техника (см. Слой аппаратных абстракций), прошивками, языком ассемблера, ядр операционной системы и приложений.[1]

Ссылки

  1. 1 2 Tanenbaum, Andrew S. Structured Computer Organization. — Englewood Cliffs, New Jersey : Prentice-Hall, 1979. — ISBN 0-13-148521-0.
  2. Diomidis Spinellis. Another level of indirection. In Andy Oram and Greg Wilson, editors, Beautiful Code: Leading Programmers Explain How They Think, chapter 17, pages 279–291. O'Reilly and Associates, Sebastopol, CA, 2007.

См. также