Tak trochu flamu:
Dřív jsme se nikdy nepozastavovali nad tím, že si musíme většinu kódu napsat sami.
Jistě, ani já jsem se v dávných dobách nepozastavoval nad tím, že si pro velké pole musím alokovat diskovou stopu a vyřešit si "swapování" mezi diskem a 64 KB RAM. Možná jsem líný programátor nové doby (nikoliv už mladý), ale to, že se mi o swapování nyní stará OS (a v 99.9 % naprosto uspokojivě), mi zcela vyhovuje a netoužím mít nad tím plnou kontrolu. BTW, jak můžete dělat v Javě, když tam nemůžete nijak zvlášť moc ovlivnit správu paměti (GC)? Nebylo by lepší staré dobré C, kde máte nad alokací a uvolňováním paměti plnou kontrolu (malloc a free)?
A na společné věci si každý normální programátor napíše v krátkém čase své jednoduché knihovny, které jsou jeho stylu práce šité na míru.
Většina webových (a asi i mnoho newebových) aplikací pracujících s relačními databázemi s výhodou užije ORM. Nemyslím, si, že by bylo rozumné a efektivní, aby si to psal každý sám pro všechny možné databáze, přesto že by měl pak nad tím plnou kontrolu.
Tvrzení, že v šablonách mohou být ify a whily, je zcela nesmyslné.
Doporučuji výborný teoretický článek http://www.cs.usfca.edu/~parrt/papers/mvc.templates.pdf o tom, co je a není nutné v template enginech. Implementace těchto myšlenek jako "minimální" rozumné template engine je pak StringTemplate a stejně je tam if a v podstatě i cyklus (tedy jen foreach, nikoliv while)