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í
×
    včera 15:33 | IT novinky

    Po 26 letech od protiprávního policejního zásahu, který byl spuštěn na základě podnětu společnosti Microsoft, Obvodní soud pro Prahu 2 rozsudkem potvrdil, že Mironet prokázal významnou část svého nároku na náhradu škody vůči Ministerstvu spravedlnosti ČR. Soudem nyní přiznaná část nároku znamená rekordní odškodné, jaké kdy české soudy přiznaly za nesprávný postup státu. Spor byl rozdělen na několik škod, u pravomocně uzavřených částí

    … více »
    Ladislav Hagara | Komentářů: 21
    včera 15:22 | Nová verze

    Lehké desktopové prostředí LXQt bylo vydáno ve verzi 2.4.0. Jde o převážně opravné vydání s drobnými vylepšeními podpory Waylandu.

    |🇵🇸 | Komentářů: 0
    včera 12:44 | IT novinky

    Počítačová hra Kingdom Come: Deliverance 2 českého studia Warhorse získala cenu BAFTA v kategorii nejlepší příběh. V konkurenci pěti dalších nominovaných děl porazila i úspěšnou francouzskou hru Clair Obscur: Expedition 33, která v letošním ročníku získala cenu za nejlepší hru roku.

    Ladislav Hagara | Komentářů: 1
    včera 12:22 | Komunita

    Projekt KDE oslaví v říjnu 30 let. Matthias Ettrich poslal 14. října 1996 do diskusní skupiny comp.os.linux.misc zprávu, která započala historii projektu. Důležité milníky jsou zobrazeny na časové ose KDE.

    Ladislav Hagara | Komentářů: 2
    včera 02:55 | Komunita

    Byly vyhlášeny výsledky letošní volby vedoucí/ho projektu Debian (DPL, Wikipedie). Poprvé povede Debian žena. Novou vedoucí je Sruthi Chandran. Letos byla jedinou kandidátkou. Kandidovala již v letech 2020, 2021, 2024 a 2025. Na konferenci DebConf19 měla přednášku Is Debian (and Free Software) gender diverse enough?

    Ladislav Hagara | Komentářů: 16
    včera 00:55 | Nová verze

    Byla vydána nová verze 10.3 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Přidána byla podpora Orange Pi 4 LTS. Přibyl balíček Prometheus.

    Ladislav Hagara | Komentářů: 0
    19.4. 18:55 | Nová verze

    Implementace VPN softwaru WireGuard (Wikipedie) pro Windows, tj. WireGuard pro Windows a WireGuardNT, dospěly do verze 1.0.

    Ladislav Hagara | Komentářů: 2
    19.4. 16:11 | IT novinky

    V Pekingu dnes proběhl 2. ročník půlmaratonu humanoidních robotů. První 3 místa obsadili roboti Honor Lightning v různých týmech. Nový rekord autonomního robota je 50 minut a 26 sekund. Operátorem řízený robot to zvládl i s pádem za 48 minut a 19 sekund. Řízení roboti měli časovou penalizaci 20 %. Před rokem nejrychlejší robot zvládl půlmaraton za 2 hodiny 40 minut a 42 sekund. Aktuální lidský rekord drží Jacob Kiplimo z Ugandy s časem 57 minut a 20 sekund [𝕏].

    Ladislav Hagara | Komentářů: 7
    17.4. 17:11 | Zajímavý článek

    Stanislav Fort, vedoucí vědecký pracovník z Vlčkovy 'kyberbezpečnostní' firmy AISLE, zkoumal dopady Anthropic Mythos (nový AI model od Anthropicu zaměřený na hledání chyb, který před nedávnem vyplašil celý svět) a předvedl, že schopnosti umělé inteligence nejsou lineárně závislé na velikosti nebo ceně modelu a dokázal, že i některé otevřené modely zvládly v řadě testů odhalit ve zdrojových kódech stejné chyby jako Mythos (například FreeBSD CVE-2026-4747) a to s výrazně nižšími provozními náklady.

    MakeIranBombedAgain❗ | Komentářů: 8
    17.4. 12:44 | IT novinky

    Federální návrh zákona H.R.8250 'Parents Decide Act', 13. dubna předložený demokratem Joshem Gottheimerem a podpořený republikánkou Elise Stefanik coby spolupředkladatelkou (cosponsor), by v případě svého schválení nařizoval všem výrobcům operačních systémů při nastavování zařízení ověřovat věk uživatelů a při používání poskytovat tento věkový údaj aplikacím třetích stran. Hlavní rozdíl oproti kalifornskému zákonu AB 1043 a kolorádskému SB26-051 je ten, že federální návrh by platil rovnou pro celé USA.

    MakeIranBombedAgain❗ | Komentářů: 15
    Které desktopové prostředí na Linuxu používáte?
     (14%)
     (8%)
     (1%)
     (12%)
     (30%)
     (3%)
     (6%)
     (2%)
     (15%)
     (25%)
    Celkem 1370 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Scheme snadno a rychle - 1. typovy system

    2.1.2007 23:05 | Přečteno: 1683× | Programování

    v beznem clanku o jazycich by alespon druha kapitola urcite byla o gramatikach a takovych tech vecech. ale necham si ji zatim pro sebe. v jazycich odvozenych od lispu, je rozdil mezi hodnotou a samotnym kodem hodne tesny, tak bych napsal neco o implementaci typu. neni to nic svetoborneho a priznavam, inspirovaneho guile.

    tagged union

    nema smysl zde budovat nejaky komplexni system datovych typu, i kdyz pravda r5rs jich definuje vicero, mj. pocita i s cisly o libovolne velikosti a presnosti. pro zacatek, z tech beznych si postacime se symboly, celymi cisly, boolovskymi hodnotami a typy pro tvorbu seznamu a neco malo pro praci s kodem. takze zavedeme vyctovy typ:

    typedef enum scm_type {
    	INT,
    	PAIR,
    	SYMBOL,
    	BOOL,
    	NIL,
    	VOID
    } scm_type;

    a zavedeme strukturu, ktera se bude skladat z hodnoty a jejiho typu

    typedef struct scm_value {
    	scm_type type;
    	union {
    		int integer;
    		int bool;
    		char * symbol;
    		struct scm_pair {
    			struct scm_value * ar;
    			struct scm_value * dr;
    		} pair;
    	} value;
    } scm_value;

    pravda, nektere hodnoty mohou byt vetsi nez by skutecne mohly byt (kvuli tem dvema pointrumu u typu "pair") na druhou stranu to velice zpohodlnuje praci s takovym typem, takze co vyplytvame na miste, usetrime rychlosti pri praci jednotlivych operaci s touto strukturou.

    opravdu to neni zadny zazrak, takze pokud by nekdo lisp nebo scheme videl poprve v zivote a zarazilo ho, ze o neco vyse zminuji typ pro tvorbu seznamu a ve strukture neni. pripomel bych, jak se vlastne takovy seznam tvori. jako typ jsou zde zavedny dva prvky a to NIL (prazdny seznam) a PAIR (teckovy par -- promenna obsahuje prave dve hodnoty libovolneho typu. casto se to znaci napr. (1 . 2)) vytvorit z nej seznam je pak docela trivialni zalezitost a to skladanim jednotlivych teckovych paru dohramady v principu (hodnota . seznam), napr. (1 . (2 . (3 . (4 . ())))) pro bezny zapis je to, ale hodne neprakticke, proto se to zkracuje do tvaru (1 2 3 4)

    finta s pointrama

    na jednu stranu jsem predchvilkou mlel neco o efektivite a mistu, presto tu musim zminit jeden hezky hack, ktery dokaze prijemne zlepsit vykon. pri tvorbe hodnot se pokazde alokuje nove misto v pameti. u typu jako NIL nebo BOOL to jde osetrit zadefinovanim urcitych konstant a z nich si vybirat hodnoty. to jde udelat pokud je hodnot malo, ale co takova cisla? hodnoty 0, 1, -1 jsou docela caste, takze co tak zavest konstanty i pro ne, ale 2 muze byt taky docela caste, atd., atd.

    na nekterych architekturach jde pouzit bezva finta, pomalu jak bezva finta, jeana paula belmonda z filmu bezva finta. staci drobna informace o tom, ze vetsina alokatoru alokuje pamet do bloku zarovnanych na 4 nebo 8 bytu. to znamena ze minimalne spodni dva bity jsou vzdy 0 a prakticky se nepouzivaji. cela pointa pak tkvi v tom, ze je pouzijeme jako priznak, jestli se jedna o ukazatel, nebo je v hodnote ulozena nejaka dalsiho informace. napr. pokud je spodni bit nastaven na 0 jedna se o pointer a jako s takovym s nim budeme pracovat, je-li spodni bit 1 jedna se o cele cislo a na zbylych 31 bitech mame ulozenou jeho hodnotu. v kodu to pak vypada nejak takto:

    #define scm_value_new_int(__val) ((scm_value *)(1 | ((__val) << 1)))
    #define SCM_INT(x)      (int)((long)x >> 1)
    

    makro scm_value_new_int(x) vytvori "ukazatel", ktery vlastne neni ukazatel, ale pouze ciselna hodnota a makro SCM_INT(x) umi hodnotu z tohoto "ukazatele" vycist zpet.

           

    Hodnocení: 100 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    3.1.2007 05:46 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 1. typovy system
    Čeština očividně nepokročila, ale obsah přijímám s nadšením. :-) Ty časté hodnoty mi připomínají některé optimalizace ve Smalltalku: bajtkód ST-80 definuje operace (mapcar #'(lambda (x) (concatenate 'string "push " x)) '("true" "false" "-1" "0" "1" "2")) jako samostatné opkódy. :-)
    3.1.2007 05:47 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 1. typovy system
    Oprava, v seznamu mi samozřejmě chybí ještě hodnota "nil". ;-)
    3.1.2007 07:12 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 1. typovy system
    A mimochodem, tagované hodnoty mi nepřijdou jako „hack“, to je technika stará snad jako Metuzalém. ;-) A kdyby to používala třeba Java, mohla by mít objektový inty a nemusela by se vymlouvat na výkon. :-D
    3.1.2007 11:01 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 1. typovy system
    To je těžké, určitá sorta lidí by tomu stejně nevěřila... a tatáž sorta lidí by pradvěpodobně nepřekousla 31-bitový celočíselný typ.
    3.1.2007 11:05 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 1. typovy system
    To se mi líbí. Mohli bychom mít datový typ přirozené číslo s obvyklou horní mezí :-)
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    3.1.2007 11:07 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 1. typovy system
    No jo, já vím, lidi zapomněli i na šesti-, sedmi- a devítibitový bajty. Lidi zapomenou na leccos. ;-)
    3.1.2007 10:31 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 1. typovy system
    Python tu optimalizaci krátkých integerů kupodivu nepoužívá. Ruby i Lua ano. Sice to šetří paměť, ale komplikuje kód, a Guido asi naznal že bude mít raději integery (a vlastně všechno) důsledně jako reference. Mít všude výhybku na integerovou aritmetiku totiž není žádná sranda- fakticky je třeba samostatně implementovat 31-bitovou aritmetiku a 32-bitovou aritmetiku, a po každém pitomém inkrementu testovat, jestli 32-bit výsledek vleze do 31-bit short intu, nebo ne. Sice se šetří paměť, ale na runtime to má režii.

    Taky je zajímavý koukat na jazyky, jestli mají unikátní stringy (Python ani Ruby je nemá, Lua ano). Komplikují se trochu stringové operace, po každém concat nebo substr se výsledek musí znovu atomizovat, ale výhodou je pak velmi rychlé srovnávání stringů na rovnost, a rychlé indexování stringy v hashích (ekvivalence obsahu implikuje identickou referenci).

    A když už mluvíte o fintách s tagovanými krátkými integery, proč nezmínit taky geniální fintu zvanou BBOP? Prakticky každý lepší malloc() ji interně používá, aby si zapamatoval jak velký je alokovaný blok, aniž by size musel ukládat na jeho začátek. Když jde do vysokých bitů pointeru ukládat velikost bloku, jde tam samozřejmě ukládat i typetag.

    Bohužel nevím o žádném sysému, který by to dělal. Smalltalk?
    Táto, ty de byl? V práci, já debil.
    3.1.2007 10:38 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 1. typovy system
    Hmm, tak jsem googlil, a není to BBOP, ale BIBOP. A BIBOP pro typetagy se občas používají, např. the Icon programming language.
    Táto, ty de byl? V práci, já debil.
    3.1.2007 10:46 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 1. typovy system
    „…a po každém pitomém inkrementu testovat, jestli 32-bit výsledek vleze do 31-bit short intu, nebo ne. Sice se šetří paměť, ale na runtime to má režii.“
    A u short integeru se v Pythonu netestuje, jestli se výsledek vleze zase do short integeru nebo se musí vytvořit long? ;-) Jinak, Ruby 2.0 bude po vzoru Smalltalku Symbol mít jako podtřídu Stringu (na rozdíl od současné implementace), takže je klidně možné, že se bude chovat stejně.

    A ten tzv. BBOP je čirou náhodou vynález Lispu z poloviny sedmdesátých let. ;-)
    3.1.2007 11:28 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 1. typovy system
    A u short integeru se v Pythonu netestuje

    Python 31-bit short integery nemá. Má normální 32-bit integery (signed, immutable, na heapu, často používané hodnoty zamknuté ve sdílené tabulce), a pak má long integery (signed, mutable, na heapu, bignum). Lua myslím nic jiného než 31-bit short integery, kódované do referencí, nemá. Je to pak krásně jednoduché :) Perl je superhnusosračka, ten integery neumí vůbec, všechno snad počítá v double nebo co, a bit shifty se mu chovají naprosto nepředvídatelně.

    Symbol mít jako podtřídu Stringu

    Haha. Lua vládne. Hash je list, a list je hash. String je symbol, a symbol je string.

    BBOP je čirou náhodou vynález Lispu z poloviny sedmdesátých let.

    Není, Lisp měl zones. Co to je nevím, ale když se tomu říká jinak, tak to bude něco jiného :)
    Táto, ty de byl? V práci, já debil.
    3.1.2007 11:43 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 1. typovy system
    „Python 31-bit short integery nemá. Má normální 32-bit integery (signed, immutable, na heapu, často používané hodnoty zamknuté ve sdílené tabulce), a pak má long integery (signed, mutable, na heapu, bignum).“
    Reagoval jsem na tvrzení, že se něco musí testovat a má to režii. V Pythonu přetékají short integery do long integerů a tudíž se tam asi něco testuje, jinak by se to nemohlo chovat jinak v závislosti na tom, jestli to přeteče nebo ne. Asi mi něco ušlo.
    „Není, Lisp měl zones. Co to je nevím, ale když se tomu říká jinak, tak to bude něco jiného :)“
    Doporučuju přečíst si Data Representations in PDP-10 MACLISP, autor Guy Steele Jr., MIT 1977. Občas je dobré vědět a ne si jen myslet. Cestu ke Googlu určitě znáš. ;-)
    3.1.2007 11:59 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 1. typovy system
    FOLDOC sayez:
    This idea is similar to the "zones" used in some Lisp systems (e.g. LeLisp).
    Protože vím že mezi "similar" a "identical" je podstatný rozdíl, nic hledat nebudu.
    Táto, ty de byl? V práci, já debil.
    3.1.2007 12:19 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 1. typovy system
    Tak moment. Já netvrdím, že zones jsou totéž a BiBoP – nejsou. ;-) Ale to, že zones jsou něco jiného, ještě neimplikuje, že BiBoP není vynález autorů MACLISPu. ;-)
    3.1.2007 12:34 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 1. typovy system
    Přece se nebudem hádat o tom kdo si první všiml které zjevné věcí, jako že reference i hodnoty mají stejnou podstatu, a že jednoduchý alokátor má zbytečně mnoho stupňů volnosti. Unikátní objevy neexistují, prvenství je irelevantní, vše je nezávislý důsledek slepé indukce smíchané s okamžikem náhodné inspirace. Já taky vymyslel BSP stromy rok a půl předtím, než jsem o nich četl první odborný článek, a nedělám z toho vědu, protože téměř určitě to předtím v nějaké zapomenuté gamesce udělal i někdo jiný.. Když existuje zadání a prostředí, řešení je samozřejmé.
    Táto, ty de byl? V práci, já debil.
    3.1.2007 13:36 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 1. typovy system
    No to je mi rétorika. :-) Tak nejdřív taková vehementní reakce na moje konstatování, že BIBOP je vynálezem z Lispu (zčásti stimulované větou „bohužel nevím o žádném systému, který by to dělal“ ;-)) a najednou se nebudeme hádat. :-D Já se nehádám, nemám proč – pouze prezentuji fakta, nikoli vágní představy o historii. Přinejmenším název BiBoP pochází přímo z mnou odkazované práce. Což je další (a ještě závažnější) důvod, proč jsem ji vytáhnul na světlo. Existuje-li několik příbuzných konceptů, pochopitelně nemá vůbec smysl nějaký konkrétní název vytahovat, ovšem já s ním v téhle diskusi nepřišel. ;-)
    3.1.2007 13:51 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 1. typovy system
    Jo a kdybych chtěl být fakt tvrdý, připomenul bych, že existují-li příbuzné koncepty, mezi kterými je třeba rozlišovat, aby nedošlo ke zmatení, pak tasit se s BiBoPem v kontextu GC a zjišťování velikosti alokovaných bloků je velmi nešťastné, poněvadž BiBoP slouží výhradně k úspoře paměti potřebné k ukládání objektů, a to v souvislosti s potřebou odvodit nějakým způsobem typ objektu z reference. BiBoP není schopný říct, jaká je velikost objektů, jako je třeba array nebo hunk. Fixní velikosti objektů na stránce jsou nad rámec BiBoPovy pracovní smlouvy. ;-)
    3.1.2007 14:02 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 1. typovy system
    Velikost instance je normální součást metadat. Rozlišovat odvození typu objektu z reference, a odvození jeho velikosti z téhož proto nemá smysl, leda byste byl pedagog.
    Táto, ty de byl? V práci, já debil.
    3.1.2007 14:18 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 1. typovy system
    Normální součástí metadat, hm. Jenže průšvih je třeba v tom, že pole mohou mít různou velikost. A BIBOP nemá speciální stránky pro „pole velikosti 42“. (K čemu sloužil, o tom jsem už psal.) Respektive může mít, v konkrétní implementaci, ale není to jeho povinnost. Každopádně přeju hodně štěstí při vynalézání kola. :-)

    Mimochodem, ten název stejně zůstal nepochopený. Ono to „Big Bag of Pages“ označovalo mezeru operačního systému ITS, která se nacházela mezi částí fyzické paměti určené pro texty programů (která v tomto operačním systému rostla směrem nahoru) a přidělovanými datovými stránkami (které v něm přibývaly směrem dolů). Holt si někdo pomíchal pojmy a začal nazývat způsob organizace objektů do stránek a zjišťování jejich typů názvem, který se týkal pouze toho, odkud se nově alokované ztránky získávaly. Ale to jen taková historická douška. :-)
    3.1.2007 12:44 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 - 1. typovy system
    ono resit 31-bitu pretekajicich na 32 neni zase takove velke dilema, ve scheme se treba musi jeste kontrolovat jestli vysledne cislo nepretece mimo definovany typ a pokud ano, pak prevest na nejaky bignum typ (nejspis pomoci libgmp)... ale to nevim, jestli budu resit....

    to s tema sdilenama stringama muze mit taky neco do sebe... pri pouziti na symboly... kdyz si clovek uvedomi, ze symboly se opakuji skoro porad dokola -- to je same lambda, define, cons, list, let,... na druhou stranu to zapleveli kod parseru, ale problemy se substr a concat odpadaji... jeste o tom popremyslim....

    abych pravdu rekl o BiBoP jsem nevedel, finta je to moc pekna, ale ma jednu chybu -- potrebuje napsat cely memory managment pomalu na zelene louce, takze pro zatim bych ji vyloucil jako predcasnou optimalizaci ;-]
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    3.1.2007 13:29 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 1. typovy system
    Pokud budete chtít mít dobrý GC, je memory management na zelené louce téměř nutnost. Poslední rok taky uvažuju, že napíšu vlastní skriptovací jazyk. Vypadá to na runtime (datový model, hashe, closury, GC) založené na LUA, syntaxí a objekty z Pythonu (s přídaným auto i explicitním statickým typováním, ale bez MI, ala Java), s custom memory managerem, BEZ bytecode vrstvy (jen přímý nerelokovatelný i386 backend, něco z GNU Lightning, něco z TinyCC). Memory manager bude BBOP, na začátku stránky budou immutable metadata (typetagy, classinfo, unit size, atd), na konci stránky pak alokační bitmapa instancí. Krom toho bude ještě jedna bitmapa pro zcela volné stránky (arena bude mít pevnou velikost). Žádné generace, žádné inkrementální GC, jen jednoduchý mark & sweep GC, optimalizovaný pro velké množství transientních dat (předpokládám že při běhu GC bude většina stránek free + dirty), takže se stránky jen zahodí, a GC bude zapisovat jen do bitmapy stránek.
    Táto, ty de byl? V práci, já debil.
    3.1.2007 14:19 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 - 1. typovy system
    tak to si tak pul roku vyclente jenom na ten memory managment. ;-]

    jak jsem psal v predchozim clanku, neberte to jako nejake fundamentalni cteni, spis jako demonstraci ze jde jednoduse napsat interpretr plnohodnotneho jazyka na par set radek.
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    3.1.2007 14:34 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 1. typovy system
    tak to si tak pul roku vyclente jenom na ten memory managment. ;-]

    Zrovna tohle je věc, kterou jsem měl dotaženou nejdál, a částečně implementovanou. Zajímala mě primárně rychlost alokace, tak jsem to benchmarkoval oproti mallocu(). Vyladěný hodinový alokátor, ukusující z úplně nové stránky, byl jen zhruba o 40% rychlejší než malloc(). To mě tehdy vážně nasralo, hrál jsem si tam s asm/bitops.h, nasekal tam fůru likely() na horký cesty, 31 alokací z 32 mělo být jen pár lineárních instrukcí, kód z gcc vypadal fakt dobře.. a ono to při minimální funkcionalitě bylo jen o fous rychlejší než libc. Čekal jsem naivně řádovej rozdíl, tohle mě fakt zklamalo, dal jsem to k ledu.

    jak jsem psal v predchozim clanku, neberte to jako nejake fundamentalni cteni, spis jako demonstraci ze jde jednoduse napsat interpretr plnohodnotneho jazyka na par set radek.

    Bezva, těším se.
    Táto, ty de byl? V práci, já debil.
    3.1.2007 14:43 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 - 1. typovy system
    prave s memory managmentem jsem si taky hral (se zamerenim na paralelni prostredi), proti libc to bylo fakt o neco rychlejsi, ale pak jsem zkusil jine alokatory a pomyslny uspech byl ten tam... a vzhledem k tomu, ze beohmuv gc podava podobne vykony jako libc malloc, ktery pouziva vetsina aplikaci, nebylo co resit.... (ta divocina s atomickymi operacemi za to fakt nestoji)
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    3.1.2007 14:15 Tom.š Ze.le.in | skóre: 21 | blog: tz
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 1. typovy system
    Mít všude výhybku na integerovou aritmetiku totiž není žádná sranda- fakticky je třeba samostatně implementovat 31-bitovou aritmetiku a 32-bitovou aritmetiku, a po každém pitomém inkrementu testovat, jestli 32-bit výsledek vleze do 31-bit short intu, nebo ne. Sice se šetří paměť, ale na runtime to má režii
    Ne nezbytně - nevím jak scheme (asi ne), ale některé Common Lispy jsou ochotny uvěřit deklaracím že vše je fixnum (tedy 31-bitový integer) a generovat efektovní kód - tedy pokud o tu runtime režii až tak jde....
    * (declaim (optimize speed space (safety 0) (debug 0)))
    * (defun plus (a b)
       (declare (fixnum a b))
       (the fixnum (+ a b)))
    PLUS
    * (disassemble #'plus)
    
    ; 0A5F1A0E:       01FA             ADD EDX, EDI
    ;       10:       8D65F8           LEA ESP, [EBP-8]
    ;       13:       F8               CLC
    ;       14:       8B6DFC           MOV EBP, [EBP-4]
    ;       17:       C20400           RET 4
    ;       1A:       90               NOP
    ;       1B:       90               NOP
    ;       1C:       90               NOP
    ;       1D:       90               NOP
    ;       1E:       90               NOP
    ;       1F:       90               NOP
    ; 
    NIL
    
    3.1.2007 14:19 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 1. typovy system
    „…nevím jak scheme (asi ne)…“
    Stalin by k tomu určitě šel dokopat. ;-)
    3.1.2007 14:23 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: Scheme snadno a rychle - 1. typovy system
    Hmm, žrádýlko.
    Táto, ty de byl? V práci, já debil.

    Založit nové vláknoNahoru

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