Názory k článku
Groovy: Java má vzdáleného bratrance
groovy
celé vláknoGroovy je skvele na mensi projekty nebo prototypy. Take bych o nem uvazoval pokud mate v tymu neJavare, ma o dost rychlejsi start.
A je to porad bytecode, takze je to o dost pouzitelnejsi nez bastl zacinajici na R.
Groovy ma ale dve vady:
1) je pomalejsi nez klasicka Java, hlavne casti pracujici s dedicnosti a typy. Udava se 2x az 50x, je to zpusobene slozitejsi dedicnosti/typeless...
2) kompilator neumi soucasne kombinovat kod groovy a javy.
Moje doporuceni je tedy nabusit objektovy model v klasicke jave a ostatni veci v groovy.
1)Zvysi se tim rychlost (jen 2x az 5x pomalejsi).
2)ORM, annotace a podobne opicarny jsou jednodussi (jde to ale i promo z Groovy)
3)Dvere do javy zustanou otevrene.
PS: idealni doplnek pro data storage http://www.db4o.com/about/productinformation/
Re: groovy
celé vlákno"A je to porad bytecode, takze je to o dost pouzitelnejsi nez bastl zacinajici na R"Tak tady bych s výběrem slov byl opatrnější, a to nejen kvůli osobě autora. :-) To už bych rovnou mohl říct, že je mnohem lepší použít Common Lisp, protože "je to pořád poctivý nativní kód, takže je to o dost použitelnější, než bastl začínající na J." ;-) (A možná by to byla pravda, vzhledem k existenci léty prověřených objektových systémů, které s "dědičností a typy" umějí mnohem víc a přitom nejsou tak pomalé. :-) Tohle jen ukazuje, že suní Java je nejlepší implementace Javy, ale znásilňovat do ní jiné jazyky nemá až takový smysl.)
Re: groovy
celé vláknoRe: groovy
celé vláknoRe: smalltalk...
celé vláknoDrobná oprava
celé vláknoFunkcionální jazyky jsou např. Lisp, Scheme nebo Haskell.
Re: Drobná oprava
celé vláknoRe: Drobná oprava
celé vláknoSakrys, jsem to dneska ale otravny :-)
Re: Drobná oprava
celé vláknoRe: Drobná oprava drobe opravy
celé vláknoRe: Drobná oprava drobe opravy
celé vlákno(Totéž lze samozřejmě říct i třeba o zmíněném Scheme, ale v něm funkcionální paradigma hraje natolik klíčovou roli, že je obvykle považován za funkcionální.)
Re: Drobná oprava drobe opravy
celé vláknoFunkcionální Smalltalk?
celé vláknoGrails
celé vláknoAle ty Grails, to fakt nevím. Sice ten kód připomíná RoR, ale oproti RoR/Djangu je to monstrum (Hibernate...). Prostě hlavní výhoda těch lehkých frameworků - a to zero turnaround time tam není. Pokud to běží na Tomcatu, tak bych to nechtěl... Chce to lehký server, bez cachování, bez deployingu.
Re: Grails
celé vláknoTrosku nepresnosti
celé vlákno-Groovy umoznuje jak staticke, tak dynamicke typovani
Jinak skvely jazyk na prototypy, webove roboty, praci s textem a ruzne testovaci veci. Na vetsi projekty bych z duvodu udrzby nedoporucoval.
Re: Trosku nepresnosti
celé vláknoRe: Trosku nepresnosti
celé vláknoKaždý názor musí mít titulek.
celé vláknoJa zkusim vyjmenovat ty realne pouzitelne:
rychle, profesionalni, naprosto nekompatibilni: c++
prumerne rychle, profesionalni, hodi se na vsechno, jednoduche, extremne rychly vyvoj: .NET(C#), Java
extremne pomale, jednoduche, hodi se na male veci s extremne rychlym vyvojem, skriptovaci: Python, uvedl bych snad i o neco starsi Perl, ale ten se diky sve dvojake, trojake, ctyrjake a kdovijake jeste syntaxi, radi mezi read only odpad ....
S timto se da vystacit prakticky na vsechno na PC ...
Re: Každý názor musí mít titulek.
celé vláknoRe: Každý názor musí mít titulek.
celé vláknoPlny souhlas. Prijde mi uplne zbytecne, ze nekdo porad vymysli nove a nove programovaci jazyky s novou syntaxi. Kdo si to ma taky pamatovat.
Ti co programuji ve vice nez 2. jazycich zjisti, ze se jim neustale plete syntaxe z jednoho do druheho. Jinymi slovy - at uz konecne nekdo vymysli Java skriptovaci jazyk se zcela stejnou syntaxi jako ma klasicka Sun Java (ale ne strasne omezeny JavaScript !).
Re: Každý názor musí mít titulek.
celé vláknoPerl "read only"
celé vláknonecitene ... , ale pokud chcete muzete :).
Re: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknoJen spete dal, scripting je vhodny presne pro takove jako jste vy, tedy abych byl konkretni nemusite znat vubec nic a stejne muzete scriptovat od rana do vecera v cemkoliv od Ruby az po Lisp
Re: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknohttp://en.wikipedia.org/wiki/Dynamic_language
Re: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknoVymena obsahu premennych bez pomocnej premennej?
($a, $b) = ($b, $a)
Re: Perl "read only"
celé vláknoRuby: a, b = b, a
Ocaml: let a, b = b, a
Re: Perl "read only"
celé vláknoTen Python a Ruby beriem (syntax inspirovana Perlom). Priklad v OCaml robi nie co ine; definuje nove premenne, ktore zakryju v danom rozsahu povodne a, b. Premenne (okrem ref) su v OCaml predsa konstantne.
Ok, vymena premennych nevysla. Co tak parsovanie URL argumentov do hash/map premennej?
$urlArgs = 'key1=value1&key2=value2';
%params = map { $$_[0] => $$_[1] }
map { [ split /=/, $_ ] }
split /\&/, $urlArgs;
Ako nieco podobne bude vyzerat v Python/Ruby?
Re: Perl "read only"
celé vláknourlArgs = 'key1=value1&key2=value2'
params = dict(oneParam.split('=') for oneParam in urlArgs.split('&'))
Re: Perl "read only"
celé vláknoNo problem
celé vlákno(oneParam.split('=') for oneParam in urlArgs.split('&'))
if (key[0].isupper() and value[0].isupper()))
Tahle konstrukce uz je ale dost krkolomna a nemyslim, ze tohle je nutne resit jednim prikazem. Bylo by to v Perlu strucnejsi a hlavne citelnejsi?
Re: No problem
celé vláknoRe: No problem
celé vláknoRedakcni system sezral odsazeni, ale v tomto pripade neni z hlediska funkce nutne.
Tiez jeden z dovodov, preco mi to vynutene odsadzovanie nesedi :)
Re: No problem
celé vláknoRe: No problem
celé vláknoV Perle mozem jednoducho doplnit tuto logiku to povodneho riesenia:
%params = map { +"\l$_->[0]" => "\l$$_[1]" }
grep { $$_[0] =~ /^\p{IsUpper}/ && $$_[1] =~ /^\p{IsUpper}/ }
map { [ split /=/, $_ ] }
split '&', $urlArgs;
Vsimite si ako je ten kod linearizovany - ziadny vnoreny "for" a cely kod neprehladne uzaverety do volania dict(). Moje riesenie je uplne standardny Perl - vas Python kod by ste v normalnom projekte takto nezapisali pretoze ten vnoreny for je neprehladny.
Dajme si este jedno kolo - ake je hodnota parametra vo formate YYYY-MM-DD a rok je nizsi ako 2000, tak nech je zapisany ako rok 2000.
Re: No problem
celé vláknoPre referenciu predkladam riesenie v Perle:
#!/usr/bin/perl
$urlArgs = '=Value1&Key2=Value2&Key3=1999-12-02';
%params = map { +"\l$$_[0]" => "\l$$_[1]" }
map { $$_[1] =~ s/^(\d{4})/$1 < 2000 ? 2000 : $1/e; $_ }
grep { $$_[0] =~ /^\p{IsUpper}/ &&
$$_[1] =~ /^(\p{IsUpper}|\d{4}(-\d\d){2}$)/ }
map { [ split /=/, $_ ] }
split '&', $urlArgs;
print "$params{key3}\n";
Opat linearne pridanie zopar prikazov do existujuceho kodu. Standardny Perlovsky text-processing.
Re: No problem
celé vláknoRe: No problem
celé vláknoNiekto kompetentny by sa mohol pokusit prepisat to do Groovy pre porovananie.
Re: No problem
celé vláknozdanlivo lepsi python, preto nuti odsadzovat, alebo perl, ktory vam dava volnost?
v mojich ociach vitazi jednoznacne perl.
Re: No problem
celé vláknoTen priklad, ktery kolega dal, je asi citelnejsi; zvlast kdyz clovek zna syntaxi Perlu. Ja bych ale uvedeny "one-line" pristup pro slozitejsi zpracovani nikdy nepouzil - to je lepsi pouzit cyklus nebo vnorene funkce. Bez ohledu na pouzity programovaci jazyk.
Re: No problem
celé vláknoTiez som si vsimol, ze vo vasom kode ak zadam nespravny vstup; napr:
urlArgs = '=Value1&Key2=Value2'
tak to hodi, vynimku. Moja Perl verzia nespravne hodnoty korektne odfiltruje/ignoruje.
Re: No problem
celé vláknoRe: No problem
celé vláknoTak skuste chciet aj osetrit nespravny vstup. Google na vas tiez nevyhodi vynimku ked zadate:
http://www.google.com/search?abc&&q=root.cz&abc=abc=abc
V Perle to bolo osetrene hned na prvy krat.
Re: No problem
celé vláknoRe: No problem
celé vláknoRe: No problem
celé vláknoRe: No problem
celé vláknoRe: No problem
celé vláknoRe: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknolet s = "hello world" in s.[0] <- 'H'; print_string s;;
Re: Perl "read only"
celé vláknoTOTO???
%params = map { $$_[0] => $$_[1] }
map { [ split /=/, $_ ] }
split /\&/, $urlArgs;
JE PROGRAMOVACI JAZYK??? To radsej assembler...
Sorry, nie som aktivny programator, ale toto ma dorazilo. Reagujem koli tomu, ze sa tu pise o citatelnosti kodu. Ak je toto Perl, tak sa toho vzivote radsej ani nedotknem. Mam strach, ze keby som po neakej dobe prestal v tomto jazyku pracovat a po neakej dobe by som sa vratil, tak by to bolo na samovrazdu :o)
Nie, nechcem nikoho urazat, ja viem ze kto v tom je dobry tak si na to neda sahat a nech si kazdy pouziva to co sa mu paci (ved o tom sloboda je).
Mne sa na Perl nepaci to, ze je zazraty do Linuxu ako chrobak do hovna. Problem je presne to, ze ak uzivatel (nie programator) potrebuje si prebehnut script ze co to robi, alebo nedajboze poupravit pre vlastne potreby, tak nanho vybrechne takyto paskvil. Mno z toho ani tusenie nemam ze co to moze asi robit...
OK som LAMER jag swina
Re: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknoPerl pouziva rozne specialne znaky pre dobry dovod. Napr. podla
%var = funkcia();
viem, ze funkcia vratila hash/dictionary. V Pythone podla:
var = funkcia()
Neviem o premennej var absolutne nic.
Re: Perl "read only"
celé vláknoRe: Perl "read only"
celé vlákno
Pravda, nie je to celkom univerzalne ale zvysuje to citatelnost kodu dost zasadne v mnohych situaciach. type(var) (obdoba ref(EXPR) v Perle) je pekna vec ale tu ide o citalenost kodu a nie jeho debuggovanie.
Inak zvlastne, ze ked niekto kritizuje v Pythone vynutene odsadzovanie - tak argument je, ze to zvysuje citatelnost kodu a teda to nemoze byt ponechane na slobodnom uvazeni programatora. Ale ak niekto poukaze, ze jazyk nevynucuje lahke odlisenie zakladnych datovych typov, tak argument je, ze je na programatorovi aby uvazene nazval premenne :)
Re: Perl "read only"
celé vlákno1. ti co ovladaju programovat a chcu sa nieco naucit sami
2. ti co programovat nevedia a myslia si, ze to zvladnu (nepoznaju dostupnost frameworkov)
3. to iste ako skupina cislo 1, ak maju tvorit nejake presne aplikacie na mieru a dostupne frameworky neposkytuju vsetko potrebne, pricom upravit ich by bolo zlozitejsie.
Ak si sa stretol s ludmi zo skupiny 2 tak to chapem, lebo podobne kody nikdy nebudes musiet vediet naspamat a tebe bude stacit volat iba metodu, ktora to vsetko spravi za teba.
Re: Perl "read only"
celé vláknoRe: Perl "read only"
celé vlákno$urlArgs = 'key1=value1&key2=value2'
$params = Hash[*$urlArgs.split(/&/).map{|kv| kv.split(/=/)}.flatten]
Re: Perl "read only"
celé vláknoPekna linearna verzia. Dokonca zvlada aj urcite nekorektne vstupy. Avsak nie takyto:
$urlArgs = 'key0&&key1=value1&key2=value2'
Re: Perl "read only"
celé vlákno$params = Hash[*$urlArgs.split(/&/).grep(/([^=]+)=([^=]+)/){[$1,$2]}.flatten]
Re: Perl "read only"
celé vláknoHehe, tak to je skvela finta! V Perle by som to zapisal takto:
%params = map { @$_ } grep { /([^=]+)=([^=]+)/ && ($_=[$1,$2]) } split /&/, $urlArgs;
Re: Perl "read only"
celé vlákno
my %params = map { split /=/, $_, 2 } grep { /=/ } split /&/, $urlArgs;
Re: Perl "read only"
celé vláknoPekne riesenie. Nie je to sice presne to iste ako predtym uvedene riesenie. Napr. vstup ako:
$urlArgs = 'Key1=Value1a=Value1b&Key2=Value2';
To spracuje inak, ale myslim, ze spravnejsie.
Re: Perl "read only"
celé vláknoPodobna "priamociara" verzia, ktora neosetruje vsetky nekoretkne vstupy vyzera takto
%params = map { split /=/ } split /&/, $urlArgs;
Re: Perl "read only"
celé vláknoRadi bychom se dozvedeli, ze jeste zijes.
Jirka Vysata (Arrendo)
Re: Perl "read only"
celé vlákno
my %params = map { ( split /=/, $_ )[ 0, 1 ] } split /&/, $urlArgs;
Re: Perl "read only"
celé vláknoRe: Perl "read only"
celé vlákno(rotatef a b) - a funguje to s libovolným počtem proměnných - nebo spíš "places", mohou to být i přístupy do datových struktur.
Re: Perl "read only"
celé vlákno:-) :-) :-)
Re: Perl "read only"
celé vláknob=a+b;
a=b-a;
b=b-a;
nebo
void swap(int &a,int &b)
{
try
{
throw a;
}
catch(int falling)
{
a=b;
b=falling;
}
}
nebo dokonce :-)
void swap(int &a,int &b)
{
if(a<b)
{
--b;
swap(a,b);
++a;
}
else
if(a>b)
{
--a;
swap(a,b);
++b;
}
}
Re: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknoNejlepší je umět specializované jazyky dělat, tím si člověk ušetří nejvíc práce, pokud se nějaké aplikační doméně chce věnovat trvale. ;-)
Re: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknoMimochodem, nejlepe se swap dvou hodnot zapise v C--, protoze na to ma krasny operator >< (to je posledni kombinace znaku < a >, ostatni kombinace jsou "zabrane")
Skoda, ze se C-- uz moc nevyviji, jako lepsi makroassembler to bylo takrka dokonale.
Re: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknoJinak na Vaši otázku nedokážu dost dobře odpovědět, protože Pytnon neznám tak detailně abych mohl srovnávat a navíc zrovna Pytnon velké překážky neklade.
Snad jen toto:
*funkce='_zpracuj'.$klic;
$vysledek=funkce($parametr);
Vysvětlení: Chci volat jednu z deklarovaných funkcí ale její název musím ze znalosti vstupních dat teprve poskládat. Odkaz tedy použít nemohu, funkci eval pro vyhodnocování za běhu použít nechci a nepřímý odkaz je zakázán jako riskantní.
Re: Perl "read only"
celé vláknofunkce = locals('nazev')
Re: Perl "read only"
celé vláknofunkce = locals()['nazev']
Re: Perl "read only"
celé vláknoRe: Perl "read only"
celé vláknoMoj zoznam vyhod:
- mod_perl2
- vela kvalitnych a stabilnych CPAN modulov
- dostupnost na kazdom UNIX-like systeme
- dobra podpora regularnych vyrazov
- podpora unicode
- rychlost
- mne viac-menej vyhovujuca syntax
- programovat v Perle je zabava
- lamy v Perle nekoduju
Nevyhody:
- objektove programovanie je hack (funkcny ale stale hack)
- obmedzena moznost explicitnej typovej kontroly
- primitivny GC
Vsetky nevyhody su opravene v Perl6 - ale ked ten bude hotovy a pouzitelny, tak ja uz budem v dochodkovom veku ;)
Re: Perl "read only"
celé vláknoTuto nevýhodu ovšem Perl sdílí s většinou jazyků jmenovaných na této stránce - nevzpomínám si, kdy jsem naposledy četl inzerát hledající programátora v Lispu.

