en2bg4term icon indicating copy to clipboard operation
en2bg4term copied to clipboard

heap

Open kunev opened this issue 1 year ago • 13 comments

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

  • куп/купчина
  • насип
  • камара

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

kunev avatar Mar 11 '23 20:03 kunev

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

sfbg avatar Mar 13 '23 21:03 sfbg

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

AngelHadzhiev avatar Mar 17 '23 09:03 AngelHadzhiev

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

sfbg avatar Mar 17 '23 18:03 sfbg

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

stelf avatar Mar 27 '23 08:03 stelf

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

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

sfbg avatar Mar 28 '23 22:03 sfbg

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

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та значително се подобриха като словоред и лесно може да се подлъжеш, че го е писал човек.

stelf avatar Apr 01 '23 19:04 stelf

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

sfbg avatar Apr 02 '23 16:04 sfbg

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

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

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

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

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

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

kunev avatar Apr 11 '23 05:04 kunev

@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 avatar Apr 11 '23 07:04 stelf

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

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

  • memory heap или dynamic memory allocation pool - това, за което говорим тук
  • heap data structure - структура от данни
  • heapsort - алгоритъм за подреждане, чрез скупчване/купчини (ако може така да го преведем). ползва принципа на горното.

тоест ние говорим за т.нар динамично заделяне на памет от нещото познато като 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)

stelf avatar Apr 11 '23 09:04 stelf

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

sfbg avatar Apr 11 '23 22:04 sfbg

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

  • защото на английски е жаргон, а понятието зад него е "динамична памет", поради трите вида заделяне на памет в С/С++ - static/dynamic/automatic. нещо повече - променливите определено попадат в/се работят през различни сегменти - CS, DS, SS - след като бъдат определени така.
  • stack също е купчина и то "много повече" от heap-а, поради FIFO подредбата
  • паметта е линейна, адресацията е линейна, а не... насипна. това, което на практика се случва в процеса на работа с heap - да се фрагментира - води до нещо, което повече прилича на редица от неща с два цвята (пълно/празно), а не на нахвърляни на едно място неща (какъвто е въпросния букв. превод на heap).
  • е объркващо така и следователно (допускам/твърдя, че) няма да се ползва

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

stelf avatar Apr 12 '23 06:04 stelf

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

stelf avatar Aug 13 '24 07:08 stelf