Ruby!=(Perl+Smalltalk)/2, protoze Ruby>(Perl+Smalltalk)/2
Autorovi: Slibny zacatek, jen tak dale! Drzim palce.
Pro rypaly: Ruby je skutecne plne objektovy jazyk (ne jako Perl a Python). V Rubym je totiz hodne "Syntaktickeho cukru", takze to tak obcas nemusi vypadat...
Michal - 'OpenSSL for Ruby' project
Vypadá to zajímavě. Ale když už byly zmíněny řetězce a práce s nimi (upper apod.), určitě by stálo za zmínku, jak je na tom Ruby s národnímy znaky. Podporuje ? Nebo bude v další verzi ? Nebo nebude ?
Zrovna tohle může být pro budoucí nasazení klíčové. Mě osobně se Ruby moc líbí ....
Diakritika muze byt v retezcich, s tim neni zadny problem. Pokud pouzijete kodovani, ktere dana platforma podporuje, tak to funguje (at uz je to na konzoli/terminalu, ve windows, v tk, gtk nebo qt toolkitu)
Zajimavejsi je podpora unicode, tam je to horsi: standardni trida String nepodporuje unicode(ale lze udelat vlastni tridu ktera String nahradi a podporovat jej bude), ale tenhle problem se v ruby bude resit alespon podle diskusi na comp.lang.ruby. Precejenom vzdyt ruby vzniknul a je velmi popularni v Japonsku, takze podpora narodnich kodovani je tam trapi taky.
Ja jsem vytvoril JTTui (Jakub Travnik's textmode user interface, http://klokan.sh.cvut.cz/~jtra/ ) a tam mam dokonce vicejazycne ukazky, tak jak je pod linuxem zvykem, ze program na Vas mluvi podle aktualniho locale.
Urcite si prectete Programming Ruby, The Pragmatic Programmer Guide: http://www.rubycentral.com/book/
Neni to jedina knizka (o Ruby je jich asi 7), ale tahle je volne pristupna na webu.
Rubymu zdar, je to na mnoho ukolu ten nejlepsi jazyk co znam (a ja znam mnoho jazyku ;-) a navic komunita lidi, kteri jsou na comp.lang.ruby (resp. mailing listu) je bajecna.
Spravna otazka, pro jeji reseni se pripiste se do:
http://www.rubygarden.org/ruby?CzechGroup
Ta stranka je soucasti WIKI http://www.rubygarden.org/ruby
Kdo nevi co je to WIKI at se podiva nejdrive sem:
http://c2.com/cgi/wiki (to je asi nestarsi wiki co existuje, ma skoro 20000 stranek).
Jsi-li takovym odpurcem Perlu, nenech se zvyklat, kdyz uvidis znaky $, @, @@. V Rubym znamenaji totiz neco uplne jineho nez v Perlu.
Nechci tu autorovi fusovat do remesla, ale mozna by si ted, kdyz jsem je tu nakousl, potrebovaly:
$var - globalni promenna (global varible)
@var - instancni promenna (instance variable)
@@var - tridni promenna (class variable)
Zakousni se do te knizky, co tu byla nekolikrat zminovana, a uvidis sam, ze to s Perlem (skoro) nic spolecneho nema.
Mam rad Python, ale Ruby vypada take docela pekne. Zajimala by me jedna vec: Je mozne v Ruby nejak zjistovat informace o existujicich tridach, modulech, metodach apod?
Priklad v Pythonu:
>>> import string
>>> dir(string)
*** Vypise funkce, atributy a tridy modulu string
>>> string.lower.__doc__
*** Vypise informace o funkci lower z modulu string
>>> s = "aaa"
>>> dir(s)
*** Vypise atributy a metody
Nejdříve odpověď na otázku: ano, je to možné. Např.:
a='retezec'
puts a.respond_to? :reverse
puts a.respond_to? :abs
Vypíše:
true
false
Pomocí a.methods bychom vypsali všechny metody objektu.
Abych tady nepsal další článek, dodám jen, že v Ruby je "reflexe" (je pro reflection nějaký ustálený český výraz?) podporována opravdu důkladně. V několikrát zmiňované on-line knize je o ní celá kapitola.
Dále bych rád poznamenal, že článek byl zamýšlen, jako rychlé seznámení s Ruby a cílem bylo navnadit čtenáře k dalšímu studiu (budou ještě dva díly). Objektovým modelem v Ruby jako samotným se v něm proto příliš nezabývám, abych zbytečně nemátl čtenáře, kteří objektově neprogramují.
Pokud však bude zájem, dopíšu ještě pokračování o objektech.
Napis vsechno! ;-))
(A ted vazne: Napis vsechno, kdyz uz jsou jini Ruby nadsenci literarne impotentni, ci lini)
PS: Myslim si, ze objekty jsou pro vetsinu zacatecniku snazsi k pochopeni nez neobjektove programovani (Objekt = Vec;
zeryk = Pes.new("Zeryk")
zeryk.stekej => "Haf haf"
se mi zda pro zacatecnika jednodussi nez "stekati zerykem" - stekej(zeryk)
)
Jiste, ze!
s = "String"
s.methods => vrati pole ve kterem jsou nazvy metod
(a protoze to je pole, muzes nan zavolat metodu sort a ono se setridi; tedy s.methods.sort je setridene pole nazvu metod)
no jo, ale Ruby je plne objektovy; tedy se muzes optat jake metody ma strida 'String': String.methods
instancni promenne: s.instance_variables
Dalsi hracky najdes jiste sam, nebo je (dozajista) najdes v dalsim clanku...
Jasne, embedding jde.
S tim thread safe to je problem. Ruby ma thready, ale dela si je sam (tedy ne pres pthread) - proto take jde pouzivat Rubyho thready i v MSDOSu. Ruby tedy neni thread safe. Ovsem nekdo pouziva(l) celeho rubyho v 1 threadu a zbytek 'C'cka byl v okolnich threadech.
Nic moc o tom nevim, tak se nezlob.