Введение

Термин в человеко-компьютерном взаимодействии

Любое изменение в вычислительной системе, такое как новая функция или новый компонент, считается прозрачным, если система после изменения максимально сохраняет предыдущий внешний интерфейс, при этом изменяя своё внутреннее поведение. Цель состоит в том, чтобы оградить от изменений все системы (или пользователей) на другом конце интерфейса. Сбивает с толку тот факт, что термин относится к общей невидимости компонента, а не к видимости его внутренних компонентов (как в случае с "белым ящиком" или открытой системой). Термин "прозрачный" широко используется в компьютерном маркетинге вместо термина "невидимый", поскольку "невидимый" имеет негативную коннотацию (обычно воспринимается как то, что пользователь не может видеть и не контролирует), в то время как "прозрачный" имеет положительную коннотацию (обычно ассоциируется с отсутствием скрытых элементов). В большинстве случаев термин "прозрачный" используется в вводящем в заблуждение смысле для обозначения фактической невидимости вычислительного процесса, который также описывается термином "непрозрачный", особенно в отношении структур данных. Из-за этого вводящего в заблуждение и противоречащего интуиции определения, современная компьютерная литература всё чаще предпочитает использовать термин "агностический" вместо "прозрачного". Термин особенно часто применяется по отношению к слою абстракции, который невидим для соседнего верхнего или нижнего слоя. Кроме того, в период примерно с 1969 года термин временно использовался в руководствах по программированию IBM и Honeywell для обозначения определённой техники компьютерного программирования. Код приложения считался прозрачным, если он был свободен от низкоуровневых деталей (например, управления устройствами) и содержал только логику, решающую основную задачу. Это достигалось посредством инкапсуляции – помещения кода в модули, скрывающие внутренние детали и делающие их невидимыми для основного приложения.

Примеры

Например, сетевая файловая система является прозрачной, поскольку она обеспечивает доступ к файлам, хранящимся удалённо в сети, единообразно с предыдущим локальным доступом к файловой системе, так что пользователь может даже не заметить этого при работе с иерархией папок. Ранний протокол передачи файлов (FTP) значительно менее прозрачен, так как требует от каждого пользователя освоить способ доступа к файлам через FTP-клиент. Аналогично, некоторые файловые системы обеспечивают прозрачное сжатие и распаковку данных, позволяя пользователям хранить больше файлов на носителе без специальных знаний; некоторые файловые системы прозрачно шифруют файлы. Такой подход избавляет от необходимости вручную запускать утилиты сжатия или шифрования. В разработке программного обеспечения также считается хорошей практикой разрабатывать или использовать слои абстракции для доступа к базам данных, чтобы одно и то же приложение могло работать с разными базами данных; в этом случае слой абстракции позволяет другим частям программы прозрачно обращаться к базе данных (например, см. шаблон "Объект доступа к данным"). В объектно-ориентированном программировании прозрачность достигается за счёт использования интерфейсов, скрывающих фактическую реализацию, выполненную с помощью различных базовых классов.