web-standards-ru / dictionary

Словари по фронтенду
Creative Commons Attribution Share Alike 4.0 International
2.18k stars 601 forks source link

concurrency #444

Open jt3k opened 2 years ago

jt3k commented 2 years ago

concurrency -- новое хитрое слово из области web-воркеров и распараллеливания потоков.

Часто переводят его как "конкурентность". Но как мне кажется перевод должен быть "параллелизм".

Если говорить конкретно, то мне не понравилось русское описание этого поста https://t.me/forwebdev/6133

Куча англо-русских словарей расшифровывает concurrency как параллелизм

В английской википедии одна из последних правок(23:08, 8 April 2021‎ Vitaly Zdanevich) добовляет к статье мнение некоего Rob Pike который говорит, что параллелизм это не конкарренси. Его мнение я конечно же не изучал.

Согласно Робу Пайку, concurrency - это композиция независимо выполняемых вычислений, и concurrency - это не parallelism: concurrency - это одновременное выполнение множества вещей, а parallelism - выполнение множества вещей одновременно. Concurrency - это структура, parallelism - это выполнение, concurrency обеспечивает способ структурирования решения для решения проблемы, которая может (но не обязательно) быть распараллеливаемой.

Оригинал According to Rob Pike, concurrency is the composition of independently executing computations,[2] and concurrency is not parallelism: concurrency is about dealing with lots of things at once but parallelism is about doing lots of things at once. Concurrency is about structure, parallelism is about execution, concurrency provides a way to structure a solution to solve a problem that may (but not necessarily) be parallelizable.

В русской википедии есть такой абзац:

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

Что ещё больше запутывает всех. :)

Давайте распутаем ?

pepelsbey commented 2 years ago

@amel-true приходи!

melikhov-dev commented 2 years ago

Я за конкурентность (как и Wikipedia), так как конкурентные процессы могут, но не обязательно исполняются параллельно. Для примера, в JS невозможны параллельные вычисления (язык однопоточный), но возможны конкурентные. Мы запускаем множество промисов, они исполняются (но не их коллбеки!) как параллельно, так и последовательно, нам это не ведомо. Мы не гарантируем порядок исполнения промисов — они конкурентны, равнозначны. Но не обязательно параллельны.

pepelsbey commented 2 years ago

@amel-true с двумя «р» конкуррентность или с одной «р» конкурентность?

melikhov-dev commented 2 years ago

@pepelsbey с одной конкурентность

pepelsbey commented 2 years ago

@jt3k заходите с пулреквестом :)