サーバーサイドプログラミングとはC/S(クライアント/サーバー)システムにおいてクライアントで利用する共通処理を1つにまとめて、クライアントの要求や場合によっては連動、自動処理など必要都度サーバ側で実行する為のプログラムを記述する事です。
サーバは、各クライアントで共通に利用する処理や情報を蓄積(DB・データベース/RDB・リレーショナルデータベース)してクライアントからの要求に応じデータベースからデータ抽出してクライアントに提供することも機能の一つです。
また、プログラム上のサーバアクセスの共通化などで多くのプログラミング言語には、クラスなどの概念がありますが、これもクライアント側では「効率的な共通化」を図る事ができないので重宝される仕組みとなっています。
VB6.0など一部古いバージョンでは、当時先端だったクラスの概念を持ちクライアント側で実装していたものもありますが、あらゆる言語でクラスが実装された昨今、そして言語を選ばず共通処理を記述できるという意味でもサーバで実装した方がより効率的となっています。
クラスの概念がないものは、クライアントとサーバの橋渡しをする専用アプリケーションなどを利用して共通化を図っています。
クライアントからのデータベースへのアクセスもODBCやJDBC、oo4oなどを利用して、DBテーブル作成、編集、DBへの登録、更新、抽出、削除は、SQL問い合わせによって共通に利用できる環境にしているとも言えます。
この中で、どのクライアントも(または複数のクライアントが)必ず行う処理を複数のクライアントがそれぞれ持っていたのでは効率的とは言えません。
この為、共通処理は、クライアントがアクセスするサーバに持たせた方が、システム全体としての効率化を図る事ができると共に矛盾を極力排除できる上にメンテナンス性も高まります。
サーバサイドプログラミングに用いられる言語の一例としてはC言語、C++、C#、VC++、Javaなどがあります。
これに対し、クライアント側の開発に用いる言語の一例としては、VisualBasic、Delphi等があげられます。
現代は従来のクライアントアプリケーションを開発してビジュアルインターフェースを備えるという時代からWeb2.0時代へと変遷し、従来のBtoB(Business to Business)や社内システムばかりでなく、BtoC(Business to Consumer(Customer))のスタイルが出現し、ネットショップ、オンラインショップを構築、出店したりとインターネットによるビジネスも当たり前になってきたので、社内システムもBtoBもクライアントはブラウザというWebタイプのC/Sが増えています。
このようにウェブを利用する、インターネット接続する場合に、個人情報を守る観点から情報セキュリティの必要性が生まれ、安全性強化の点からSSL証明書・サーバIDを使ったSSLの採用に至っています。
こうしたWebシステムにおいては、別途Apacheなどのウェブサーバを設置し、ウェブサーバ側のサーバーサイドプログラムとしてJava Servlet、JSP、ASP、CGIやscriptのPHP、Perlがあり、Webクライアント側ではDHTML(JavaScript・CSSカスケーディングスタイルシート・HTML / HyperText Markup Language)、Java Appletなどを利用してシステム構築を行っています。
またデータ共通化という観点から紙データを共有化する為にPDFが生まれ、共有できなかった他システムや他アプリケーションなどで作ったデジタルデータを共有化、活用する為にXMLというアーキテクチャが生まれ、かなり浸透し、この技術とJavaScriptを組み合わせた事で生まれたajaxがあります(以後必ずしもXML+JavaScriptでない実装も派生しました)。
Ajaxは、非同期通信の考え方を取り入れた事により、ブラウザのリロード(画面更新)を伴うことなくサーバとのやり取りをしないタイミングでデータの差し替えができるので重宝されています。