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 19:00 | Zajímavý projekt

    Na crowdsourcingové platformě Crowd Supply byla spuštěna kampaň na podporu open source biometrického monitoru ve tvaru hodinek HealthyPi Move. Cena je 249 dolarů a plánovaný termín dodání listopad letošního roku.

    Ladislav Hagara | Komentářů: 0
    včera 22:22 | Upozornění Ladislav Hagara | Komentářů: 9
    včera 17:44 | Nová verze

    Firma Murena představila /e/OS verze 2.0. Jde o  alternativní sestavení Androidu bez aplikací Google. Mezi novinkami je podrobnější nastavení ochrany soukromí před sledováním aplikacemi. Murena prodává několik smartphonů s předinstalovaným /e/OS (Fairphone, repasovaný Google Pixel 5).

    Fluttershy, yay! | Komentářů: 0
    včera 14:33 | Zajímavý software

    Do 30. května lze v rámci akce Warhammer Skulls 2024 získat na Steamu zdarma hru Warhammer 40,000: Gladius - Relics of War.

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

    HelenOS (Wikipedie), tj. svobodný operační systém českého původu založený na architektuře mikrojádra, byl vydán ve verzi 0.14.1. Přehled novinek v poznámkách k vydání. Vypíchnou lze nabídku Start. Videopředstavení na YouTube.

    Ladislav Hagara | Komentářů: 2
    23.5. 23:22 | Zajímavý software

    BreadboardOS je firmware pro Raspberry Pi Pico (RP2040) umožňující s tímto MCU komunikovat pomocí řádkového rozhraní (CLI). Využívá FreeRTOS a Microshell.

    Ladislav Hagara | Komentářů: 0
    23.5. 16:55 | Nová verze

    Vývojáři KDE oznámili vydání balíku aplikací KDE Gear 24.05. Přehled novinek i s náhledy a videi v oficiálním oznámení. Do balíku se dostalo 5 nových aplikací: Audex, Accessibility Inspector, Francis, Kalm a Skladnik.

    Ladislav Hagara | Komentářů: 10
    23.5. 12:55 | Nová verze

    Byla vydána (𝕏) nová verze 18.0.0 open source webového aplikačního frameworku Angular (Wikipedie). Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    22.5. 23:44 | Pozvánky

    V neděli 26. května lze navštívit Maker Faire Rychnov nad Kněžnou, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    22.5. 16:33 | Nová verze

    Byla vydána nová stabilní verze 3.20.0, tj. první z nové řady 3.20, minimalistické linuxové distribuce zaměřené na bezpečnost Alpine Linux (Wikipedie) postavené na standardní knihovně jazyka C musl libc a BusyBoxu. Z novinek lze vypíchnou počáteční podporu 64bitové architektury RISC-V.

    Ladislav Hagara | Komentářů: 0
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (82%)
     (4%)
     (7%)
     (7%)
    Celkem 525 hlasů
     Komentářů: 16, poslední 14.5. 11:05
    Rozcestník


    Vložit další komentář
    25.10.2006 00:26 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    Ehm, mno… hezké, že… trochu jako článek Pavla Křivánka onehdá na rootu… ale ten ho aspoň nevydával za součást seriálu o překladačích :-)
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    Bluebear avatar 30.10.2006 19:55 Bluebear | skóre: 30 | blog: Bluebearův samožerblog | Praha
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    Bohužel tenhle konkrétní díl opravdu vyznívá spíš jako chvalozpěv na dynamické jazyky než jako racionální výklad.

    Aby bylo srovnání jednotlivých jazyků (přesněji řečeno filozofií) relevantní, bylo by třeba u každého jazyka uvést, za jakých okolností vznikal, k čemu byl původně určen a co vedlo jeho autor(y) k volbě právě takových a ne jiných postupů. Pak by se dalo diskutovat o tom, zda tyto důvody jsou stále platné nebo už pominuly.
    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...
    25.10.2006 01:32 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    Místo amean(list&ltT;>* lst) tam určitě melo být amean(list<T>* lst), že? :-D Jinak v Ruby by to bylo takhle:
    def amean(l)
        l.inject(0){|a, x| a+x/l.size}
    end
    25.10.2006 08:53 jard
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    # efektivnejsia verzia ? naco ruby dalej zbytocne spomalovat...
    
    def amean(l)
        l.inject(0){|a, x| a+x} / l.size
    end
    
    25.10.2006 16:31 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    Chachá, čekal jsem, kdo nepochopí skrytý fígl. :-D Napiš si pořádný unit test. ;-)
    26.10.2006 13:29 rane | skóre: 3
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    Tak potom takto (síce bez skrytého sexy fígľa, ale aspoň je to efektívnejšie):

    def amean(l)
        begin
            l.inject(0){|a, x| a+x} / l.size
        rescue ZeroDivisionError
            nil
        end
    end
    27.10.2006 03:24 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    OMG, výjimku na tohle? To je ještě horší. :-D Kdepak, já se naučil oceňovat kouzlo kódu, ve kterém se nemusejí řešit řídicí konstrukce a speciální případy. Vektor délky 0 řešený IFem je pro mě prostě speciální případ a je na funkci vyššího řádu, aby se poprala s tím, jestli se vůbec něco bude dělit nebo ne. Pro mně to snižuje složitost kódu v hlavě. Chuck Moore jednou napsal 20 stránek kódu bez jediné řídicí konstrukce, skoku, podmínky nebo podobného větvení! :-) (Sakra, začínám si uvědomovat, že Chuck Moore je počítačový Chuck Norris, teda s tím rozdílem, že jeho šílené výkony jsou realita – viz OKAD, F21 a podobně. :-D) Mmch, není na to taky nějaká ta metrika? McCabe nebo jak se tomu to.
    27.10.2006 08:39 Tom.š Ze.le.in | skóre: 21 | blog: tz
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    Mně zase přijde horší definovat na náhodnou hodnotu (zde 0) matematicky nedefinovaný případ, a vyhození výjimky mi přijde jako druhé nejkorektnější řešení. Hint: když ke každému prvku sekvence přičtu 5, očekávám, že se průměr zvedne o pět, ne že zůstane stejný. Ať si tu výjimku zachytí a zpracuje ten, kdo to tak blbě volá.

    Možná jako ještě korektnější mi přijde předávat jako další parametr funkce požadovanou návratovou hodnotu funkce pro ten speciální případ (což lze implementovat oběma způsoby, chytáním výjimky i zadáním výchozí hodnoty pro reduce či ekvivalent a přičítáním podělené věci), včetně možnosti určit že to má řvát^H^H^H^Hvyvolat výjimku.

    A kromě efektivity pro to nejdřív sčítat, pak celé dělit možná mluví také obavy ze zaokrouhlovacích problémů u sekvencí s hodně prvky a nepřesnými čísly.
    27.10.2006 09:47 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    Trošku jsem nepochopil, kde definuju něco nedefinovaného. :-D Jinak tedy pokud jde o zaokrouhlování, počítám s typem Rational. :-D Počítal jsem s tím, že u celých čísel na vstupu to stejně vede na zlomek. ;-) A nějakou opravdu hromadnou matematiku nota bene s floaty bych stejně asi dělal jinak, chci si udělat něco malého runtimového na generování SSE kódu, abych se naučil trošku assembler. :-)
    27.10.2006 10:17 Tom.š Ze.le.in | skóre: 21 | blog: tz
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    Přišlo mi, že tou nulou za inject definujete, že pro prázdnou sekvenci bude výsledek nula. Průměr prázdné množiny čísel je IMHO neučitý výraz typu 0/0, tedy pro běžné účely nedefinované. Ale kód jsem nespouštěl a daný jazyk pořádně neznám, takže se můžu plést.
    27.10.2006 10:29 rane | skóre: 3
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    Ok. Je to proste boj medzi zložitosťou a zložitosťou :-)
    25.10.2006 08:08 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    Ten [Slava Pestov, autor jEditu] měl tu "čest" nahlédnout do zdrojáků JVM.
    Čest nahlédnout do zdrojáků JVM má už nějaký ten pátek každý – Java SE Downloads – J2SE 5.0 JDK Source Code. This community source release contains all the source code and makefiles required for building JDK 5.0…
    Marek Bernát avatar 25.10.2006 08:19 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    Máš zle zarovnaný pythonovský amean.
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    25.10.2006 12:07 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    Autoři programovacích jazyků, které jsou citlivé na formátování whitespace, by zasloužili pár facek…
    25.10.2006 12:24 petr
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    alespon se dodrzuje vsude stejna konvence a je to pak lip citelny
    David Watzke avatar 25.10.2006 14:23 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    Souhlas... ale jak souvisí programovací jazyk s Pythonem? :-D
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    Marek Bernát avatar 25.10.2006 14:39 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    Teda, tomu hovorím tvrdý postoj človeka ťažko skúšaného takýmito jazykmi :-D

    Inak, je pravda, že na formátovanie si treba dať pozor pri písaní článku, ale to je ostatne pravda pri všetkých jazykoch. Síce to v nich bude syntakticky správne bez ohľadu na formátovanie, ale nebude sa to dať prečítať a pochopiť, čiže taká ukážka kódu je de facto na nič.
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    Marek Bernát avatar 25.10.2006 14:52 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    Po kontrole zarovnania prichádza kontrola kódu.
     return __getattr__(self,name):
    chcelo byť
     def __getattr__(self,name):
    však?

    Množstvo chýb ma začína znepokojovať. Ostatné jazyky máš bez chyby? :-P
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    27.10.2006 00:46 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    Ani ne, naštěstí žádný takový jazyk ve větší míře nepoužívám. Bohatě mi stačí problémy s copy and paste z/do Makefile…
    Marek Bernát avatar 27.10.2006 10:44 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    No tak to hej, Makefile to je kapitola sama o sebe. Hlavne, keď s ním človek začína a po hodine lámania si hlavy nad jeho nefunkčnosťou príde na to, že má na jednom riadku tab :-)

    Ale v pythone sa mi to nikdy nestalo. Neviem z akého dôvodu, ale je to tak.
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    Marek Bernát avatar 25.10.2006 14:48 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    A tiež ten univerzálny handler je zle zarovnaný. Ráno som to nedočítal, preto to píšem až teraz. Nabudúce si ten článok raz prezri, kým ho uverejníš ;-)
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    25.10.2006 08:49 razor | skóre: 33
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    U dynamických jazyků je nutné psát testy, které projdou všechny větve a kód spustí, protože vlastní překlad prakticky žádnou kontrolu neprovádí.

    Řekl bych, že to ve stejné míře platí i pro staticky typované jazyky.
    25.10.2006 09:54 Tom.š Ze.le.in | skóre: 21 | blog: tz
    Rozbalit Rozbalit vše ad Lisp - drobnosti
    Zcela drobnost: v původních lispech byl afaik opravdu COND special form a if macro, ale třeba v Common Lispu to už je obrázeně: http://www.lisp.org/HyperSpec/Body/mac_cond.html, http://www.lisp.org/HyperSpec/Body/speope_if.html#if

    Možná méně drobnost:
    Výhoda dynamického provádění kódu je zřejmá. Je možné za běhu sestavovat kód přesně na míru požadavkům, což kompilované jazyky (snad s výjimkou assembleru) neumožňují. Respektive umožňují, ale za cenu přibalení překladače a linkeru k programu a také za cenu starostí s IPC nebo sdílenou pamětí. Nevýhoda je ta, že se dynamické jazyky nedají kompilovat. Respektive dají... až na všechny výskyty podobných konstrukcí, které musí překládat interpret. Ale protože je u těchto jazyků fáze kompilace a spuštění stejná, není to tak markantní.
    Tady aspoň u mne při prvním čtení došlo k matení rozdělení statické/dynamické typování a kompilovaný/interpretovaný (včetně bytekódu) jazyk. Každopádně moderní Lisp má odlišnou fázi kompilace a spuštění, obyčejně má v programu přibalený kompilátor (ať už do čehokoliv), a takovéto konstrukce kompiluje vždy (sbcl) nebo za určitých okolností (dynamicky tvořený kód je obalen do makra a efektivně jej známe v době kompilace nebo je voláno compile). Takže tady je lisp najednou spíše na druhé straně než ve zbytku článku.

    Mimochodem, používání přímého eval doporučuje z dobrých důvodů většina novějších praktických knih o Lispu asi stejně jako Wirth goto :)
    25.10.2006 20:27 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: ad Lisp - drobnosti
    ten vztah if a cond me taky zarazil... ono je lepsi mit if jako spec. formu spis nez cond... mnohem lip se to preklada do mezikodu. ikdyz to makro pro prepis cond->if neni tak trivialni jak v opacnem gardu.
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    Marek Bernát avatar 25.10.2006 20:53 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: ad Lisp - drobnosti
    Skutočne je to až také ťažké? Nestačilo by zabaliť if pre každú vetvu do progn a na koniec každej vetvy dať goto koniec? Je to samozrejme krapátko ťažšie ako ten if, ale načo implementovať zložité veci ako cond priamo v jazyku; to je úplne nelispovské. Rovnako nezmyselné by bolo when ako špeciálna forma a pomocou neho vytvárať if.
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    26.10.2006 08:06 Tom.š Ze.le.in | skóre: 21 | blog: tz
    Rozbalit Rozbalit vše Re: ad Lisp - drobnosti
    načo implementovať zložité veci ako cond priamo v jazyku
    Odpověď možná zní, že v době, kdy McCarthy cond navrhoval, nečekal, že by se někdo pokusil tu teoretickou úvahu z axiomatizace algoritmů implementovat, a pak se to chvíli vezlo.
    26.10.2006 20:22 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: ad Lisp - drobnosti
    prave, ze kdyz se implementuje if jako zaklad a cond jako doplnek... lze se v mezikodu obejit urcite bez instrukce goto... ono ani pro ten cond by to vlastne nemuselo byt treba
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    Marek Bernát avatar 26.10.2006 20:34 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: ad Lisp - drobnosti
    Veď ja som hovoril o prípade s if ako špeciálnou formou a cond ako makrom. A tie vetvy cond sa dajú samozrejme zreťaziť bez goto – (if a1 b1 (if a2 b2 (if...(if an bn)...))) – a ako sa tak teraz na to pozerám, tak mi to pripadá elegantnejšie, ale nejakú podstatnú výhodu oproti verzii s goto tam nevidím.
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    26.10.2006 21: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: ad Lisp - drobnosti
    podstatna vyhoda verze bez goto je zaprve v tom, ze jazyk VM je o jednu instrukci mensi ;-] a za druhe jdou s tim delat optimalizace (pul roku uz nedalam nic jineho ;]) a vic to odpovida teoretickemu pohledu na vec... taky goto nevypada moc funkcionalne
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    Marek Bernát avatar 26.10.2006 21:26 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: ad Lisp - drobnosti
    Akože je jazyk menší? Veď bez goto sa nezaobídeme inde. Ako chceš napísať napríklad do bez goto, alebo bez nejakej inej jump inštrukcie?

    Ale inak uznávam, že sa mi to naozaj páči bez toho goto viac z čisto estetického pohľadu :-)
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    26.10.2006 23:04 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: ad Lisp - drobnosti
    :-]] naprosto jednoduse, stejne jako v kazdem funkcionalnim jazyku... pomoci rekurze a tail-callu.
    (define-macro (do times . exprs)
            `(letrec ((iter (lambda (times)
                            ,@exprs
                            (if (> times 1) (iter (- times 1))))))
                    (iter ,times)))
    (do 5 (display "x") (newline))
    
    ono to nejde moc videt (ale ptal jste se jak se udela do), takze ve sve podstate je to neco takoveho
    (define (cycle times)
            (define (iter times)
                    (display "blah")
                    (newline)
                    (if (> times 1) (iter (- times 1))))
            (iter times))
    (cycle 5)
    
    diky tomu, ze volani "iter" je v koncovem postaveni, tak jde pouzit tail-call a hodnoty na zasobniku prepsat, tudiz se to chova jako takovy jump bez goto. vic info na http://www.sidhe.org/~dan/blog/archives/000211.html

    a pokud pisete zasobnikovi vm, tak tam to goto opravdu zavazi.
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    Marek Bernát avatar 27.10.2006 10:40 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: ad Lisp - drobnosti
    Pekné a jednoduché, páči sa mi to :-)

    Asi ma to nenapadlo preto, lebo zatiaľ som sa venoval hlavne common lispu a tam to nie je zďaleka také čisté. Zrejme je čas pozrieť sa na Scheme :-)
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    27.10.2006 10:54 Tom.š Ze.le.in | skóre: 21 | blog: tz
    Rozbalit Rozbalit vše Re: ad Lisp - drobnosti
    V Common Lispu? Najděte pět rozdílů :)
    (defmacro do2 (times &body body)
            `(labels ((iter (times)
               ,@body
               (if (> times 1) (iter (- times 1)))))
           (iter ,times)))
    DO2
    
    (do2 5 (print x))
    Pozn: do je obsazené, proto do2; a možná bych v reálu místo názvu iters použil nějaký gensym, abych nemusel přemýšlet, zda nehrozí klasický problém maker. To u scheme není nutné.
    Marek Bernát avatar 27.10.2006 10:57 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: ad Lisp - drobnosti
    Samozrejme, že je to to isté, to som nemal na mysli :-)

    Išlo mi o to, že keď človek bežne expandne v common lispe nejaké makro, tak je to samé goto a tak som si na to celkom zvykol. Napríklad spomínané do.
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    27.10.2006 11:14 Tom.š Ze.le.in | skóre: 21 | blog: tz
    Rozbalit Rozbalit vše Re: ad Lisp - drobnosti
    Hmm, to je vlastně pravda. Zajímavý postřeh :) Je fakt, že optimalizace tail callu ve Scheme povinná je a v CL ne, to může být důvod (aspoň u standardních maker v clispu)
    Marek Bernát avatar 27.10.2006 11:20 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: ad Lisp - drobnosti
    Presne tak.
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    27.10.2006 11:20 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: ad Lisp - drobnosti
    pozor na to... i ve schemu hrozi v tomto pripade name clash... teda v pripade tohoto makra, ale davat tam dalsi let a gensym me prislo, ze by to smrdelo moc cernou magii a ztratila by se ta pointa. a hygiencke makra, kde to nehrozi, moc nepouzivam...
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    Marek Bernát avatar 27.10.2006 11:23 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: ad Lisp - drobnosti
    Od čiernej mágie to má ďaleko, ale je fakt, že by ten príklad stratil na kráse :-)
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    25.10.2006 10:43 Michal Hocko | skóre: 7
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    [Šablony tedy nejsou nic jiného než způsob, jak do statických jazyků přinést prvky těch dynamických. Sémantická kontrola v tom případě nekontroluje typy, ale to, zda existují příslušné operátory (metody). Hezkým důsledkem zavedení šablon je, že se typová kontrola neoslabila. Naopak, použitím šablon se v Javě (i v C++) typový systém naopak posiluje, protože před tím se používal typ Object (v C++ by se používal void*).]

    Myslim, ze uvedeny text nie je velmi presny a skor zamlzuje.

    Jednak Java nema sablony, ale generiksy. Druhak sablony su v C++ konstruktivnou zalezitostou a teda kompiler vytvara instancie sablon v momente, ked sa pouziju (to napr. znamena, ze ak sa sablona neinstanciuje - teda nepouzije, nerobi sa ziadna semanticka kontrola). Za runtimu sa uz nepozna, ze dana trieda, funkcia... bola vytvorena zo sablony. Takze dynamicnost asi nie je najlepsie pomenovanie, kedze konci s prekladom.

    V Jave generiksy funguju len ako silna typova kontrola, ktora navyse v case runtimu neexistuje vobec (prekadac informacie o generickych typoch zahodi). Takze bavit sa o dynamicnosti asi tiez nie je velmi stastne.

    25.10.2006 16:37 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    Huh, přirozené jazyky nám kulhají? Generikum, bez generika, generiku, generikum…no, až se nakonec dostaneme k inkriminovanému nominativu plurálu. :-D Ale možná, že jen neumím slovensky. ;-) (Totiž, disclaimer: Prznění jazyka v malé míře by mi bylo ukradené, ale tady k dokonalosti opravdu chybí už jen s/ksy/xy/ :-D)
    25.10.2006 16:48 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    Nominativ plurálu je v tomhle případě generika. A to jsou, sakra, léky, ne? :-) Já generické typy zkracuju na generiky a trpím, kdykoli ze sebe nějaký programátor začne dělat farmakologa :-)
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    25.10.2006 16:59 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    Nejen léky, někteří považují generika za všelék, i když všichni víme, že všelék jsou makra. :-D
    25.10.2006 17:30 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    Jasně, generiky jsou makra chudých ;-)
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    25.10.2006 12:58 Jan Švec | skóre: 2 | blog: honzas | Plzeň
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    Ahoj, nejprve ti musím poděkovat za citaci mého překladu rozhovoru s Guido van Rossumem.

    Dále bych tě chtěl upozornit na několik věcných chyb týkajících se pouze příkladů v Pythonu uvedených ve tvém článku:
    1. Příklad s longPrint(): voláš metodu x.longPrint(), mělo by být print x.toLongString()
    2. Obdobně s dalším voláním x.__repr__(), metoda __repr__ pouze vrátí řetězcovou reprezentaci objektu, pro její vytisknutí musíš použít příkaz print.
    3. Použití příkladu foo.__dict__ v části o reflexi je poněkud nešťastné, nejen, že některé atributy nemusí být v dict (zrovna ty dynamické, které vracíte pomocí getter, setter metod), ale i samotné foo.__dict__ nezasvěcenému moc neřekne. Spíše bych reflexi v Pythonu ilustroval pomocí funkcí hasattr(), getattr(), dir(), modulu inspect atd.
    4. Příklad amean má špatné odsazení (podobně jako příklad s třídou C). Dále komentář říká, že průměr lze vypočítat ze všeho, co lze procházet iterátory. Zároveň však prvky tohoto iterovatelného objektu musí podporovat operátor + (tj. nesečtete si třeba pole asociativních polí :-)).
    5. Poslední příklad interaktivního sezení určitě není kopírovaný z Pythonu, protože v Pythonu se výzva interpretru značí >>> a nikoli <<<.

    Článek je jinak vcelku povedený, jen tak dále. Pouze Python se trochu přiučte a občas si zkuste spustit i interpretr.

    25.10.2006 13:15 Tom.š Ze.le.in | skóre: 21 | blog: tz
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    To, co se mi osobně na dynamických jazycích líbí nejvíce, je úspornost zápisu. Jádro celého kódu je díky funkcionálnímu reduce kratší než definice cyklu for v C++, přičemž je ten kód ve výsledku daleko obecnější. Oproti C++ verzi s iterátory ten kód není tak zatemněný (ovšem jenom pro lidi, kteří znají lambda funkce). A to je Python poměrně ukecaný jazyk, stejný příklad třeba v Ruby by mohl být ještě o něco kratší.
    Další příjemná věc na použití abstrakcí jako reduce je to, že umožňují snadnější přechod k škálovatelnějším implementacím algoritmu. Mimochodem, Googlí MapReduce je pokud vím v C++.
    25.10.2006 17:56 mydlo
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    Clanok sa mi paci, len v texte a v prvom priklade s pythonom su zamenene funkcie longPrint() a x.toLongString.

    Okrem toho v Pythone sa vyhybame zbytocnym zatvorkam a bodkociarkam v style C++ ako napr. catch (AttributeError e): alebo print "default"; , lebo to spomaluje program. Namiesto toho staci catch AttributeError: a print "default".
    26.10.2006 13:47 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: Jazyky a překladače - 7 (sémantika a typy 2)
    Článek je úplně skvělý (stejně jako všechny jeho předchozí díly). Jen mám dotaz k tomu prvnímu příkladu - nepatří tam spíš
    except AttributeError:
    
    namísto "catch" (které IMHO v Pythonu není)? A co se týče výpočtu toho aritmetického průměru, ortodoxní Pythonista by to možná napsal takhle:
    def amean(lst):
        try:
            return sum(lst)/len(lst)
        except ZeroDivisionError:
            return 0
    
    (Možná tu výjimku ani není třeba odchytávat - však jen ať si probublá).
    Oba příklady (jak můj, tak ten v článku) se zachovají trochu nezvykle, když bude seznam obsahovat pouze celá čísla. Ale to je detail.

    Založit nové vláknoNahoru

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

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