Právě jsem narazil na nádherný názorový střet dvou programátorů v ASP.NET (a ještě jeden). Marcus mi mluví přímo z duše, až mě z toho zamrazilo.

Jste na webu a tohle je výsledek vaší práce, a cílem vašeho klienta není, abyste rychle něco naklikal a vy jste byl spokojený. Můžete to prezentovat, že možná ušetří pár hodin, ale když výsledek stojí za houby, tak je mu to úplně jedno.

Marcusovi oponenti demonstrují sílu ASP.NET na tomto webu. Webu, který trpí snad všemi neduhy rodičovské technologie. Legrační.

Krok stranou

Nedávno uveřejnil Borek Bernard bakalářku srovnávající PHP s ASP.NET, Jakub Vrána k ní měl několik připomínek. Ačkoliv jde asi o nejlepší srovnání těchto technologií, jaké jsem kdy četl, pokusím se ho nyní trumfnout.

DGXovo srovnání ASP.NET a PHP

  1. vše, co lze naprogramovat v ASP.NET, lze naprogramovat i v PHP
  2. vše, co lze naprogramovat v PHP, lze naprogramovat i v ASP.NET

Konec srovnání.

Kdo je vítěz?

Kdo vyšel ze srovnání lépe? Dost ironie. Taková srovnání totiž nikam nevedou. Věc se má jinak.

Možná nejsem úplně normální vývojář, ale nad každým projektem vždy přemýšlím od konce. Tedy nejprve si představím výsledek. Hotovou aplikaci. Jak se bude chovat a to v každém detailu. Najdu její slabiny a odstraním je.

Tahle imaginace se netýká jen vzhledu! Zajímají mě takové detaily, jako přesný tvar všech URL. Vlastně ještě víc. Chci vědět, co se stane, odkáže-li někdo stránky s jinou velikostí písmenek v URL. Co způsobí znovuodeslání formuláře přes F5. Nebo tlačítko Zpět.

Teprve až jsem spokojen, začnu přemýšlet, jak to celé naprogramovat. Až přehnaný perfekcionalismus a zatvrzelost udělat práci pro klienta co nejlepší (kolikrát jsem sám svým klientem) mi nedovolí z návrhu uhnout.

Jednoznačně použiju Apache a (třeba) PHP5.

Proč? Protože k tomu ASP.NET a Web Forms není vhodné. Můj názor může být vždy odpálkován s tím, že nejsem v ASP.NET profík a kde beru právo se vůbec vyjadřovat. Proto si dovolím ještě jednou citovat Marcuse:

VŠICHNI, kdo dělají v ASP.NET profesionálně mi tady určitě potvrdí, že pokud chtěli např. splnit naprosto běžné požadavky, jako je vypnout JS, zrušit viewstate, kontrolovat rendrovaný kód, mít multi-post stránky, podporovat čitelný GET atd., tak si museli ohnout ASP.NET a to je šílenost. Proto mnoho firem má napsané svoje interní frameworky, které toto řeší a které pak vedou k docílení této funkčnosti bězné v dnešním internetu. A tam už žádné klikání není a co je hlavní, stojí HROZNĚ práce tohle ohnutí v ASP.NET udělat a udržovat.

My jsme museli udělat HODNĚ práce, abysme dorovnali vlastně úroveň PHP v ASP.NET. Zatím nám to stálo za to, díky přepsání skoro celého backendu…

Ač sám tyto zkušenosti nemám, došel jsem ke stejným závěrům.

Pro mě je vždy naprosto klíčové řešit příčinu problému, nikoliv jeho následek. Tedy navrhnu-li něco nešťastně a zároveň nabídnu možnost, jak důsledky napravit, tak to neznamená, že jsem věc navrhl správně. Stále platí, že jsem ji navrhl špatně.

Proto je mi milejší dobře navrhnout aplikaci ve (stále objektově nedokonalém) jazyku PHP nad serverem Apache, než ohýbat ASP.NET. I když tipuji, že obojí bude, alespoň v počátku, stát zhruba stejné úsilí.

Dodatek: nechci sdělit, že PHP je lepší než ASP.NET. Není. Jde mi o to, že Web Forms v rukou běžného vývojáře vedou ke strašlivým výsledkům. Málokdo na to upozorňuje a málokterý vývojář si to vůbec uvědomí.