abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 16:44 | Nová verze

    Bylo oznámeno vydání Fedora Linuxu 43. Ve finální verzi vychází šest oficiálních edic: Fedora Workstation a Fedora KDE Plasma Desktop pro desktopové, Fedora Server pro serverové, Fedora IoT pro internet věcí, Fedora Cloud pro cloudové nasazení a Fedora CoreOS pro ty, kteří preferují neměnné systémy. Vedle nich jsou k dispozici také další atomické desktopy, spiny a laby. Podrobný přehled novinek v samostatných článcích na stránkách Fedora Magazinu: Fedora Workstation, Fedora KDE Plasma Desktop, Fedora Silverblue a Fedora Atomic Desktops.

    Ladislav Hagara | Komentářů: 0
    dnes 15:22 | IT novinky

    Elon Musk oznámil (𝕏) spuštění internetové encyklopedie Grokipedia (Wikipedia). Zatím ve verzi 0.1. Verze 1.0 prý bude 10x lepší, ale i ve verzi 0.1 je podle Elona Muska již lepší než Wikipedia.

    Ladislav Hagara | Komentářů: 8
    dnes 05:44 | Komunita

    PSF (Python Software Foundation) po mnoha měsících práce získala grant ve výši 1,5 milionu dolarů od americké vládní NSF (National Science Foundation) v rámci programu "Bezpečnost, ochrana a soukromí open source ekosystémů" na zvýšení bezpečnosti Pythonu a PyPI. PSF ale nesouhlasí s předloženou podmínkou grantu, že během trvání finanční podpory nebude žádným způsobem podporovat diverzitu, rovnost a inkluzi (DEI). PSF má diverzitu přímo ve svém poslání (Mission) a proto grant odmítla.

    Ladislav Hagara | Komentářů: 18
    dnes 04:55 | Nová verze

    Balík nástrojů Rust Coreutils / uutils coreutils, tj. nástrojů z GNU Coreutils napsaných v programovacím jazyce Rust, byl vydán ve verzi 0.3.0. Z 634 testů kompatibility Rust Coreutils s GNU Coreutils bylo úspěšných 532, tj. 83,91 %. V Ubuntu 25.10 se již používá Rust Coreutils místo GNU Coreutils, což může přinášet problémy, viz například nefunkční automatická aktualizace.

    Ladislav Hagara | Komentářů: 0
    včera 21:00 | IT novinky

    Od 3. listopadu 2025 budou muset nová rozšíření Firefoxu specifikovat, zda shromažďují nebo sdílejí osobní údaje. Po všech rozšířeních to bude vyžadováno někdy v první polovině roku 2026. Tyto informace se zobrazí uživateli, když začne instalovat rozšíření, spolu s veškerými oprávněními, která rozšíření požaduje.

    Ladislav Hagara | Komentářů: 0
    včera 17:11 | Humor

    Jste nuceni pracovat s Linuxem? Chybí vám pohodlí, které vám poskytoval Microsoft, když vás špehoval a sledoval všechno, co děláte? Nebojte se. Recall for Linux vám vrátí všechny skvělé funkce Windows Recall, které vám chyběly.

    Ladislav Hagara | Komentářů: 1
    včera 16:11 | Komunita

    Společnost Fre(i)e Software oznámila, že má budget na práci na Debianu pro tablety s cílem jeho vyžívání pro vzdělávací účely. Jako uživatelské prostředí bude použito Lomiri.

    Ladislav Hagara | Komentářů: 1
    26.10. 17:11 | IT novinky

    Proběhla hackerská soutěž Pwn2Own Ireland 2025. Celkově bylo vyplaceno 1 024 750 dolarů za 73 unikátních zranitelností nultého dne (0-day). Vítězný Summoning Team si odnesl 187 500 dolarů. Shrnutí po jednotlivých dnech na blogu Zero Day Initiative (1. den, 2. den a 3. den) a na YouTube.

    Ladislav Hagara | Komentářů: 4
    26.10. 13:33 | Komunita

    Byl publikován říjnový přehled dění a novinek z vývoje Asahi Linuxu, tj. Linuxu pro Apple Silicon. Pracuje se na podpoře M3. Zanedlouho vyjde Fedora Asahi Remix 43. Vývojáře lze podpořit na Open Collective a GitHub Sponsors.

    Ladislav Hagara | Komentářů: 0
    25.10. 15:44 | Zajímavý software

    Iniciativa Open Device Partnership (ODP) nedávno představila projekt Patina. Jedná se o implementaci UEFI firmwaru v Rustu. Vývoj probíhá na GitHubu. Zdrojové kódy jsou k dispozici pod licencí Apache 2.0. Nejnovější verze Patiny je 13.0.0.

    Ladislav Hagara | Komentářů: 0
    Jaké řešení používáte k vývoji / práci?
     (36%)
     (47%)
     (20%)
     (19%)
     (23%)
     (17%)
     (21%)
     (17%)
     (18%)
    Celkem 279 hlasů
     Komentářů: 14, poslední 14.10. 09:04
    Rozcestník

    Scheme snadno a rychle - 0. sprava pameti

    28.12.2006 22:38 | Přečteno: 1605× | Programování

    rad bych zde zacal maly tutorialek o tom jak si napsat interpetr programovaciho jazyka. kazdy spravny programator, by si mel za zivot urcite nejaky programovaci jazyk napsat. vite, jaky to dela dojem na zenske, kdyz je balite se slovy: "nechcete, abych vas uvedl do taju sveho interpretru?" jelikoz z urcitych duvodu pisu dialekt schemu, tak bych se o nektere poznatky rad podelil a jelikoz se to vleze na par set radku nebude to ani tezke. berte to spis jako inspiraci, nez nejake fundamentalni cteni.

    0. Sprava pameti

    vetsina clanku o jazycich zacina popisem gramatiky. zacnu trosku netradicni modelem prace s pameti. hodne zasadnim rysem jazyka byva jak pracuje s pameti. sice se muze zdat, ze automaticka sprava pameti je domenou trendy jazyku jako java nebo c# a opravdovi muzi ji nepouzivaji, ale garbage collector je tu uz nekdy od konce 50. let, kdy byl vymyslen pro lisp.

    0.1. Pocitani odkazu

    jednoduchy model automaticke spravy pameti vychazi z myslenky, ze kazdy kousek pameti si u sebe drzi pocet odkazu (pocitadlo) na dany blok v pameti. a pokud je vytvoren odkaz na dane misto, zvysi se pocitadlo, pokud je odkaz zrusen pocitadlo se snizi. kdyz pocet odkazu spadne na 0, je pamet uvolnena. tento princip je pouzity treba ve smart pointrech.

    krasna je teorie, oskliva je praxe. tento pristup ma velkou radu neduhu -- at uz je to rezije, kterou spotrebuje pocitadlo na sve ulozeni a operace scitani/odecitani taky nejaky cas zaberou. to nemluvim o tom, ze kdyz se jedna o vice vlaknovou aplikaci, je nutne, aby pocitadlo bylo chranene nejakym mutexem a to taky neco stoji. nejhorsi na tom je, ze pocitani odkazu nemusi vubec fungovat a muze delat osklive memory-leaky kvuli cyklickym odkazum. pocitani odkazu, i pres to, ze jde snadno pouzit a implementovat, se v praxi moc nepouziva, co vim, tak jej pouziva visual basic 6.0 a delphi na nektere typy datovych struktur.

    0.2. Sber odpadku

    bezne garbage collectory vychazi opet z myslenky, ze pamet se nebude pouzivat (a tudiz je uvolnitelna) v pripade, ze na ni nevede odkaz z nejakeho jineho kousku pameti. z teoretickeho pohledu je pamet rozdelena na kousky, ktere jsou provazany jako orientovany graf skladajici se z nekolika komponent. jenomze jak poznat, ktere casti jsou dostupne a ktere uz ne? neni to tezke. dostupne casti pameti jsou ty, ktere jsou odkazovany od nekud ze zasobniku nebo ze staticke promenne.

    garbage collectoru je vicero druhu a jednotlive rysy se mezi sebou kombinuji. ale to je na uplne jiny clanek. napsat slusny garbage collector je docela veda. osvedcil se mne boehmuv konzervativni garbage collector, ktery jde velice snadno zaclenit do stavajicich c/c++ aplikaci. nekteri o nem rikaji, ze je pomaly, ale z open source collectoru je jeden z nejrychlejsi, podporuje slusnou radku platforem (vcetne amd64, coz je u rady collectoru problem) a ma vynikajici vykon ve vicevlaknovych aplikacich. nasel jsem par clanku, ze v ibm maji neco lepsiho... ale zdrojaky nejak nedali k dispozici. kdyby nekdo vedel o necem podobnem, dejte mne vedet.

    pouzivani je proste, jak bulharska stripterka: staci linkovat proti knihovne "gc", pridat na zacatek kazdeho souboru "#include <gc/gc.h>" a pouzit nekterou funkci pro alokaci.

    pokud aplikace ma bezet ve vicevlaknovem prostredi je nutne v souborech pouzivajici neco z knihovny pthread, pred inkluzi gc.h deklarovat makro GC_THREADS a collector nektere funkce obali svymi.

    co je ale hezka vec, boehmuv kolektor se umi optimalizovat, aby kazde vlakno si alokovalo data zvlast a nemuselo dochazet k zamykani. staci pouzivat funkci GC_local_alloc(x), popr. deklarovat makro GC_REDIRECT_TO_LOCAL a to prevede vsechny volani GC_MALLOC na "optimalizovane". ma to ale jednu neprijemnou vlastnost. collector si uklada informace pomoci pthread_set_specfic, takze pokud je funkce volajici GC_local_alloc zavolana primo z procesu a ne z vlakna, zacne se chovat nepredvidatelne (teda segfaultuje). ale to jde resit, ze se v procesu spusti samostatne vlakno a predaji se mu jenom argumenty aplikace. (no jo, thready jsou v unixu cizorody element a prace s nimi neni tak komfortni jako treba ve windows)

    pro vetsi nahled do problematiky garbage collectoru muzu doporucit stranky pana boehma, ktery vyvraci nektere myty a pak velice pekne pocteni http://www.sidhe.org/~dan/blog/archives/000200.html, kde jsou collectory popsane mnohem srozumitelneji nez ode me.        

    Hodnocení: 85 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    28.12.2006 23:41 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    Nikdy bych nevěřil, že je možné o tak krásném jazyku psát tak odporným jazykem. :-D
    28.12.2006 23:50 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    a bude hur! zatim jsem o scheme nenapsal ani radku... ;-]

    ale jinak, co vam vadi? absence velkych/malych znaku, carky tam kde nemaji byt, amerikanismy? mozna se pro priste polepsim....
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    28.12.2006 23:51 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    Mi osobně pouze velké a malé písmena :-)
    29.12.2006 00:11 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    Ano, to je poznat už z toho nepřízvučného osobního zájmena v přízvučném postavení. :-D
    29.12.2006 00:12 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    BTW, ostraváci říkají „velké a malé písmena“? :-D
    29.12.2006 00:32 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    jo :-p
    28.12.2006 23:55 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    Jo, tohle a pak třeba ještě „režije“ a podobně. :-D BTW, slyšel jsem, že coding standards značně zlepšují čitelnost a udržovatelnost kódu, tak v češtině programuju podle best practices. ;-)
    28.12.2006 23:46 helemesecotonese
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    Jee, super! Tak tady na to se moooc tesim! Uz dlouho potrebuju napsat malicky interpret Scheme v intepretovanem jazyce. Doufam, ze se dozvim jak na to. Programovat trochu umim, ale nevystudoval jsem technickou skolu a tak mam problemy to zalgoritmizovat... :-)

    PS: jakym jazykem pisete je mi narozdil od kolegy fuk kdyz prilozite zdrojak micro-scheme (zakladni funkcionalita) treba v ANSI C, budu blahem chrochtat traktaty... ;-)
    28.12.2006 23:52 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    Nejlepší je psát interpret Scheme ve Scheme a úplně nejlíp Tě to naučí pánové s fezy, kouzelnickými klobouky a jinými pokrývkami hlavy. :-D :-D ;-)
    28.12.2006 23:58 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    on se z didaktickych ucelu rad implementuje scheme ve schemu, treba tady http://www.federated.com/~jim/schintro-v14/schintro_toc.html, ale neni to kompletni... (chybi treba call/cc... to treba ten "muj" bude umet, hec!) ale jako inspirace hezke, jsou tam popsany a vysvetleny nektereny terminy... ktere tak dobre nepopisu... :-/

    kdyby vas to zajimalo, tak implementace bude/je v ansi c.
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    29.12.2006 00:05 helemesecotonese
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    Super! To by me teda moc zajimalo. Doufam, ze to bude krasny a cisty kod. Uz se tesim. :-)
    29.12.2006 16:33 Lukáš Rýdlo | skóre: 18 | blog: Silný kafe | Brno
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    > ale nevystudoval jsem technickou skolu a tak mam problemy to zalgoritmizovat

    A jak to souvisí s technickou školou :-D (ne, vůbec se nenavážím do obsahu výuky na našem ústavu ;-)).
    θηριον ειμι
    28.12.2006 23:53 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    Pokud vím, tak počítání referencí se používá třeba v Perlu.

    Jinak, líbí se mi (čistě na teoretické rovině) Io. Garbage collector je pár set řádek v Céčku, které se honosí označeními non-moving, tri-color, write-barrier, generational nebo incremental, jimž příliš nerozumím, ale strašlivě mne fascinují :-)
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    29.12.2006 10:54 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    No, jako úplné základy dobré. O reference counting prakticky ani nemá smysl mluvit, rozhodně pak nemá smysl ho používat.

    K té druhé části - konzervativní GC pro C jsou zajímavé, ale jak to souvisí s implementaci Scheme? Jeho použití se může zdát snadnější, ale troufám si říci že ve výsledku se žádná práce neušetří a problémy přibydou (ve srovnání s vlastním GC).
    29.12.2006 11:13 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    reference counting jsem zminil, protoze presto ze je hodne nedokonaly v praxi se stale pouziva, at uz ve zminenych jazycich, ci aplikacich se smart pointry (a ze tech je). a v implementaci schemu jde docela snadno pouzit (vyzkouseno), ale za cenu degradace rychlosti.

    pro spravu pameti jsem zvolil boehmuv gc, protoze odpada samotna implementace garbage collectoru a tudiz napsat interpretr je snadnejsi a rychlejsi ;-] je to proste jak ve vetsine soucasnych jazyku -- alokuj si co potrebujes a o nic vic se nestarej.

    mohl byste se prosim rozepsat o potencialnich problemech s pouzitim konzervativniho gc, pred vlastnim? (pominu-li skutecnost, ze konzervativni gc se obcas netrefi)

    btw. boehmuv gc pouziva mj. velmi povedena a robustni implementace -- mzscheme.
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    29.12.2006 11:43 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    reference counting jsem zminil, protoze presto ze je hodne nedokonaly v praxi se stale pouziva, at uz ve zminenych jazycich, ci aplikacich se smart pointry (a ze tech je). a v implementaci schemu jde docela snadno pouzit (vyzkouseno), ale za cenu degradace rychlosti.
    V podstatě není důvod proč ho používat jinak než jako nouzovou nadstavbu nad existující správou paměti (to je případ právě těch smart pointerů).
    pro spravu pameti jsem zvolil boehmuv gc, protoze odpada samotna implementace garbage collectoru a tudiz napsat interpretr je snadnejsi a rychlejsi ;-] je to proste jak ve vetsine soucasnych jazyku -- alokuj si co potrebujes a o nic vic se nestarej.
    To je právě otázka...
    mohl byste se prosim rozepsat o potencialnich problemech s pouzitim konzervativniho gc, pred vlastnim? (pominu-li skutecnost, ze konzervativni gc se obcas netrefi)
    Nejde ani tak o problémy, jako spíše že není žádný prostor pro vylepšení a přizpůsobení. Vlastní GC umožňuje například řešit fragmentaci paměti nebo může být i plně paralelní, atd. To ale závisí na tom, jaké jsou s tím interpreterem plány.

    Konzervativní C garbage collector má ale jednu velkou výhodu - zjednoduší psaní samotného interpreteru.
    29.12.2006 12:18 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    tak to jsem rad, ze se shodneme.

    ono, napsat dobry gc (i treba specializovany) je docela veda a mimo rozsah tohoto clanku. napr. ja ho provozuji v paralelnim prostredi, kde uz to je uplna veda a co jsem tak studoval materialy, tak pan boehm a jeho kolegove jsou v tom docela daleko a hlavne publikuji konkretni reseni.
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    29.12.2006 10:56 Stanislav Bohm
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    Pocitani referenci, pokud si to dobre pamatuji, pouziva take Python. Navic k tomu pridava nejaky algoritmus na detekci a rozbijeni zacyklenych referenci.
    freshmouse avatar 29.12.2006 12:23 freshmouse | skóre: 42 | blog: Bruno Banány
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    Mě strašně fascinuje tenhle uživatel:

    Deda Jabko, blog: blog co se jmenuje "každý den jinak"

    A ještě ta patička o ukradených zdrojácích Debianu! To je prostě nářez. :-)
    29.12.2006 12:31 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    Ty mi povídej o patičkách. :-D
    freshmouse avatar 29.12.2006 12:32 freshmouse | skóre: 42 | blog: Bruno Banány
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    Cože? :-)
    29.12.2006 12:47 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    „Až koffr dostane Nobelovku, ožeru se jako prase.“ :-D :-D
    freshmouse avatar 29.12.2006 12:50 freshmouse | skóre: 42 | blog: Bruno Banány
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    No jo. Zrovna jsem uvažoval o znovunasazení svojí starší patičky (Prosíme, nevkládejte si do úst stolici nebo její části.), ale ta už je prý okoukaná. :-)
    29.12.2006 13:01 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    Hmm, co mám říkat já? :-) Moje patička je okoukaná skoro tři čtvrtě tisíciletí. :-D
    29.12.2006 16:49 Billy The Pilgrim | skóre: 1 | blog: Swamp
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    Zdrojaky Debianu jsou dobry hlod, to uznavam. Ale "kazdy den jinak" je i nazev kapely (hrajou tusim ponejvic s Redlem)
    29.12.2006 17:09 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    jojo, presne tak, bohuzel s redlem uz dohrali... kazdopadne to kouzlo rekurze (resp. nekonecne smycky) je uzasne a ta hudba je taky hodne dobra.
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    30.12.2006 04:26 Jary | skóre: 30 | blog: Jary má blog | Dům
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    Rekurze? Smyčka? Jsem slepý nebo málo inteligentní?
    .sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky. GitHub
    30.12.2006 11:33 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    v tom je to kouzlo ;-]
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    29.12.2006 16:31 Lukáš Rýdlo | skóre: 18 | blog: Silný kafe | Brno
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 0. sprava pameti
    Super článek. Možná si taky napíšu nějaký interpretr vlastního jazyka, abych mohl oslňovat slečny slovy "nechcete, abych vas uvedl do taju sveho interpretru?" :-D (a pak se divím, proč se mě lidi, kteří mě neznají, ptají s despektem "Nejseš ty náhodou informatik?" :-D)
    θηριον ειμι

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.