Vlákno názorů k článku
Groovy: Java má vzdáleného bratrance
Každý názor musí mít titulek.
Ja 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.
Re: Každý názor musí mít titulek.
Plny 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.
Perl "read only"
necitene ... , ale pokud chcete muzete :).
Re: Perl "read only"
Re: Perl "read only"
Re: Perl "read only"
Jen 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"
Re: Perl "read only"
http://en.wikipedia.org/wiki/Dynamic_language
Re: Perl "read only"
Re: Perl "read only"
Re: Perl "read only"
Re: Perl "read only"
Re: Perl "read only"
Re: Perl "read only"
Re: Perl "read only"
Re: Perl "read only"
Vymena obsahu premennych bez pomocnej premennej?
($a, $b) = ($b, $a)
Re: Perl "read only"
Ruby: a, b = b, a
Ocaml: let a, b = b, a
Re: Perl "read only"
Ten 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"
urlArgs = 'key1=value1&key2=value2'
params = dict(oneParam.split('=') for oneParam in urlArgs.split('&'))
Re: Perl "read only"
No problem
(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
Re: No problem
Redakcni 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
Re: No problem
V 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
Pre 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
Re: No problem
Niekto kompetentny by sa mohol pokusit prepisat to do Groovy pre porovananie.
Re: No problem
zdanlivo lepsi python, preto nuti odsadzovat, alebo perl, ktory vam dava volnost?
v mojich ociach vitazi jednoznacne perl.
Re: No problem
Ten 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
Tiez 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
Re: No problem
Tak 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
Re: No problem
Re: No problem
Re: No problem
Re: No problem
Re: Perl "read only"
Re: Perl "read only"
let s = "hello world" in s.[0] <- 'H'; print_string s;;
Re: Perl "read only"
TOTO???
%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"
Re: Perl "read only"
Perl 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"
Re: Perl "read only"
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"
1. 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"
Re: Perl "read only"
$urlArgs = 'key1=value1&key2=value2'
$params = Hash[*$urlArgs.split(/&/).map{|kv| kv.split(/=/)}.flatten]
Re: Perl "read only"
Pekna linearna verzia. Dokonca zvlada aj urcite nekorektne vstupy. Avsak nie takyto:
$urlArgs = 'key0&&key1=value1&key2=value2'
Re: Perl "read only"
$params = Hash[*$urlArgs.split(/&/).grep(/([^=]+)=([^=]+)/){[$1,$2]}.flatten]
Re: Perl "read only"
Hehe, tak to je skvela finta! V Perle by som to zapisal takto:
%params = map { @$_ } grep { /([^=]+)=([^=]+)/ && ($_=[$1,$2]) } split /&/, $urlArgs;
Re: Perl "read only"
my %params = map { split /=/, $_, 2 } grep { /=/ } split /&/, $urlArgs;
Re: Perl "read only"
Pekne 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"
Podobna "priamociara" verzia, ktora neosetruje vsetky nekoretkne vstupy vyzera takto
%params = map { split /=/ } split /&/, $urlArgs;
Re: Perl "read only"
Radi bychom se dozvedeli, ze jeste zijes.
Jirka Vysata (Arrendo)
Re: Perl "read only"
my %params = map { ( split /=/, $_ )[ 0, 1 ] } split /&/, $urlArgs;
Re: Perl "read only"
Re: Perl "read only"
(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"
:-) :-) :-)
Re: Perl "read only"
b=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"
Re: Perl "read only"
Re: Perl "read only"
Re: Perl "read only"
Re: Perl "read only"
Re: Perl "read only"
Nejlepší 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"
Re: Perl "read only"
Re: Perl "read only"
Re: Perl "read only"
Re: Perl "read only"
Re: Perl "read only"
Mimochodem, 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"
Re: Perl "read only"
Jinak 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"
funkce = locals('nazev')
Re: Perl "read only"
Re: Perl "read only"
Moj 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"
Tuto 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.

