Názory ke článku Efektivně v PHP – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Názory ke článku Efektivně v PHP – Programujte.comNázory ke článku Efektivně v PHP – Programujte.com

 

Názory ke článku Efektivně v PHP

w3m   NOVÝ
10. 12. 2007

To je velice povedený článek :-)

pecan987   NOVÝ
10. 12. 2007

To pawlik: taky jsem na nejaky takovy cekal :), hlavne se me u zacatecniku nelibi pouzivani

if: 

blabla
endif;

přece jenom verze se závorkami je hezčí :)

morpheus   NOVÝ
10. 12. 2007

Tak jestli jsi někdy používal tu funkci na odstranění lomítek, tak seš fakt krutor :D by mě to nenapadlo..ještě že nejsem línej hledat předpřipravený fce ;)

Mautinek   NOVÝ
10. 12. 2007

To pecan987: Někde jsem tuším četl, že se do budoucna počítá pouze s podporou závorek u podmínek... Takže bude konečně pořádek :-)

hrach, autor článku   NOVÝ
10. 12. 2007

To Mautinek: a ja to zas někde četl přesně naopak a nakonec to taky někdo v diskuzi tady na programujte potvrdil (že se vypusti {}). osobně s tím nesouhlasím, a vlna opdoru tomu už myslím snad i zabránila.

SendiMyrkr   NOVÝ
10. 12. 2007

To morpheus: On to je tak tochu syndrom zacatecniku, ja zacinal podobne, na vsechno sem si vytvarel funkce nez jsem pochopil, ze daleko pohodlnejsi a prehlednejsi je je pouzit uz existujici... a pouzival sem presne tak zbytecny jako ta s orezevanim lomitek, i kdyz musim uznat ze to je fakt sila... :)

hrach, autor článku   NOVÝ
10. 12. 2007

To SendiMyrkr: kdyz sem objevil fkc trim, chtel jsem se skoro podrezat.. :D

pecan987   NOVÝ
10. 12. 2007

To hrach: Je blbost to dělat naopak :). Bylo by to strasne neprehledne met ve forech a whilech zavorky a v podminkach delat vyjimku

hrach, autor článku   NOVÝ
10. 12. 2007

To pecan987: ono to bylo mysleny/planovany? vsude :)

Mautinek   NOVÝ
10. 12. 2007

To hrach: jj máš pravdu, už se to tu na Programujte řešilo, ale o tom vypuštění if...endif jsem četl myslím u někoho na blogu...

SendiMyrkr   NOVÝ
10. 12. 2007

To hrach: jj to znam velmi dobre.... kdyz nekolik hodin promejslis nejakou fci a pak zjistis ze uz existuje a este navic primo v php... :)

RobinHood   NOVÝ
10. 12. 2007

To SendiMyrkr:
To mi něco připomíná ... No, z funkcemi je vůbec psina :) Čím dál tí zjišťuji, jaký má člověk neuvěřitelný talent komplikovat jednoduché věci aneb "proč chodit s kanónem na vrabce?"

benghi   NOVÝ
10. 12. 2007

To pecan987: Přesně pro tohle mám rád assembler. Tam nikdo neřeší závorky a podobné pi.*, ale skutečnou efektivitu kodu.

benghi   NOVÝ
10. 12. 2007

To SendiMyrkr: Hezký, možná. Efektivní, možná. Další chyba programovacích jazyků. Když voláte nějakou funkci, není jasný, CO se děje uvnitř a jestli z hlediska doby provádění není lepší si to napsat znova a jinak.

benghi   NOVÝ
10. 12. 2007

Tohle není o EFEKTIVNÍM kodu, ale o PĚKNÝM kodu, což může být mnohdy propastnej rozdíl. EFEKTIVNÍ kod je optimalizovanej na comožná nejkratší provádění, kdežto PĚKNEJ kod je optimalizovanej na oko programátora. Dlužno poznamenat, že program vykonává počítač, ne programátor.

Například, horda if zasebou může být naopak správně, pokud předpokládáte, že se hodnota některý proměný bude měnit. Pokud pomocí toho if budete vyhodnocovat např. co má danej skript udělat a po udělání něčeho má následovat udělání něčeho jinýho, tak můžete buď udělat hordu if zasebou a ty jednotlivý bloky tam nacpat ve vhodným pořadí a hejbat hodnotou tý rozhodovací proměný, nebo to můžete udělat celý jako funkce, pomocí if a else if rozhodnout, která funkce se má zavolat, z ní pak zavoláte tu dodělávací (příp. další dodělávací) a nakonec uděláte zběsilej return. Takže, zlikvidujete nevzhledný if pomocí else if, v čemž osobně nespatřuju žádnou výhodu, přidáte tam volání funkce a návrat z funkce, přičemž v kritickým případě neušetříte vubec nic. Takže co bude ve výsledku rychlejší? Pokud se budem bavit o nějakým kompilovaným jazyku, tak jednoznačně ta varianta s if, protože function call je jedna z nejdelších operací. Pokud se budem bavit o PHP, tak je to jedno, protože celej ten skript se musí nejdřív parsovat (bez ohledu na to CO se z něho bude využívat) a to trvá nejdýl, takže co řešíme?

Pokud bych se teda vrátil k příkladu, tak nejrychlejší bude řešení s array, protože tam je nejmíň textu (blbá vlastnost všech interpretovanejch jazyků včetně PHP - čím víc písmenek, tím dýl to trvá. Pěkně bylo tohle vyřešený například u basicu v Commodore 64, protože tam se parsovalo už při psaní programu, nějak podobně funguje zend optimizer). Z toho titulu bude patrně v php rychlejší volání vnitřních funkcí, ale ne vždy, což je ovšem potřeba vyzkoušet, protože je to navíc na různejch verzích PHP různě, až na takový ty tragický stálice, jako je např. regexp.

Využití dostupných funkcí je základní vlastnost dobrého programátora.

Tohle je zrovna docela blbost. Opět, php není programovací jazyk, ale jakási skriptovací obluda, leč i obludy mají právo na život. Ne vždy je zabudovaná funkce rychlejší, než to, co napíšete a to i za cenu toho, že to bude muset interpret překousat. Konkrétně ten příklad s tím empty bude ve výsledku trvat dýl, než podmínka.

Ta funkce pryč_lomítko možná vypadá divoce, ale já bych to tak tragicky neviděl. Jednak mám nejasnej pocit, že trim dělá něco trochu jinýho, než ta funkce. trim imho odstraní všechny lomítka ze začátku i z konce toho stringu, čili klidně 50, což ta funkce rozhodně ne, ta uhřufne nanejvýš jedno z každý strany. Čili ten zápis není ekvivaltentní a pak jde jaxi jenom o to, CO vlastně chtěl autor udělat.

BTW test pro zvídavé. Co udělá trim zadané přesně jako v tomto příkladu, když mu předhodíte string plnej lomítek? Zkuste si sudej i lichej počet ;-). Trochu záleží na tom, co máte za PHP a nedoporčuju zkoušet na produktivním serveru.

S umem programovat souvisí i jeho „štábní kultura“.

Né a né a nesouvisí a souviset nesmí! To je jako kdyby někdo posuzoval jízdní vlastnosti auta podle toho, jaký ma na sedadlech potahy. Tohle je přístup školometskej a já osobně ho nesnáším. Tím mne děsili absolventi Metráckýho učiliště.Tam museli udělat několik elektronickejch výrobků. Oni něco postavili, zjistili, že to nefunguje, tak to opravovali, čímž to přestalo být vzhledný, to je jasný, ale nakonec to rozchodili. I výsledek? Jednička za funkčnost, koule za provedení, výsledná za tři. OK, to je správně. Jiní vychcánkové to udělali jinak. Vyprdli se na to něco opravovat, takže to vypadalo úžasně, leč nefungovalo to. Funkčnost koule, provedení za jedna. Výsledek za tři, čili stejně, jako když to budete opravovat, tak promrháte odpoledne, riskujete, že to nedáte dohromady a nakonec za to dostanete stejnou trojku. To je právě chyba!!! Mezi normálníma lidma je totiž rozhodující výsledek a pokud to nefunguje, může to být jakkoliv úhledný, je to prostě špatně a hotovo! A totéž platí v programování. Buď to funguje, pak je to dobře a je mi jedno JAK to je udělaný, nebo to nefunguje a pak si programátor nezaslouží slitování. Kultura kodu je věc programátora, ON se v tom bude muset vyznat pro případ, že bude potřeba udělat nějaký změny a je to JEHO problém. To není ničich vizitka.

Já na uvedeným příkladu nevidím nic neprůhlednýho a nemůžu říct, že by to bylo na první pohled nepochopitelný. Takže pokud se to tak autorovi zdá, tak mohu pouze prohlásit, že se nevyzná v NORMÁLNÍM kodu, což je ale jeho problém. Asi by to chtělo víc praxe nad cizím kodem.

hrach, autor článku   NOVÝ
10. 12. 2007

To benghi:
- je to všechno věc nazoru!

Tohle není o EFEKTIVNÍM kodu, ale o PĚKNÝM kodu


tak proč nepíšeme teda všichni www v assembleru? EFEKTIVN9 kod je ten(podle mne, a zde se asi rozcházíme), jenž je "logicky správný - neprovádí se zbytečnosti", je "průhledný". pokud chceš, tak víš o čem mluvím. nebudu to víc rezepisovat.

Například, horda if zasebou může být naopak správně, pokud předpokládáte, že se hodnota některý proměný bude měnit.


Programovat možná umíš, ale číst zřejmě ne. Přečti se text článku a komentuj to, co je tam napsaný.

Pokud bych se teda vrátil k příkladu, tak nejrychlejší bude řešení s array, protože tam je nejmíň textu (blbá vlastnost všech interpretovanejch jazyků včetně PHP - čím víc písmenek, tím dýl to trvá.


řeším tu něco jiného než PHP?

Opět, php není programovací jazyk, ale jakási skriptovací obluda.


názor...

Ne vždy je zabudovaná funkce rychlejší, než to, co napíšete a to i za cenu toho, že to bude muset interpret překousat. Konkrétně ten příklad s tím empty bude ve výsledku trvat dýl, než podmínka.


To sem netvrdil. Ale proč vymýšlet kolo?

Ta funkce pryč_lomítko možná vypadá divoce, ale já bych to tak tragicky neviděl. Jednak mám nejasnej pocit, že trim dělá něco trochu jinýho, než ta funkce. trim imho odstraní všechny lomítka ze začátku i z konce toho stringu


Jj, to je pravda, ale záměr byl stejný (!) :) Tím jsem chtěl poukázat, že v 75% případů a myslím, že snad i víc, se prostě programuje něco, co už jazyk dávno umí. A líp :)



Né a né a nesouvisí a souviset nesmí!


Ty snad neumíš číst! :D Kurník, za mé věty vsugerováváš svůj subjektivní pocit! Dvakrát čti a jednou komentuj. A ptám se, kdo dostane lepší známku, ten, kdo opraví auto a bude vypadat hezky, nebo jen ten, jehož nefukční auto bude vypdat hezky. Tak prosím, trochu sebeuvědomění!

A není pravda, že se v tom musí vyznat sám. Ne, pokud to není www stránka mé babičky, tak na tom opravdu nepracuji sám. Ne? Minimálně v časovém horizontu.

Asi by to chtělo víc praxe nad cizím kodem.



Asi by to chtělo projít si zdrojáky fora MiniBB - http://www.minibb.net/ a zjistíte, co je to vtip v PHP.

Jinak děkuji za připomínky

tiso   NOVÝ
10. 12. 2007

1. dal by sa použiť ternárny operátor:

$hlasu=(0 !== $clanek["hodnoceni"]) ? "Již {$clanek["hodnoceni"]} hlasovalo." : "";

2. prípadne možnosť s inicializáciou premenných:
$hlasu ="";//nemiesam typ premennych

if ($clanek["hodnoceni"] !== 0) { $hlasu = "Již {$clanek["hodnoceni"]} hlasovalo.";}

3. vylepšená verzia 2 - reťazec ide na výstup ( echo, prípadne pripojiť k premennej výstupu)
$out="nejaký výstup";

...
if ($clanek["hodnoceni"] !== 0) { $out .= "Již {$clanek["hodnoceni"]} hlasovalo.";}

hrach, autor článku   NOVÝ
10. 12. 2007

To tiso: jasny :) plno moznosti, tam slo spis o tu upravu kodu :)

SendiMyrkr   NOVÝ
10. 12. 2007

To benghi: problem je v tom ze tohle nikdo nezaplati a malokdy se setkate s webem kde by rozdily zlomku vteriny hraly nejakou dulezitou roli.... ano je mozne ze bude nejaka fce pracovat neefektivne, v pripade php dokonce dost pravdepodobne, ale rozdil mezi vlastni a pripadne neefektivne pracujici fci bude znatelny na strankach s velkou navstevnosti a ve vetsine pripadu je programovani takovychto fci bohuzel jen ztrata casu... jenom pro zajimavost, mate nejakou ukazku takoveho pripadu kdy uzivatelska fce je rychlejsi nez integrovana?

Podhy   NOVÝ
10. 12. 2007

To SendiMyrkr: takovou funkci asi těžko najdete když se funkce napsaná v PHP musí napřed interpretovat přes PHP...interní funkce jsou psané v C takže to bude vždycky ryhlejší

Podhy   NOVÝ
10. 12. 2007

To tiso: ternární operátor raději ne :) někdo je šíleně pomalej hlavně ve spojení se stringama víc se člově dočtě na http://latrine.dgx.cz

pecan987   NOVÝ
10. 12. 2007

To hrach: no fuj teda :-D jeste ze to nakonec zavrhli

pecan987   NOVÝ
10. 12. 2007

To benghi: jo v tom jsem se snazil naucit, zatim jsem nepochopil VUBEC ale opravdu VUBEC nic :)

tiso   NOVÝ
11. 12. 2007

To Podhy: čítal som, ale rozlišuj konkrétnu situáciu (2-miestne číslo+-) od špeciálnych prípadov...

survik1   NOVÝ
11. 12. 2007

Abych uvedl výše uvedené pochybnosti na pravou míru:
http://programujte.com/index.php?akce=clanek&cl=2006121403-vyvoj-php-6

btw: tím člověkem, co informoval na fóru, jsem byl já a mé informace se vztahovali k tomuto článku.

Podhy   NOVÝ
11. 12. 2007

To tiso: já na to jen upozorňoval :)

skybedy   NOVÝ
12. 12. 2007

BTW - jaký je váš názor na switch z hlediska výkonu? Třeba zrovna na příkladu z článku:



switch($bod){
case(0):
$color = "color:#d52b05";
break;
}

atd..

gui   NOVÝ
12. 12. 2007

V závěrečném odstavci je uvedeno
"tento článek je součástí kurzu či seriálu, ke kterému máte možnost odevzdávat úkoly. .."
Běží tady teď nějaký seriál o PHP ?? A nebo ho chystáte???

hrach, autor článku   NOVÝ
12. 12. 2007

To gui: tento článek nepatří do žádného kurzu. kdysi zde kurzy probíhali. možná se i něco chystá - nevím :)

Non_E   NOVÝ
16. 12. 2007

Pěkně napsané, i když nic nového článek nepřinesl. Kritizované chyby v kódu ale většinou zpomalují jen programátory. Php si stejně celý skript přechroustá a optimalizuje, takže if, if/else nebo switch se řešit nemusí. Co program ale určitě zpomalí je práce se soubory, sítí nebo sql a/nebo nevhodné cyklení.

hrach, autor článku   NOVÝ
16. 12. 2007

To Non_E: no tak php si ten kod vzdycky prelouska... ale optimalizuje?? to bych si fakt nemyslel....

no...nevhodne zacykleni bych nenazyval zpomaleni :)

greppi   NOVÝ
22. 12. 2007

Prave pisem jeden PHP kod a napadlo ma:

if (empty($filename))

{
$this->filename = $this->defaultFilename;
}
else
{
$this->filename = $filename;


}


je to iste ako:


$this->filename = (!empty($filename)?
$filename : $this->defaultFilename);

// !empty($filename) je to iste ako $filename ale pre prehladonst je tam !empty()


simple :)

greppi   NOVÝ
25. 12. 2007

$fun = mojaFunkcia();


if(!$fun)
{
echo "chyba:...";
}

je to iste ako :
if(!mojaFunkcia())

{
echo "chyba: ...";
}
// nenechajte sa oklamat, funkcia mojaFunkcia() sa vykona aj ked ju vlozim do podmienky ;)

malek   NOVÝ
8. 1. 2008

no mne sa nepacia tie zapisi:
$hlasu = "Již {$clanek["hodnoceni"]} hlasovalo.";
prehladnejsie sa mi zda

$hlasu = 'Již $clanek[hodnoceni] hlasovalo.';

hrach, autor článku   NOVÝ
20. 1. 2008

To malek: oooo, o tom sem nevedel. dekuji za informaci. :) nad druhou staranu, neni to vzdy pouzitelne .. :)

Jan Kodera   NOVÝ
30. 1. 2008

To skybedy: switch je nejrychlejsi. Urcite hrave prekonava if podminky a myslim ze nez pole bude take rychlejsi.

hrach, autor článku   NOVÝ
2. 2. 2008

To Jan Kodera: nesouhlasim, vice:
http://latrine.dgx.cz/php-pomale-switch-a-case

lukasjakrtek   NOVÝ
11. 3. 2012

Podle mě, by bylo mnohem lepší u prvního příkladu použít switch.. je přehlednější :)

Přidej svůj názor

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo e-mailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Reaguješ na příspěvek:
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové názory e-mailem (pouze pro přihlášené)
Sleduj názory ke článku a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.



Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý