#многопоточность #потоки_данных #терминология
Недавно у меня возник любопытный вопрос лингвистического характера.
Почему многонитевость называют многопоточностью?
В программировании есть два различных понятия stream и thread.
Первое обозначает объект для выполнения операций (чаще всего передача данных или
их накопление), второе же обозначает объект, который позволяет выполнить некий программный
код параллельно с другими ветками кода.
Первое слово переводится на русский язык как поток - тут всё логично, их так все
и называют. Второе же слово переводится как нить.
Так почему в различного рода литературе и других медиа источниках это слово упорно
переводят, как поток? Более того, в русском языке прочно закрепился термин многопоточность,
который является аналогом (но никак не переводом) слова multithreading? Чем же можно
объяснить столь любопытное явление? Или всё таки есть разница между многопоточностью
и многонитевостью? А если есть разница, то какой в английском языке существует аналог
термину многонитевость?
Ответы
Ответ 1
Поток = нить (если мы говорим про "потоки" (Thread), а не потоки (Stream)). А про
подмену понятия, можно почитать в Вики
Перевод английского термина thread как
«поток» в контексте, связанном с
программированием, противоречит его же
переводу «нить» в общеязыковом
контексте, а также создает коллизии с
термином stream («поток»).
Однако, термин «поток» связан с
переводами иностранной технической
литературы, выполненными в 1970-х
годах издательством «Мир». В настоящее
время в «академических кругах» (то
есть в учебниках, методических
пособиях, курсах вузов, диссертациях и
пр.) он считается эталонным. Термины
же «нить», «тред» и т. п. считаются
техническими жаргонизмами.
Ответ 2
Термин поток означал раньше process, а thread - то есть нить понятие возникло относительно
недавно, когда стало выделяться понятиe нити как части процесса.
Сейчас в общем понятие потока и нити синонимы, хотя надо понимать, что иногда под
потоком может пониматься процесс. Но под нитью процесс никогда не понимается.
Различия между процессом и нитью
Ответ 3
Помимо тупого калькирования, при котором термин переходит в другой язык в форме буквального
перевода (возможно, даже частичного), существует ещё семантическое заимствование, при
котором термином в целевом языке становится слово, лучше всего подходящее по смыслу.
"Многонитевость" - это тупая калька с английского. Оригинальный термин просто переведён
по частям. Более того, иногда можно встретить людей, которые используют в качестве
термина частичную кальку - "многотредовость".
"Многопоточность" - это полноценное заимствование на уровне семантики. Для обеих
частей термина подобраны русские слова, идеально соответствующее смыслу самого понятия,
а не того слова, которым оно обозначается в чужом языке. Очевидно, что слово "поток"
подходит по смыслу гораздо лучше, чем слово "нить". Это даже сами американцы понимают,
потому что когда они говорят о потоке комманд, они используют термин "control flow".
Ну, а то, что русское слово "поток" соответствует сразу двум понятиям ("thread" и
"stream"), вообще не проблема. Как правило, из контекста всегда можно понять, какое
из этих двух понятий имеется в виду. А контекст - это всегда самое главное. От него
смысл зависит в гораздо большей степени, чем от самого текста. Мой любимый пример,
который это иллюстрирует: "Американцы слишком много жрут". Казалось бы, смысл фразы
очевиден. А теперь представьте, что контекстом для неё является разговор двух автомобилистов,
обсуждающих достоинства и недостатки различных автомобилей. В таком контексте смысл
фразы был бы иным: "Автомобили американского производства потребляют слишком много
топлива".