Таймеры. Помогите с переводом
И главная моя проблема - я не всегда могу найти адекватный перевод.
Поэтому прошу помочь мне с:
1.«msclock» ? Это как-то переводится?
2. "*clockptr"
3. "49 day bugs" - ошибки 49-го дня?
4. passive timers wrap after 49 days. Слово wrap меня просто ставит в тупик. I оболочка || заключать в оболочку II (автоматический) переход на новую строку - переводы LingvoComputer
5. jitter Переводится ли он на русский или используется в разговоре о таймерах как дрожание фазы тоже?
6. If the timer is more than 24 days in the future or past,aliasing will occur
Как это может быть? Если таймеру больше 24 дней в прошлом или будущем, произойдет искажение. Верно?
7. Ensures an atomic operation for the paranoid.
Обеспечивает атомарную операцию (т.е. не разделяемую на более мелкие) для paranoid (кхм?)
8. CIRCULAR NUMBER SPACES круговой числовое пространство?
9. printf calls Я все же надеюсь на опечатку тут.
10. timer process thread Процедура таймера потока? Или все же процедура потока таймера ?Или?
Огромная просьба помочь мне, уважаемые участники форума. Я думаю, Вы профи и Вам будет это не трудно, а может даже интересно разобраться в тонкостях.
С уважением, Ирина
1. msclock - очевидно, это структура данных, предназначенная для хранения времени. Скорее всего время задаётся в миллисекундах, потому ms.
2. *clockptr - ptr - это распространённое сокращение от pointer - указатель. Следовательно, clockptr - указатель на структуру данных clock. Знак * означает "разыменование указателя" :) По-другому на русский не перевести. Таким образом получаются данные из указателя.
3. 49 day bugs - скорее всего время хранится в виде целого 32-битного числа. Так вот в такой тип числа влезет только количество миллисекунд в 48 днях. На 49 дне произойдёт переполнение типа. Отсюда баг.
4. Да, в программировании широко распространены оболочки-врапперы (произношение неточное, но часто говорят так). Точнее сказать не могу. Вероятно, предлагается делать оболочки для отсчёта времени больше 49 дней.
5. jitter - думаю, имеется в виду неточность отсчёта времени таймером. Каждый таймер имеет определённую точность.
6. Этот пункт вытекает из 3. Может отсчитываться время в интервале 48 дней - 24 дня назад от момента старта таймера, 24 дня вперёд. При больших интервалах произойдёт переполнение (тут-то и нужен враппер).
7. В программировании зачастую очень критичны случаи, когда одна операция не должна прерываться другой. Сдаётся мне, в этой фразе как раз успокаивают параноиков (да-да, мы такие :D): мол, эта операция атомарная, и не будет прервана другой.
8. Недостаточно данных. Возможно, number spaces означает количество пробелов. А может и нет. Приведите всю фразу (абзац) целиком.
9. Это не опечатка. printf - оператор печати с заданием формата - print format. Соответственно, речь идёт о вызове такого оператора.
10. timer process thread - похоже, вы вообще не специалист в английском (без обид) (не удержался от колкости :), сорри). Вспоминаем правило ряда и переводим (с конца): поток процесса таймера. Очевидно, таймер работает в отдельном потоке.
printf calls - это не опечатка; функция printf действительно существует, в языке Си она отвечает за вывод данных. Переводится словосочетание либо как "вызовы printf", либо как "printf вызывает", из контекста виднее.
passive timers wrap after 49 days - по всей видимости, речь идёт о сбросе таймеров на начало отсчёта спустя 49 дней. Я не знаю точно, о чём тут речь. Для вашего понимания скажу, что это может быть связано с ограничениями счётчика: компьютер может использовать и очень большие числа, но даже они иногда бывают недостаточно большими. Так, существуют ситуации, когда вы не можете посчитать более чем до 32768, 65536, 16777216 или 4294967296.
jitter - как помню, это ещё переводится как отклонение от детерминированной последовательности; проще говоря, как погрешность.
aliasing также переводится как совмещение, от слова "alias" в значении "псевдоним".
timer process thread - скорее, поток процесса таймера, точнее, поток, в котором крутится таймер. Но это слишком упрощённо. :) Надо смотреть контекст.
Смысл «msclock» трудно понять вне контекста. Гугл вообще говорит, что это вирус, но таки ваш оригинал тут важнее мнения гугла.
*clockptr по всей видимости - указатель на таймер; подробности доступны здесь.
Ensures an atomic operation for the paranoid.Тут слово paranoid обозначает параноика. Однако, следовало бы привести и это предложение в контексте.
А вообще жаль, что вы приводите только словосочетания, их непросто понять точно без упоминания того, как они употребляются. Будет здорово, если вы станете публиковать хотя бы предложения целиком.
*clockptr. Сишные исходники не переводятся.
passive timers wrap after 49 days. Глагол wrap можно рассматривать как действие перекидного календаря - оп, и таймер обнулился, начался новый цикл в 48 дней.
Ensures an atomic operation for the paranoid. Обеспечивает атомарность операции для вящего спокойствия. Англоязычные программисты часто называют словом paranoia особо педантичные действия, сделанные по принципу "компьютер кремниевый, всё стерпит".
CIRCULAR NUMBER SPACES. Пространства циклического отсчёта - те самые странички перекидного календаря. Могу ошибаться, нужен контекст.
В остальном соглашусь с предыдущими ораторами.
Вы всегда делаете поспешные выводы? Я не переводила это слово, поставив в кавычки. Я пока делаю черновой перевод.
А почему вы сразу такого плохого мнения обо мне? Если я ничего не понимаю (как вы выразились) - я иду и спрашиваю. Поэтому пришла на форум и спросила. Из-за вас теперь еще буду думать о программистах,как о людях с завышенной самооценкой, смотрящими на других свысока.
Ну начинаем-то переводить с конца, одна не всегда. Некоторые русские клише опровергают ваше правило)) Это вам на заметку) Посмотрите на досуге.
CIRCULAR NUMBER SPACES
Many bugs occur in well-meaning but error-prone attempts at comparing
timestamps. NEVER USE ARITHMETIC COMPARISONS ("<", ">", etc.) WITH
TIMESTAMPS--THEY DON'T WORK IN CIRCULAR NUMBER SPACES!!!!
msclock
In the beginning, there was msclock, and it was good. OK, maybe not
good, but sufficient if you were careful. msclock is a macro that
expanded to "*clockptr", which references a cell that the Non Maskable
Interrupt routine (tied to the hardware timer tick) increments by the
basic clock rate (4 msec) each time it runs.
timer process thread
Also, the callback is run on the timer process thread, which has implications for reentrancy, stack and CPU utilization, etc.
Помощь без лишних слов предполагает взаимное уважение и равенство. С вашей стороны подразумевалось, что текст представляется полностью, после чего черновик перевода и/или вопросы. Игра в угадайку по обрывкам фраз никогда не приветствуется среди профессионалов.
Внимание, конкурс на лучший перевод. :)
ЦИКЛИЧЕСКИЕ СИСТЕМЫ ОТСЧЁТА
Множество ошибок возникает из-за на первый взгляд верных, но на деле ошибочных попыток сравнения отметок времени. НИКОДА НЕ ИСПОЛЬЗУЙТЕ АРИФМЕТИЧЕСКОЕ СРАВНЕНИЕ ("<", ">" и т. п.) ДЛЯ ЗНАЧЕНИЙ ВРЕМЕНИ -- ОНИ НЕ РАБОТАЮТ В ЦИКЛИЧЕСКИХ СИСТЕМАХ ОТСЧЁТА!!!
msclock
Вначале был msclock, и всё было хорошо. Да, может не совсем хорошо, но достаточно, если быть осторожным. msclock -- это макрос, разворачиваемый в "*clockptr", указывающий на ячейку, значение которой увеличивается с частотой основного таймера (4 мс), при каждом вызове обработчика немаскируемого прерывания (возникающего по аппаратному тику таймера).
поток обработчика таймера
Заметим, что процедура обратного вызова запускается в потоке обработчика таймера, что подразумевает её реентерабельность, использование стека, процессора, и т. п.
Спасибо за понимание!!!
Freeman Ой, я и не думала, что вы все это будете переводить.
Вы хотите, чтобы я весь текст выслала? О....Там 15 страниц. Вы на такое не согласитесь))
Именно по этой причине я, считая, что представленные мною слова и выражения не что иное, как - термины, написала вам только их.
Мне понравился Ваш перевод. Я восхищаюсь) Честно
Sanila_san и koodeer
Еще раз и Вас спасибо.
Хотя глагол wrap по-прежнему ставит меня в тупик.
К примеру:
The time difference between two timestamps can be calculated with the
following macros:
CLOCK_DIFF_UNSIGNED(ts1, ts2)
CLOCK_DIFF_SIGNED(ts1, ts2) -
Calculate ts2 - ts1 accounting for wrap. If the signed version
is used, it will return a range of -24 days to + 24 days.
Разница во времени между двумя временными метками может быть определена при помощи следующей макрокоманды:
CLOCK_DIFF_UNSIGNED(ts1, ts2)
CLOCK_DIFF_SIGNED(ts1, ts2) -
Определите значение ts2 - ts1, принимая во внимание сброс таймера на начало отсчета. Если используется указанная версия, значение будет находиться в диапазоне от -24 дней до +24 дней.
Еще раз прошу не судите строго. Я только учусь переводить такие вещи. Признаюсь, мне интересно в этом разобираться. Я очень ценю Вашу помощь, и надеюсь сие для Вам необременительно.
По крайней мере для вас же лучше, чтобы я не дезинформировала людей).
Не соглашусь. :) Посчитал представленный кусок достаточным для демонстрации общего принципа перевода таких текстов.
На самом деле я нарушил первую заповедь переводчика: не пороть отсебятины. Те же "циклические системы отсчёта" в контексте ИТ весьма спорны. Вольность ради литературного стиля, так сказать. Всё же не переводчик, программист. Надо же чем-то выпендриться. :)
Calculate ts2 - ts1 accounting for wrap.
Вычисляют (речь про макросы) ts2 - ts1 с учётом сброса (перехода через 0).
Если используется указанная версия, значение будет находиться в диапазоне от -24 дней до +24 дней.
Тут я поправлю: в данном случае signed, вероятно, следует перевести словом знаковая. Знаковое значение может быть со знаком минус, беззнаковое (unsigned) - только положительное. Таким образом знаковое в данном случае от -24 до +24, беззнаковое от 0 до +48.
От себя скажу, что тоже восхищаюсь переводом Фримэна. Зачот!
Хотя глагол wrap по-прежнему ставит меня в тупик.
В программировании wrap чаще переводится как обертка (над функцией например).
Интересуют:
1. Смутило thing (предположила, что имеется ввиду команда) и to keep the callback routines short and to the point.
callback routines
The only reasonable way to handle things is [COLOR="DarkRed"]to keep the callback routines
short and to the point.[/COLOR]
Единственный допустимый способ при работе с командами (?) ... предположу: держать под контролем, следить за выполнением надлежащих команд\действий.
2. blort protocol Даже без вариантов. Протокол чего?
For example, suppose we have a blort protocol with many instantiations of it, but all handled by one process (creating lots of individual processs gets expensive).
К примеру, предположим, что у нас есть blort protocol со множеством его экземпляров, но все они обработаны одним процессом (т.к. создание множества отдельных процессов - дело затратное).
3. mgd_timer_context(timer)
Returns the opaque timer context for this timer.
opaque timer именно перевод этого термина интересует. Скрытый таймер имеется в виду? Недосягамый? Варианты с непрозрачным уж совсем мне не понравились.
4.
Fenced timers Предположу - ограничивающий таймер
Контекст: mgd_timer_first_fenced(timer)
Returns the first fenced timer subordinate to the argument
первый подчиненный таймер младшего уровня ? (Не смейтесь сильно)
5. Движемся далее
Example: Suppose we have a protocol that requires a hello timer for
each interface, plus a timer for an ager that runs periodically
Пример: предположим, что у нас есть протокол, требующий приветственного (?) таймера для каждого интерфейса плюс таймер для an ager , работающего через определенные промежутки времени.
an ager - простие, без вариантов. Предположу, что связано со временем, может периодами. Как от age, нет?
[COLOR="DarkRed"]Заранее ВСЕМ-ВСЕМ ГРОМАДНОЕ СПАСИБО!!!!![/COLOR]
The only reasonable way to handle things is [COLOR="DarkRed"]to keep the callback routines
short and to the point.[/COLOR]
Процедуры обратного вызова.
Единственный разумный способ справиться с ними -- держать их как можно короче и острее.
Маленькие и острые программы -- расхожая фраза в UNIX. Для программистов под Windows, возможно, стоит подобрать другой эпитет.
For example, suppose we have a blort protocol with many instantiations of it, but all handled by one process (creating lots of individual processs gets expensive).
К примеру, предположим, что у нас есть такая хрень, как протокол и множество его экземпляров, но все они обрабатываются одним процессом (т. к. создание тучи отдельных процессов накладно).
Это дока такая?! :eek:
Returns the opaque timer context for this timer.
Возвращает внутренний контекст данного таймера.
Надо переводить opaque timer context целиком, что означает, ИМХО, скрытый от посторонних глаз в результате инакпсуляции. Слово "инкапсулированный" сюда не подходит, лучше "внутренний".
Returns the first fenced timer subordinate to the argument
Похоже, да, ограничивающий таймер. Возвращает первый ограничивающий таймер, зависящий от аргумента. Или даже связанный с аргументом.
each interface, plus a timer for an ager that runs periodically
Пример: предположим, что у нас есть протокол, требующий таймер на приветствие (установку связи, "алло") каждого интерфейса, плюс таймер на будущее (на будущую работу), срабатывающий периодически.
[QUOTE=Freeman]Маленькие и острые программы -- расхожая фраза в UNIX. Для программистов под Windows, возможно, стоит подобрать другой эпитет.[/QUOTE]Словарь английских идиом советует переводить фразу "keep to the point" как "говорить по существу, не отклоняться от темы". Применительно к программированию в нашем случае это наводит на мысль, что процедура обратного вызова должна быть ясной и однозначной. Достигается это тем, что алгоритм выбирается наиболее простой и реализуется наиболее общепринятым способом. Хорошая характеристика результата такой работы - "коротко и ясно". Видимо, примерно так следует понимать высказывание "to keep the callback routines short and to the point".
Кстати слово things тут следует переводить не как команды, а как есть я думаю. )
:(
И последнее
XSLEEPING and XAWAKE add another degree of bug freedom.
Вот именно выделенное. Про свободу ошибки - я не поняла). Это какое-то право на ошибку?)
Степень свободы физический и статистический термин. Видимо имеется ввиду, что использование XSLEEPING и XAWAKE существенно увеличивает количество потенциальных багов.