Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názory k článku
Knihovny řešící problém s unicode v Ruby

Rejpal
Rejpal (neregistrovaný)
12. 11. 2007 1:43 Nový

Unicode character database

celé vlákno
A co nějaký ekvivalent pythoního modulu unicodedata? Ten by se chvílemi moc hodil, ale nevybavuju si, že bych na něco podobného byl někdy narazil...
Miloslav Ponkrác aura:59
12. 11. 2007 9:12 Nový

Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Nedá mi to a stále se musím zeptat - proč to neřeší přímo jazyk? Proč jazyk vzniklý relativně pozdě nemá Unicode už v jazyce? A proč to musí řešit "spousty" knihoven, když už to dávno mohl jednou provždy vyřešit sám jazyk?
pkm
pkm (neregistrovaný)
12. 11. 2007 9:26 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Protože unicode japonci neradi.
Miloslav Ponkrác aura:59
12. 11. 2007 9:36 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
A kvůli tomu má celý svět trpět? Prostě já považuji jazyk bez Unicode v jazyce za nedodělaný a s významným mínusem. Je sice hezké, že článek se snaží obhájit to, že je to vlastně ok, ale je to jen political corectness tvrzení, česky z nouze ctnost.
tomm
tomm (neregistrovaný)
12. 11. 2007 9:48 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Presne tak. Jakkoliv vymakana knihovna je vzdy uz jen dalsi zdrzovani, kdyz to jazyk neresi.
martin
martin (neregistrovaný)
12. 11. 2007 12:49 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Proč by to měl řešit jazyk?
Miloslav Ponkrác aura:59
12. 11. 2007 13:11 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
A jediný logický důvod proč by neměl by nebyl?
Kyo
Kyo (neregistrovaný)
12. 11. 2007 16:20 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Protože je to blbost? :-) Vezměte si třeba Common Lisp. Ten standard, pravda, vznikal dlouho (Common Lisp byl jako první objektový jazyk standardizován v roce 1994 ;-)), ale první kniha (tzv. CLtL 1) vyšla v roce 1984. Tehdy o nějakém Unicode nebylo ani vidu, ani slechu. Nicméně CL počítal s tím, že třebas i různé počítače mohou používat různé znakové sady a kódování, třeba EBCDIC (některé stroje nemají ani ASCII!) a tak. Takže je definován typ BASE-CHAR plus mechanismy pro zavedení prakticky čehokoli. Takže pozdější implementace přejaly Unicode víceméně stejným způsobem jako jakoukoli jinou znakovou sadu, se kterou se byly nuceny poprat.
Miloslav Ponkrác aura:59
12. 11. 2007 16:49 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Ano a Céčko dodnes počítá se situací, že by byte nemusel mít 8 bitů, když jsme u toho třeba. Ale to jsme v počítačovém pravěku - a uznejte, že Lisp vznikl o chlopek před Ruby i mnoha dalšími jazyky, a že v době vzniku Ruby už Unicode jelo na plné pecky.
martin
martin (neregistrovaný)
12. 11. 2007 18:30 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Čistě logicky - pokud něco vytýkáte, tak byste snad měl vědět důvod.

Tak jsem se tedy zeptal proč by to měl řešit jazyk.

Pokud tím důvodem je pouze to, že jste na to zvyklý a čekáte to od každého jazyka, tak to akceptuji jako odpověď, ale nikoli jako racionální důvod.
Miloslav Ponkrác aura:59
12. 11. 2007 22:28 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Čistě logicky je naprosto zbytečné, aby jazyk obsahoval třeba čísla jako součást jazyka. Je to naprosto zbytečné, operaci s čísly jdou nasimulovat pomocí knihovny jako práci s řetězci, ve kterých Ty čísla zapisujete. Je naprosto zbytečné, aby třeba Ruby mělo čísla a práci s čísly přímo v jazyce.
martin
martin (neregistrovaný)
13. 11. 2007 6:53 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
(No tak teď už začínáte být agresivní vy.)

Však takové knihovny také v Ccku existují :-)

Pořád se ale vyhýbáta odpovědi s důvodem, proč by měl mít jazyk Unicode literál přesněji řečeno, proč ho postrádáte v Ruby.
pkm
pkm (neregistrovaný)
12. 11. 2007 11:19 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
No, když to umí pracovat s (například) utf-8 řetězci, tak to není vůbec špatné. Takhle to má standardně celé GNOME, takže odpadá konvertování do UTF-16 (Java, Python). Nefunguje krájení řetězců a upcase, ale to zas tak často potřeba není, a řešení externí knihovnou je snesitelné.
Jakub Šťastný aura:97
12. 11. 2007 11:29 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Ja se to nesnasim obhajit, pouze konstatuji, ze kdyz unicode potrebujete, mate pomerne slusnou moznost. Co se tyce nepodpory jazyka, o tom bude rec priste. Ruby 1.9.1 unicode podporovat ma, jak jsem se ostatne jiz nekolikrat zminil.
Tomas
Tomas (neregistrovaný)
12. 11. 2007 15:26 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Stejne jako neexistuje dokonala zenska, tak neexistuje ani dokonaly programovaci jazyk.

Osobne se mi ruby velmi libi, ale ta podpora unicode, na kterou jsem zvykly z pythonu mi proste chybi.
Ale naopak kdyz zas delam v pythonu, tak si rikam ze by se hodili nektere vychytavky z ruby.

Ty jazyky se porad vyviji a v ruby2 ma byt snad nativni podpora unicode, stejne jak jako python2.6 ma nektere kontrukty, ktere drivejsi python nemel i kdyz v ruby byly bezne.
Kyo
Kyo (neregistrovaný)
12. 11. 2007 16:22 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Nauč se Gauche Scheme a budeš mít všechno. ;-)
Miloslav Ponkrác aura:59
12. 11. 2007 16:50 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Tedy upřímně řečeno, já raději tu ženskou, než Gauche Scheme :-)
Rejpal
Rejpal (neregistrovaný)
12. 11. 2007 17:06 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
To ještě tak, a skončím jako Radek Hulán... :-)
Tomas
Tomas (neregistrovaný)
12. 11. 2007 22:00 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
To je dokonaly programovaci jazyk? i s dokonalym vyvojovym prostredim?
- jinom pripojis mikrofon a reknes "vytvor program na predpoved pocasi",
on odpovi "Pracuji .... hotovo .... ulozeno do ...."
- nebo rovnou cte myslenky a nemusis na nej ani mluvit?;)
Rejpal
Rejpal (neregistrovaný)
12. 11. 2007 23:30 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
To sice ne, ale má dokonalého autora. :-) Ten jako by četl myšlenky v tom směru, co programátor ve Scheme může potřebovat. :-) Každý jazyk by povinně měl mít kvalitní základní knihovnu kombinátorů a funkcí vyššího řádu a tenhle ji má. ;-)
Láďa aura:100
12. 11. 2007 11:30 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Ruby je asi tak stejně starý jazyk jako PHP a taky je na tom s podporou Unicode podobně :-) I když samozřejmě PHP bude mít Unicode dřív (otázka je v jaké podobě, vyvojáři PHP jsou experti v tom zvrzat co jde - no flame please).
Že to jazyk neřeší je smůla, ale asi takhle - pro drtivou většinu vývojářů platí Ruby = Ruby on Rails. A pochybuji že by se našel jediný, který by Rails opustil kvůli potřebě psát navíc .chars :-)
Miloslav Ponkrác aura:59
12. 11. 2007 11:53 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Jenže PHP nevznikl jako jazyk, byla to jen sada podpůrných skriptů pro weby, která se čistě náhodou rozrostla svojí popularitou a používaností do současného stavu. Je jasné, že PHP prostě nikdo moc nepromýšlel, je to něco co přerostlo věškerá očekávání.

Ale Ruby měl být promyšlený jazyk, a jako takový nepodporu Unicode považuji za zhůvěřilost. Dnes kam kouknu, i na hodně staré jazyky, tak Unicode přímo v jazyce podporují. Podporuje to C++, podporuje to Java, podporuje to C#, podporuje to leccos.
Láďa aura:100
12. 11. 2007 12:39 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Tohle se dá říct o čemkoliv, Ruby bylo většinu své existence taky jenom zábavou pro pár Japonců, než to David Heinemeier Hansson použil pro Rails. Vzato kol a kolem éra popularity Ruby (která v ČR vlastně ani nezačala a je otázkou, jestli vůbec bude) je mnohem kratší, než éra popularity PHP.

Ale jak jsem psal - neomlouvám absenci Unicode přímo v jazyku, jenom to nepovažuju za zhůvěřilost. Workaround existuje (a velice kvalitní), takže se dál můžu věnovat vývoji webů v mém oblíbeném frameworku. Můj pohled na to je čistě pragmatický: plusy převažují, s mínusy se musím nějak smířit :-)
Miloslav Ponkrác aura:59
12. 11. 2007 13:03 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Nedá se to říct, fakta jsou naprosto jasná:

1) Ruby bylo OD ZAČÁTKU stvořeno jako programovací jazyk.

2) PHP bylo NA ZAČÁTKU stvořeno jen jako pomocná sada skriptů pro vyřešení webových stránek.

Tudíž u PHP lze celkem pochopit, proč je kde je, protože za tím nestála snaha stvořit programovací jazyk a lepilo se co se dalo. Ale Matz od začátku zamýšlel stvořit programovací jazyk - objektový (jak píše "genuine object-oriented"), s výjimkami, garbage collectorem a iterátory. Tudíž prostě nechápu nepromyšlenost jazyka, pokud je to od začátku navrhnováno jako jazyk - a nedořešenost řetězců v absenci Unicode prostě beru za velmi velmi výrazný nedostatek.

Já absenci Unicode považuji za výrazný nedostatek. Tím samozřejmě neříkám, že by všichni měli Ruby odepsat, ale to byl třeba kdysi důvod, proč jsem odmítl v Ruby pracovat, řešení na základě emulace v UTF-8 (což je dobrý vstupně výstupní formát, ale nikoli na zpracování řetězců uvnitř programu) nepovažuji za nic jiného, než dočasné nouzové řešení, stejně tak jako emulace knihovnou.

Samozřejmě neexistuje žádný programovací jazyk, který by nějaké mínusy neměl. Jen je hloupé vědomě ty mínusy zavádět už od počátku do jazyka. Jinak samozřejmě používejte Ruby ostošest, má spoustu pěkných vlastností.
Láďa aura:100
12. 11. 2007 13:17 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Možná bych to celé zkrátil, kdybych odpověděl na tu otázku "Proč se škrábat levou rukou za pravým uchem?" - "Protože nám to nevadí". A vlastně nebýt tvého příspěvku, tak mě ani nenapadne nad tím přemýšlet :-)
martin
martin (neregistrovaný)
12. 11. 2007 12:53 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Ruby podporuje Unicode daleko lépe než C++.

Nesnažte se nám vnutit, že si děláte závěry dříve, než si zjistíte fakta. Z ostatních diskusí víme, že to není pravda.
Miloslav Ponkrác aura:59
12. 11. 2007 13:10 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Ano? A kdy tedy bude mít Ruby podporu Unicode v jazyce, jako to aspoň v určité míře má C++?
martin
martin (neregistrovaný)
12. 11. 2007 14:00 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Víte snad o něčem co má podpora unicode v C++ a není to v Ruby?
Miloslav Ponkrác aura:59
12. 11. 2007 14:10 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Ano - vím. C++ podporuje Unicode i na úrovni jazyka - má například pravé Unicode literály.

A pokud se budeme bavit o podpoře Unicode v C++ na úrovni knihoven, tak tam C++ uvaří Ruby naprosto bez problémů.
Kyo
Kyo (neregistrovaný)
12. 11. 2007 16:23 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Co to jsou "pravé Unicode literály?" Copak v Ruby nemůžete zapsat unicode znak do zdrojového kódu? To vždycky šlo.
Miloslav Ponkrác aura:59
12. 11. 2007 16:53 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
To můžete, ale uloži se a Ruby ho bude chápat jen jako sled bajtů.
Rejpal
Rejpal (neregistrovaný)
12. 11. 2007 17:06 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Jako sled bajtů v UTF-8, stejně jako v Javě je to sled shortintů v UTF-16, ne? ;-) A nad tím už jsou knihovny, a ty jsou na jazyku (kde _jazyk_ považujeme za _gramatiku_) poměrně nezávislé, řekl bych.
Miloslav Ponkrác aura:59
12. 11. 2007 22:37 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Původní myšlenka Javy byla mít sled znaků - a s tím také řetězce implementovala. Ale Javovská třída java.lang.String ví, že se jedná o Unicode řetězec, je to přímá součást jazyka, a ví o jednotlivých znacích. A že je to součást jazyka lze doložit tím, že Java umí literály typu Unicode string, umí dělat optimalizaci nad stringy jako součást jazyka, které naprosto přesahují běžný arzenál tříd a podporuje operace, které s jinými třídami, ani knihovnami nenaprogramujete.

Ruby když pracuje s řetězci, tak jazyk sám NEVÍ, kde má jednotlivé znaky, musí mu to naznačit programátor. Tudíž Ruby práci s Unicode řetězci jen imituje, ale nic o nich samotný jazyk neví.
martin
martin (neregistrovaný)
13. 11. 2007 7:37 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
1) Ruby nepotřebuje rozumnět interpretaci datových typů. Ostatně v Ruby jednoduše udělate nové datové typy, jejichž interpretaci jazyk ani nemůže mít, jelikož si ji vymyslíte. Interpretace je ponechána na metodách, které s daty objektu zacházejí. Této vlastnosti se říká jak? ... Správně - zapouzdření.

2) Pokud je mi známo, tak v ruby neexistuje třída, kterou byste nemohl plně přepsat (ať už v ruby samotném nebo jako binární knihovnu). Pokud jazyk takové "nadtřídy" obsahuje, ptám se logicky, co je to za nadvlastnosti, k čemu je daná nadtřída používá a proč k nim nemám přístup já jako programátor.
martin
martin (neregistrovaný)
13. 11. 2007 7:59 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
fuj ... rozumět ...
martin
martin (neregistrovaný)
12. 11. 2007 16:26 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
K čemu potřebujete v plně objektovém jazyku unicode literály?

Možná Vám to chybí prostě jenom proto, že žijete v dost bizardním světě C++.
Miloslav Ponkrác aura:59
12. 11. 2007 16:52 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Jak víte, ve kterém jazyce programuji? Já to nikde nezvěřejňuji. Navíc za svých 18 let praxe jsem těch jazyků zažil podstatně víc. Každý jazyk, i plně objektový potřebuje literály základních datových typů.
martin
martin (neregistrovaný)
12. 11. 2007 18:18 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
No tady v té části se teď bavíme o C++ vs. Ruby.

Literály různých kódování jednoho typu fakt v jazyku nepotřebujete.

Přijde mi to, jako když tvrdíte, že klavesnice bez Win klávesy je horší než s Win klávesou.
Miloslav Ponkrác aura:59
12. 11. 2007 22:32 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Nebavím se o různém kódování, bavím se o literálu, který reprezentuje Unicode řetězec, jazyk o něm jasně bude vědět, že je to Unicode řetězec a bude s ním jako takovým zacházet.

Jinak přestávám reagovat - jsou tu rozumnější lidé, kteří vědí, že Unicode řetězce do jazyka patří - a že absence těchto v jazyku je obrovské mínus. Nemám nic proti Ruby, je to dobrý jazyk, ale klidně přiznám, že jako takový má tuhle chybu. Tečka. Howgh.
martin
martin (neregistrovaný)
13. 11. 2007 7:17 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Ale jistě, že se bavíme o různém kódování. Pokud chápete "žluťoučký" v unicode a v latin2 nebo cp1250 jako jiné texty, tak je něco špatně. To snad chápate číslo v hexa literálu jako jiné číslo než jeho implicitní dekadický zápis? V jazyku, který není plně objektový musí určitě interpretaci do určité míry zajistit jazyk sám, ale v Ruby toto zajišťují metody samotných objektů.

Být rozumný znamená pro vás chápat potřebu Unicode literálu? Kdo to nechápe není rozumný? Hmm.
Miloslav Ponkrác aura:59
12. 11. 2007 14:13 Nový

Re: Proč se škrábat levou rukou za pravým uchem?

celé vlákno
Ještě bych chtěl dodat, že mým cílem tu není dokazovat, že C++ je lepší jazyk, než Ruby - to pouze pan Martin zvolil útočný tón a zaútočil.

Jediné, co tu píšu je, že dnes nechápu jazyk bez podpory Unicode přímo v jazyce. A už vůbec nechápu snahu tuhle koncepci obhájit. Mě kdyby v mém oblíbeném programovacím jazyce (záměrně nepíšu který to je, protože to je pro tuto diskusi nepodstatné) chyběly v jazyce Unicode řetězce, tak se nehádám a rovnou to označím za hrubou chybu jazyka.
depi
depi (neregistrovaný)
12. 11. 2007 15:32 Nový

ActiveSupport::Multi byte a regularne vyrazy

celé vlákno
V RoR pouzivam kniznicu ActiveSupport::Multibyte pre podporu UTF-8 avsak pokial viem aj ona ma niekolko zadrhelov. Napriklad tusim, ze nepodporuje regularne vyrazy v kodovani UTF-8, to znamena, ze ak chcem porovnavat nejake retazce v tomto kodovani, tak jednoducho neuspejem. Vedel by mi niekto povedat, ci je nejakym sposobom mozne dosiahnut aj podporu UTF-8 v regularnych vyrazoch?
Zasílat nově přidané příspěvky e-mailem