Comments 10
В общем, спрошу у сообщества, как правильно перевести:
В целом, стилистика текста довольно вольная, что позволяет использовать простые слова и всячески выкручиваться, но хотелось бы найти более корректный перевод.
- personal function / personal routine
- landing pads
- stack unwinding, раскрутка стэка (вроде как это вполне нормальный перевод, но до академического ему далеко)
- throw, особенно в случае throwing function
- call site
- action table
В целом, стилистика текста довольно вольная, что позволяет использовать простые слова и всячески выкручиваться, но хотелось бы найти более корректный перевод.
call site — "точка вызова" функции
- stack unwinding, раскрутка стэка — вполне корректный перевод, другого никогда не слышал
- throw, особенно в случае throwing function — выбрасывать/бросать/генерировать (ещё иногда говорят «поднимать») исключение; функция, которая может сгенерировать/..., или функция, генерирующая/…
В переводе книжки «Эффективный и современный С++: 42 рекомендации по использованию C++11 и C++14» Скотта Мейерса (в переводе Игоря Красикова) приводятся аргументы за то, чтобы переводить stack unwinding как "сворачивание стека", т.к. распространнённый варианты "раскрутка стека"/"размотка стека" и т.п. соответствуют неправильной метафоре — на самом деле стек именно "сворачивается", т.е. уменьшается, а не "раскручивается", т.е. увеличивается.
По поводу "персональной функции".
Приведу цитату из LLVM manual:
Исходя из этой цитаты, на мой взгляд, personality function не может переводиться как "персональная функция", а скорее как "функция, отражающая особенности [конкретного механизма исключений]". Но данный перевод теряет лаконичность оригинальной фразы. Поэтому возможно лучше оставить это словосочетание без перевода (например со сноской на детальное объяснение того, что это значит), так же, как вы поступили с landing pads.
Приведу цитату из 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.
С++ exception handling под капотом или как же работают исключения в C++