Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Термин в человеко-компьютерном взаимодействии
Term in human–computer interaction
Любое изменение в вычислительной системе, такое как новая функция или новый компонент, считается прозрачным, если система после изменения максимально сохраняет предыдущий внешний интерфейс, при этом изменяя своё внутреннее поведение. Цель состоит в том, чтобы оградить от изменений все системы (или пользователей) на другом конце интерфейса. Сбивает с толку тот факт, что термин относится к общей невидимости компонента, а не к видимости его внутренних компонентов (как в случае с "белым ящиком" или открытой системой). Термин "прозрачный" широко используется в компьютерном маркетинге вместо термина "невидимый", поскольку "невидимый" имеет негативную коннотацию (обычно воспринимается как то, что пользователь не может видеть и не контролирует), в то время как "прозрачный" имеет положительную коннотацию (обычно ассоциируется с отсутствием скрытых элементов). В большинстве случаев термин "прозрачный" используется в вводящем в заблуждение смысле для обозначения фактической невидимости вычислительного процесса, который также описывается термином "непрозрачный", особенно в отношении структур данных. Из-за этого вводящего в заблуждение и противоречащего интуиции определения, современная компьютерная литература всё чаще предпочитает использовать термин "агностический" вместо "прозрачного". Термин особенно часто применяется по отношению к слою абстракции, который невидим для соседнего верхнего или нижнего слоя. Кроме того, в период примерно с 1969 года термин временно использовался в руководствах по программированию IBM и Honeywell для обозначения определённой техники компьютерного программирования. Код приложения считался прозрачным, если он был свободен от низкоуровневых деталей (например, управления устройствами) и содержал только логику, решающую основную задачу. Это достигалось посредством инкапсуляции – помещения кода в модули, скрывающие внутренние детали и делающие их невидимыми для основного приложения.
Any change in a computing system, such as a new feature or new component, is transparent if the system after change adheres to previous external interface as much as possible while changing its internal behaviour. The purpose is to shield from change all systems (or human users) on the other end of the interface. Confusingly, the term refers to overall invisibility of the component, it does not refer to visibility of component's internals (as in white box or open system). The term transparent is widely used in computing marketing in substitution of the term invisible, since the term invisible has a bad connotation (usually seen as something that the user can't see and has no control over) while the term transparent has a good connotation (usually associated with not hiding anything). The vast majority of the times, the term transparent is used in a misleading way to refer to the actual invisibility of a computing process, which is also described by the term opaque, especially with regards to data structures. Because of this misleading and counter intuitive definition, modern computer literature tends to prefer use of "agnostic" over "transparent". The term is used particularly often with regard to an abstraction layer that is invisible either from its upper or lower neighbouring layer. Also temporarily used later around 1969 in IBM and Honeywell programming manuals the term referred to a certain computer programming technique. An application code was transparent when it was clear of the low level detail (such as device specific management) and contained only the logic solving a main problem. It was achieved through encapsulation – putting the code into modules that hid internal details, making them invisible for the main application.
Примеры
Например, сетевая файловая система является прозрачной, поскольку она обеспечивает доступ к файлам, хранящимся удалённо в сети, единообразно с предыдущим локальным доступом к файловой системе, так что пользователь может даже не заметить этого при работе с иерархией папок. Ранний протокол передачи файлов (FTP) значительно менее прозрачен, так как требует от каждого пользователя освоить способ доступа к файлам через FTP-клиент. Аналогично, некоторые файловые системы обеспечивают прозрачное сжатие и распаковку данных, позволяя пользователям хранить больше файлов на носителе без специальных знаний; некоторые файловые системы прозрачно шифруют файлы. Такой подход избавляет от необходимости вручную запускать утилиты сжатия или шифрования. В разработке программного обеспечения также считается хорошей практикой разрабатывать или использовать слои абстракции для доступа к базам данных, чтобы одно и то же приложение могло работать с разными базами данных; в этом случае слой абстракции позволяет другим частям программы прозрачно обращаться к базе данных (например, см. шаблон "Объект доступа к данным"). В объектно-ориентированном программировании прозрачность достигается за счёт использования интерфейсов, скрывающих фактическую реализацию, выполненную с помощью различных базовых классов.
For example, the Network File System is transparent, because it introduces the access to files stored remotely on the network in a way uniform with previous local access to a file system, so the user might even not notice it while using the folder hierarchy. The early File Transfer Protocol (FTP) is considerably less transparent, because it requires each user to learn how to access files through an ftp client. Similarly, some file systems allow transparent compression and decompression of data, enabling users to store more files on a medium without any special knowledge; some file systems encrypt files transparently. This approach does not require running a compression or encryption utility manually. In software engineering, it is also considered good practice to develop or use abstraction layers for database access, so that the same application will work with different databases; here, the abstraction layer allows other parts of the program to access the database transparently (see Data Access Object, for example). In object oriented programming, transparency is facilitated through the use of interfaces that hide actual implementations done with different underlying classes.