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í
×
    včera 17:11 | Nová verze

    Byl vydán Nextcloud Hub 8. Představení novinek tohoto open source cloudového řešení také na YouTube. Vypíchnout lze Nextcloud AI Assistant 2.0.

    Ladislav Hagara | Komentářů: 2
    včera 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ářů: 7
    včera 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ářů: 35
    25.4. 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
    25.4. 14:22 | Komunita

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

    Ladislav Hagara | Komentářů: 3
    25.4. 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
    25.4. 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
    25.4. 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
    25.4. 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
    25.4. 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
    KDE Plasma 6
     (74%)
     (8%)
     (2%)
     (16%)
    Celkem 817 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník
    Štítky: není přiřazen žádný štítek


    Vložit další komentář
    30.8.2011 17:48 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Pár poznámek: (1) v Ruby existuje metoda ** pro počítání mocnin, (2) while cyklus lze nahradit n.times do x *= zaklad end, (3) jaký smysl má metoda swap, když stačí napsat a, b = b, a?, (4) místo word = word.chomp lze psát word.chomp!
    30.8.2011 18:53 sad | skóre: 10 | blog: sad
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Mě šlo spíše, abych ukázal, jak Ruby vypadá, ty příklady nejsou moc důležité. Cykly ještě neznám moc dobře, ale ten n.times do se mi líbí, akorát nevidím žádnou podmínku. word.chomp je hned první příklad, pouze chybí vykřičník. Vím, že vykřičník se dává, protože se mění příjemce metody, ale bez vykřičníku to funguje také, tak jsem ho vynechal, je to chyba?
    30.8.2011 19:05 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    akorát nevidím žádnou podmínku
    Na co podmínku?
    Vím, že vykřičník se dává, protože se mění příjemce metody
    Příjemce metody je pokaždé word.

    chomp bez vykřičníku nemění obsah proměnné word, chomp! mění obsah proměnné word.
    30.8.2011 19:30 sad | skóre: 10 | blog: sad
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Na co podmínku?
    Už jsem to pochopil, mazané.
    chomp bez vykřičníku nemění obsah proměnné word
    Myslel jsem to takhle:

    irb(main):001:0> word = gets
    Hi
    => "Hi\n"
    irb(main):002:0> word.chomp
    => "Hi"
    30.8.2011 17:58 JS
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Je to sice uz starsi, ale nedavno me pobavilo toto.
    30.8.2011 18:34 ::: | skóre: 14 | blog: e_lama
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    to jsem si mohl myslet. Pomlouvani c++ a vychvalovani lispu. Vrchol amaterismu... ;-)

    btw. autorovi (tady toho zapisu na abc) bych doporucil at zapomene na ruby a nauci se perl...
    31.8.2011 09:01 JS
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    No, prijde mi, ze C++ nepomlouva, ale ma bohuzel pravdu. Aspon ja tam nevidim nic moc neobjektivniho. Ze C++ nema reflexi je fakt, ze se tezko parsuje je tezky fakt. :-) A kdyz mluvi o Perlu, automaticke zplostovani seznamu v Perlu byl opravdu hloupy napad, tedy alespon me to odradilo, abych se Perl vubec ucil.

    Jinak ten clanek jsem sem postnul hlavne proto, ze se v nem zminuje Ruby a je vtipne napsany, neprijde mi prilis neobjektivni (rekl bych, ze je to pohled, ke kteremu dojde vetsina lidi, co zna vsechny ty jazyky), a autor zminoval, ze jich moc nezna.
    31.8.2011 12:39 xm | skóre: 36 | blog: Osvobozený blog | Praha
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Proč by se měl někdo učit line noise (pardon Perl)? :-P

    Já bych mu radši doporučil Python, ale Ruby také není špatná volba.
    Svoboda je tím nejdůležitějším, co máme. Nenechte se o ní připravit, podporujte Pirátskou stranu!
    31.8.2011 15:00 skywaker
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    vyzera ze Ruby jma dost dobre urobenu pracu s textom a retazcamy
    31.8.2011 15:42 xm | skóre: 36 | blog: Osvobozený blog | Praha
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    No to bych zrovna netvrdil. Ale já jsem Pythonista a s Ruby dělám jen občas. Dříve to byla třeba co se týče Unicode v Ruby tragédie, ale to snad už doufám napravili? A pak také Ruby si podle mě z Perlu občas vzalo až moc syntaktického bordelu (a nejsem jediný kdo si to myslí - jestli se nepletu, tak i Matz, autor Ruby, se tak jednou vyjádřil).
    Svoboda je tím nejdůležitějším, co máme. Nenechte se o ní připravit, podporujte Pirátskou stranu!
    31.8.2011 22:41 nyan
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    No to bych zrovna netvrdil.
    Proc ? Kvuli Unicode ? Ano, ruby 1.8 + unicode je tragedie. Nicmene regexpy v ruby sou vykradnute z Perlu, a na rozdil od C, pythonu a dalsich X jazyku, je radost s nimi pracovat.
    Dříve to byla třeba co se týče Unicode v Ruby tragédie, ale to snad už doufám napravili?
    Jo, v 1.9.x
    A pak také Ruby si podle mě z Perlu občas vzalo až moc syntaktického bordelu (a nejsem jediný kdo si to myslí - jestli se nepletu, tak i Matz, autor Ruby, se tak jednou vyjádřil).
    Nemylite se. AFAIK v novych verzich (1.9.x) jsou ty divne dolarove promenne deprecated (maji citelnejsi ekvivalenty).
    31.8.2011 16:22 luky
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Na Pythonu je znat, jak je oproti perlu mladsi, psal jsem vetsi veci v obou dvou jazycich a na chyby v pythonu (pripadne jeho zakladnich knihovnach) jsem narazel mnohem casteji nez v pripade perlu. No a pak v nem je celkem dost veci, ktery proste wtf!
    1.9.2011 08:40 JS
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Z ktereho roku pochazi ten tvuj nazor? Mam pocit, ze to uz bude nejmene dekada.
    1.9.2011 08:52 xm | skóre: 36 | blog: Osvobozený blog | Praha
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Mám z toho naprosto stejný pocit. Pythonista jsem už dlouho a musím říct, že s žádnou chybou ve standardních knihovnách jsem se ještě snad nesetkal. A žádné WTF momenty také nepamatuji.
    Svoboda je tím nejdůležitějším, co máme. Nenechte se o ní připravit, podporujte Pirátskou stranu!
    1.9.2011 09:46 luky
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Je tam napriklad par raceconditions podobnych tehle: 1167930, cituji k tomu vyjadreni Rossuma:
    This is because the regular acquire() method on a basic lock cannot be interrupted. That's unlikely to go away, so you'll just have to live with this.
    A WTF veci jsou napriklad proc len() neni metoda, sort()/sorted() prasarna atd.
    1.9.2011 09:58 xm | skóre: 36 | blog: Osvobozený blog | Praha
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Na ten problém jsem nikdy v praxi nenarazil. Co se týče len(), tak to jako žádný WTF nevidím, to je prostě součást jazyka (metoda objektu je __len__()). A v sort/sorted už vůbec žádnou prasárnu nevidím, ten rozdíl mezi metodou sort() a funkcí sorted() mi přijde naprosto jasný, logický a smysluplný.
    Svoboda je tím nejdůležitějším, co máme. Nenechte se o ní připravit, podporujte Pirátskou stranu!
    1.9.2011 14:33 luky
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Asi jste zatim nepouzil vice vlaken, tak je tech problemu mraky (hledejte thread v jejich bugtrackeru). Tim WTF u len, getattr atd. jsem myslel, ze je dost divne neco implementovat jako funkci a neco jako metodu i kdyz oboji pracuje s konkretni instanci. Neni mi jasne, podle jakeho klice tak bylo rozhodnuto. U sort() je zase divne, ze nevraci self.
    1.9.2011 10:51 JS
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Jestli to chapu spravne, tak 1167930 neni race condition, ale nejaky kompromis, ktery vyplyva ze situace (konkretne tady z navrhu acquire() v knihovne, ale mozna uz to spravili). Je zname, ze multithreading neni silna stranka Pythonu, ale kdyz uz to srovnavame s Perlem, jak je na tom on?

    Co se tyce tech ostatnich veci, ve srovnani s Perlem je to cajicek. Treba ja se mohu ptat, proc ma Perl asi 8 ruznych variant funkce print? A ze len neni metoda je jen syntax, nepodstatna vec.
    1.9.2011 14:19 luky
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Jestli to chapu spravne, tak 1167930 neni race condition, ale nejaky kompromis, ktery vyplyva ze situace (konkretne tady z navrhu acquire() v knihovne
    Nejedna se o kompromis ale o chybu, ktera se pak projevi na mnoha dalsich mistech. Jako priklad uvedu pouziti asynchroniho IO, ktere pouziva signal SIGPOLL (na linuxu synonymum k SIGIO) k oznameni udalosti na deskriptoru. To je misto, kde jsem se s tim setkal ja.

    Perl je na tom v tomdle smeru mnohem lip, obcas narazite na memleak ale ne na problem, ktery by Vas zasadne omezil v praci a o kterem vyvojari reknou, ze ho neopravi.
    2.9.2011 08:28 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Perl na tom také není nejlépe, ale aspoň si můžete vybrat mezi několika implementacemi vláken.
    30.8.2011 18:27 Václav HFechs Švirga | skóre: 26 | blog: HF | Kopřivnice
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Doplnil bych že o ruby je na abclinuxu výborný seriál. A potom, že na skripty / webové aplikace (rails), atd... je ruby fajn. Ale pokud chceš něco dělat reálném čase, může nastat problém. Aspoň v ruby 1.8, 1.9 se o něco zrychlilo. Konkrétně jsem si hrál, napsal jednu menší hru (používala sdl) a oproti C (kde si hraju taky) katastrofa. Jenom cyklus na projití pár objektů na obdelníkovou kontrolu kolizí mi házel fps dolů. Nakonec jsem to vyřešil extrahováním do C funkce, kterou jsem připojil jako knihovnu, ale teď už bych to v ruby nepsal.
    Baník pyčo!
    30.8.2011 18:42 sad | skóre: 10 | blog: sad
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Právě jsem váhal, zda tenhle blog napsat, když tu existuje tak detailní popis Ruby, také jsem z něho trochu čerpal. Ale jelikož v něm chybí vetší příklady, tak jsem se odhodlal blog zveřejnit. Ne, že by ten můj příklad s mocninou byl něco extra, ale mám v plánu napsat rozsáhlejší programy a na nich vysvětlit vlastnosti Ruby, tedy pokud se tenhle blog nesetká s nějakým úplně záporným hodnocením.

    Jo, četl jsem, že Ruby je docela pomalé, ale že až tak katastrofálně, to jsem nečekal. Nevíte, jak si rozumí třeba s GTK nebo Qt?
    30.8.2011 18:48 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Pozor, přichází vtip: Pokud chcete rychlé Ruby, použijte JRuby :-)
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    30.8.2011 19:06 Václav HFechs Švirga | skóre: 26 | blog: HF | Kopřivnice
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Je to tak.
    Baník pyčo!
    30.8.2011 21:07 Aminux
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Proč vtip? Navíc si zpřístupní spoustu java knihoven. Ale já bych spíš použil Jython.
    30.8.2011 19:06 Václav HFechs Švirga | skóre: 26 | blog: HF | Kopřivnice
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Rozumí si dobře. A u těhle věcí (GTK, Qt) ta pomalost nevadí. Tlačítka a nabídky se opravdu sekat nebudou :-). Navíc to co dělá externí knihovna pomalé není (takže pokud uděláš v ruby přehrávač hudby tak, že stisknutím na tlačítko Play se zavolá funkce z jiné knihovny, které se předá název souboru a ona ho začne přehrávat, vše bude ok, ale jakmile se rozhodneš napsat si v ruby parsování mp3 přímo, už to ideální nebude). U mě taky kreslení nebylo pomalé, staralo se o to SDL. Jenže já musel za tu sekundu při fps třeba 25, 25x projet objekty v cyklu, zkontrolovat kolize a vypočítat nové pozice. To už za mě knihovna neudělá a proto to moc nešlo.

    Naopak tyhlety skriptovací jazyky mají velkou sílu v datových strukturách. Nic nemusíš vymýšlet, umí to objekty, ruby hash tabulky, knihovna pro parsování xml, yamlu, atd.. je na každém kroku, takže třeba skript co ti stáhne přes http rss kanál (to je xml), najde si v něm pár tagů, podle data seřadí a zobrazí 10 nejnovějších třeba v tom Qt je za pár minut hotový. V C by ses s tim lopotil mnohem déle.. A jelikož tu nemáš žádný cyklus co to musí udělat 20x do sekundy, nijak to cpu vytěžovat nebude.

    A jako poslední věc ještě doplním regulární výrazy. Další ohromná síla těhle věcí. Ruby je má integrované pěkně.
    Baník pyčo!
    30.8.2011 19:12 Václav HFechs Švirga | skóre: 26 | blog: HF | Kopřivnice
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    A když už jsem se o ruby rozkecal, tak bych se při studiju zaměřil na generátorové funkce (yield), perfektní věc a mixiny. To se mi na tom jazyku strašně líbí :). A mixiny mi jinde chybí ;-).
    Baník pyčo!
    xvasek avatar 30.8.2011 20:47 xvasek | skóre: 21 | blog: | Zlín
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Nevíte, jak si rozumí třeba s GTK nebo Qt?
    Já bych v této diskusi doporučil na tomto místě mírný boční pohled na perl/TK. Samozřejmě nevím, co s tím plánuješ dělat, ale já osobně se při programování v perl/TK pořád usmívám, protože mi svět připadá takový strašně jednoduchý. Úplně jsem si připomněl, jaký jsem měl před patnácti lety pocit ovládnutí internetu, když jsem stvořil první cgi skript v shellu a podíval se na výsledky z Netscape.
    xvasek avatar 30.8.2011 20:49 xvasek | skóre: 21 | blog: | Zlín
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Nebo samozřejmě ruby/TK, jak je komu libo. Jenom s tím perlem mi připadá, že se jde jako rychleji na věc.
    30.8.2011 20:49 Václav HFechs Švirga | skóre: 26 | blog: HF | Kopřivnice
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Jojo, v ruby to funguje stejně. Ruby/tk taky je :-). Jeden řádek a máš okýnko s tlačítkem... Navíc ruby se v lesčem perlem inspirovalo.
    Baník pyčo!
    31.8.2011 22:47 nyan
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Jo, četl jsem, že Ruby je docela pomalé, ale že až tak katastrofálně, to jsem nečekal. Nevíte, jak si rozumí třeba s GTK nebo Qt?
    No, um, katastrofalne :) Pokud se nepletu, ruby 1.8 je "AST-walking" interpreter (asi jako perl 5.x), kdezto 1.9.x je bytecode-compiled interpreter (jako python 2.x / 3.x). 1.9.x je 2-10x rychlejsi nez 1.8.x; JRuby je zhruba stejne rychle jako ruby 1.9.x, nicmene pouziva o dost vic pameti.

    Je jasne ze jazyky jako python a ruby nejsou na psani quake enginu ;) nicmene casto pohodlnost a rychlost vyvoje je dulezitejsi.

    GTK bindingy mi prijdou ze jsou v lepsim stavu nez QT, ale uz dlouho sem se nedival.
    30.8.2011 18:55 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Zkoušel jste už programovací jazyk Haskell? Haskell lze nastudovat z knížky Learn You a Haskell for Great Good nebo českého překladu Naučte se Haskell. Vyzkoušet si ho můžete přímo na webu na stránce Try Haskell nebo codepad. Nebo si můžete stáhnout a nainstalovat Haskell Platform.

    Jak lze mocninu zapsat v Haskellu:

    Napřed pomocí funkce replicate vytvoříme seznam obsahující n-krát základ a pomocí funkce product základy vynásobíme:
    mocnina0 zaklad n = product (replicate n zaklad)
    
    Pomocí operátoru dolar odstraníme závorky, kód je pak přehlednější:
    mocnina1 zaklad n = product $ replicate n zaklad
    
    Funkce flip prohodí parametry funkce replicate – to je zatím k ničemu, ale později to využijeme:
    mocnina2 zaklad n = product $ flip replicate zaklad n
    
    Operátor tečka skládá funkce – jako v matematice:
    mocnina3 zaklad n = (product . flip replicate zaklad) n
    
    Parametr n pokrátíme:
    mocnina4 zaklad = product . flip replicate zaklad
    
    Operátor tečka může skládat jakékoliv funkce – třeba i tečky. Rovnou také pokrátíme parametr zaklad:
    mocnina5 = ((.).(.)) product (flip replicate)
    
    Operátory lze aplikovat jen částečně, například (/2) je funkce, jenž vrátí půlku daného čísla. Naopak (2/) je funkce, jenž vydělí dvojku daným číslem. Tohle lze to provést i se skládáním funkcí:
    mocnina6 = (product .) . flip replicate
    
    A na závěr je tu zápis pro znalce:
    mocnina7 = (^)
    
    30.8.2011 19:12 sad | skóre: 10 | blog: sad
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Haskell vypadá zajímavě, líbí se mi syntaxe, asi první věc, co mě napadla. Určitě to nebude špatný jazyk, ale já se zase nechci učit nějaké velké množství jazyků. Učím se Céčko, myslím, že je to takový základ programování, a hlavně je rychlé, možná i nejrychlejší? A potom jsem chtěl nějaký nový, objektový jazyk a vybral jsem si Ruby.
    30.8.2011 19:15 Václav HFechs Švirga | skóre: 26 | blog: HF | Kopřivnice
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Imho sis vybral dobře. Pokud si chci fakt hodně hrát, aby to bylo rychlé, super a tak, píšu si to v C, i s datovýma strukturama, atd.., ale trvá to. Pokud potřebuju nějaký skriptík rychle spíchnout a má umět i různé šílenosti (stáhnutí a zparsování webové stránky, atd...), je ruby ideální :). Jinak takový nápad do začátku, co si napsat krom té mnou výše zmíněné rss čtečky je třeba irc bot. Taky věc na pár řádků jen přes sockety (ani nepotřebuješ nějakou irc knihovnu). Pro rýpaly, v C je to taky na pár řádků, uznávám ;-).
    Baník pyčo!
    31.8.2011 00:25 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Hlavní výhody Haskellu jsou jednoduchost a aktivní komunita.
    Učím se Céčko, myslím, že je to takový základ programování, a hlavně je rychlé, možná i nejrychlejší?
    Tohle je dáno současným stavem kompilátorů a runtimů vyšších programovacích jazyků a faktem, že specializovaný kód pro danou úlohu může být rychlejší než kód obecný (například správa paměti). Jenže vyšší programovací jazyky se v tomto postupně zlepšují a je jen otázkou času, než programy ve vyšších programovacích jazycích dosáhnou srovnatelných rychlostí s Céčkovskými programy, jenž byly napsány průměrnými programátory.

    IMO pokud nepotřebujete z HW vyždímat úplné maximum, tak Vám bude stačit jazyk typu C# nebo OCaml, program bude cca 2-3 krát pomalejší než v Céčku a kód bude kratší.
    31.8.2011 10:44 ::: | skóre: 14 | blog: e_lama
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    a je jen otázkou času, než programy ve vyšších programovacích jazycích dosáhnou srovnatelných rychlostí s Céčkovskými programy, jenž byly napsány průměrnými programátory.
    tak nevim jestli je to vtip, nebo pesimisticky pohled na vyvoj "prumernyho programatora"...
    31.8.2011 13:50 JS
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    To je realita. :-) Programy v jazycich jako C nebo Java dosahuji vyssi rychlosti nez programy v assembleru, uz nejakou dobu. S "prumerem" to moc nesouvisi. Kompilatory lidi utahnou ne na kreativite reseni, ale na hrube pocetni sile; proste ne kazdy programator chce resit barveni grafu pri alokaci registru, napriklad.

    A neni duvod si myslet, ze stejne jako jsme pomoci high-level (dnes low-level) jazyku abstrahovali alokaci registru a poradi instrukci, v budoucnu patrne budeme schopni abstrahovat dalsi veci, jako napriklad volbu datovych struktur, poradi vypoctu (tam kde na nem nezalezi), specializaci, a vysledek soupereni stroje vs. lide dopadne podobne.

    I kdyz (a to je duvod proc pisu tento prispevek, jinak by nemelo cenu reagovat), osobne si myslim, ze staticka analyza na tyhle veci nestaci, a proto je pristup Haskellu navzdy odsouzen do akademicke sfery. Ono v podstate i dnes je znacna cast toho duvodu, proc je kompilator lepsi nez clovek, dana dynamickou analyzou, a to jak v procesoru, tak pri JIT kompilaci. Ja osobne vidim budoucnost v nejake vazbe kompilatoru na profiler, spis nez ve staticke analyze.
    30.8.2011 20:04 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Může mi někdo vysvětlit, proč i ta blbá mocnina je v Haskellu tak úchylná? Uff, ještě že to nebyla rekurzivní varianta, to bych asi nerozdýchal.
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    30.8.2011 21:05 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    :-D Uznávám, chybí tam ještě varianta s nekonečným seznamem.

    Takže výrazem iterate (*zaklad) 1 vytvoříme seznam všech mocnin (tj. [z^0, z^1, ..]) a pomocí operátoru indexace seznamu !! vybereme potřebnou mocninu:
    mocnina6' zaklad n = iterate (*zaklad) 1 !! n
    
    n můžeme pokrátit, to už umíme:
    mocnina6'' zaklad = (iterate (*zaklad) 1 !!)
    
    A pro jistotu ještě ve variantě pointfree tj. bez parametrů:
    mocnina6''' = (!!) . (flip iterate 1 . (*))
    
    30.8.2011 21:19 Někdo jiný | skóre: 18 | blog: Někde jinde
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Co je špatného třeba na téhle rekurzi:
    mocnina x n
      | n == 0    = 1
      | otherwise = square (mocnina x $ n `div` 2) * if odd n then x else 1
        where square a = a * a
    30.8.2011 21:37 Ondrej 'SanTiago' Zajicek
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    No, ona ta mocnina jde samozrejme v Haskellu napsat primocare trivialne:
    mc z 0 = 1
    mc z n = z * (mc z (n - 1))
    
    Nebo, touzime-li po tail-recursive variante (coz u normal-order jazyku jako Haskell nehraje moc roli), tak:
    mc z n = mc2 z n 1
    mc2 z 0 ac = ac
    mc2 z n ac = mc2 z (n - 1) (z * ac)
    
    30.8.2011 22:34 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    To druhé také není tail rekurzivní – všechna násobení se stejně provádí na zásobníku, tudíž je potřebná velikost zásobníku úměrná n.

    Tohle je tail rekurzivní:
    mc z n = mc2 z n 1
    mc2 z 0 ac = ac
    mc2 z n ac = let newAc = z * ac in newAc `seq` mc2 z (n - 1) newAc
    
    nebo tohle:
    import Data.List
    
    product' = foldl' (*) 1
    
    mocnina0 zaklad n = product' $ replicate n zaklad
    
    31.8.2011 01:28 Ondrej 'SanTiago' Zajicek
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    To druhé také není tail rekurzivní

    Myslim, ze je (alespon podle mne znamych definic tail-rekurzivnosti). Ze to kvuli lazy evaluation nema ty same dusledky jako u jazyku se striktnim vyhodnocovanim a ze spotreba pameti bude kvuli ukladani odlozenych vypoctu stejne umerna n, je jina vec.
    31.8.2011 08:41 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Omlouvám se, máte samozřejmě pravdu.
    31.8.2011 08:23 Jan Zapletal
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    On výběr jazyka hodně závisí na použití pro danou úlohu.

    Haskell je třeba perfektní na řešení matematických problémů, kde si chrochtáte blahem nad jeho pěkným a čistým návrhem. Pak ale potřebujete komunikovat s okolním světem, zobrazit uživateli nějaké to okno a najednou narážíte na menší počet knihoven, elegance kódu se s použitím grafických toolkitů ztrácí někde v dálce.

    Netvrdím, že v Haskellu nejde napsat real-world aplikace (používám obě dvě - darcs i xmonad), ale pro přešení praktických úloh se raději poohlížím jinde.
    31.8.2011 10:58 w4rr10r
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    pandoc
    30.8.2011 22:30 petris_ | skóre: 12
    Rozbalit Rozbalit vše Golf?
    sub mc{eval"$_[0]*"x$_[1].1}
    31.8.2011 08:47 Tomáš
    Rozbalit Rozbalit vše Snad triviální dotaz
    Ruby jsem aktivně nepoužíval, tak nevím, jak moc blbá je moje otázka: jak přiřadit do proměnné metodu (a pak ji zavolat)? V C je to ukazatel na funkci. V Pythonu by to bylo něco promenna = nejakaMetoda a někde dál by se pak normálně zavolala promenna(argumenty, ...). Použití takové konstrukce není žádný akademický výmysl, používá se docela běžně.
    31.8.2011 09:36 petris_ | skóre: 12
    Rozbalit Rozbalit vše Re: Snad triviální dotaz
    V Jave treba takova vec udelat nejde, v Ruby ale ano:
    m = [5,4,3].method(:sort)
    m.call
    nebo
    c = proc {"Ahoj svete"}
    print c.call
    31.8.2011 10:10 Vskutečnosti Saýc | skóre: 7
    Rozbalit Rozbalit vše Re: Snad triviální dotaz
    V jave to jde, ale je to dost nepohodlne. Misto metody "bla()" musis udelat rozhrani ktere opisuje tu metodu, tridu "Bla", v ni tu metodu implementovat.

    priklad:
    // vybiram metodu ktera bude neco zpracovavat nejakou logikou.
    
    public interface Zpracovavadlo {
      public void zpracuj(NejakaVec nejakaVec);
    }
    
    public class XMLZpracovavadlo implements Zpracovavadlo {
      public void zpracuj(NejakaVec nejakaVec) {
        ...
      }
    }
    
    public class YAMLZpracovavadlo implements Zpracovavadlo {
      public void zpracuj(NejakaVec nejakaVec) {
        ...
      }
    }
    
    // nekde v kodu
    Zpracovavadlo zp;
    
    if(blabla)
      zp = new XMLZpracovavadlo();
    else
      zp = new YAMLZpracovavadlo();
    
    return zp.zpracuj(nejakaVec);
    
    Jak rikam, je to nepohodlny ale jde to. Na druhou stranu, ono to moc nesedi k Javovemu paradigmatu (kde by clovek mel cpat struktury reprezentujici data a metody ktere s nimi neco delaji na jednu hromadu do jedne tridy) takze to asi moc nevadi.
    31.8.2011 10:35 petris_ | skóre: 12
    Rozbalit Rozbalit vše Re: Snad triviální dotaz
    V te promenne preci nebude metoda, ale interface, takze ulozit odkaz na metodu do promenne proste nejde, tak jako v C++, Ruby atd.
    31.8.2011 11:56 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Snad triviální dotaz
    Jasně že to jde, viz java.lang.invoke, konkrétně MethodHandle a spol. Pokud k tomu chcete hezčí syntaxi, počkejte si na Javu 8 :-)
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    1.9.2011 08:01 petris_ | skóre: 12
    Rozbalit Rozbalit vše Re: Snad triviální dotaz
    Porad mi prijde, ze se jedna o neco jineho, protoze napr. nepujde poznat pomoci == zda se jedna o stejnou metodu jako to jde poznat u "ostatnich objektu" - vzdycky dostanou novou instanci tridy, ktera to jen obaluje (nemuzu to ale zkusit, mam 1.6ku). Priklad z ruby, co mam na mysli:
    irb(main):015:0> a = [5,4,3]
    => [5, 4, 3]
    irb(main):016:0> b = [5,4,3]
    => [5, 4, 3]
    irb(main):017:0> m1 = a.method(:sort)
    => #Method: Array#sort
    irb(main):018:0> m2 = a.method(:sort)
    => #Method: Array#sort
    irb(main):019:0> m3 = b.method(:sort)
    => #Method: Array#sort
    irb(main):020:0> m1 == m2
    => true
    irb(main):021:0> m2 == m3
    => false
    
    31.8.2011 11:15 Tomáš
    Rozbalit Rozbalit vše Re: Snad triviální dotaz
    Tohle není úplně přesně, co mám na mysli, i když to je taky zajímavé (a pokud to chápu správně, tak to pro změnu v Pythonu moc nejde).

    Zajímá mě, jak potom volat tu metodu a parametry jí hodit až při volání (typický příklad: mám dva algoritmy pro tutéž věc a podle nastavení volám jednu z funkcí). Nemusí to být pro (objektovou) metodu, stačí i pro obyčejné (neobjektové) funkce, což je možná i častější případ.
    31.8.2011 11:47 JS
    Rozbalit Rozbalit vše Re: Snad triviální dotaz
    No, jestli se nepletu, v Ruby je kazda funkce metodou nejake tridy, takze pro neobjektove funkce to nema smysl resit. Jinak predpokladam, ze pripadne parametery se te metode predavaji ve volani "call", zminene priklady jsou na metody bez parametru (s vyjimkou instance, ta se predava implicitne, ne jako v Pythonu explicitne az pri volani, takze je to spis delegat nez odkaz na funkci).
    31.8.2011 15:35 Václav HFechs Švirga | skóre: 26 | blog: HF | Kopřivnice
    Rozbalit Rozbalit vše Re: Snad triviální dotaz
    Na to se v ruby používají generátorové funkce. Třeba v C máš řazení vyřešené tak, že máš nějaký qsort a předáváš mu ukazatel na funkci, která provede cmp (třeba strcmp). V ruby máš metodu sort, která v každé iteraci řazení zavolá blok, předá mu dvě porovnávané položky a podle jeho návratové hodnoty (větší položka) provede porování.

    Použití pak vypadá:
    [1,2,3].sort {|a,b| a <=> b}
    
    A v kódu te metody by bylo něco typu
    def sort
     #...
     bigger = yield a,b;
     #...
    end
    
    A tohle se dá použít skoro na cokoliv. Myslím, že mnohem elegantější způsob než předávání ukazatele na funkci / metodu.
    Baník pyčo!
    Bystroushaak avatar 31.8.2011 18:06 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Nemůžu si pomoct, ale ruby mi připadá jako ošklivý python :)
    ________________ avatar 31.8.2011 23:50 ________________ | skóre: 5 | blog: _
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    a ako sa v pythone rozširujú inštancie za behu? dá sa v pythone niečo takéto?
    class Trieda   
        def metoda2
            puts metoda1
        end
    end
    
    
    objekt = Trieda.new
    
    def objekt.metoda1
        "abc"
    end
    
    objekt.metoda2
    
    Bystroushaak avatar 1.9.2011 01:46 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Ne tak jednoduše (resp. nejspíš ano, ale já o tom nevím, budu muset někdy dočíst DIP3).

    Seance z python shellu (trošku nepřehledná, sorry):
    >>> class Trida:
    ...     def metoda2(self):
    ...             print self.metoda2
    ...
    >>> objekt = Trida()
    >>> objekt.metoda2() # doufam ze ten ruby kod taky vypisuje adresu instance
    <bound method Trida.metoda2 of <__main__.Trida instance at 0xb74389ac>>
    
    >>> objekt.metoda1() # metoda1 tam neni
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: Trida instance has no attribute 'metoda1'
    
    # ted prijde to co neni tak elegantni, nvm jak priradit novou metodu primo
    >>> def metoda1(self): # vytvorim metodu ocekavajici automaticky predavany parametr self (neco jako this vsude jinde)
    ...     print "abc"
    ... 
    >>> objekt.metoda1 = metoda1 # priradim ji existujicimu objektu
    
    >>> objekt.metoda1() # neni to metoda, ale prirazena funkce, takze to failne na predani self
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: metoda1() takes exactly 1 argument (0 given)
    >>> objekt.metoda1(None) # pokud ji zavolam s prazdnym parametrem, tak funguje
    abc
    
    # bonus
    >>> objekt2 = Trida()
    >>> objekt2.metoda1()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: Trida instance has no attribute 'metoda1'
    >>> Trida.metoda1 = metoda1 # tride priradim novou metodu
    >>> objekt2.metoda1() # vsechny v tu chvili existujici instance ji automaticky preberou
    abc
    
    
    Bystroushaak avatar 1.9.2011 01:58 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Ah, teď jsem si všiml o co v tom ruby kódu šlo /o\. Omlouvám se, večer už mi to přestává myslet.

    V rychlosti:
    >>> class Trida:
    ...     def metoda2(self):
    ...             print self.metoda1()
    ... 
    >>> objekt = Trida()
    >>> def metoda1(self):
    ...     return "abc"
    ... 
    >>> Trida.metoda1 = metoda1
    >>> objekt.metoda2()
    abc
    
    ________________ avatar 1.9.2011 05:54 ________________ | skóre: 5 | blog: _
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Vďaka, ale funguje to trochu inak ako v ruby, pretože self ukazuje na globálny objekt a nie na inštanciu triedy "Trida", dá sa nejako zariadiť aby self ukazoval na objekt?
    class Trida:
        premenna = "premenna triedy"
        def metoda2(self):
            print self.metoda1()
    
    premenna = "globalna premenna"
    
    objekt = Trida()
    def metoda1(self):
        return premenna
     
    Trida.metoda1 = metoda1
    objekt.metoda2()
    1.9.2011 08:35 JS
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Proste napises:

    objekt.metoda1 = metoda1

    misto:

    Trida.metoda1 = metoda1
    ________________ avatar 1.9.2011 15:51 ________________ | skóre: 5 | blog: _
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    uff teraz som si všimol že on vlastne nerozširuje objekt ale triedu, to je dosť veľký rozdiel, lebo keď rozšírim triedu tak tým rozšírim aj všetky jej inštancie.

    ale našiel som spôsob ako sa dá v pythone rozšíriť iba jedna inštancia:
    import new
    
    objekt.metoda1 = new.instancemethod(lambda self :
        premenna,
        objekt)
    akurát self stále neukazuje na objekt ale na globálny objekt, takže nemôžem pristupovať k členom objektu cez self.
    ________________ avatar 1.9.2011 16:04 ________________ | skóre: 5 | blog: _
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    import types
      
    objekt.metoda1 = types.MethodType(lambda self :
        self.premenna, objekt)
    tento spôsob funguje aj so selfom
    Bystroushaak avatar 1.9.2011 17:01 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Vida, to jsem neznal :) Každopádně když to porovnám, ruby má jen ošklivější a ukecanější syntaxi, jinak je skoro ekvivalentní.
    2.9.2011 08:48 nyan
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Každopádně když to porovnám, ruby má jen ošklivější a ukecanější syntaxi, jinak je skoro ekvivalentní.
    Osklivejsi ? Jakoze tam chybi dvacet podtrzitek a tri selfy na radek ? To ano, chybi. Nicmene zustanu u te "osklivejsi" syntaxe :)
    2.9.2011 08:59 xm | skóre: 36 | blog: Osvobozený blog | Praha
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Mě tedy přijde také Ruby ošklivější a méně přehledné, přebralo totiž až moc perlismů (s čímž souhlasí jak jsem psal výše i sám autor Matz).
    Svoboda je tím nejdůležitějším, co máme. Nenechte se o ní připravit, podporujte Pirátskou stranu!
    ________________ avatar 1.9.2011 16:08 ________________ | skóre: 5 | blog: _
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    tak aj ten prvý spôsob funguje so selfom len som ho tam zabudol doplniť.
    Bystroushaak avatar 1.9.2011 17:03 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    No, to jsem zkoušel. Problém je, že se to tam přidá jako funkce a ne metoda (objekt tomu z nějakého důvodu nepředává self).
    1.9.2011 18:26 JS
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Hm, mas pravdu. Je to trochu divne.
    1.9.2011 18:31 JS
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    A nasel jsem i duvod, proc to tak je. Ne vzdycky totiz chces objektu pridat metodu, muzes chtit pridat i callable object (kam patri i funkce) jako attribut. Proto se to rozlisuje.
    1.9.2011 20:27 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
    Rozbalit Rozbalit vše Re: Laškování s Ruby
    Ruby se mi líbí...
    -- Nezdar není hanbou, hanbou je strach z pokusu.
    1.9.2011 21:17 sad | skóre: 10 | blog: sad
    Rozbalit Rozbalit vše Re: Laškování s Ruby

    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.