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

    Vyšlo Pharo 12.0, programovací jazyk a vývojové prostředí s řadou pokročilých vlastností. Krom tradiční nadílky oprav přináší nový systém správy ladících bodů, nový způsob definice tříd, prostor pro objekty, které nemusí procházet GC a mnoho dalšího.

    Pavel Křivánek | Komentářů: 0
    dnes 04:55 | Zajímavý software

    Microsoft zveřejnil na GitHubu zdrojové kódy MS-DOSu 4.0 pod licencí MIT. Ve stejném repozitáři se nacházejí i před lety zveřejněné zdrojové k kódy MS-DOSu 1.25 a 2.0.

    Ladislav Hagara | Komentářů: 21
    včera 17:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 24.04 LTS Noble Numbat. Přehled novinek v poznámkách k vydání a také příspěvcích na blogu: novinky v desktopu a novinky v bezpečnosti. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 10. LTS verzi.

    Ladislav Hagara | Komentářů: 13
    včera 14:22 | Komunita

    Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.

    Ladislav Hagara | Komentářů: 2
    včera 13:22 | Nová verze

    Fossil (Wikipedie) byl vydán ve verzi 2.24. Jedná se o distribuovaný systém správy verzí propojený se správou chyb, wiki stránek a blogů s integrovaným webovým rozhraním. Vše běží z jednoho jediného spustitelného souboru a uloženo je v SQLite databázi.

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

    Byla vydána nová stabilní verze 6.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 124. Přehled novinek i s náhledy v příspěvku na blogu. Vypíchnout lze Spořič paměti (Memory Saver) automaticky hibernující karty, které nebyly nějakou dobu používány nebo vylepšené Odběry (Feed Reader).

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

    OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.

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

    Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.

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

    R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.

    Ladislav Hagara | Komentářů: 0
    24.4. 22:44 | IT novinky

    IBM kupuje společnost HashiCorp (Terraform, Packer, Vault, Boundary, Consul, Nomad, Waypoint, Vagrant, …) za 6,4 miliardy dolarů, tj. 35 dolarů za akcii.

    Ladislav Hagara | Komentářů: 14
    KDE Plasma 6
     (73%)
     (9%)
     (2%)
     (16%)
    Celkem 789 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník
    Alternativně viz také můj osobní blog (RSS pro anglické články, RSS pro české články), kde toho hlavně v angličtině vychází mnohem víc.

    Víte že můžete odebírat mé blogy pomocí RSS? (Co je to RSS?)


    A kdo neumí použít RSS, tak je tu twitter: @Bystroushaak.

    Od určité doby jsou všechny texty které zde publikuji verzované na Githubu.

    Jestliže najdete chybu, nepište mi do diskuze a rovnou jí opravte. Github má online editor, není to skoro žádná práce a podstatně mi tím usnadníte život. Taky vás čeká věčná sláva v commit logu :)

    Aktuální zápisy

    Rok s D

    2.10.2011 18:20 | Přečteno: 2431× | Názory | Výběrový blog | poslední úprava: 2.10.2011 19:09

    Upozornění: Blogpost je o subjektivních pocitech a zážitcích.
    Je to již cca rok, co jsem se začal zajímat o programovací jazyk D. Co se od té doby v mém názoru na D změnilo?

    Programovat v D jsem skutečně začal až s novým rokem. Do té doby jsem soustředil hlavně na teorii (ehm, příležitostně četl knihu, občal napsal nějaký test k odhalení vlastností které mi nebyly jasné). Od nového roku jsem napsal v D několik projektů o velikosti okolo přibližně tisíc řádek. Na nich jsem poznal některé (zdaleka ne všechny) klady a zápory D.

    HTTP client

    Všechno to začalo, když jsem potřeboval napsat program který pracuje s webem a zjistil jsem, že D v tomto ohledu bylo žalostně nevybavené. Nějakou dobu jsem googlil a hledal, ale jediné co se mi podařilo najít bylo tango, což je neoficiální stdlib, která navíc funguje pouze na D1 (stará, i když stabilní verze, aktuální je D2, která se ale stále vyvíjí). Jelikož jsem D1 používat nechtěl, začal jsem pracovat na vlastním HTTP clientovi. Původně to měla být jen jednoduchá třída na pár řádek co stáhne stránku a šmytec, ale s čtením anglické wiki a studováním RFC se to nějak rozrostlo, až z toho vznikla knihovna trochu podobná urllib v pythonu (funkčností, ne API).

    I když mě psaní použitelné verze trvalo něco okolo měsíce a zabralo mi to spoustu času, zjistil jsem, že mě to skutečně baví. D se čím dál víc ukazoval jako jazyk, po kterém jsem vždy toužil. Tohle možná může znít docela propagandisticky, ale je to pravda. D mi prostě padlo do oka. V C, C++, C#, Javě, JavaScriptu, PHP, Pascalu a dokonce i v pythonu jsem se nikdy necítil tak doma. Pravděpodobně za to můžou mé předchozí zkušenosti s ostatními jazyky, protože v D je téměř všechno jak očekávám. To znamená, že se to ani nemusím učit, nebo přeučovat, prostě po dané featuře sáhnu a ona tam je. To jsem u žádného předchozího jazyka nikdy nezažil. Na tom že si D vybralo to nejlepší ze svých předchůdců něco bude.

    Abych se vrátil k vyprávění; když jsem HTTP clienta dopsal, řekl jsem si, že by se mohl hodit i někomu jinému a tak jsem ho hodil na sourceforge. Tam ležel asi měsíc, dokud jsem ho najednou nepotřeboval opět použít. Zjistil jsem, že obsahuje spoustu bugů a začal ho přepisovat a opravovat. Postupně jsem přišel na to, že sourceforge není to pravé pro mě a přešel jsem na github, kde ho můžete najít dodnes: DHTTPClient.

    Krátce poté co jsem ho vyladil byly do phobosu (oficiální D stdlib - API) paradoxně přidány bindingy na libcurl, která svým C API ale docela saje. S DHTTPClientem je práce o hodně pohodlnější, i když uznávám že také primitivnější a jsou věci které s ním jednoduše neuděláte.

    HTML parser

    Když už jsem měl HTTP clienta, začal jsem hledat nějaký HTML parser. V pythonu jsem celá léta používal BeautifulSoup, pro jeho schopnost selektivního vytahování jednotlivých tagů a nod, které potřebuji. Na rozdíl od ostatních, pro mne podivných a nepochopitelných přístupů je práce s BeautifulSoup dost intutivní. Chcete všechny odkazy na stránce? Proč ne?

    from BeautifulSoup import BeautifulSoup as BS
    soup = BS(data)
    soup("a") # vrátí pole odkazů

    Podobně si můžete vytáhnout cokoliv, popřípadě znovu hledat v již vytažených elementech. Ostatní moduly pro práci s HTML/XML jsem moc nezkoumal, jen jsem párkrát zahlédl jejich použití, ve kterém programátoři modelují dokument pomocí for smyček jenž procházejí nody a moc jsem to nezkoumal, ani nepochopil (pravděpodobně se to hodí pro použití v serializaci známých dat, ale kdo ví..).

    Co se týče mého programování v D, zjistil jsem že existuje oficiální modul std.xml, který je pro parsování jako dělaný. Když jsem si pročítal example na odkazované stránce, totálně a absolutně jsem ho nepochopil (dodnes nechápu) a vylomil si na něm mozkové závity.

    "Challenge accepted," táhlo mi hlavou a tak jsem začal psát vlastní HTML parser. Začal jsem rozřezáním textu na pole kde jsou jednotlivé řetězce buď tagy, nebo text. Vyřešil jsem to tak neintuitivním způsobem, že jsem se v něm ztratil a musel si udělat schéma. Poté jsem přidal reuspořádání tagů kvůli vnořeným komentářům, napsal třídu pro uchovávání elementů, gettery, settery, funci jenž zkoumá jestli se jedná o nepárové tagy, zkrášlovací funkci a další nezbytné věci.

    Opět musím podotknout, že mi to přišlo spíš jako zábava, než práce a výsledek si můžete prohlídnout zde: DHTMLParser. Po troše používání mě nakrkla superpomalá BeautifulSoup (na mém homeserveru ze starého notebooku trvá parsování i 10s) a tak jsem přepsal DHTMLParser do pythonu (jde to prakticky 1:1 jak z, tak do).

    Co mě nedávno skutečně potěšilo je, že mi napsal nějaký ital s tím že ho používá ve svém projektu (kontrola aktualizace webových reklam pro síť hotelů).

    Méně > více?

    Trochu paradoxní je, že díky tomu že D zatím není moc používaný a neexistuje pro něj tedy tolik knihoven jsem překonal lenost a naprogramoval užitečné moduly, na nichž jsem se toho i dost naučil. Nikdy předtím v životě jsem nesedl k RFC a nezačal něco (třeba SNTP client) jen tak implementovat - proč taky, vždyť by to byla zbytečná práce, ne?

    Dnes už vím, že nebyla. Čtením člověk věci skutečně nepochopí, chce si to i dané technologie zkusit. Díky tomu si je zapamatuje a už je nezapomene, navíc musí řešit problémy a to ho posouvá stále dopředu.

    Díky těmto zkušenostem vím, že pro mě není problém většina věcí které se mi dříve zdály jako vyšší level. Chce se to prostě do daného problému zakousnout, chvíli se mu věnovat, začít psát kód a dříve nebo později z toho vyleze funkční řešení (takhle jsem třeba psal binding k libpolarssl, konkrétně RSA funkcím, takže teď už jen stěží zapomenu jak RSA funguje).

    Vývoj D

    Abych se vrátil od sebestředných řečí zpět k D - co na něm mě těší a zároveň dost ostatních lidí odrazuje je to, že vývoj se stále ještě neustálil a navíc probíhá na úrovni komunity.

    S každým vydáním kompilátoru se trochu mění API (oklepávají se nelogičnosti, probíhají přesuny a přidávání nových věcí). Jednotlivé novinky jsou diskutovány v mail listech, takže lidé mají možnost se k nim vyjádřit, popřípadě poslat svůj patch (o tohle panictví jsem ještě nepřišel), protože celý phobos je hostován na githubu.

    To je tak ohromný rozdíl oproti všemu kromě pythonu, že nemám slov. Vím že takhle probíhá vývoj spousty opensource projektů, ale ještě nikdy v životě jsem tomu nebyl přítomný, nevnímal dění kolem sebe a netěšil se na každý changelog (čtete je vůbec u něčeho?), kde si budu moct počíst o nových featurách, které mě vždy potěší.

    Když to porovnám s takovým C++, vlastně ani nevím, jak bych se na nějaké vývojové feedy napojil. Možná je to jen blbá představa, ale jeho vývoj si představuju jako srocení ISO nazzi s vysokými klobouky a monokly v oku, jenž 10 let diskutují co za vlastnosti by šlo přidat a hlavně neporušit zpětnou kompatibilitu.

    Co mi vadí

    Na samotném jazyku prakticky nic (kromě podivnosti s $, které je v rozsahu pole občas .length a jindy .length - 1, podle toho jestli se uvede jako array[0 .. $] (pro výběr celého pole, nesmyslný příklad), nebo array[$-1] (pro výběr posledního prvku, kde samotné $ vyhodí vyjímku překročení rozsahu pole)).

    Dál mi trochu vadí phobos API, na kterém je ještě zapotřebí zapracovat hlavně co se týče internetových protokolů.

    Vadí mi kompilátory - dmd je na linuxu docela fajn, ale na windows generuje OMF formát objektových souborů a to se pěkně na hovno linkuje s COFF, které generují prakticky všechny ostatní kompilátory.

    gdc je sice hezké na papíře, ale vývojove zaostalé (tak o 2 - 4 vydání za dmd) a přijde mi, že se o něj nikdo moc nestará. V ubuntu a dalších moderních distrech je navíc v repozitářích jen gdc1 a dostat tam gdc2 chce trochu snahy.

    Vadí mi velikost binárky - 800kB je hnus (po stripnutí řetězců a packu s upx cca 150, ale i tak). Když si pomocí 'nm' nechám vyjet použité funkce, vyskočí na mě ~4000 řádků i u hello world. WTF?

    Vadí mi minimální podpora armu a dalších netradičních platofem (mips). Je to možné a určitě proveditelné, ale chce to tak týden crosskompilace gdc, a to bych se asi radši oběsil na půdě. Balíčky se prostě nekonají.

    Vadí mi, že D v Čechách skoro nikdo nepoužívá. Po nějaké době se dle tiobe indexu zase dostalo do první dvacítky, ale narazit na Čecha dělajícího v D je prakticky nemožné.

    Vadí mi, že D nezaštiťuje nějaká větší firma, která by nalila prachy do vývoje některých pokulhávajících věcí. Kdyby se za něj postavil někdo významnější kdo by ho skutečně používal, bylo by to super a jazyku by to imho dost pomohlo.

    Vadí mi, že podpora ve všech IDE mocně saje. Zkoušel jsem Mmrnmhrm/DDT (jméno k nezaplacení) i Descent a všechny jsou na úrovni barvení zdrojového kódu a slepého (mnohdy dost kontraproduktivního) doplňování názvů metod a proměnných. Code::Blocks, Anjuta, Monodevelop a dvacet dalších linux IDE na které si vzpomenete umí prakticky jen barvit syntaxi, takže nakonec radši používám kate, která doplňuje všechny slova v dokumentu, nebo častěji geany, která doplňuje sice taky slepě a často blbě, ale zato je to alespoň rychlý a malý editor.

    Abych to tedy shrnul - jazyk sám o sobě je v pohodě, podpora toolů (kompilátory, editory atp..) už moc ne.

    Závěr

    Můj rok s D byl docela fajn. Ani jednou jsem se na něj nenaštval, nikdy mi nepřišel dementní. Naprogramoval jsem v něm několik knihoven, naučil se s ním používat git a github. Až na pár detailů mi v ničem nevadí a tak budu pokračovat ve své snaze z něj udělat primární programovací jazyk.

    A co vy? Máte s D nějaké zkušenosti? Podělte se prosím v diskuzi :)

           

    Hodnocení: 96 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    2.10.2011 19:13 Bytecutter
    Rozbalit Rozbalit vše Re: Rok s D
    Pěkné. Mně se D hrozně líbí, ale bojím se, že se nikdy pořádně nerozšíří, což by podle mě byla škoda.
    Bystroushaak avatar 2.10.2011 20:55 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Rok s D
    Škoda by to byla, ale pokud ho jednotlivci jako ty, nebo já nebudou používat kvůli tomu že není rozšířené, nikdy se to nestane :)
    2.10.2011 22:30 Sten
    Rozbalit Rozbalit vše Re: Rok s D
    K vývoji ISO C++ se dá připojit celkem snadno, ale vyžaduje to psát komplexní požadavky (co změnit, jak to změnit, proč to změnit, proč to změnit zrovna takto a jak se tím ovlivní existující kód). Tohle je ale celkem běžné v prostředí, kde je hlavní snahou udržet věci kompatibilní. Což je IMO hlavní důvod, proč má C++ takové postavení, jaké má.

    $ vždy odpovídá .length. Rozsah a[0 .. $] znamená pro všechna x: 0 ≤ x < length, stejně jako a[0 .. 4] už prvek a[4] nevybere. Tahle konvence vychází ještě z Céčka.

    Jinak co se týče používání D, mě přijdou dementní ty šablony. Evidentně bylo účelem udělat jej tak moc podobný samotnému jazyku, protože dle autora tohle je velký problém C++, ale skončilo to tak, jak muselo, jeho používání generik je prakticky omezeno na string mixiny, protože nic lepšího v imperativním jazyku stejně nevymyslíte. Druhá věc, která mě odradila úplně, je přetěžování operátorů, kde jsou značně svazující pravidla, která znemožňují implementovat třeba třístavovou booleovskou algebru, jakou má SQL.
    Bystroushaak avatar 2.10.2011 23:12 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Rok s D
    $ vždy odpovídá .length. Rozsah a[0 .. $] znamená pro všechna x: 0 ≤ x < length, stejně jako a[0 .. 4] už prvek a[4] nevybere. Tahle konvence vychází ještě z Céčka.
    Já jsem zvyklý na -1 z pythonu :(
    Jinak co se týče používání D, mě přijdou dementní ty šablony. Evidentně bylo účelem udělat jej tak moc podobný samotnému jazyku, protože dle autora tohle je velký problém C++, ale skončilo to tak, jak muselo, jeho používání generik je prakticky omezeno na string mixiny, protože nic lepšího v imperativním jazyku stejně nevymyslíte. Druhá věc, která mě odradila úplně, je přetěžování operátorů, kde jsou značně svazující pravidla, která znemožňují implementovat třeba třístavovou booleovskou algebru, jakou má SQL.
    Nevim. S šablonami jsem zatím jen koketoval a přišly mi fajn.
    3.10.2011 17:13 JS
    Rozbalit Rozbalit vše Re: Rok s D
    D neznam, ale jak je to co popisuje Sten jine nez Python?
    Bystroushaak avatar 3.10.2011 17:50 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Rok s D
    V tom že v pythonu:
    >>> a = [0, 1, 2, 3]
    >>> a[0:-1]
    [0, 1, 2]
    >>> a[-1]
    3
    
    a v D:
    int[] a = [0, 1, 2, 3];
    writeln(a[0 .. $]);
    
    vypíše
    [0, 1, 2, 3]
    
    a
    int[] a = [0, 1, 2, 3];
    writeln(a[$]);
    
    vyhodí při kompilaci RangeError:
    core.exception.RangeError@array_test(18): Range violation
    
    3.10.2011 19:24 JS
    Rozbalit Rozbalit vše Re: Rok s D
    Porad to nechapu. V D a[0..$] se proste chova jako a[0:] v Pythonu... Proc do toho montujes tu -1?
    Bystroushaak avatar 3.10.2011 21:12 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Rok s D
    Já vím že se tak chová. Jen mi to vadí :P Způsob jakým to řeší python mi přijde lepší, pro programátora pohodlnější.
    Bluebear avatar 3.10.2011 01:35 Bluebear | skóre: 30 | blog: Bluebearův samožerblog | Praha
    Rozbalit Rozbalit vše Re: Rok s D
    http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

    Omlouvám se, ale nedalo mi to:

    Hujajá! Další stránka, která se bez Javascriptu ani neus*re, přestože jde o vypsání jedné jediné tabulky. To se hned pozná, jací jsou to odborníci.

    Vím, že s validitou obsahu to nemá nic společného, ale stránka, která je takhle spatlaná, automaticky snižuje mou důvěru v údaje, které na ní jsou. Zvláště, pokud jde o vysoce odborné údaje z oboru IT.

    To mi připomíná, jak jsem si pořídil květináč, že v něm budu mít květinu. Opravdu tam byla, ale potom být přestala...
    Bystroushaak avatar 3.10.2011 15:27 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Rok s D
    Hm. Co jsem tak koukal, fakt ho používají dost zbytečně, spousta z těch věcí jde pořešit v CSS.
    3.10.2011 01:49 w4rr10r
    Rozbalit Rozbalit vše Re: Rok s D
    D se mi líbí, chvíli jsem si s ním hrál, ale pro mě není zrovna použitelné. Chybí mi právě pořádný GUI toolkit a SDL binding. Na teoretické hrátky mám C a Lisp, na webové aplikace Python, který má i to ostatní na slušné úrovni.
    Bedňa avatar 3.10.2011 16:56 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: Rok s D
    Pekný zápisok, dík.
    KERNEL ULTRAS video channel >>>

    Založit nové vláknoNahoru

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