stelf / en2bg4term

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

heap #77

Open kunev opened 1 year ago

kunev commented 1 year ago

В смисъла на memory heap. Буквалните преводи според различни източнити в интернет варират измежду:

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

sfbg commented 1 year ago

Куп ми звучи напълно естествено, честно казано.

AngelHadzhiev commented 1 year ago

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

sfbg commented 1 year ago

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

stelf commented 1 year ago

Добре, може ли някой @sfbg , @AngelHadzhiev , @kunev да даде пример с 1-2 изречения, преведени, в които учасва heap, как ще звучат на български ако се преведат и дали това е достатъчно ясно. Имам съмнения за смисъла, за буквалния превод - ясно.

sfbg commented 1 year ago

Гугъл ми намери това. Звучи ми супер естествено.

(Редактирано: игнорирайте.)

stelf commented 1 year ago

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

https://nl.myservername.com/heap-sort-c-with-examples https://fr.myservername.com/heap-sort-c-with-examples https://de.myservername.com/heap-sort-c-with-examples

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

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

sfbg commented 1 year ago

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

kunev commented 1 year ago

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

Например първото изречение от тук: “Heap” memory, also known as “dynamic” memory, is an alternative to local stack memory.

Може да бъде едно от следните:

Скупчената памет, наричана още динамична памет, е алтернатива на паметта в локалния стек.

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

За структурата от данни heap „куп“ (или „купчина“ от гледна точка на това, че при изговаряне няма опасност да се сбърка с „куб“) ми се струва смислово най-близко. Така ще имаме сортиране чрез куп(чина), при което основна стъпка е елементите да се съберат в куп(чина), с най-големия на върха.

stelf commented 1 year ago

@kunev... дори и ChatGPT знае, че:

Heap is a specific memory area used for dynamic memory allocation, while dynamic memory refers to the process of allocating and deallocating memory during runtime. The heap is used for dynamic memory allocation, and dynamic memory refers to the actual process of allocating and deallocating memory at runtime using the malloc(), calloc(), realloc(), and free() functions.

тоест heap е мястото в паметта, от което ще ти бъде заделена/запазена/назначена (allocated) твойта памет, а dynamic allocation е процесът на запазване/заделяне по време на изпълнение на процеса.

сигурно ако ще говориш за стекова памет, трябва да я противопоставиш на статично определен в дата сегмент регион. но реално погледнато и стековата памет се заделя динамично, с тая разлика, че се знае във времето на компилация колко ще е голям заделения регион, а при calloc/malloc знаеш едва по време на изпълнение...

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

stelf commented 1 year ago

/ няколко часа по-късно /

след дискусия и сверяване на източници нека говорим за няколко неща, които са "heap" поотделно:

тоест ние говорим за т.нар динамично заделяне на памет от нещото познато като heap, което се опитваме да преведем. според https://en.wikipedia.org/wiki/C_dynamic_memory_allocation :

Implementation of the allocator is commonly done using the heap, or data segment. The allocator will usually expand and contract the heap to fulfill allocation requests.

едночначно не може да се каже от къде е етимологията на heap в смисъла на операционните системи, защото както обобщават ARPACI-DUSSEAU, цит.

Thus, advanced allocators use more complex data structures to address these costs, trading simplicity for performance. Examples include balanced binary trees, splay trees, or partially-ordered trees

Тоест, говорим за управление на указателите към свободните/заети страници, което най-често е въз основа (с помоща) на дървовидни структури, каквато е и heap структурата. Не намирам източник, който да казва "първите компютри и ОС-и управляваха общо-достъпната памет по този начин".

Според едно обобщение от ChatGPT (на което гледаме с едно наум):

In summary, the choice of the word "heap" for the memory pool used for dynamic memory allocation can be attributed to the historical use of heap data structures in memory management systems. The term has since evolved to become a more generic name for the memory area used for runtime memory allocation, even though modern memory managers may not use heap data structures. Unfortunately, finding a resource that explicitly explains why the term "heap" was chosen for the memory area may prove challenging.

Тоест можем да си мислим както за купчини от свободна/заета памет (защото има "дупки" или фрагментация м/у тях). Но ако пропуснем цялото обяснение как се управлява паметта, а видно е, че това става с различни ~стратегии~ подходи, можем да обобщим heap memory като

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

A heap in this sense is a pool of memory available for the allocation and deallocation of arbitrary sized blocks of memory in arbitrary order.

може да допълним, че тази свободна/налична памет все пак се отнася (в повечето ОС-и) до конкретния процес и управлението и е в рамките на този процес. но дори и Tanenbaum/Bos не дават определение на това какво е 'heap', за сметка на това посочва, че 'heap'-а може да попадне в сегмента за данни в определени случаи (виж стр. 190)

sfbg commented 1 year ago

Не знам, не се ли задълбаваме прекалено много? Heap значи "куп, купчина, камара" на български според двутомника от 1987-ма (също и "насипище" от минното дело). Защо да не ги ползваме и за компютърния heap?

stelf commented 1 year ago

@sfbg, например защото:

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

stelf commented 1 month ago

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