This document provides the interested viewer with insight as to why AppIdeas.com chose to use the technologies that it employs. Our developers spent many long hours in researching and using a lot of different technologies before settling on a single set of primary technologies. This paper provides technical reasoning behind our decisions.
For our web programming tasks, AppIdeas.com has chosen to primarily use the PHP programming language, implemented into the Apache web server on Unix platforms. We also make use of the MySQL database engine. Perl is used as the programming language of choice for system administration tasks, but not for web site functionality.
To explain why we chose to use these technologies, we must provide the strong points and contrast those to the other alternatives. PHP is a programming language that was designed specifically for use on the World Wide Web. This means that the functions that PHP performs were programmed with use on the World Wide Web as the primary focus. The core developers have designed PHP to take the strong points from many programming languages (mostly C, C++, Perl, Fortran and Cobol) and discard the programming conventions that are more confusing or don't make a lot of sense. This makes PHP extremely flexible and easy to use as a programming language. PHP is an Open Source project and has thousands of code contributors from all over the world. This means that when new functions are needed, they can be added quickly by anyone who has the time and ability. This also means that bug fixes can be developed and implemented by anyone (literally). The Apache web server is the only server that has shown a continued increase in market share (now at about 60%), and according to a recent study by E-soft, PHP is installed on nearly 40% of all Apache servers. This means that PHP is installed on nearly 25% of all web servers. According to several studies, Microsoft's Internet Information Server (IIS) is in a distant second to Apache with somewhere near or below 20% of the server market. According to these studies, PHP is in use on more servers than Microsoft's entire server software market share! With the continuing growth of the Apache server and PHP's continued rapid development, the popularity of the PHP language will continue to increase indefinitely. Increased use has the advantage of increasing the support base, which in turn makes the technology even more popular.
Market share isn't the reason we chose PHP, in fact, PHP was only deployed on about 1.5% of the Internet servers when we chose it (we were way ahead of the crowd). Growing market share is only proof that others are coming to the same conclusion as we did. The reason we chose PHP was for its speed, reliability, power and flexibility. PHP exceeds every other alternative in all four of these areas.
Let's compare PHP to some other technologies.
PHP vs. Client-Side Languages
PHP is a "server-side" language. This means that programs are written and placed on the server and when a person requests a
document, the server runs the code, parses the results and sends the requesting web browser code that appears as regular
HTML. Several programming languages are "client-side." A client-side script sends the code to the web browser (such as
Netscape or Internet Explorer) and the web browser parses the code and shows the results. The most popular client-side
languages are "Java," "Javascript," "ActiveX" and "VBScript." The problems with client-side languages are the following:
What other server-side languages are available? There are three others that are popular, and we'll show you why we chose to not use those.
PHP vs. ASP (Active Server Pages)
ASP is Microsoft's server-side solution. The first problem is that ASP is based on Visual Basic, which was developed and
designed before the World Wide Web was even a thought. That being the case, it has needed to be retrofit for the web. ASP
code runs exclusively on Windows NT/2000 Servers. The main disadvantage of using a Windows NT or 2000 server has to do with
the fact that you can't shut the Graphical User Interface (GUI) off. The GUI takes up a lot of system resources, which
could be better used to serve web pages! Because Unix web servers require no GUI interface, they can operate more
efficiently on less computer hardware. The other disadvantage of a Windows NT or 2000 server has to do with cost. The
license agreements for the Operating Systems typically have to be purchased in increments of 10. This means that if you
have more than ten people accessing your site simultaneously, you must purchase more licenses. This becomes even more of a
problem when dealing with dynamic web sites because licenses for Windows capable database servers are very expensive
(Microsoft SQL Server 2000 has an MSRP of $1,395 for the initial server and first 5 licenses and $680 for each 5 license
pack!). Think of how much this would cost if you were expecting 500 simultaneous visitors! $69,395 - just for the database
software! Furthermore, ASP is developed by a team that consists of a few programmers who work for Microsoft and Microsoft
jealously guards the source code for ASP. This means that if a bug is found, the public has to wait for Microsoft to fix
it. If a new feature is desired, the people using ASP are at Microsoft's mercy concerning when or if that feature will ever
be added. The fact that PHP has a function list that is at least 10 times longer than that of ASP (check out
http://www.php.net/manual), proves that a large scale open source
project is much better at adapting to meet the needs of the rapidly changing World Wide Web than one that is controlled by a
single company. One company, even one as big as Microsoft, simply cannot keep up with all of the extremely rapid changes
that have been commonplace on the Internet. Based on the ground-up "made for the Internet" design of PHP, the relative
stability and speed of the Operating System, the system hardware and software cost, the scope and nature of the development
and the number of functions that exist which allow for flexibility in programming, PHP is far and away better for dynamic
web sites than ASP.
PHP vs. Perl/CGI
Using the perl programming language to output data to the CGI (Common Gateway Interface) was the first server-side
programming language available for the World Wide Web. Perl is a pretty good "general purpose" language. This means that
you can do just about anything with it. The open source nature of perl, combined with the fact that it runs well on Unix
systems gives it many of the advantages of PHP. The only "big" negative of using perl/CGI is the fact that every script
that is run launches separate programs on the Unix server. This means that if you have 100 users simultaneously accessing
documents, you could be running 100 to 1,000 extra programs on your web server. Furthermore, time is needed to "start" the
perl program on every script request. This can (and does) impose a very significant system resource penalty on the server,
which slows down your web site. PHP is built directly into the Apache executable, which means that it only uses the memory
that has already been allocated for the web server. When scripts are accessed, no extra memory is needed to run the
program, and no time is required to start extra programs. Some programmers have recently developed an Apache module called
mod_perl, which gives perl the same performance advantages that PHP gains by being built into the Apache executable, but
mod_perl bloats the Apache executable by more than 1 MB. This means that every request for a document from your web site
would require 1 MB more memory than it would without mod_perl, regardless of whether the perl functions are even being used
for the particular script(s) being requested. A server that gets 100, 500 or 1,000 simultaneous requests could be impacted
quite dramatically by the extra memory required for mod_perl. Perl and CGI are good languages, they just weren't designed
primarily for the World Wide Web, and therefore do not measure up to PHP for this use. We use perl to do many of our system
administration functions, but it just doesn't work as well as PHP on the World Wide Web.
PHP vs. ColdFusion
Many of the disadvantages of ColdFusion are related to the fact that it only runs on Windows NT or 2000 servers (see the
notes on that in the "PHP vs. ASP" section above). Another big disadvantage of ColdFusion has to do with the fact that it
is closed source and the development is handled completely by one company (which has fewer resources than Microsoft). As
mentioned above, the disadvantage of this lies in the fact that new features cannot be added and bugs cannot be fixed nearly
as quickly as in a popular open source solution. ColdFusion has a list of features that is smaller than ASP's, which is
already about one tenth the length of PHP's. Another problem with ColdFusion is that you are required to purchase a new
copy of the server ($1,300) to obtain features that have been added since your original purchase of the product at
$1,300. In short, ColdFusion is slower, has fewer functions, less scalability, less flexibility, less stability and costs
more than PHP with Apache. With this in mind, PHP is an obvious choice.
Of all of the alternatives, PHP has proven to be a solid choice. If something dynamic can be done on the web, PHP can do it, can do it faster and can do it more reliably than any of the alternatives.
Why MySQL?
Mostly because of its speed compared to other database servers. The developers of MySQL have left out a few features that
normally exist in SQL servers in order to gain a magnitude of speed. Most of the "lost" features are really not applicable
to web site use. The one that is talked about most often is "transactions" - the ability to "commit" and "roll back" groups
of commands. This functionality can easily be gained by proper use of the existing SQL language, and it is usually not
necessary for use on the web since web sites typically only make one, or at most a few, database alterations at a time. The
other main feature that the "complainers" mention is MySQL's lack of sub-selects. The fact of the matter is that the
queries that can be formed by the use of sub-selects can also be obtained by the proper use of standard SQL table joins (we
haven't yet found an exception to this). Furthermore, the times that transactions or sub-selects would be useful are
extremely rare on the web. The speed that MySQL gains by purposefully leaving out these features far outweighs any
disadvantages that may be imagined. All that is really necessary is a good working knowledge of SQL and the proper
workarounds and these disadvantages disappear.
We do occasionally use PostgreSQL for customers who have very busy web sites with, "mission-critical" data, but the speed disadvantage that is taken on is normally not justification for a more advanced database server than MySQL.
In conclusion, some of the technologies mentioned above may be "acceptable" for some web site projects. AppIdeas.com does not wish to create acceptable web sites, we wish to create phenomenal web sites. The use of PHP, Apache and MySQL on Unix servers is the only combination that allows the power and flexibility that we require.
If AppIdeas.com can help you make your dynamic web site dreams come true, feel free to contact us.
AppIdeas.com
2305-C Ashland St. #271
Ashland, OR 97520
sales@appideas.com
http://www.appideas.com/