Alternatives to PHP
PHP is a very fluid language. It began life as a collection of CGI scripts and has gradually evolved into a language that supports class-based object-oriented programming.
A few criticisms are leveled at PHP. The large number of options are configurable in the initialization file, making it relatively difficult to treat PHP as a steady target. It also has a habit of introducing incompatibilities between major versions, such as changing array-passing semantics between versions 4 and 5. While PHP has a number of strengths, it’s not always the correct tool.
Before PHP, the most common language for web development was Perl. Despite syntax that has been known to make grown men cry, Perl has very flexible string-manipulation capabilities. Because of this feature, it remains popular with some web developers, and some large sites continue to use it.
Of course, web pages don’t need to be written in an interpreted language at all. The CGI and FastCGI specifications are language-agnostic, and can be used with languages such as C. For performance-critical small scripts, a C fast-CGI program can be a good choice.
At the other extreme are environments such as Seaside. Seaside uses Smalltalk, and provides a programmatic interface for web applications mimicking that of conventional applications. While this may be over the top for simple interactive web sites, it’s a very clean and easy-to-use framework for developing web applications.
For database-driven applications, Ruby on Rails provides similar functionality to NeXT’s WebObjects (WO) and Enterprise Objects Framework (EOF). If you’re familiar with NeXT’s offerings, then it’s worth noting that the GNUstep project has reimplementations of both WO and EOF in the form of GNUstepWeb and the GNUstep Database Library 2 (GDL2). The documentation for both is somewhat sparse, however, making them somewhat difficult for new developers to pick up. Ruby on Rails is much easier to pick up.
At the enterprise end, both Sun and IBM are pushing Java-based solutions. Open source containers for these products exist, such as Apache Tomcat.