Open kunev opened 1 year ago
Куп ми звучи напълно естествено, честно казано.
Куп и насип ми звучат добре. Ако звучат странно е по-скоро, защото не сме свикнали някои термини да ги чуваме на български.
Насип е подходящо за материали само в насипен вид. На куп могат да се трупат всякакви предмети. За мен е напълно оптимален превод.
Добре, може ли някой @sfbg , @AngelHadzhiev , @kunev да даде пример с 1-2 изречения, преведени, в които учасва heap, как ще звучат на български ако се преведат и дали това е достатъчно ясно. Имам съмнения за смисъла, за буквалния превод - ясно.
Гугъл ми намери това. Звучи ми супер естествено.
(Редактирано: игнорирайте.)
шегуваш ли се, това е генеричен превод от сайт, който е превеждан с някакъв бот. пробвай тия ако се съмняваш
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та значително се подобриха като словоред и лесно може да се подлъжеш, че го е писал човек.
Посипвам си главата с пепел. Прегледах само заглавните текстове и бяха ок, сега виждам, че текстът реално не се чете...
На няколко пъти се присещах за това напоследък и може би „скупчена“ предава смисъла най-добре що се отнася до памет. В тоя контекст по-скоро искаме прилагателно, което да върви с „памет“. Ако абстрахираме от дълбокия буквализъм, „неподредена“ памет също описва това, което искаме.
Например първото изречение от тук:
“Heap” memory, also known as “dynamic” memory, is an alternative to local stack memory.
Може да бъде едно от следните:
Скупчената памет, наричана още динамична памет, е алтернатива на паметта в локалния стек.
Неподредената памет, наричана още динамична памет, е алтернатива на паметта в локалния стек.
За структурата от данни heap „куп“ (или „купчина“ от гледна точка на това, че при изговаряне няма опасност да се сбърка с „куб“) ми се струва смислово най-близко. Така ще имаме сортиране чрез куп(чина), при което основна стъпка е елементите да се съберат в куп(чина), с най-големия на върха.
@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 (една дума в литературата) - е подреждане, чрез поддържане на две купчини - подредена и неподредена. (забележи, че сортиране не е глагол от българския език).
/ няколко часа по-късно /
след дискусия и сверяване на източници нека говорим за няколко неща, които са "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)
Не знам, не се ли задълбаваме прекалено много? Heap значи "куп, купчина, камара" на български според двутомника от 1987-ма (също и "насипище" от минното дело). Защо да не ги ползваме и за компютърния heap?
@sfbg, например защото:
ето защо, не че не можем да преведем и stack и heap като купчина, но вероятно ще е по-добре да не го правим изобщо ако не може да се случи по недвусмислен начин.
В смисъла на memory heap. Буквалните преводи според различни източнити в интернет варират измежду:
Никое от изборените не звучи твърде естествено, но пък предават идеята, че паметта е неорганизирана и неструктурирана, „насипана“/„насипна“/„скупчена“.