НА ГЛАВНУЮ НАЗАД
КОМПЬЮТЕРЫ
ПЕРИФЕРИЯ
НОВЫЕ ТЕХНОЛОГИИ
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
ИНТЕРНЕТ
КОМПЛИТ
КОМПЬЮТЕРНАЯ ГАЗЕТА
     
1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 . 11 . 12

Трудности перевода и не только - ссылки

Владимир Лидовский (г. Ожерелье, Московская обл.)

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

Что такое ссылка? Это тип, переменная, параметр подпрограмы или не то, и не другое? Почему в одних языках ссылки противопоставляются указателях, в других мирно с ними сосуществуют, а в третьих даже не называются ссылками? Почему при изучении переводов с английского на русский нельзя не заметить очевидной некорректности перевода этого понятия? Всем, кто знаком с языками программирования не понаслышке, предоставляется возможность пройти небольшой (при анализе примеров) интеллектуальный тренинг ;-) Надеюсь также, что эту статью прочитают те, кто переводит на русский язык литературу по программированию.

Одно из самых неоднозначных понятий языков программирования - это понятие ссылки. Языки С++, Паскаль и Java вводят разные парадигмы для использования этого термина. Другие языки также разбиваются по этому критерию на три группы. Например, ссылочный тип в смысле Паскаля имеется в Аде, а ссылки в смысле Java - в Лиспе, PHP, современном Бэйсике и других. Запутанности добавляет то, что ссылочный тип в смысле Паскаля в С/С++ так никогда не называется. Последнее, а также сам факт наличия "ссылочного типа" в Паскале или Аде связаны с особенностями перевода документации по языкам программирования на русский язык. Почему-то сложилась практика в материалах о Паскале переводить слово pointer (type) как ссылочный тип, а при переводе этого же слова в материалах по С/С++/Java/... использовать слово "указатель". Еще большая путаница возникает из-за того, что в материалах по Паскалю передача параметров по ссылке (by reference) переводится именно как передача по ссылке, что приводит к отсутствующей в исходных англоязычных материалах коллизии между понятием типа указателей и такой передаче параметров.

Почему с переводом слова "ссылка" возникает столько проблем? Если отвлечься от относящегося к пенитенциарной системе смысла, то существительное "ссылка", как производное от "ссылаться" весьма точно соответствует английскому существительному "a reference", связанному с глаголом "to refer". Однако в отличие от английского языка в русском это слово не полностью формально определено в словарях. В ссылочной теории смысла (The referential theory of meaning) рассматривается регулярный процесс появления идей одних сущностей при наблюдении за другими сущностями. Например, при виде дыма естественно подумать об огне. То, что наблюдается, в разных контекстах называют знаком, символом, ссылкой, означающим, денотатом. То, о чем можно подумать, - смыслом, значением, означаемым, десигнатом. В приведенном примере дым является ссылкой на огонь, так же, как подпись является ссылкой на подписавшегося.