Страницы

Поиск по вопросам

воскресенье, 26 января 2020 г.

Многопоточность или многонитевость?

#многопоточность #потоки_данных #терминология


Недавно у меня возник любопытный вопрос лингвистического характера.
Почему многонитевость называют многопоточностью?

В программировании есть два различных понятия stream и thread. 

Первое обозначает объект для выполнения операций (чаще всего передача данных или
их накопление), второе же обозначает объект, который позволяет выполнить некий программный
код параллельно с другими ветками кода. 

Первое слово переводится на русский язык как поток - тут всё логично, их так все
и называют. Второе же слово переводится как нить. 

Так почему в различного рода литературе и других медиа источниках это слово упорно
переводят, как поток? Более того, в русском языке прочно закрепился термин многопоточность,
который является аналогом (но никак не переводом) слова multithreading? Чем же можно
объяснить столь любопытное явление? Или всё таки есть разница между многопоточностью
и многонитевостью? А если есть разница, то какой в английском языке существует аналог
термину многонитевость?
    


Ответы

Ответ 1



Поток = нить (если мы говорим про "потоки" (Thread), а не потоки (Stream)). А про подмену понятия, можно почитать в Вики Перевод английского термина thread как «поток» в контексте, связанном с программированием, противоречит его же переводу «нить» в общеязыковом контексте, а также создает коллизии с термином stream («поток»). Однако, термин «поток» связан с переводами иностранной технической литературы, выполненными в 1970-х годах издательством «Мир». В настоящее время в «академических кругах» (то есть в учебниках, методических пособиях, курсах вузов, диссертациях и пр.) он считается эталонным. Термины же «нить», «тред» и т. п. считаются техническими жаргонизмами.

Ответ 2



Термин поток означал раньше process, а thread - то есть нить понятие возникло относительно недавно, когда стало выделяться понятиe нити как части процесса. Сейчас в общем понятие потока и нити синонимы, хотя надо понимать, что иногда под потоком может пониматься процесс. Но под нитью процесс никогда не понимается. Различия между процессом и нитью

Ответ 3



Помимо тупого калькирования, при котором термин переходит в другой язык в форме буквального перевода (возможно, даже частичного), существует ещё семантическое заимствование, при котором термином в целевом языке становится слово, лучше всего подходящее по смыслу. "Многонитевость" - это тупая калька с английского. Оригинальный термин просто переведён по частям. Более того, иногда можно встретить людей, которые используют в качестве термина частичную кальку - "многотредовость". "Многопоточность" - это полноценное заимствование на уровне семантики. Для обеих частей термина подобраны русские слова, идеально соответствующее смыслу самого понятия, а не того слова, которым оно обозначается в чужом языке. Очевидно, что слово "поток" подходит по смыслу гораздо лучше, чем слово "нить". Это даже сами американцы понимают, потому что когда они говорят о потоке комманд, они используют термин "control flow". Ну, а то, что русское слово "поток" соответствует сразу двум понятиям ("thread" и "stream"), вообще не проблема. Как правило, из контекста всегда можно понять, какое из этих двух понятий имеется в виду. А контекст - это всегда самое главное. От него смысл зависит в гораздо большей степени, чем от самого текста. Мой любимый пример, который это иллюстрирует: "Американцы слишком много жрут". Казалось бы, смысл фразы очевиден. А теперь представьте, что контекстом для неё является разговор двух автомобилистов, обсуждающих достоинства и недостатки различных автомобилей. В таком контексте смысл фразы был бы иным: "Автомобили американского производства потребляют слишком много топлива".

Комментариев нет:

Отправить комментарий