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 15:00 | Komunita

    F-Droid bannerem na svých stránkách a také v aplikacích F-Droid a F-Droid Basic upozorňuje na iniciativu Keep Android Open. Od září 2026 bude Android vyžadovat, aby všechny aplikace byly registrovány ověřenými vývojáři, aby mohly být nainstalovány na certifikovaných zařízeních Android. To ohrožuje alternativní obchody s aplikacemi jako F-Droid a možnost instalace aplikací mimo oficiální obchod (sideloading).

    Ladislav Hagara | Komentářů: 0
    včera 16:33 | Nová verze

    Svobodná historická realtimová strategie 0 A.D. (Wikipedie) byla vydána ve verzi 28 (0.28.0). Její kódový název je Boiorix. Představení novinek v poznámkách k vydání. Ke stažení také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    včera 04:44 | Nová verze

    Multimediální server a user space API PipeWire (Wikipedie) poskytující PulseAudio, JACK, ALSA a GStreamer rozhraní byl vydán ve verzi 1.6.0 (Bluesky). Přehled novinek na GitLabu.

    Ladislav Hagara | Komentářů: 0
    včera 01:11 | Nová verze

    UBports, nadace a komunita kolem Ubuntu pro telefony a tablety Ubuntu Touch, vydala Ubuntu Touch 24.04-1.2 a 20.04 OTA-12.

    Ladislav Hagara | Komentářů: 0
    19.2. 18:00 | Nová verze

    Byla vydána (Mastodon, 𝕏) nová stabilní verze 2.0 otevřeného operačního systému pro chytré hodinky AsteroidOS (Wikipedie). Přehled novinek v oznámení o vydání a na YouTube.

    Ladislav Hagara | Komentářů: 1
    19.2. 16:00 | Zajímavý software

    WoWee je open-source klient pro MMORPG hru World of Warcraft, kompatibilní se základní verzí a rozšířeními The Burning Crusade a Wrath of the Lich King. Klient je napsaný v C++ a využívá vlastní OpenGL renderer, pro provoz vyžaduje modely, grafiku, hudbu, zvuky a další assety z originální kopie hry od Blizzardu. Zdrojový kód je na GitHubu, dostupný pod licencí MIT.

    NUKE GAZA! 🎆 | Komentářů: 6
    19.2. 13:33 | IT novinky

    Byl představen ICT Supply Chain Security Toolbox, společný nezávazný rámec EU pro posuzování a snižování kybernetických bezpečnostních rizik v ICT dodavatelských řetězcích. Toolbox identifikuje možné rizikové scénáře ovlivňující ICT dodavatelské řetězce a na jejich podkladě nabízí koordinovaná doporučení k hodnocení a mitigaci rizik. Doporučení se dotýkají mj. podpory multi-vendor strategií a snižování závislostí na vysoce

    … více »
    Ladislav Hagara | Komentářů: 4
    19.2. 12:22 | Humor

    Nizozemský ministr obrany Gijs Tuinman prohlásil, že je možné stíhací letouny F-35 'jailbreaknout stejně jako iPhony', tedy upravit jejich software bez souhlasu USA nebo spolupráce s výrobcem Lockheed Martin. Tento výrok zazněl v rozhovoru na BNR Nieuwsradio, kde Tuinman naznačil, že evropské země by mohly potřebovat větší nezávislost na americké technologii. Jak by bylo jailbreak možné technicky provést pan ministr nijak nespecifikoval, nicméně je známé, že izraelské letectvo ve svých modifikovaných stíhačkách F-35 používá vlastní software.

    NUKE GAZA! 🎆 | Komentářů: 38
    19.2. 06:00 | Zajímavý článek

    Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 162 (pdf).

    Ladislav Hagara | Komentářů: 0
    19.2. 05:55 | IT novinky

    Sdružení CZ.NIC, správce české národní domény, zveřejnilo Domain Report za rok 2025 s klíčovými daty o vývoji domény .CZ. Na konci roku 2025 bylo v registru české národní domény celkem 1 515 860 s koncovkou .CZ. Průměrně bylo měsíčně zaregistrováno 16 222 domén, přičemž nejvíce registrací proběhlo v lednu (18 722) a nejméně pak v červnu (14 559). Podíl domén zabezpečených pomocí technologie DNSSEC se po několika letech stagnace výrazně

    … více »
    Ladislav Hagara | Komentářů: 10
    Které desktopové prostředí na Linuxu používáte?
     (18%)
     (6%)
     (0%)
     (11%)
     (27%)
     (2%)
     (5%)
     (2%)
     (12%)
     (26%)
    Celkem 923 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    Legrace s typovým systémem Perlu 6

    4.1.2010 19:15 | Přečteno: 1398× | programování | Výběrový blog | poslední úprava: 4.1.2010 19:23

    U Ovida jsem narazil jsem na pěkný kus šestkového Perlu, který si hraje s typovým systémem:

    use v6;
    
    subset Filename of Str where { $_ ~~ :f };
    
    sub foo (Filename $name) {
        say $name;
    }
    
    my Filename $test = $*EXECUTABLE_NAME;
    foo($test);
    foo($*EXECUTABLE_NAME);
    foo('no_such_file');
    
    Výstup:
    /Users/zoul/Code/rakudo/parrot_install/bin/perl6
    /Users/zoul/Code/rakudo/parrot_install/bin/perl6
    Constraint type check failed for parameter '$name'
    in Main (file src/gen_setting.pm, line 324)
    
    Hádám, že s tím si v novém Perlu hodně vyhrajeme. Mimochodem mě to konečně donutilo nainstalovat Rakudo:
    $ git clone git://github.com/rakudo/rakudo.git
    $ cd rakudo/
    $ perl Configure.pl --gen-parrot
    $ make && make install
    $ alias perl6=./parrot_install/bin/perl6
    
    Potřebujete tuším jen git, svn a normální unixový systém.        

    Hodnocení: 56 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    Limoto avatar 4.1.2010 19:23 Limoto | skóre: 32 | blog: Limotův blog
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    Co je na tom pěknýho?
    zoul avatar 4.1.2010 19:28 zoul | skóre: 43 | blog: | Boskovice
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    Rozumíš tomu kódu? Konkrétně v tomhle případě můžu například ve skriptech vynechat ruční kontrolu existence nebo typu souboru, vyřeší ji za mě typový systém. Podstatné ale je, že typový systém může volat kód za běhu programu. S tím se dá neuvěřitelně vyhrát. (A samozřejmě tím určitě půjde vyrobit spousta krásných chyb, ale v tomhle dával Perl lidem vždycky volnou ruku…)
    Limoto avatar 4.1.2010 19:32 Limoto | skóre: 32 | blog: Limotův blog
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    Ne, nerozumím. Na porozumění pěknýmu kódu nepotřebuju speciální školu.
    4.1.2010 19:58 pasmen | skóre: 45 | blog: glob | Praha
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    Potřebuješ speciální školu na porozumění Perlu. Pak už ti stačí nebýt debil a uvidíš tu krásu.
    5.1.2010 01:04 l4m4
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    Krásného na tom není nic, je to samozřejmě typický Perl, kde se vždy mátly pojmy a dojmy, takže vznikal ,ohromě elegnatní` kód srozumitelný akorát autorovi. Typ dat se mění v závislosti na pracovím adresáři. To je hnus, velebnosti.
    4.1.2010 19:55 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    Vcelku jsem pobral, že klíčem je řádka subset Filename of Str where { $_ ~~ :f };, a tak jsem jedním dotazem do Googlu narazil na zápisek, který se tentýž problém snaží aspoň trochu vysvětlovat: http://waffle.wootest.net/2009/12/19/perl-6-feature-ep1/. Oproti němu je přítomný text opravdu prachbídný. Předpokládám, že :f je tedy role "býti existujícím souborem"? Pobavilo mne mimochodem, že parametr $name ve funkci foo má staticky deklarovaný typ :-)
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    4.1.2010 19:56 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    role "býti existujícím souborem"
    Tedy "býti názvem existujícího souboru", když je to řetězec.
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    zoul avatar 4.1.2010 22:02 zoul | skóre: 43 | blog: | Boskovice
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    Přítomný text se snažil upozornit na hezkou funkci nového Perlu, nikoliv ji vysvětlovat. Kdo chce, podrobnější vysvětlení si evidentně najde.
    4.1.2010 22:19 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    Ale jo, taky jsem pár takovejch napsal. Je to zajímavé (ta statická deklarace typu je v tomhle případě asi povinná?), ale řekl bych, že aby to bylo rozumně použitelné, tak to bude potřebovat minimálně možnost dodat vlastní chybovou hlášku. Perl 6 nesleduju, ale vím, že má pár hodně zajímavých funkcí, takže takovéhle zápisky rozhodně nehodnotím negativně.
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    zoul avatar 4.1.2010 22:30 zoul | skóre: 43 | blog: | Boskovice
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    Vlastní chybové hlášky si přál už Ovid, od kterého jsem ten kód vzal. Chvilku jsem šťáral ve specifikaci, ale nenašel. Zato jsem našel další hračku, která kromě podtypů využívá ještě multiple dispatch:
    multi sub fib (Int $n where 0|1) { return $n }
    multi sub fib (Int $n) { return fib($n-1) + fib($n-2) }
    
    …případně:
    multi sub fib (0) { return 0 }
    multi sub fib (1) { return 1 }
    multi sub fib (Int $n) { return fib($n-1) + fib($n-2) }
    
    To je pěkné, vzory jsem Haskellu vždycky záviděl :)
    4.1.2010 23:56 Jaromír Hradílek | skóre: 29 | Brno
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    To je ovšem velice pěkné!
    5.1.2010 08:00 Tom.š Ze.le.in | skóre: 21 | blog: tz
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    Asi mám jinou terminologii, ale multiple dispatch u funkce jedné proměnné?
    zoul avatar 5.1.2010 11:24 zoul | skóre: 43 | blog: | Boskovice
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    S terminologií je to jako obvyklesložité. Dispatching je výběr funkce, která se má spustit. Multiple dispatch znamená, že se vybírá podle více kritérií. Prvním z nich je objekt, jehož metodu voláme – tady jsme se předpokládám minuli. Podle jeho typu dispatchuje už Perl 5: volání dvou stejně nazvaných metod dvou různých objektů volá různé funkce. Perl 6 tohle chování celkem přirozeně rozšiřuje na další parametry funkce, nejen na ten první. (Viz apokalypsu 12.)
    5.1.2010 12:09 Tom.š Ze.le.in | skóre: 21 | blog: tz
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    Z odkazu tahle část odpovídá mně známé definici, ale pak mi přijde že píší o něčem jiném. No nic, je to Perl.
    Multiple dispatch is based on the notion that methods often mediate the relationships of multiple objects of diverse types, and therefore the first object in the argument list should not be privileged over other objects in the argument list when it comes to selecting which method to run.
    Kažpodádně demonstracë multiple dispatch na funkci jedné proměnné mi pořád přijde zvláštní.
    5.1.2010 08:57 Tom.š Ze.le.in | skóre: 21 | blog: tz
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    Mimochodem, nedávno jsem sledoval jazykovou diskusi ohledně zavedení podobné vlasnosti (dispatch podle obecného typu) jinde, a klíčová otázka byla jak seřadit metody (tj v jednoduchém případě kterou zvolit) když předaná hodnota patří více typům které nejsou podtypem jeden druhého (například dispatch pro liché a dispatch pro čísla mezi 0 a 20).

    Triviální možnosti jsou nahlásit chybu, řídit se pořadím načtení (a riskovat divné chování pokud jsou definice v různých souborech - a v jednom souboru to už klidně může být switch), a dělat to zcela náhodně (ehm). Co zvolil Perl?
    zoul avatar 5.1.2010 11:32 zoul | skóre: 43 | blog: | Boskovice
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    Něco složitého, viz synopsis 12
    The order in which candidates are considered is defined by a topological sort based on the "type narrowness" of each candidate's long name, where that in turn depends on the narrowness of each parameter that is participating.
    …plus několik dalších odstavců textu.
    5.1.2010 12:20 Tom.š Ze.le.in | skóre: 21 | blog: tz
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    Ne, to citované není složité, to je standardní postup starý desítky let.

    Aha, tohle je asi ono. Takže pořadí deklarace.
    Thus, constrained signatures are considered to be much more like a switch defined by the user. So for tiebreaker A the candidates are simply called in the order they were declared, and the first one that successfully binds (and completes without calling nextsame or nextwith) is considered the winner, and all the other tied candidates are ignored.
    zoul avatar 4.1.2010 23:25 zoul | skóre: 43 | blog: | Boskovice
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    Té poznámce o statické deklaraci typu jsem už prve nerozuměl. Ukazujou se tu vlastně dvě věci najednou: kontrola typu během přiřazení do proměnné a kontrola typu při volání funkce. Statická deklarace typu v hlavičce funkce myslím potřeba není, ovšem bez ní by se samozřejmě kontroloval typ proměnné jen během přiřazení. (Snad mluvíme o tomtéž.)
    4.1.2010 23:39 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    bez tej deklarácie by ti nefungoval ten posledný príklad, čo je v podstate automatické pretypovanie.
    4.1.2010 23:41 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    Je to přesně ono. Ten typ zjevně není potřeba deklarovat ani u té proměnné – pak by se ovšem nekontrolovalo nic. Ono to nijak jinak nejde, jen mi to přijde zábavné – dynamicky typovaný jazyk zavádní statické typové deklarace (nebo spíš anotace), aby mohl dynamicky kontrolovat typy :-)
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    5.1.2010 04:06 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    Jeden by mohol povedať, že Perl 6 bude beztypový jazyk s typovou kontrolou. A to imho je užitočná vlastnosť. Motto Perl 5 (TIMTOWTDI ) tak velí :-) Prečo obmedzovať programátora vo vyjadrovacích prostriedkoch? Nech sa vyjadruje ako chce ... česky, slovensky, anglicky, nemecky :-D
    4.1.2010 20:39 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    Co se stane, když se úspěšně ověří, že soubor existuje, ale poté ho někdo smaže?

    zoul avatar 4.1.2010 22:12 zoul | skóre: 43 | blog: | Boskovice
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    Dobrá otázka. Tohle je přirozeně jen hack, právě protože typování nemůže zaručit, že ten soubor nezmizí. Praktičtější podtyp může vypadat například takhle:
    subset Odd of Int where { $_ % 2 };
    
    I typ Filename se ale může hodit, třeba v menších skriptech. Důležité je, aby si člověk uvědomoval jeho omezení.
    5.1.2010 15:27 himdel
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    Vlastni chybove hlasky jsou celkem trivialni, ne?:
    $ perl6 -e '
     multi sub foo($n where :f) { say "OK $n" }
     multi sub foo($n) { say "NAAH $n" }
     foo("/bin/pwd");
     foo("/bagr");
    '
    OK /bin/pwd
    NAAH /bagr
    
    Kazdopadne krasna featura :)
    5.1.2010 15:31 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    Jenže tady ta chybová hláška není spojená s tím typem.
    6.1.2010 12:35 Trained.Monkey | skóre: 12 | blog: monkey
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    Snesu dost, ale tohle je fakt perverzni.
    zoul avatar 6.1.2010 17:10 zoul | skóre: 43 | blog: | Boskovice
    Rozbalit Rozbalit vše Re: Legrace s typovým systémem Perlu 6
    Perverzní je provádění kódu v rámci kontroly typů, nebo tenhle konkrétní příklad?

    Založit nové vláknoNahoru

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