Category: лингвистика

Category was added automatically. Read all entries about "лингвистика".

Время отклика клиента и задержка сети

Вопрос из книги Таненбаума про компьютерные сети к главе 1 «Введение», цитата:

29. Приведите список причин того, почему время отклика клиента может быть больше, чем задержка лучшего случая.


Оригинал на английском:

29. Provide a list of reasons for why the response time of a client may be larger than the best-case delay.


Сначала я не понял смысл этого вопроса. Думаю, тут нужны некоторые пояснения по использующимся в тексте вопроса терминам. Предположения о значении этих терминов, по-видимому, следует делать, исходя из того, что наш контекст — это компьютерные сети.

Клиент-серверная система

Раз речь в вопросе идет о некоем «клиенте», то, думаю, понятно, что у нас есть «клиент-серверная система». Для иллюстрации этой системы я взял из книги рисунок 1.1 и немного его переделал:


Сеть изображена абстрактно, овалом, потому что она может быть разных видов: проводная, беспроводная и тому подобное. Общение между клиентом и сервером изображено двумя стрелками: 1) стрелка, направленная слева направо, изображает запрос (по-английски «request») клиента серверу; 2) стрелка, направленная справа налево, изображает ответ (по-английски «reply» или «response») сервера клиенту.

Время отклика клиента

По термину «время отклика» в контексте техники и технологий в википедии есть статьи. В англоязычной: «response time», в русской: «время отклика». Итак, как я понимаю, время отклика клиента — это время, которое требуется, чтобы получить на экране (или каком-либо другом устройстве, выводящем данные) клиента ответ на наш запрос, введенный через клавиатуру (или какое-либо другое устройство для ввода данных) клиента.

Какие действия происходят за это время? Мы вводим запрос и даем команду на его отправку. После этого начинается отсчет времени. Клиент обрабатывает и передает наш запрос в канал сети, запрос проходит по каналу сети, достигая сервера. Сервер получает наш запрос и обрабатывает его, а затем формирует ответ. Сервер передает ответ в канал сети, ответ проходит по каналу сети, достигая клиента. Клиент получает ответ и выводит его на устройство вывода. Как только пользователь видит начало вывода ответа, отсчет времени заканчивается.

Задержки

Особенно непонятным в вопросе мне показалось словосочетание «задержка лучшего случая». Дословно-то перевод на русский правильный, но смысл словосочетания остается неясным.

Каково значение слова «задержка» вообще? Из толкового словаря можно узнать, что это «промедление, приостановка (обычно вследствие какого-либо препятствия)». Длительность задержки можно измерить в единицах измерения времени, так как задержка занимает некий отрезок времени.

Как клиент-серверная система должна работать с точки зрения пользователя, работающего на машине-клиенте, в идеальном случае? После того, как пользователь отдает команду на отправку запроса, он желает получить ответ на экране (или другом устройстве вывода данных) клиента мгновенно. Однако, в реальности довольно часто пользователю приходится ждать ответ. В наше время ожидание даже в несколько секунд начинает раздражать и вредит бизнесу. С точки зрения пользователя ожидание ответа является задержкой в его работе. Отсюда, как я понимаю, началось использование слова «задержка» для характеристики быстродействия используемой для общения сети, ее оборудования и узлов. В англоязычной википедии по этому термину есть статья «network delay», а в русской википедии ее аналога я не нашел.

В технической области в английском языке существует более общее понятие «latency», которое, как я понимаю, в области компьютерных сетей можно считать синонимом термина «network delay». Вообще, задержка сети складывается из задержек ее составных частей. К примеру, если сеть состоит из машин-узлов, проводов и маршрутизаторов (роутеров), то задержка сети будет равна сумме следующих задержек: задержка на обработку запроса на машине-клиенте, задержка на распространение сигнала по проводу (по-английски «propagation delay»), задержка на обработку и передачу пакетов маршрутизаторами (по-английски «processing delay» и «transmission delay»), задержка на прохождение различных очередей на маршрутизаторах и машинах-узлах (по-английски «queuing delay») и тому подобных.

Как измеряется задержка сети? В нашем случае можно просто замерить время отклика клиента — это, по идее, и будет задержка сети. Однако, выполнив несколько десятков замеров подряд, мы, скорее всего, получим в каждом случае разное время задержки сети. К тому, почему это происходит, я вернусь ниже (это и будет ответом на обсуждаемый вопрос из книги). Если каждый замер назвать «случаем» (по-английски «case»), то лучшим случаем для пользователя будет тот, в котором время задержки будет наименьшим, а худшим случаем — тот, в котором время задержки будет наибольшим. Еще можно вычислить среднее время задержки. Все три эти времени задержки используются для описания производительности конкретной используемой сети.

Википедия об этом: «Best, worst and average case» (русскоязычного аналога этой статьи я не нашел).

Время задержки сети зависит от того, что понимается под «сетью». Иногда под «сетью» понимают всё вместе: узлы сети (в нашем случае — машина-клиент и машина-сервер), каналы сети (к примеру, провода или воздух при беспроводной сети) и оборудование сети (к примеру, маршрутизаторы в проводной сети или базовые станции в беспроводной сети). На вышеприведенном рисунке 1.1 из учебника под «сетью» понимают только каналы сети и оборудование сети.

Чтобы «время отклика клиента» и «задержка сети» были сравнимы, я буду подразумевать под «сетью» тот путь, который описан выше при определении понятия «время отклика клиента». То есть в нашем случае «сетью» будем считать часть машины-клиента, канал сети, оборудование сети и машину-сервер.

Ответ на вопрос

«Задержка лучшего случая» — это минимальная задержка сети. В этом случае машины-узлы и оборудование сети работают идеально, то есть без сбоев. Почему же минимальная задержка сети всё-таки не равна нулю? Из-за протяженности канала сети. Да, скорость распространения сигнала по сети сравнима со скоростью света, но если между машиной-клиентом и машиной-сервером находятся тысячи километров, то только задержка на распространение сигнала по каналу сети (propagation delay) составит больше нескольких микросекунд. А, скажем, если рассмотреть сеть, в которой узлы находятся на Земле и Луне, то только задержка на распространение сигнала (радиоволны) по каналу сети (воздуху и вакууму) окажется уже больше нескольких секунд.

Понятно, что такое «минимальная задержка сети». Почему же «время отклика клиента» может оказаться больше «минимальной задержки сети»? Перечислю пришедшие мне в голову возможные причины.

1) При использовании одной и той же сети можно использовать разные протоколы: с подтверждениями пакетов или без подтверждений (к примеру, TCP и UDP на транспортном уровне сетевой модели, см. ответ на вопрос 17). По идее, без подтверждений время отклика клиента должно быть меньше, а с подтверждениями — больше.

2) При большой загруженности сети пакеты могут теряться или повреждаться, вызывая дополнительные задержки на повторную посылку потерянных или поврежденных пакетов.

3) В беспроводных сетях дополнительные задержки могут создаваться коллизиями (см. мой ответ на вопрос 24).

4) Большая загруженность машины-клиента или большая загруженность машины-сервера. В этом случае пакеты помещаются в очередь, ожидая, пока процессор соответствующей машины освободится. В итоге порождаются дополнительные задержки.

Сложение и умножение вероятностей

Начало: что такое вероятность.

Перед рассмотрением простейших формул из теории вероятностей стоит сделать ремарку про обозначения.

Словосочетание «вероятность события A» часто обозначают как P(A). (Как я уже упоминал раньше, вероятность часто обозначают строчной латинской буквой «p» или прописной латинской буквой «P», что может означать первую букву английского слова «probability» (по-русски «вероятность»)).

1. Сложение вероятностей. При расчете вероятностей ряда несовместных событий, когда исходом случайного эксперимента может являться только одно событие, всё более-менее понятно. Примером такого случая является уже рассмотренный ранее эксперимент с броском обычного шестигранного игрального кубика. Исходом броска может быть только одно событие из ряда шести несовместных событий: выпадение единицы, выпадение двойки, выпадение тройки и так далее.

Как подсчитать вероятность того, что исходом очередного броска нашего кубика, к примеру, окажется выпадение числа 1 (обозначим это событие латинской буквой «A») или выпадение числа 2 (обозначим это событие латинской буквой «B»)? Такую вероятность обычно обозначают как P(A+B). И в данном случае (для несовместных событий) работает формула сложения вероятностей:

P(A+B) = P(A) + P(B)

То есть вероятность выпадения числа 1 или числа 2 равна сумме вероятностей этих событий по отдельности, а именно 1/6 + 1/6 = 2/6 = 1/3.

В обозначении P(A+B) знак «+» является синонимом слова «или».

2. Умножение вероятностей. Более сложный случай — когда исходом эксперимента являются сразу несколько событий. Например, в случае броска сразу двух обычных шестигранных игральных кубиков исходом эксперимента станут два события — выпадение числа на одном кубике и выпадение числа на другом кубике. У нас есть ряд из шести несовместных событий, которые могут произойти на одном кубике и ряд из шести несовместных событий, которые могут произойти на другом кубике. Но любое событие из одного ряда совместно с любым событием из второго ряда, потому что они могут произойти одновременно.

Как подсчитать вероятность того, что исходом очередного броска двух наших кубиков станет выпадение на одном из них числа 1 (обозначим это событие латинской буквой «A») и на втором — тоже выпадение числа 1 (обозначим это событие латинской буквой «B»)? Такую вероятность обычно обозначают как P(A*B) или просто как P(AB). События A и B в данном случае являются совместными (могут произойти одновременно) и независимыми друг от друга. В обозначении P(AB) знак умножения является синонимом слова «и».

Попробуем применить сложение вероятностей для нахождения вероятности одновременного выпадения единичек на двух кубиках: 1/6 + 1/6 = 2/6 = 1/3. На первый взгляд кажется, что всё в порядке. Однако, давайте одновременно бросим сразу семь кубиков. Какова вероятность одновременного выпадения на них единичек? Если применить сложение вероятностей, то получится, что эта вероятность равна 1/6 + 1/6 + 1/6 + 1/6 + 1/6 + 1/6 + 1/6 = 7/6. Но такого не может быть, потому что вероятность, как мы помним из ее определения, не может быть больше единицы! Да и простой здравый смысл нам подсказывает, что при увеличении количества кубиков вероятность одновременного выпадения на них одного и того же числа должна уменьшаться, а не увеличиваться!

Для нашего случая (совместных независимых событий) правильно применить умножение вероятностей:

P(AB) = P(A) * P(B)

То есть вероятность выпадения на двух кубиках одновременно числа 1 равна 1/6 * 1/6 = 1/36.

Яндекс.Переводчик: первое значение слова

Я ежедневно и очень активно пользуюсь «Яндекс.Переводчиком». Другими подобными сервисами я, естественно, тоже часто пользуюсь, но сейчас речь о «Яндекс.Переводчике».

В основном я использую англо-русское и русско-английское направления перевода, но, бывает, использую и другие направления.

Любой человек, который хоть немного занимался изучением языков, понимает, что у одного и того же слова в языке может быть много значений. Раньше у «Яндекса» был отдельный сервис с названием «Яндекс.Словари», но потом они слепили «Яндекс.Переводчик» и «Яндекс.Словари» в один сервис, названием которого оставили «Яндекс.Переводчик». В итоге получилось не так уж и плохо: информация о слове из словарей отображается под полями ввода текста для перевода и вывода перевода.

В информации о слове обычно более часто употребляемые значения показываются в начале (вверху) словарной статьи о слове, а менее часто употребляемые значения — ближе к концу (внизу) статьи.

Как я обычно использую «Яндекс.Переводчик» для перевода отдельного слова? Ввожу (копирую) в поле ввода текста для перевода нужное слово, а затем смотрю на появившуюся словарную статью, выявляю нужное мне значение данного слова.

Однако, с недавних пор (может, мне это кажется?) «Яндекс.Переводчик» немного изменил порядок своей работы. Раньше первое значение слова отображалось и в поле вывода перевода, и в начале словарной статьи. А теперь оно отображается в поле вывода перевода, а в словарной статье — не отображается. Что вносит большую путаницу. Причем, это почему-то работает не для всех слов.

Приведу примеры, чтобы было понятнее.

Пример 1. Перевод слова «language» с английского на русский. Первое значение слова — «язык» — отражено только в поле вывода перевода, а в словарной статье ниже не отражено.



Пример 2. Перевод слова «table» с английского на русский. Первое значение слова — «стол» — отражено только в поле вывода перевода, а в словарной статье ниже не отражено.



Что не так? Во-первых, об изменении порядка работы сервиса хорошо бы где-то сообщать. Я поискал и нашел блог разработчиков «Яндекс.Переводчика» (https://yandex.ru/blog/translate) и их социальные сети (https://vk.com/yandex_translate, https://www.facebook.com/YandexTranslateRu, https://twitter.com/translateyandex). Но там новых записей уже давно нет (в блоге разработчиков — с 2017 года, а в социальных сетях — с апреля этого года). Вы что, расстреляли всех своих пиарщиков?

Во-вторых, если меняете порядок работы переводчика, то хорошо бы, чтобы всё работало одинаково для всех слов. Например, для слов с одним значением это значение прекрасно отображается дважды: и в поле перевода, и в словарной статье.

В-третьих, зачем было убирать из словарной статьи первое значение? Чтобы сэкономить место на бесконечной HTML-странице?

Точка в тексте, period

В североамериканском английском одно из значений слова «period» — знак препинания «точка». Но это слово гораздо чаще употребляется в значениях «период», «период времени».

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

На заметку:

Вообще для слова «точка» в английском есть много синонимов, применяющихся в разных контекстах: full stop, period, full point, point, dot. Подробнее — в статье википедии.

«Google.Translate» даёт сравнительные данные о частоте употребления разных значений одного и того же слова в текстах в отличие от «Яндекс.Переводчика».

Фразеологизм: draw the line at sth

Приём из арсенала плохого переводчика: можно безболезненно выкидывать из оригинала непонятные куски. Я тоже иногда так делаю, но не в переводе же учебника!

Оригинал (стр.380):

There’s a potential glitch in the COUNTEN program. What happens if we want to initialize a CountDn object to a value? Can the one-argument constructor in Counter be used? The answer is no. As we saw in COUNTEN, the compiler will substitute a no-argument constructor from the base class, but it draws the line at more complex constructors. To make such a definition work we must write a new set of constructors for the derived class. This is shown in the COUNTEN2 program.


Цитата из перевода (стр.368):

Это потенциальная проблема в программе COUNTEN. Что будет, если мы захотим инициализировать значением объект класса CountDn? Сможем ли мы воспользоваться конструктором класса Counter с одним аргументом? Ответ будет отрицательным. Как мы видели в программе COUNTEN, компилятор будет использовать конструктор базового класса без аргументов. Мы должны написать новый конструктор для производного класса. Это показано в программе COUNTEN2:


Должно быть:

Это потенциальная проблема в программе COUNTEN. Что будет, если мы захотим инициализировать значением объект класса CountDn? Сможем ли мы воспользоваться конструктором класса Counter с одним аргументом? Ответ будет отрицательным. Как мы видели в программе COUNTEN, компилятор будет использовать конструктор базового класса без аргументов, но он никогда не пойдет на это в случае более сложных конструкторов. Чтобы заставить такое определение работать, мы должны написать новый конструктор набор конструкторов для производного класса. Это показано в программе COUNTEN2:


Очевидно, что затруднение у переводчика вызвала фраза «draws the line at». Естественно, речь тут не о рисовании линий. Эта фраза в данном контексте является фразеологизмом (или по-другому «идиомой»).

В Кембриджском англо-русском словаре:
https://dictionary.cambridge.org/dictionary/english-russian/draw-the-line-at-sth

Означает «никогда не пойти на что-либо».