A few of my friends are convinced that they need to learn a programming language, and I am very excited about that. Having web programming experience is unbelievably valuable, especially if you plan to do any business in the web-o-sphere. Before you can lock yourself in your room for a month and learn a programming language, I think it is very important to know how the web stack works. The stack I will describe is the most widely used among the web.
The process of developing and delivering a worth-while web application is quite involved and a complex task. To break things down a little, I like to categorize the stack into the following four groups: web server, server-side languages, relational database and client-side languages.
The web server portion is the weak point in my knowledge of this stack, in terms of installing, configuring and securing, but I know enough to know explain its purpose and give a few suggestions. The web server is a piece of software that is installed on a computer (the more commonly referred to server). This software enables the computer to host a web page and serve it to requesting users. For example, Google’s web server is what delivers the web page to your browser when you goto www.google.com. Domain Name Servers (referred to as DNS server) are also involved in the process of delivering a requested page to a user. A DNS server deals with routing the request from a user to your web server. For example, when a user enters www.google.com in the browser, the DNS server determines and redirects the request to the actual I.P. address of the Google web server. There are many web servers that have been proven in action. I have experience with and recommend the Apache and Microsoft IIS web servers. This list would be a good starting point if you want to see a more comprehensive list of web servers.
Server-side languages live on the web server and provide the functionality for developers to develop a portion of their web applications. When a web page is requested on the web server, the web server executes the server-side code and the script will return data to the requesting user. Examples of server-side scripting languages would be PHP, Ruby, ASP and Python. Many of these server-side languages have development frameworks that allow for improved organization and scalability. Examples of a few popular frameworks are CakePHP (PHP), Rails (Ruby) and Django (Python). The key point to get from server-side languages and how they work is that all of the processing is done server-side and once the server responds to a user request, the server-side code is finished with its work.
Databases are made up of structured tables, and tables are populated with records. There are several ways to design a database, in terms of models, but the most common in regards to web applications are relational databases. Relational databases loosely mean that records form one table can relate to records of another table. For example, if I have a table of banking accounts, I may also have a table filled with account holders; there would then be another table that relates records from each table through the individual records unique ids. The previous example describes a many-to-many relationship. There are also one-to-many relationships; where, in my previous example, an account holder can have many accounts, but an account can have only one account holder. On heavily trafficked websites, the database will live on its own server hardware separate from the web server, but it can also live on the same server. Examples of database servers are MySQL, SQL Server, Oracle or PostgresSQL. The most popular, being open-sourced and free, is MySQL. Through server-side programming languages, databases are able to be accessed. For example, when a user fills out a web form, the data in that form is received by the web server, read and inserted into the database by the server-side language. Using databases allow a developer to accomplish several things; including, creating user accounts for a website, storing any sort of form data, and anything else requiring data to be re-visited at any time in the future.
Lastly, client-side programming is what is making the latest web apps as useful and user-friendly as they are. To show where it fits into our cycle, when a user goes to a website the DNS server resolves the web server address, the web server determines what server-side script needs to be executed, the script is executed, databases are accessed as needed and data is returned to the browser. At this point, the client-side languages can act on the data returned to the browser. The majority of the time, XHTML is returned from the server. XHTML is the child of HTML and interpreted by the browser. XHTML is strictly a markup language that presents all of the data and information to the browser. CSS is the language that describes what the XHTML should actually look like. The last important client-side language is JavaScript, not to be confused with Java. JavaScript allows for modifying the XHTML markup, improving the user interface and even re-accessing the server for additional requests (referred to as AJAX, a buzzword…). Similar to server-side programming frameworks, JavaScript has libraries that speed up development time and abstract browser differences from your code. If you plan on doing any sort of JavaScript coding, please consider using jQuery, YUI, Scriptaculous or any other JavaScript library. It will make your life much easier. The important thing to know about server-side languages is that all server-side languages are only as good as the browser they are running in. Browsers that do not adhere to XHTML, CSS and JavaScript standards and cause headaches for developers. The ideal situation would be that a developer can write client-side code and no matter what browser it is displayed and used in, it will look and act the same. Microsoft, especially with Internet Explorer 6, has tried to do their own, non-standardized, things with the browser and failed. If you remember one thing from this post, remember this: follow web standards, follow web standards, follow web standards.
Having said all of the above, it is very important to know how all of these pieces work together to keep in mind the scope and possibilities of a project or idea. I have added several links for further reading into specific products or topics. After understanding these basic concepts and if you are still interested in creating a web application or site, be sure to start researching specific languages and servers mentioned above. Above all of this, I am open to any questions. If you are stuck somewhere, or do not understand what I wrote, please give me a holla. I want to help.

Leave your Comment