Read Dru’s Thoughts on PHP.
[A couple more thoughts after the jump]
I want to add a couple things:
- The fact that most of the top applications out there are written in PHP shows that PHP is simply the best language for solving the web problem.
- The fact that there are many successful products out there not written in PHP shows that the web problem is not that hard to solve.
- I think Rails is a great framework, perhaps the best framework. At the end of the day though it is a framework and just one framework reflecting one development philosophy.
- Rails is caught between the a sourceforge and a hard place. On one side, PHP has proven shrinkwrap solutions for download. On the other side, PHP has proven itself time and time again (scalability, speed of development, price of development, etc.), while Rails in unproven. Rapid Application Development is nice, but the problem is the pareto principle.
- Specialism beats generalism. There Is More Than One Way To Do It with Perl; anyone can read my Python; PHP solves the web problem ad hoc; Java runs anywhere and has a JIT. Ruby needs to distinguish itself.
- PHP is an easy, though sloppy language. It almost empowers the non-developer to be a web developer. PHP developers are cheap. These facts are really important to its success.
- PHP’s scalability comes from passing the tough solutions to another layer. This is often called “shared none architecture” but I call it “not solving the solved problem” or… being practical.
- Try not to have PHP be the bottleneck. If performance is an issue, try to find out why and see if you can push that part to another layer. PHP and performance is an oxymoron.
- Don’t violate the philosophy of PHP. Don’t try to teach the PHP dog new tricks: If you want a RAD framework, use Delphi or Rails, don’t make one in PHP. If you need threads or have very tight memory constraints for a component, use a language with threads and better memory management. If you want a web server, launch a web server. Don’t make PHP the server—that’s why they call it “glue.”