Vlákno názorů k článku Ruby v příkladech (7) - Ruby symbolické a nepovedené od anonym - Potěšilo mě, že jste se nebál napsat i...

  • Článek je starý, nové názory již nelze přidávat.
  • 27. 10. 2005 9:57

    anonymní
    Potěšilo mě, že jste se nebál napsat i o stinných stránkách Ruby. Všechno ma svá + a - . Doufám jen, že se mínusy nestanou demagogickými argumenty v hanění Ruby :-)
  • 30. 10. 2005 10:20

    jrave (neregistrovaný)
    hmm, me by potesilo, kdyby o ruby psal nekdo, kdo o nem neco vi.
    to, ze po cca 3 dnech kdy jsem se o ruby zajimal jsem o nem vedel tolik, abych mohl tuhle serii odepsat zrovna moc duvery nevzbuzuje ...

    no nic, kdyz uz sem se sem prez odkaz z abclinuxu dostal, zkritizuji aspon jeste tenhle dil ;-))
    symboly/literaly se take pouzivaji (a byly vytvoreny) predevsim z hlediska citelnosti kodu (ie. naznacuji ze tady nejde o jen tak nejaky retezec ;-). rozhodne prijemnejsi varianta phpckovych "stringovych nedefinovanych konstant", kde identifikator nedefinovane konstanty (neznamy identifikator bez $ pred sebou) je automaticky prirazeno jeho jmeno jako textovy retezec... ono se pak stava ze si "lidi" zvyknou to pouzivat defaultne (jako kolega, ktery pak nechapal, k cemu jsou v tech zavorkach ty retezce, kdyz se to prece dela takhle ... vysvetlit mu, ze je to megaprasarna, u ktery neni zaruceno, zda v budoucnosti bude podporovana. klasicky problem s takyprogramatory, jejichz hlavnim kriteriem je : vzdyt to funguje ...)

    parametr -r je ekvivalent require v kodu, coz nejen znamena ze jcode je normalni soubor, ale predevsim to, ze je LEPSI si ho (pokud je potreba) requirnout hezky ve zdrojaku a nemuset to pokazde pripisovat na cmd. line (a predevsim to zminit, aby to zjistily i lamy, jenze to chce clovek po autorovi asi moc, protoze ten je o ono prislovecne jedno prohledani googlu dal).

    dalsi veci je, ze jcode neprekryva standardni metody, ale pridava k nim ekvivalenty s predrazenym j, cili jsize a jlength.

    kdyz uz se zminujete o verzi 2.0, nejenze tam ma byt podpora unicode vyresena, ale hlavni atrakci je (jiz ted funkcni) bytecode virtualni masina, takze rychlost behu by mela jit rapidne nahoru (v nejmarkantnejsich pripadech az 20x, jinde jen 2x, to v pripadech kde to predtim nebylo zas az tak pomale, pokud to nekoho zajima, at si najde na googlu ruby rite, popripade i yarv -implementace vm ktera bude na 99% zvolena- a projde si nalezene ;-)).

    zadost na redakci rootu: kdyz uz jste tak megamocny, reklamou preplaceny (a preplacany) server, nemohli byste _PROSIM_ alespon zajistit clanky na urovni ? je sice chvalyhodne, ze (treba) o ruby vysel clanek, mene chvalyhodne je, kdyz jsou reseni v clancich uvadena diskutabilni, a spojovaci text zase plny polovicatych udaju. kdyz uz autory clanku platite, je takovy problem zaplatit nekoho, kdo tematu OPRAVDU ROZUMI ?

    docetl jsem se napr. ze se mame tesit na serii o rails. no, ja se tesim, ale vzhledem k tomu, ze kvuli rails jsem se o ruby zacal zajimat, prehltal jsem o nem nekolik knizek a ted ho pouzivam k praci, nebudu zrejme schovivavy kritik, a jestli to takhle pujde dal a ja se sem zas podivam, mate se na co tesit vy ;-))
  • 1. 11. 2005 22:51

    bez přezdívky
    Chybička se vloudila, dík za přípomínku. jcode opravdu nepřekrývá standardní metodu size/length. Nicméně jcode kromě přidání jsize/jlength některé standardní metody třídy String přeci jen překrývá (např. succ), případně přidává logicky podobné (each_char k původnímu each_byte). Nejhorší je ale, že některým metodám ekvivalenty nepřiřazuje ani je nepřepisuje. Takže například metody reverse nebo index mohou pro řetězce kódované v UTF-8 dávat velmi podivné výsledky.

    No prostě, už aby tu byla verze 2.0 s rozumnou podporou Unicode. Sám jsem ale hodně zvědavý, jak se s tím lidé kolem Ruby poperou, protože problematika internacionalizace a Unicode je dosti komplexní.

    BTW, parametr -r jako ekvivalent require byl zmíněn v pátém dílu (u Rubygems).
  • 29. 9. 2006 19:13

    Jakub Hegenbart
    Jistě, že je komplexní – vždyť právě proto to trvá tak dlouho. :-D Mimochodem…
    „Přístup použitý v Ruby však může zapříčinit, že např. déle trvající (blokující) vstupně/výstupní operace zablokuje všechna vlákna bez ohledu na to, zda mají s onou V/V operací něco společného.“
    A není tohle náhodou nesmysl? Veškeré IO operace v Ruby jsou blokující na úrovni threadů, ale runtime Ruby používá pouze neblokující operace a pokud není operace dokončena, zablokuje pouze postižený thread a dále zpracovává ostatní. Takže tohle opravdu nechápu, co tím máte na mysli.
  • 7. 11. 2006 15:36

    bez přezdívky

    Nejsem si tak úplně jistý, zda se na to dá zcela spolehnout. Například následující kód

    Thread.new { 10.times { |i| sleep 1; puts i } }
    sleep 5
    File.new('con:').getc
    sleep 5
    

    se v Ruby 1.8.4 pod Win XP chová tak, že to čekání na vstup znaku z konzoly zablokuje to vlákno z prvního řádku, dokud ten znak není zadán. Proto je v textu to slovo "může". Nicméně je pravda, že to mohlo být v textu formulováno přesněji, resp. měly být zmíněny vhodnější příklady, kdy se (nechtěně) blokují ostatní thready.