Srovnání PHP a ASP.NET

Školení, která pořádám

Borek Bernard jako svou bakalářskou práci napsal Srovnání PHP a ASP.NET a ještě před tím, než ji zveřejnil na svých stránkách, tak mne požádal o zaslání připomínek k ní. Tady je odpověď, kterou jsem mu v únoru 2006 poslal:

Děkuji za poslání práce, považuji ji za velice zdařilou. Utvrdil jsem se v názoru, že se nevyplácí k věcem zaujímat dogmatický postoj – každému prostě vyhovuje a pro různé úlohy se hodí něco jiného a nelze říct, že jedna technologie je lepší a druhá horší. K práci jako takové mám pár postřehů:

Přetrval ve mně dojem, že srovnávat PHP a ASP.NET je jako srovnávat motor s celým autem. Zatímco ASP.NET je celý framework, PHP je jen jakési jádro, ke kterému lze pružně doplňovat další komponenty. Více by tedy podle mě odpovídalo srovnání ASP.NET s PHP doplněným např. o PRADO framework nebo alespoň Smarty šablony (nebo nějaké silnější). Stejná věc se projevuje i u srovnání výkonu – PHP mezikód samo o sobě neukládá, ale vývojář má k dispozici hned několik řešení (komerčních i volně dostupných), které problém řeší přesně tak, jak potřebuje.

Co se vlastností objektů týče, jistě by měla být u PHP zmíněna možnost přetěžování, pomocí kterého se getterů a setterů dá zbavit. K tomuto řešení se samozřejmě opět dají uvést výhody a nevýhody, ale zmínění této možnosti postrádám.

Pro ukládání session proměnných do databáze se dá použít rozšíření PostgreSQL Session, kromě toho jistě bude existovat spousta hotových řešení na úrovni PHP přes uživatelsky definované funkce. Opět to je věc, která by mohla být zmíněna, přestože podle vyznění práce se čtenář může dovtípit, že něco takového asi bude existovat.

Co se konfigurace týče, zásadně postrádám popis souborů .htaccess, které jsou principu Web.config velice podobné a pomocí kterých se dá měnit konfigurace Apache v jednotlivých adresářích, včetně konfigurace PHP.

Co se dokumentačních komentářů týče, opět se naráží na problém srovnávání motoru s celým autem. Navíc příliš nerozumím zmínce o fázi beta PHPdoc, když ten je stabilní od června 2003.

I přes uvedené připomínky považuji práci za zcela legitimní. Souhlasím, že i když jsou technologie PHP a ASP.NET těžko souměřitelné, srovnat se dají, byť by to bylo jen tím, k čemu programátora vedou (ASP.NET k serverovým ovládacím prvkům, PHP k míchání PHP a HTML kódu), byť se obě samozřejmě dají použít zcela odlišně.

Na tomto místě mi to nedá nezmínit se o tématu, které je v práci zmíněno jen velice okrajově, a to je přístupnost a použitelnost výsledných aplikací. ASP.NET v tomto směru kvůli VIEWSTATE podle mě značně pokulhává a na veřejně přístupné stránky je umístitelné jen za cenu kompromisů v této oblasti. Chápu, že se dá obejít i bez VIEWSTATE, ale je to přesně o tom, k čemu která technologie vývojáře vede.

Myslím, že by práce zajímala řadu dalších lidí, obzvláště po nedávných diskusích např. na La Trine nebo na BorBer.

Jakub Vrána, Seznámení s oblastí, 6.9.2006, diskuse: 20 (nové: 0)

Diskuse

Martin:

Chlapče to je dost, že ses probudil. Někteří už tě pohřbívali!

Borkova práce snad ani za tak dlouhý text nestojí. Je zoufale zastaralá a má všechny neduhy, které má většina neodborných prací z VŠE - dlouhatánské výplňové odstavce o ničem, slátanina informací bez ladu a skladu, zkratkovitá tvrzení bez důkazů, žádný jednoznačný závěr, žádný jednoznačný přínos.

Je vidět, že lidé z VŠE jsou plkači a ne technici a do techniky by vůbec šťourat neměli, protože jí nerozumí. Takováhle práce se hodí manažerovi, který nakonec rozhodne, "jakou že to cool technologii na ten produkt použijeme", ale ne programátorovi, který potřebuje objektivní zhodnocení obou "platforem".

Stačí si vyzkoušet PHP, .NET, Javu na pár větších projektech a sami poznáte, která technologie se na co hodí. Jako domácí úkol je dobré zkusit nastylovat ten ASP.NET 1.1 kalendář, aby vypadal výrazně jinak. Moc to nejde co? A ten původní je sakra hnusný. Tak co teď? :)

Víte proč nemají matfyzáci jarní prázdniny? Aby si o nich neudělali VŠE.

Co se stane, když matfyzák nezvládá a přejde na VŠE? Prudce stoupne průměrné IQ na obou školách.

Jaká střední škola je nejtěžší? VŠE!

:))))

Čeněk:

Tyhle vtipy o VŠE většinou šíří lidé vyhození z VŠE :o)

ikona Jakub Vrána OpenID:

Reaguji pouze na to probuzení - přes prázdniny jsem si dal záměrně pauzu, ale spot, kterým jsem o tom chtěl informovat, už jsem nestihl vydat...

Vlasta Neubauer:

nestihl vydat...
rozumím - asi jako když admin pošle všem uživatelům email, že nejde pošta ;)

Ronnie:

VŠE ma chybu v tom, že se tam dostane téměř každý, proto tam často lidi chodí z nouze. Nechápu, proč mají tak jednoduché přijímačky...:/Neboj se ale, že 100% lidí udělá bakaláře, pokud vím, přes prvák projde jen nějakých 60% lidí. Navíc tam je informatika kombinovaná s ekonomikou, máš pak mnohem lepší možnost uplatnění...což lze dokázat pomocí statistik.

ikona Jakub Vrána OpenID:

Já jsem dělal přijímačky na VŠE, ČVUT a Matfyz a na Matfyz mi přišly zdaleka nejjednodušší. Ale bylo to v roce 1996, tak se od té doby možná něco změnilo.

Borek:

V roce 2000 bylo pořadí od nejtěžších příjimaček po nejjednodušší následující:

Brno > Hradec Králové, VŠE > Matfyz

Asi i matfyz zaměstnává nějakého ekonoma, který ví, co se vyplatí :)

lukas m:

Predne na matfyzu jsou take prednasky z ekonomie (maji je defaultne matematici). Za druhe tempo vyhazovani bude pravdepodobne na kazde skole odvozovano od ekonomickych aspektu, ktere zvolena strategie prinasi. Slysel jsem, ze na matfyzu jsou nastavene pozadavky tak, aby vyhodily nejvic lidi na konci 4. semestru, protoze se jim to financne vyplati nejvic. Kazdy si muze rozhodnout, jestli to je pozitivni nebo negativni vlastnost te skoly. Mne to (jako zaujatemu matfyzakovi) prijde naprosto neutralni.

Co se tyce obtiznosti zkousek - technicky zamerene skoly (nyni) berou AFAIK radove vice uchazecu nez humanitni obory, takze u tech technik nezbyva moc prostoru na nejake relativni rozdily v obtiznosti prijimacek: CVUTacke fakulty berou bezne hodne lidi bez prijimacek, u VSE mi stacilo na pripravu popsat jednu A5ku, jak to vypada na matfyzu nevim.

finc:

Copak máš ty za školu?
Jinak, víš kdo vymýšlí takové vtipy? Lidé, co nemají nic za práci, protože je nikdo nechce :)
Jinak, těším se, až vydáš něco zajímavého ty. Jistě bude chvály plný pytel :)
P.S. Nejsem student ani absolvent VŠE. Nezastávám se nijak této školy. Spíš mi vadí ta arogance, s kterou někteří lidé jednají.

Borek:

Ahoj Martine,

původně jsem nevěděl, jestli vůbec na tvůj komentář reagovat, ale mám to už zkrátka v povaze :) BTW, zkus si tipnout, jak s tvým komentářem souvisí článek "Smrt pseudografikům": http://www.tvrdek.cz/weblog/webdesign/20/smrt-pseudografikum/ ...

Máš pravdu, že práce je v některých ohledech zastaralá a má své neduhy. Patrně tím největším je, že v práci chybí vymezení cílové skupiny čtenářů, kterou určitě nejsou hardcore programátoři se zájmem o ty nejniternější detaily. Dále se pak dalo dopředu upozornit na to, že PHP bude použito "holé" bez jakéhokoliv frameworku, a podobných vad je tam celá řada. Rovněž nebudu zastírat, že jsem na ekonomce poznal řadu lidí, u kterých je skutečně velmi dobře, že nikdy nebudou dělat programátory, protože by to moc slavně nedopadlo.

Taky ale znám člověka, který dělá FEL ČVUT levou zadní, zatímco z ekonomky už několikrát málem vyletěl. Musím se proto ostře ohradit proti takovému hloupému paušalizování, které může vycházet jen z absolutní neznalosti situace. Ostatně, víš, jak se na ekonomce pozná bývalý matfyzák? Vypadá povzneseně, na cvikách se většinou tváří, že ho probíraná látka nudí, ale když ho cvičicí vyzve k nějaké činnosti, má na rozdíl od ostatních problémy a snaží se vymluvit, že teď zrovna nedával pozor nebo že pochopil zadání trochu jinak.

Takže prosím - neurážej mě a neurážej ostatní informatiky z VŠE. Máme na trhu práce své uplatnění (nechci ho srovnávat s uplatněním z jiných škol) a to, že od nás techničtí studenti očekávají technické vzdělání, není naše chyba, ale jejich hloupost ("umějí snad číst":http://www.vse.cz/download/index.php?sec=…&id=111).

Peace, jak by řekl kamarád :)
Borek

PIF:

musím se smát :))) nicméně, práci jsem nečetl z časových důvodů, jsem studentem vše, takže snad jen můžu říct - pokud ze mě bude špičkový manažer než špičkový programátor :))))) tak mi to klidně vadit ani nebude :)))))))))))))))

bahara:

Nebudu do toho mluvit jako programátor, ale spíše jako admin, který pár aplikací z těchto jazyků spravuje. V .NET je velká síla, velká myšlenka, ale pomalu zklouzává k tomu, u čeho je teď Java. K různým verzím frameworku (u Javy JVM) a jejich zpětné nekompatibilitě. Není nic horšího pro mne, když mi něco funguje na jedné verzi a za 14 dní vyjde update od jiného programátora, který si bere funkce z jiného frameworku (resp. JVM). A spolehnout se na JavaScript také nejde, vemte si první nasazení SP2, která JavaScript defaultně zakazovala. Zlaté PHP ve volném čase.

....berte tento příspěvek s rezervou, hold dneska den .NET ani Javě u mne nepřál.

Jarda Jirava:

Mohu znát jenom konkrétnější důvod? FW jsou zpětně kompatibilní (ne všechen kód 100%, ale většinou se jedná o méně časté a používané funkce). Navíc není problém souběžného nasazení všech verzí FW, nikoli pak souběžného běhu více fw v jedné appdomain.
Tím nechci nikterak snižovat rozčarování, nejspíše je skutečně mnoho mít (vydat) 3 verze v průběhu pěti let. ;-)
Díky
--J.

bahara:

To jestli jsou frameworky úplně zpětně kompatibilní je věc, která nás jako správce různých aplikací na serverech zajímá. Bohužel sami programátoři nám to nedovedou říci a tak když se zavádí nějaká aplikace, dává se i prostředí (Framework, JVM), která ta aplikace podporuje na 100%.
Z příkladu uvedu situaci tohoto týdne, kdy si jisté ministerstvo zaplatilo online aplikaci, kvůli které jsme museli i instalovat FW 1.1  (na 2.0 to neběželo) a pak ještě SP1 na FW1.1. Jinak aplikace nebyla schopna na nových kompech běžet. Na nich byl nainstalován (MS updatem) FW 2.0 automaticky. Dle programátorské firmy z Prahy je to prý normální a FW nejsou 100% zpětně kompatibilní.

Ale stále musím zdůraznit, že .NET považuji za silnou myšlenku, akorát né zatím úplně bez chyb.

bahara:

Jinak Jakube vítej zpátky, taky už jsem se bál, že si dáš oddech na delší čas:)

Bobík:

Musím se přiznat, že jsem Jakuba Vránu už pohřbíval.
Jen bych se chtěl zeptat, jestli to vakuum bude pokračovat, nebo bude zase co číst? Byla by škoda aby vyschnul tak kvalitní zdroj o PHP.

Jarda Jirava:

Přeji pěkný den (večer).
Raději hned na úvod uvedu, že jsem příznivcem .net FW a i z toho důvodu může být můj názor ovlivněn a velice subjektivní.
S vyřčenými body v zásadě souhlasím až na poslední odstavec, který mě vyprovokoval k této reakci. Téměř ve všech reakcích, které jsem četl a jež srovnávali právě php a asp.net se zmiňuje VIEWSTATE a je to vyčítáno jako nevýhoda nebo dokonce jako jistá překážka. Možná je to i z důvodu neznalosti a to nejen příznivců jiného jazyka, ale také začínajících vývojářů v asp.net. ViewState je výborným pomocníkem ve webových aplikacích, naopak v prezentacích je možné ukládání stavu zcela vypnout a mít tak plně přístupnou a použitelnou stránku. V případě, kdy je nutné mít webovou aplikaci veřejně přístupnou, je myslím implementace způsobu uchování VIEWSTATE tak, aby byla stránka přístupná a použitelná (i validní) záležitostí na několik řádků kódu (a to napsaných jen jednou pro všechny ostatní aplikace). Taková úprava je pak z hlediska komplexnosti celé aplikace nepatrná (přesto, jak se zdá, velice oblíbená u kritiků a oponentů) :-).
Nemyslím si tak, že asp.net vede vývojáře k tomu, aby vytvářeli nepřístupné a nepoužitelné aplikace, ale tak jako asi v každém odvětví, je nutné, aby danou technologii dokázali využít a naučili se o zadaném úkolu přemýšlet a využili všech výhod, které framework nabízí. A zároveň s tím využili všech dosavadních poznatků z oblasti vývoje a architektury SW. Toto však nemusí platit jen pro vývojáře v asp.net. Jde však také o to, aby mi daná technologie umožnila efektivní vývoj, ale to je již obehraná písnička a jistě nemá význam zde zmiňovat již několikrát vyřčené (avšak i z toho důvodu, potřebujeme vzdělané ekonomy informatiky :-), kteří dokáží rozhodnout o použité technologii a směru, kterým se jimi vedená společnost bude ubírat).
Díky
-- J.

ikona dgx:

> V případě, kdy je nutné mít webovou aplikaci veřejně přístupnou, je myslím implementace způsobu uchování VIEWSTATE tak, aby byla stránka přístupná a použitelná (i validní) záležitostí na několik řádků kódu.

ViewState dle mého nijak nesouvisí s validitou stránky. Přístupnost nebo použitelnost však může zcela degradovat. Mohl bych poprosit o zveřejnění nebo vysvětlení těch pár řádků kódu, které problém s ViewState vyřeší?

Jarda Jirava:

Pokusim se o vysvětlení.
Nejdříve k té validitě stránky (nejsem v tom kovaný, proto budu rád, pokud mě opravíte), zjednodušeně řečeno by element input měl být uzavřen v nějakém block level elementu jenž je potomkem elementu form - neplatí jistě pro všechna DTD. Toto se u asp.net 1.x nedělo. Proto jsem se zmiňoval i o validitě stránky, byť toto lze díky jedné z níže uvedených metod řešit.
Co se týká samotného ViewState, ten je možné uchovávat různě a je tak možné jej na stránce minimalizovat/nemít (díky metodám LoadPageStateFromPersistenceMedium a SavePageStateToPersistenceMedium třídy Page), pro verzi 2.0 je to ještě o něco jednodušší, kdy se vytvoří potomek třídy PageStatePersister, který se postará o uchování ViewState a nově vytvořená třída se poté pomocí adapteru zaregistruje. Takto přepsaná třída pak může uchovávat stav kdekoli, nemusí se jednat jen o posílanou stránku.
Další možností, kterak přesunout hidden input prvek s viewstate z "vrcholu" stránky třeba až na její konec je vytvoření Filtru, který je registrován pomocí httpModulu a jenž provede úpravu odesílaného streamu.
Snad to jako vysvětlení bude stačit. Samozřejmě jsem přístupný jakémukoli dalšímu konstruktivnímu dialogu. ;-)
Díky
-- J.

ikona Jakub Vrána OpenID:

V ASP.NET vznikají aplikace, které ViewState zbytečně používají a tím zhoršují použitelnost. V PHP takové aplikace nevznikají, proto jsem považoval za užitečné to zmínit.

Lepší by mi přišel opačný přístup - ViewState defaultně vypnutý, zájemci ať si ho zapnou.

Vložit příspěvek

Používejte diakritiku. Vstup se chápe jako čistý text, ale URL budou převedeny na odkazy a PHP kód uzavřený do <?php ?> bude zvýrazněn. Pokud máte dotaz, který nesouvisí s článkem, zkuste raději diskusi o PHP, zde se odpovědi pravděpodobně nedočkáte.

Jméno: URL:

avatar © 2005-2016 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.