Категории

Язык
Аспект языка

14 сентября 2016 г. 20:19 (ред. 20 сентября 2016 г. 15:34)
Что за слово такое «comprehension» и почему оно вызывает трудности с переводом на русский язык.
Сегодняшнее слово, пожалуй, одно из тех, что бьёт рекорды толкований. Вариантов перевода, включая калькирование, можно насчитать штук пять, или того больше, некоторые даже напрямую используют английское слово. Сам грешен, в позапрошлогоднем переводе выступления Брендона Родеса «Всех уток разом: Структуры данных в стандартной библиотеке и не только» я назвал их «свёртываниями». Теперь настало время для работы над ошибками.

Просто на случай, если вам до сих пор непонятно о чём речь, пример кода, в котором список (словарь, множество) формируется при помощи выражения. В данной статье будет рассмотрена проблема русского наименования выражений такого типа (англ. list comprehensions, dict comprehensions, set comprehensions).

# Сформируем список my_list при помощи выражения.
my_list = [i*2 for i in range(4)]
my_list # [0, 2, 4, 6]

Прежде всего давайте рассмотрим несколько вариантов переводов «list comprehension», возможно средни них найдётся тот, который нас устроит.

Список создаётся при помощи comprehension.Наверняка можно отыскать русское слово.
Список создаётся при помощи комперехеншена.Калька и введение нового термина. Должен быть способ лучше.
Список создаётся при помощи генератора списка.Но мы то знаем, что такое генераторы. Здесь они к чему? В оригинале о связи с генераторами ни слова. Ср. «генераторные выражения».
Список создаётся при помощи постижения списка.Явно неудачная попытка открыть англо-русский словарь.
Список создаётся при помощи спискового включения.Что куда включаем? Пока непонятно.
Список создаётся при помощи абстракции списков.Что от чего абстрагируем?

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

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

Если присмотреться повнимательнее, то мы увидим, что переводчики используют англо-русские словари, в которых в качестве перевода обычно предлагаются: понимание, осмысление, охват, полнота. Теперь понятно откуда берутся всякие постижения, а может и включения.

С генераторами и моим прежним «свёртыванием» тоже более-менее ясно — это попытка описания процесса без прямого перевода. В первом случае — под генерацией имеется в виду создание налету; во втором — компактность записи представления будущего списка.

А теперь давайте воспользуемся хитростью, которой обычно учат всех студентов лингвистических факультетов где-то в районе второго курса — откроем английский толковый словарь. У меня в словаре Collins, среди значений нашлось следующее:

2) the state of including or comprising something; comprehensiveness


Эй, здесь мы тоже видим полноту, — вероятно воскликните вы. Это так, но здесь также имеется разъяснение качества этой полноты, которая скорее «наполненность», чем «полнота». В определении говорится, что «comprehension» — это включение чего-то (а может это имели ввиду авторы перевода «списковые включения»?) во что-то, а также составления чего-то из чего-то.

Это определение нам подходит — наше выражение позволяет создать/составить объект из элементов.
Давайте подумаем, возможно в русском уже есть слово с нужной семантикой. Первое, что приходит на ум мне, кроме собственно «составления» — это «компоновка».

И я полагаю, что «компоновка» — это удачный вариант по нескольким причинам: 1. совпадение смысловой нагрузки; 2. не является многословным переводом; 3. имеет общий с «comprehension» «собирательный» префикс «ком-», что увеличивает шансы на успешное сопоставление оригинала и перевода.


Сравните
Список создаётся при помощи спискового включения.Список создаётся при помощи компоновки.

Если у вас есть ещё варианты плохих переводов, оставляйте их в комментариях. Если у вас есть варианты хороших переводов — обязательно оставляйте их в комментариях.


Пользуйтесь компоновками. И помните: бывают ещё компоновки словарей и множеств.