Pull to refresh

Comments 10

В общем, спрошу у сообщества, как правильно перевести:

  • personal function / personal routine
  • landing pads
  • stack unwinding, раскрутка стэка (вроде как это вполне нормальный перевод, но до академического ему далеко)
  • throw, особенно в случае throwing function
  • call site
  • action table

В целом, стилистика текста довольно вольная, что позволяет использовать простые слова и всячески выкручиваться, но хотелось бы найти более корректный перевод.
call site — "точка вызова" функции
  • stack unwinding, раскрутка стэка — вполне корректный перевод, другого никогда не слышал
  • throw, особенно в случае throwing function — выбрасывать/бросать/генерировать (ещё иногда говорят «поднимать») исключение; функция, которая может сгенерировать/..., или функция, генерирующая/…
  • landing pads — посадочная площадка (явно термин из авиации). Даже из данной статьи ясно, что это место, куда «садится» выкинутое исключение, чтобы быть обработанным.
  • throwing function — кидалово :)
"Посадочная площадка" — это уже слишком.
В переводе книжки «Эффективный и современный С++: 42 рекомендации по использованию C++11 и C++14» Скотта Мейерса (в переводе Игоря Красикова) приводятся аргументы за то, чтобы переводить stack unwinding как "сворачивание стека", т.к. распространнённый варианты "раскрутка стека"/"размотка стека" и т.п. соответствуют неправильной метафоре — на самом деле стек именно "сворачивается", т.е. уменьшается, а не "раскручивается", т.е. увеличивается.
Да, в этом есть смысл, хотя кому как. В любом случае, чаще говорят именно "раскрутка". Я бы привел метафору, что в процессе работы стек скручивается из программ как комок из сотен нитей, соотвественно — обратный процесс — раскрутка.
По поводу "персональной функции".

Приведу цитату из LLVM manual:

Because different programming languages have different behaviors when handling exceptions, the exception handling ABI provides a mechanism for supplying personalities. An exception handling personality is defined by way of a personality function (e.g. __gxx_personality_v0 in C++), which receives the context of the exception, an exception structure containing the exception object type and value, and a reference to the exception table for the current function. The personality function for the current compile unit is specified in a common exception frame.

Исходя из этой цитаты, на мой взгляд, personality function не может переводиться как "персональная функция", а скорее как "функция, отражающая особенности [конкретного механизма исключений]". Но данный перевод теряет лаконичность оригинальной фразы. Поэтому возможно лучше оставить это словосочетание без перевода (например со сноской на детальное объяснение того, что это значит), так же, как вы поступили с landing pads.
Будет слишком много терминов на английском, так что предлагаю оставить как есть. Если читать с середины — все равно не понятно, а так — проще и лаконичнее. Что поделаешь, если в оригинале ее так называют.
Я о другом. Смысл искажается. Хотя конечно дело ваше.
Но хотя бы вставить пояснение того, что на самом деле означает слово "персональная" в этом контексте. А то ведь смысл этого слова в русском языке совсем не сочетается с тем, что имелось в виду в английском варианте.
Sign up to leave a comment.

Articles