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 16:22 | IT novinky

    Společnost Raspberry Pi patřící nadaci Raspberry Pi chystá IPO a vstup na londýnskou burzu.

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

    Google na své vývojářské konferenci Google I/O 2024 představil řadu novinek. Keynote byl věnován umělé inteligenci (DeepMind, Gemini, Responsible AI).

    Ladislav Hagara | Komentářů: 1
    dnes 12:33 | Bezpečnostní upozornění

    V Gitu bylo nalezeno 5 zranitelností. Opraveny jsou ve verzích 2.45.1, 2.44.1, 2.43.4, 2.42.2, 2.41.1, 2.40.2 a 2.39.4. Útočník může připravit repozitář tak, že při jeho klonování (git clone) může dojít ke spuštění libovolného kódu.

    Ladislav Hagara | Komentářů: 0
    dnes 04:11 | IT novinky

    Virtualizační softwary VMware Workstation Pro a VMware Fusion Pro jsou nově pro osobní použití zdarma. Softwary VMware Workstation Player a VMware Fusion Player končí.

    Ladislav Hagara | Komentářů: 0
    dnes 02:11 | Nová verze

    Linuxová distribuce Endless OS (Wikipedie) byla vydána ve verzi 6.0.0. Přehled novinek i s náhledy v příspěvku na blogu, poznámkách k vydání a také na YouTube.

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

    Byl vydán Mozilla Firefox 126.0. Přehled novinek v poznámkách k vydání, poznámkách k vydání pro firmy a na stránce věnované vývojářům. Vylepšena byla funkce "Zkopírovat odkaz bez sledovacích prvků". Přidána byla podpora zstd (Zstandard). Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 126 je již k dispozici také na Flathubu a Snapcraftu.

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

    Grafana (Wikipedie), tj. open source nástroj pro vizualizaci různých metrik a s ní související dotazování, upozorňování a lepší porozumění, byla vydána ve verzi 11.0. Přehled novinek v aktualizované dokumentaci.

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

    Byla vydána nová verze 24.0 linuxové distribuce Manjaro (Wikipedie). Její kódové jméno je Wynsdey. Ke stažení je v edicích GNOME, KDE PLASMA a XFCE.

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

    Byla představena oficiální rozšiřující deska Raspberry Pi M.2 HAT+ pro připojování M.2 periferii jako jsou NVMe disky a AI akcelerátory k Raspberry Pi 5. Cena je 12 dolarů.

    Ladislav Hagara | Komentářů: 2
    včera 12:44 | Pozvánky

    V Praze o víkendu proběhla bastlířská událost roku - výstava Maker Fair v Praze. I strahovští bastlíři nelenili a bastly ostatních prozkoumali. Přijďte si proto i vy na Virtuální Bastlírnu popovídat, co Vás nejvíce zaujalo a jaké projekty jste si přinesli! Samozřejmě, nejen českou bastlířskou scénou je člověk živ - takže co se stalo ve světě a o čem mohou strahováci něco říct? Smutnou zprávou může být to, že provozovatel Sigfoxu jde do

    … více »
    bkralik | Komentářů: 0
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (74%)
     (5%)
     (10%)
     (10%)
    Celkem 277 hlasů
     Komentářů: 16, poslední včera 11:05
    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.