stelf / en2bg4term

речник с грижливо подбирани преводи на често срещани понятия от света на ИТ
http://stelf.github.io/en2bg4term/
205 stars 25 forks source link

Race и Data race #60

Open byrtolet opened 3 years ago

byrtolet commented 3 years ago

Никак не ми харесва настоящите преводи.

Бих превел термините с нещо подобно: Data race - Спорен достъп (до данни, памет) Race condition - недефиниран ред (на операции), неподредени операции, биещи се операции,

stelf commented 3 years ago

следните може да допишем ако си окей

data race - спорен достъп до данни race condition - условие на оспорван/спорен достъп

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

byrtolet commented 3 years ago

Съгласен съм, че колкото по-кратки (и точни) толкоз повече ще се усвоят. За "Race condition" се говори, когато имаме различни действия или операции (не задължително свързани с достъп (до памет)), които се опитват да бъдат извършени едновременно, а това логически или физически е невъзможно/проблематично. На мен лично най-много ми харесва "биещи се операции". Но според мен е добре, когато имаме различни варианти за някои термини - понякога термините са твърде общи и не пречи ако намерим по-удачни думи, описващи макар и част от значението.

metala commented 2 years ago

Аз почти за всичко такова ползвам "състезание на сигналите". Много ми е логично и техническо в същото време.

Добавка. До колкото помня "състезание на сигналите" е точен превод на "race condition" в схемотехниката. Послеслов. Понякога се занимавам с вградени системи и мисля, че го знам от старите инженери и схемотехници.

stelf commented 2 years ago

@metala, позволи да не се съглася, че condition се превежда като сигнал. и всъщност тук превод дума по дума не е окей, защото race condition описва ситуациям при която има състезание. т.е. 'условие за съревнование' или "условие за надпревара" е точния дословен превод. но дали е разбираем в технически смисъл вече е по-трудно да се каже.

т.е. тук race е прилагателно към condition (т.е. какъв вид условие), а не condition прилагателно към race (какво състезание).

ако беше data race тогава щяхме да имаме спор за данни или надпревара за данни.

sstoyanov7 commented 2 years ago

@stelf , condition е не само условие, но и състояние/кондиция.
На руски жаркон Состояние гонки или "конкуренция", или "неопределённость параллелизма" в акедмичните среди. На български е по-точно "Състезателно състояние" или "Състояние на състезание", т.е. състояние при което възниква състезание.

Бих предпочел: race condition = състезание на сигнали data race = състезание за данни

Защото:

byrtolet commented 2 years ago

Не мисля, че е добра идея винаги да превеждаме буквално изрази дума по дума - рядко води до точен и хубав превод.

В елктрониката/схемотехниката, ако е навлезнал термина "състезание на сигнали" - нямам нищо против. Но в софтуера сигнал се ползва в 2 смисъла (до колкото знам): Като механизъм за комуникация в Юниксоподобните операционни ситеми. В QT и други софтуерни библиотеки, за механизма signal - slot. Но мисля, че е подвеждащо да се говори за състезание и надпревара на сигнали в софтуер, където въобще няма сигнали - или още по-зле - има сигнали, но те нямат никакво отношение към проблемното състояние.

И определено condition в случая е състояние.

Тъй че по-подходящо определение на явлението "race condition" според мен е: Състояние на неопределеност на реда на операциите/събитията.

От там сигурно може да се съкрани на "Състояние на неопределеност, или недефинирано/неопределено състояние", особено ако се има предвид горната дефиниция. Но според мен за същото явление може да се говори по друг начин: Дадените операции се бият. (Даже в речника, който позлвам се споменава значение "борба" на race) (например можем да говорим, че кредитирането на дадена банкова сметка се бие с дебитирането в дадения момент) Операциите си пречат. Операциите са взаимопречещи си / взаимопротиворечащи си / с неопределна едновременност

Също можем да говорим за: Неопределн ред (на събития/операции). Времева неопределеност.

А ако говорим за сигнали или събития те могат да се "прескачат".

Отделно, не е задължително всички сътояния от тип "race condition" да се определят с един и същи термин (Дори и на английски имаме отделно data race, което е частен случай на race condition).

Та казано на кратко, на български, думата състезание няма никакви конотации, в българския език, които да описват проблемите състояния.

Ако ще е буквален превода, по-добре race да е гонка. По-кратко е, и отделно съвпада с руския термин.

metala commented 2 years ago

@stelf аз тръгвам от многообразието на преводи на думата сигнал. Сигнал може да е всяко нещо, което предава информация или известява за нещо. Микроконтролерът може да подава сигнал с високо напрежение и да държи състояние в единица. Смяната на състоянието от единица в нула също може да се разглежда като сигнал, който да задейства прекъсване по падащ фронт на сигнала.

Иначе пуристът в мен би желал нещо по-близо до английския термин, но на български. Така, че 'състояние на надпревара' е най-доброто от споменатите. Съревнование е по-близко до competition. Условие, аз го свързвам с повече с условност. Мисля, че 'състезание за данни' или 'надпревара за данни' също звучи намясто.

@byrtolet не бих казал, че е 'състояние на неопределеност'. С достатъчно изследване може да се определи във всеки един момент от времето какво се случва,

byrtolet commented 2 years ago

Според мен е по-добре понякога да се заемат направо думите и термините, от колкото да се превеждат понятията дословно. Дословно преведени те рядко имат смисъл, камо ли същия такъв.

@metala Не съм съгласен, че е винаги възможно да се изследва какво се случва. Но не това е най-важното. Проблема, който описва понятието, което обсъждаме, е не че не знаем какво точно се е случило (или би се случило), а че не знаем как или не можем адекватно да реагираме на случващото се (в случая, когато пишем код).

В случая с електронни системи ще дам пример с RS тригер при който подаваме сигнал и на двата входа. Чисто физически тази система е неопределена, може като изход, тригера да е логическа нула, еденица, някакво междинно (невалидно) ниво, или да се клати. Резултата може да зависи вече и от странични неща, като температура, или характеристики на отделните транзистори).

Ще опитам да преведа първото изречение от wikipedia.org/Race_condition "Race condition" e състояние, при което поведението на системата (сиреч резултата) зависи от последователността или времето на възникване на неконтролирани събития.

Тоест при едни и същи събития, самата разлика във времената на възникването им води различни резултати.
Това не означава непременно че са непредсказуеми. Тоест резултата може да е хаотичен (в математическия смисъл на думата).

Дали тези резултати подлежат на изследване е отделен въпрос, възможно е да могат да се обхванат всичките възможности, възможно е и да не могат.

Моята дефиниция беше "състояние на неопределеност на реда на събитията", а не не на резултата, въпреки, че той може да е също неопределим.

Определено ми харесва на български да говорим, че събитията се бият, си пречат, се изключват, а не да характеризираме, и без туй доста общото и абстрактно понятие "race condition". Тоест да говорим за предпоставките, а не за потенциалните следстввията.

Да разгледаме още един пример. Имаме тесногърло гърне с жълтици (в която може да се пъхне най-много една ръка в даден момент). Имаме и няколко човека, които искат да си вземат жълтици.

На английски, това е "race condition", а на български е "бой", или поне предпоставка за бой.

metala commented 2 years ago

@byrtolet не виждам в превода горе нещо за неопределимост. Има за неконтролириеми събития, но хаотичен не означава неопределен / неопределяем. Генераторът на псевдослучайни числа е хаотичен, но по дефиниция той е детерминистичен.

byrtolet commented 2 years ago

@metala Неопределени са причините, а не следствията. И когато имаме хаотичен процес, чието начално състояние не знаем точно, не можем да съдим и за развитието му. Тъй че в следствие и резултата е неопределен.

metala commented 2 years ago

@byrtolet добре. Има логика. Въпреки това, не смятам, че е правилният превод за явлението което разискваме.

ПС. "бой" ще е ако има физическа разправа или някакъв вид стълкновение. Примерът с гърнето е един вид борба, а борбата е спорт, в случая уточнено и обобщено това ще е състезание или надпревара.

byrtolet commented 2 years ago

Наистина, добрия превод е труден. Аз само давам своето скромно мнение. В случая предлагах не да превеждаме самите термини, а да се опитаме да опишем ситуациите при които възникват на български.

Както "Airport" не е "Въздушно пристанище", а е "Летище".

Още по-добър пример е, в случая на термините "continuous - непрекъснат" , "discontinuous - прекъснат". Ние дефинираме на български друго понятие като първично.

stelf commented 2 years ago

след обсъждане с @kunev предлагам(е)

"предпоставка за съревнование"

race е състезание/съревнование. както обясних по-горе. race пояснява condition, което е това, което се случва (виж. Википедия). condition в случая е предпоставка или състояние.

ако вземем предвид и втория превод на condition - състояние предлагам и

"условие на съревнование"

като според мястото където се споменава може да се ползват и двете, в зависимост от това дали се подчертава самото състояние или предпоставката за навлизане в него.

byrtolet commented 2 years ago

На мен лично никак не ми харесват преводи свързани с състезания и сървенования и надпревари. На български, тези думи имат сравнително тесен смисъл.

Предлагам да вземем един или, по-добре, няколко различни примера за "race condition" и да видим, как най-добре можем да ги опишем на български.

Тъй като в много от случаите (особено когато е интересно да се говори) race condition-ите са проблемни, в случая думата "condition" може да бъде заменена направо с думата "проблем", или даже "грешка".

Та излизат следните нови предложения: "проблематична едновременност", "грешка от/на едновременност" "Грешно съчетание". Ако измислим и по-нашенски превод, за думата "тайминг", може и "Проблемен тайминг", "Спорен тайминг".

Съгласен съм че можем (и сигурно трябва) да правим разлик м/у случаите в които имаме предпоставки, за "race condition" или за проблем, и вече възникнал такъв.

Друг вариант е да измислим наистина хубаво, и точно описание, макар и многословно и да използваме негов акроним.

metala commented 2 years ago

'Предпоставка' не предполага, че е възникнало състезанието.