Reklama
Nepřihlášený uživatel | Zaregistrovat se
 

:-P

C vs. C++ vs. Java vs. ObjectiveC vs. Perl vs. Pascal vs. Smalltalk vs. Asembler vs. Python vs. Ada vs. Bash vs. VisualBasic vs. ... vs. Whitespace (kdo to zná?) :-)

hkmaly - Slava pomlcky -  .
Kvalitni jazyk se pozna podle toho, ze prezije dobu kdy je nepopularni mezi dvema vlnami popularity.
von_Zeppelin Vyhubit lidstvo  pclib php framework
Jj, lambda s fancy syntaxí.
Lejzy God is REAL unless declared   INTEGER.
Arrow functions jsem musel googlit. Proste jenom jinak pojmenovana lambda?
von_Zeppelin Vyhubit lidstvo  pclib php framework
popularita jazyků
Podle mě to podléhá módním vlnám, úplně stejně jako dámské šaty. Poslední módní hit bylo funkcionální programování a arrow functions, jsem zvědav, co bude dál.
 
 
hkmaly - Slava pomlcky -  .
Vyplyva. Ale radikalni bojovnici proti "goto" to nejak prehlizeji. Receno jinak: v posledni vete je ukazovaci zajmeno tomto nutne chapat jako v pripade asymptoticky spatneho algoritmu nikoliv v pripade vnorenych smycek. Pokud se jedna o mene casty pripad kdy algoritmus resit lepe nelze (nebo je napr. prumerna delka vnitrniho cykly 3 prvky, takze to nema smysl) tak je pouziti goto ve verzi "vlastne break label ale v jazyce ktery break label nema" korektni.
Reakce na | Vlákno  
Což tak nějak vyplývá z toho slova „často“, že?
hkmaly - Slava pomlcky -  .
Tento optimisticky postup vynechava ten detail ze vnorene smyčky sice jsou často indikátorem asymptoticky špatného algoritmu, ale nikoliv vzdy.
Bod 1) souhlasím, zbytek neřešim, protože ani já, ani OP neděláme tak komplikovaný a náročný věci, aby se vyplatilo to řešit jinak. A pokud to něčím optimalizuješ tak, že ušetříš 2 milisekundy celkem, tak to si při vší úctě naser do krku.
  • Jedním z mála rozumných důvodů pro goto můžou být vnorene smyčky.
  • Vnorene smyčky jsou často indikátorem asymptoticky špatného algoritmu (Accidentally quadratic)
  • Tedy i v tomto případě je lepší goto zrušit I se smyčkou
Stačí takhle?
r0b0t ~ matika šmatika ~  braidd drwg
Fakt si myslíš, že tohle telátko vůbec tuší, co je to logaritmus?
Reakce na | Vlákno  
Seš na Okounu, tak se s tím už proboha smiř.
Celej příspěvek byl snad o vhodnosti použití GoTo ne? To že se to dá nějak optimalizovat je uplně jiná záležitost.
 
Ne, Arnoštovi o GoTo vůbec nejde. On mluví o tom, že tento kód má potenciálně dost hnusnou složitost (přeloženo - může běžet hrozně dlouho), přičemž použitím setříděné nebo hashované množiny zemí můžeš snížit složitost o logaritmus resp. o n. Záleží na konkrétním případě, ale už jsem v praxi asi dvakrát optimalizoval kód, který pak místo 7 hodin běžel 15 minut.
On jasně vysvětlil, že a jak se ten kód dá optimalizovat. A má pravdu. Optimální je to hodit SQL serveru a čau babi. Tohle je ale již "předchroupaný" list těch adresátů, čtený z keše, takže vstup je kolekce. Optimalizovat se to samozřejmě dá, ale v reálu pro dané potřeby je to zbytečné. Anyway jak jsem psal v prvním příspěvku, LINQ řešení je asi nejjednodušší, nejefektnější a snad i nejefektivnější (ví Microsoft, nechce se mi pátrat ve zdrojácích), takže finální verze vypadá takto. Obecně je v LINQu rychlejší Join než Contains, ale zase je opruz dělat outer joiny. Takhle je to good enough a jdu od toho. Ale jestli to někdo zoptimalizuje, rád si přečtu :)
Máš kód a v něm je naprosto korektním způsobem použitý GoTo. Ty to budeš celý přemrdávat aby to bylo uplně to samý, ale nebylo tam GoTo. Co k tomu dodat.
Víc hlav víc ví, to je v pořádku, díky za nápady a upřesnění, máte samozřejmě všichni pravdu (bez ironie) :)
 
arnost Snad zas nechci tak  moks
To co plachow implementoval je hledani se zarazkou. To je prvni stupen optimalizace. Hlavni nevyhoda ovsem spociva v tom, ze pokud prohledavana mnozina neobsahuje hledanou hodnotu, projde ji celou.

To se da vylepsit tak, ze prohledavanou mnozinu setridis a kontrolujes, jestli nahodou uz nejsi vyse, nez nejvyssi hledana hodnota.

A nebo pouzijes hashovany set, ktery je jeste efektivnejsi, nez sekvencni prohledavani.

A nebo, pokud to mas data v sql, tak zdaleka nejefektivnejsi je deponovat tuto ulohu na db, protoze ta je na podobne veci stavena.

Pokud se resi deskriptivni sloziitost, pak collection api se obejde bez for cyklu i goto, jak bylo demostrovano a Meni uloho na one-liner.

(Omlouvam se programming 101 vsuvku)
Jasně, jestli to je z DB, tak rozhodně.
Zajímavý, jak každej navrhne úplnou píčovinu viděnou ze svýho úhlu pohledu.