Docu/ru/RuComments.odc

О переводе терминологии

Ф.В.Ткачев, 2009  ... этот документ имеер характер рабочего.


Некоторыепринципыпереводатерминологии
Модельобъектчтения/записи/отрисовки/...
Словарик


Первоначальная версия перевода документации системы Блэкбокс была выполнена усилиями свободногосообщества. Поэтому имеет место как неровное качество перевода, так и разнобой в терминологии. Ито, и другое потихоньку исправляется. 
Критику окончательных решений, принятых при составлении словаря, лучше всего направлять на эту ветку форума. Или на адрес info21@inr.ac.ru. 
Предполагается, что критика взвешенно учтет аргументы, сформулированные ниже.
За ряд небанальных замечаний aвтор признателен С.Ю.Губанову, а также всем участникам вышеуказанной ветки форума.


Некоторые принципы перевода терминологии

Приводимые ниже принципы не являются попарно непротиворечивыми, и найти удачный баланс бывает трудно, но приходится пытаться.
Одни слова возбуждают смысл в голове мгновенно, рефлекторно, причем смысл этот может оказаться не совсем тот, который желателен. 
Другие для своей интерпретации требуют усилия, часто неосознаваемого, о чем интуитивно знает каждый преподаватель, объясняющий смысл конструкций языка программирования, давая их сначала на родном языке:
	ПОКА выполняется условие ДЕЛАТЬ список инструкций КОНЕЦ.

Общие требования: термины должны быть удобными  точными, ясными, доходчивыми и по-возможности краткими. 
	Требование ясности и доходчивости подразумевает, при прочих равных, предпочтительность слов родного звучания и происхождения, именно такие слова возбуждают смысл в голове напрямую. (С.Ю.Губанов напомнил, что наличие родной терминологии для некоторой области деятельности отражает степень освоенности этой области; ср. старые типографские термины выключка, отбивка с какими-нибудь новыми программерскими паттернами и рефакторингом.)
	Требование точности может означать нежелательность использования широко употребительных слов с ветвистым кустом значений, особенно эмоциональных или способных вызвать ошибочные ассоциации.
	Требование удобства подразумевает вписанность термина в грамматическую систему языка, иначе теряется гибкость выражения и дополнительные усилия тратятся на интерпретацию текста. Для этого может понадобиться придумать новое слово (как Д.Б.Подшивалов придумал массивовый тип; см. словарик ниже), что само по себе не может служить основой отрицания.
	Требование точности подразумевает разведение смыслов многозначных слов.
	Удобство, с другой стороны, придает немалый дополнительный вес варианту перевода, фонетически близкому к оригиналу (глубина влияния чистой фонетики на выбор перевода видна, например, в случае термина string; см. словарик ниже). 
Критерию фонетической близости удовлетворяет транскрипция. 
Японская культура дает яркий пример незакомплексованной ассимиляции иноязычной терминологии в родной язык, что, впрочем, сильно облегчается нефлективной структурой японского языка. 
В русской культуре тоже существует традиция, идущая от первых иностранных академиков, почти не знавших русский язык; эта традиция состоит в том, чтобы широко  зачастую без особой нужды  использовать транскрипции иноязычных слов (в том числе для передачи неспециальных смыслов). 
С одной стороны транскрипции удобны, т.к. при этом разводятся значения (размытое бытовое и точное терминологическое). 
С другой стороны, результатом нередко бывает избыточная громоздкость. 
В-третьих, этим иногда откровенно злоупотребляют для надувания щек (в том числе и бессознательно, а также коллективно). 
В-четвёртых, как часть этой традиции имеем боязнь показаться несерьезными-ненаучными-некультурными-отсталыми (бытовщина) из-за использовании ярких словечек родного происхождения в научно-технических текстах. 
Но та же типографская отбивка доказывает ровно обратное.
Короче, традиция неоднозначная.

Несерьезные требования имеют характер вкусовщины, когда непривычность уху выставляется впереди всех остальных требований. Возьмем клик и щелк как варианты передачи click. Понятие очень узкое, специфическое, и брать для его передачи общеупотребительное и эмоционально окрашенное щелчок  несколько странно. 
Ведь понятия надо бы разводить, а не грузить общеупотребительное слово специальными новыми смыслами. 
Каким бы корявым ни казался поначалу клик, корявость  исключительно дело привычки: какая-нибудь типографская шпация ничем в этом плане не лучше. 
Зато клик не имеет пересекающихся контекстов с редким русским кликать, но имеет фонетическое сходство с английским оригиналом, а это само по себе сильный фактор.
Справочная служба русского языка даёт взвешенную рекомендацию употреблять клик, четко соблюдая специальное управление (клик по). (Они еще советуют заключать слово в кавычки, но это слишком неудобно и само отпало, мы честно пытались.) 
Короче, сама по себе непривычность для уха, вызывающая негативные реакции сугубо по причине своей непривычности,  скорее, последний аргумент, а не первый.


Модель объект доступа/чтения/отрисовки/...

Эта удобная модель построения русскоязычных терминов для важного класса понятий, используемых в проектировании программного обеспечения, абстрагирована из диссертации А.Е.Недори (Институт систем информатики им. А.П.Ершова СО РАН); ссылка: http://www.kronos.ru/literature/nedorya/cand.4. 
Используется у нас неоднократно.
Достоинства модели  гибкость, универсальность, нейтрально-деловое звучание.
Недостаток  два слова там, где в оригинале одно (rider = объект доступа).
Поэтому нередко удобно официальный термин, построенный по этой модели, дублировать жаргонным вариантом (объект доступа/бегунок для rider, объект отрисовки/вьюшка для view). Для парадных ситуаций используется длинный официальный вариант; для рутинных обсуждений  жаргонный. Кроме того, возможность использовать дополнительный синоним способствует ясности изложения в некоторых сложных ситуациях.


Словарик
В список в первую очередь включаются термины, вызвавшие у переводчиков затруднения.

BlackBox  [система] Блэкбокс. Не прижились варианты вроде БлекБокс.

BlackBox Component Builder  [система] Блэкбокс.

BlackBox Component Framework  [компонентный] каркас системы Блэкбокс. 

framework  [компонентный] каркас, компонентная среда. В сущности, обобщение понятия библиотека процедур, в котором добавлены типы (классы) и, самое главное, протоколы взаимодействия типов (допустимые последовательности вызовов соответствующих процедур-методов). Слово каркас по-другому практически не употребляется в компьютерной литературе, что делает его удобным для данного случая.

component  компонент; компонентный. Мужской род существительного для сферы информационных технологий установлен стандартом ГОСТ 34.003-90. См.
http://ru.wikipedia.org/wiki/. Однако здесь речь только о компонентах программной системы. В любых других случаях (математика, компоненты записей и т.п.) используется женский род.

component-oriented programming  компонентно-ориентированное программирование. Следующий после объектно-ориентированного программирования шаг в развитии технологий программирования. Подробнее см. статью на сайте проекта Информатика-21: http://www.inr.ac.ru/~info21/info/qtocop.htm

refactoring  переработка, реструктуризация, рефакторинг (re-fac- = пере-дел-). Вариант перевода рефакторинг уже заметно укоренился (причем инструменты рефакторинга стали даже своеобразным фетишем программистов-профессионалов или желающих казаться таковыми). Но заметим, что если речь о компонентных каркасах, то рефакторинг не несет никакого нового смысла по сравнению с переработкой и тем более с реструктуризацией. Ктому же есть глагол refactor, который громоздко (да и странновато) переводить как выполнять рефакторинг. 
Куст глагола refactor хорошо укоренен в структуре английского языка, там он уместен  и, что важно понимать, неизбежен, т.к. хорошего универсального эквивалента для русской переработки в английском, как ни странно, нет. Хотя есть restructuring, который употребителен при разговоре о реструктуризации долгов,  но также и корпоративного управления, что на каком-то уровне абстракции близко по смыслу к реструктуризации компонентного каркаса.

view  объект отрисовки; вьюшка. 
Это один из центральных и постоянно употребляемых терминов системы Блэкбокс, вызвавший наибольшие затруднения и долгие диспуты. Предлагались отображение, представление, вид, позже более удачное изображение. 
Последним найден вариант объект отрисовки. Он привлекателен тем, что, во-первых, абсолютно точно передает смысл: речь в точности об объектах, основной функционал которых  отрисовывать изображение на экране/бумаге. Во-вторых, отрисовка совершенно не нагружена посторонними смыслами, в том числе нет путаницы между процессом и его результатом (как с изображением), а также с основными математическими терминами (как с отображением).
Формальный термин объект отрисовки построен по стандартной модели. С другой стороны, неформальный перевод вьюшка доказал свою неизбежность и удобство в работе  благодаря фонетической близости английскому оригиналу, родному звучанию (что особенно важно в преподавании), а также благодаря своей краткости: есть пример, когда в абзаце из неполных восьми строк этот термин встречается десять раз. Однако вьюшка еще недостаточно привычна, а по звучанию слишком неформальна, чтобы оставаться без парадного прикрытия, коим и служит объект отрисовки.
Если неформальное звучание вьюшки вызывает неприязнь, то следует подумать, почему еще большей неприязни не вызывает мышка на столе.

frame  фрейм. Есть адвокаты и у перевода кадр: почему-то считается, что это родное слово и хороший русский язык, в отличие от фрейма. Нет сомнения, что в первой лекции по отрисовыванию вьюшек, объясняя, что такое f: Views.Frame, полезно сослаться на фото- или кино- кадр. Однако фонетическое сходство пробивает себе дорогу и в менее очевидных случаях (см. ниже о string). В данном случае похоже, что постоянное торчание конструкта f: Views.Frame на виду в соответствующих контекстах побеждает приверженность к хорошему русскому языку. Тем более, что есть и процедурный фрейм (не говоря о фреймах в психологии).

type safety  защищенность типов, защита типов. Часто это переводят почти буквально как безопасность типов, что ошибочно (и это ошибка хроническая у переводчиков-непрофессионалов), т.к. русская конструкция с родительным падежом привносит мешающие смысловые оттенки туда, где в оригинале применен совершенно абстрактный compound. Защищенность или защита сразу и точно возбуждает в голове правильный смысл (ведь речь именно о защите переменных от ошибочного присваивания им значений чуждых типов). Защита как особый девайс явно фигурирует в семантическом поле английского слова safety (смотреть нужно, конечно, английские толковые словари: ... 2. A device designed to prevent accidents ... 3. Footbal. ... One of two defensive backs; a safetyman. 4. Slang. A condom.). 

basic type  элементарный тип, атомарный тип. У слова основной слишком размытое значение, а здесь важно подчеркнуть неделимость, в отличие от составных типов. Н.Вирт в учебниках тоже вынужденно употребляет elementary и atomic вместо туманного basic. Перевод базовый тип лучше сохранить для ситуации с указателями.

base type  1. базовый тип, тип-база, если речь идет о типе, для которого определяется соответствующий указатель; 2. то же, что и basic type (англоговорящие тоже путаются в подобных случаях). 

array type  массивовый тип. Удачно придумано Д.Б.Подшиваловым (перевод старой версии книги Н.Вирта Алгоритмы и структуры данных, 1989). Такой способ перевода наиболее точно соответствует грамматической структуре русского языка, что обеспечивает необходимую гибкость и точность выражения. Можно надеяться, что с 1989 г. прилагательное массивовый утратило налет непривычности. Вариант тип массив неграмматичен и потому неудобен, а тип массивов (опять этот неуместный родительный падеж) лучше оставить для ситуаций, где обсуждается тип конкретных массивов.
Во всяком случае употребляются эти термины (массивовый и записевый) не так часто, но зато в контекстах, где требуется полная ясность (определения и правила языка).

array variable  переменная-массив, массивовая переменная. В данном случае конструкция переменная-массив точно передает смысл. Но нет вреда и от единообразного варианта массивовая переменная.

record type  записевый тип. (Ср. замечание об array type. Странно, что Подшивалов использовал чуть другой вариант: записной.)

record variable  переменная-запись, записевая переменная; ср. array variable. 

type-bound procedure  процедура, связанная с типом (т.е. метод  method). 

extension  расширение, расширенное переопределение (типов: type extension); переопределение (методов); реализация (абстрактных типов и методов). 
extend  расширять (типы); переопределять (методы); реализовывать (абстрактные сущности) 
В случае методов (процедур, связанных с типами) вариант переопределение наиболее точно соответствует современному (полученному в многолетнем опыте) пониманию ограничений, которых следует придерживаться при использовании механизмов ООП (отказ от супервызовов и от наследования реализации в пользу композиции). И если заботиться о повышении культуры будущих программеров, то лучше сызмала внедрять в юные умы переопределение.
В случае абстрактных типов и методов следовало бы говорить, если стремиться к точности, о реализации. 
Однако трудно предотвратить использование производных от корня расшир- во всех случаях. Тут речь о разных сторонах единого механизма, так что неудивительна тенденция (в текстах на всех языках) к использованию одного общего термина. С другой стороны, разные стороны тоже нужно различать, а термин для общей идеи, в общем, есть  полиморфизм.

static typing  статическая типизация.

log  [рабочий, системный] журнал. Изначально logbook  бортовой журнал на корабле, куда записывались показания лога  девайса для измерения скорости вместе с показаниями хронометра, астролябии, сведениями о ветрах и штормах и т.п.

persistent  сохраняемый. См. http://www.lingvoda.ru/forum/actualthread.aspx?tid=4130. 

lazy initialization  ленивая инициализация. Более формальный вариант: отложенная.

factory function, object  фабричная функция, фабричный объект; фабрика.

maintainability  сопровождаемость.

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

maintainability  сопровождаемость. Понятие родственное, но более узкое, чем развиваемость. 
Развиваемость, переделка/рефакторинг <-> сопровождаемость, исправления/корректировка.

string  цепочка (литерная цепочка или цепочка литер). Будем предпочитать цепочку. Строка путается с переводом на новую строку в командах печати и форматирования текстов, а также нехороша в случае terminal string в компиляторном контексте. 
Хотя прилагательное строковый поудобней произносить, чем цепочечный, ну и есть фонетическое сходство str и стр.
Видим силу влияния фонетики на терминологию, которое играет тем сильнее, чем меньше обученность и смысловая щепетильность говорящего. Это, похоже, подтверждается 
1) важностью варианта цепочка прежде всего для специальных тем, где народ более щепетильный (форматирование текстов и построение компиляторов); 
2) частым употреблением строки в мануалах, переведенных нещепетильными переводчиками-партизанами. Явно от старинных мануалов для Турбо Паскаля и qbasic'а тянется след строки к школьным учебникам и учителям.

string resource  текстовый ресурс
resource file  файл (текстовых) ресурсов

character  литера. Не буква (что слишком неточно) и не символ (слишком общий термин; пусть останется философам и компиляторщикам). Прилагательное: литерная.
Однако для специальных литер (управляющих и т.п.) обычно сохраняется слово символ: символ табуляции и т.п. 

terminating character  завершающая литера.

control codes  управляющие символы (псевдо-литеры без изображения).

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

target (variable, type)  целевая (переменная, тип). Переменная (и ее тип),  в которую должен быть записан результат (обычно переменная в левой части оператора присваивания).

wrapper  обертка.

precondition, postcondition  предусловие, постусловие.

forward declaration  упреждающее объявление.

boolean  логический, булевский. Возможно, следует предпочесть вариант логический. Но исключить булевский при всюду торчащем BOOLEAN трудно (конкретных противопоказаний здесь, в отличие от строки, нет).

constant  константа, константный, если речь идет о понятии языка (сущности, описанные в разделах CONST), а не о математических постоянных.

constant expression  константное выражение, т.е. построенное из констант и допускающее вычисление при компиляции.

disclaimer  отказ от ответственности. 

information hiding  упрятывание информации. 

embedded  вставленный, внедренный, вложенный, встроенный. При работе в Блэкбоксе чаще всего речь идет о какой-нибудь вьюшке, вставленной в текст, форму или другой составной документ.

rider  объект доступа, бегунок. 

reader|writer  объект чтения|записи.

icon  иконка. У иконки очень сильные позиции в народе. Microsoft, признавая устойчивость иконки, упирают на значок  но ведь им нельзя ошибиться в плане политкорректности.

click  cущ. клик; глагол кликнуть по. Принимаем этот вариант как основной, имея в виду взвешенные рекомендации Справочной службы русского языка, но ставить слово всюду в кавычки нереально.
Переводчики использовали также майкрософтовский щелчок; щелкать (см. ниже Обсуждение). 
double-click  дважды кликнуть; в инструкциях: двойной клик
right-click  кликнуть правой кнопкой мыши; в инструкциях: правый клик
В инструкциях-описаниях действий: двойной клик по имени модуля, правый клик, Документация.
 (кликнуть по стрелке, чтобы закрыть)
Обсуждение 
Диспуты. Насчет click'а поломано немало копий. Ср. многолетнюю дискуссию в Ассоциации лексикографов Lingvo, форум Школа технического перевода, ветка Kuzmin. Подумайте еще раз о кликах? 
Смысл термина. Кликнуть по (чему-то на экране)  навести курсор мыши на (что-то) и однократно быстро нажать и отпустить левую кнопку мыши. 
Понятие конкретное, специфическое и слишком часто употребляемое, чтобы можно было обойтись без явного слова, именно это понятие обозначающего. 
Благозвучность и т.п. Мышь  тоже слово странное в официальном техническом контексте. Но прижилось, ибо без него обойтись трудно.
Интерференция с родным русским кликать/звать ничтожна, т.к. кликать не является общеупотребительным и бытует только в специфических контекстах.
Почему не щелк-. Щелкать  слишком общеупотребительное слово в русском языке, притом прочно связанное с эмоционально окрашенной фразеологией (щ. по лбу, по носу, не щелкай клювом). 
Щелк- навязывает Майкрософт, однако в их переводческой политике сильно дают себя знать опасения быть обвиненными в засорении русского языка, и они перестраховываются.
Почему не нажать и т.п. обороты. Пример: инструкция в начале обсуждения кликнуть по стрелке, чтобы закрыть. Нажать стрелку? Все время изворачиваться, чтобы передать одно и то же конкретное понятие, утомительно. Есть специальное понятие  нужен специальный термин. 
Цитата из вышеупомянутой ветки форума:
... ввод слова "клик" именно в жаргонном значении позволил бы решить кучу проблем  получилось бы узкоспециализированное слово, обозначающее нажатие кнопки мыши при наведенном на цель (ссылка/кнопка) курсоре.
Обсуждение (кликнуть по стрелке, чтобы открыть/закрыть)

permanent  сохраняемый, т.е. такой, который может сохраняться на диске между запусками среды или компа.

source (text, code)  исходник; исходный текст. Нет никакой причины не использовать исходник всюду: термин недвусмысленный, нейтральный, удобный и уже знакомый даже детям.

Used internally.  Для внутреннего использования в каркасе Блэкбокса.

guard  охрана; процедура охраны (для команд меню и т.п.). 
dirty  грязное (об окне, в котором показывается документ, претерпевший изменения, которые, вероятно, надо сохранить).
caret  (текстовый) курсор. 

interactor  интерактор, т.е. переменная (обычно запись), в которую записываются данные, вводимые / показываемые в элементах управления диалогового окна.

stamp  штамп, специальная вьюшка (StdStamps).

Из модуля Stores:
Store  объект хранения
internalize  загрузить
еxternalize  выгрузить
alien  неопознанный

Из модуля Dialog:
control  элемент управления (широко применяется в комьпютерной литературе)
mapped string  настроенная литерная цепочка
resource file  файл (текстовых) ресурсов
notifier  уведомитель (процедура или объект), т.е. процедура, которая вызывается при изменении элемента управления в диалоге; см. ******* 
combo box control  элемент управления с выпадающим списком
node  узел (для орграфов; напр., Ф.А.Новиков, Дискретная математика, 2-е изд., Питер) //было: вершина

status bar  строка текущего состояния (http://lingvo.yandex.ru/)
menu bar  строка меню (http://lingvo.yandex.ru/)
title bar  строка заголовка (http://lingvo.yandex.ru/) 

interactor  (запись-) интерактор. Запись, поля которой служат для хранения значений, показываемых в диалоговых окнах Блэкбокса. Они связаны с соответствующими элементами управления соответствующих диалоговых форм.

property sheet  редактор свойств. Термин встречается в документации Блэкбокса. Буквально: листок/страница свойств. Для объектов, находящихся в фокусе, через контекстное меню обычно можно вызвать (команда Properties.../Свойства...) диалоговое окно, позволяющие менять параметры (свойства) объектов. Вот это диалоговое окно, в котором видны значения параметров (свойств), и называется property sheet.

property editor  редактор свойств. В сущности, то же, что и property sheet. (коммент про "тоже устают")

tab  закладка. 

deep copy  глубокая копия. При копировании динамической структуры данных, связанной указателями, можно копировать указатели, а можно полностью копировать и сами записи. Если копируются все записи, составляющие структуру, то это и есть глубокая копия. 

shallow copy  почти антоним к глубокой копии. 

deposit  понятие каркаса Блэкбокса. Означает создание объекта и постановку его в некую глобальную очередь (вроде системного буфера копирования) для последующего открытия в отдельном окне или для вставки в документ-контейнер.

pop-up menu  выпадающее меню

run-time environment  среда выполнения (программ). Совершенно нет нужды явно упоминать здесь время.

выполнение предпочитаем исполнению (т.к. обычно говорим выполнить программу)

linking  связывание. Связывание (а не компоновка или сборка) точнее передает суть дела в нашем, динамическом случае (dynamic linking), когда модули по мере необходимости загружаются в разное время в разные области памяти и каждый раз взаимно связываются соответствующими указателями. 
Старые термины компоновка, сборка описывает архаичную ситуацию (static linking), когда программа с необходимыми библиотеками собирается в непрерывный блок двоичных данных (exe-файл и т.п.), который целиком грузится в память и выполняется.
То есть: статическая  сборка; динамическое  связывание.

Directory  фабричный объект (номенклатура книжки Гамма и др. "Паттерны...")
subdirectory  папка, подпапка


Типографские термины

header, running head  колонтитул
font  шрифт
typeface  гарнитура
size  кегль
leading  отбивка


hotkey  горячая  (устоявшийся перевод, даётся в словарях). Неплохо, но слишком длинно: комбинация/клавиша быстрого вызова.

Drag & Drop, drag-and-drop, drag-n-drop  как существительное, обозначающее понятие из области интерфейсов человек-компьютер, хорошего перевода не имеет. Словать http://lingvo.yandex.ru/ даёт варианты: перетаскивание, перенос с последующим высвобождением, буксировка. Ч   , употребляется    как цельный иероглиф.
Глагол drag (как описание действия мышкой)  бросить, перетащить (мышкой).

Drag & Pick  механизм, введённый в Блэкбоксе. Перетащить-и-подобрать/взять/позаимствовать (атрибуты текста-цели).


selection  выделенный фрагмент, выделенный текст, выделение? (встречалась маркировка)
clipboard  буфер обмена


focus view  объект отрисовки, находящийся в фокусе; владеющий фокусом; вьюшка в фокусе. Это вьюшка, в данный момент интерпретирующая сигналы от  клавиатуры и мыши. Это может быть текстовый документ в переднем окне. Или это может быть вьюшка, вставленная в текст. В последнем случае вьюшка выделяется специальной рамкой со штриховкой по периметру.
focus  фокус. Сокращение от focus view.
to focus (a view)  установить фокус на (вьюшку); передать фокус (вьюшке)

restore (a view)  отрисовать (вьюшку)
restoration  отрисовка

edit  правка, редактирование

disable  отключить; дезактивировать

factory  фабрика, фабричный (см. Гамма и др. Шаблоны...).

modifier key  клавиша-модификатор (Ctrl в Windows, Option в Mac OS)
keyboard modifiers  ....... Shift, Alt etc.

scroller  объект прокрутки.


drag  

string constant  

search string  

blank space  пробел(ы), белые литеры?

change propagation  распространение изменений?



*****************************
*****************************

Документ System//User-Man
layout  эскиз 
String resource  текстовый ресурс
converter  конвертер


Stationary  шаблон?

property sheet  список свойств (обычно диалог-инспектор)



manifest file  нет перевода.

default button  кнопка-по-умолчанию

*****************************
*****************************
   ?        .

" " -    ,      ,     . 
*****************************
*****************************