И така, HTML предоставя възможността да се създават изящни страници, които обаче са статични. DynamicHTML и скриптовите езици като JavaScript и VBScript, прибавиха известна степен на програмируемост на сайтовете, добавяйки динамично съдържание и известна степен на интерактивност. Но, все пак, това все още не е пълноценно програмиране, няма възможност за извличане на съдържанието на страницата от база данни въз основа редица критерии, определени от потребителя, няма я и възможността да запазите въведената от потребителя информация. За такива задачи като създаване на форум, web-базирана поща, web-chat или електронен магазин, JavaScript скрипт е безсилен.
Съществуват множество технологии, които дават тази функционалност на Web. Това е така нареченото web-програмиране, което обаче е твърде разнообразно. На първо място то се дели на програмиране от страна на сървъра и от страна на клиента. Но дори при програмирането от страна на сървъра съществува огромна пропаст между отделните езици - това е вградения в HTML код срещу външния CGI скрипт.
Програмирането - от страна на клиента или от страна на сървъра
Има съществена разлика между програмирането от страна на клиента и това от страна на сървъра. Когато програмирането е от страна на клиента, то програмата се изпълнява на машината на клиента и съответно не е необходимо специално разрешение от страна на сървъра. От друга страна, необходимо е разрешението на клиента, поддръжка от браузъра на клиента, а по-важното - липсва взаимодействие със сървъра. Това е по-малко разпространения вид програмиране. Програмирането от страна на сървъра осигурява много по-голяма функционалност, но е необходима поддръжка от страна на сървъра.
Програмирането от страна на клиента се осъществява чрез Java аплети. Java e език, предназначен за програмиране в web и поради това удобен за създаване на web-базирани приложения. Той е платформено независим, като това е осъществено чрез непълното му компилиране и използване на интерпретатор. Т.е. Java се компилира до едно междинно ниво, class файл, а след това този псевдо-код се интерпретира от Java Virtual Mashine. Тъй като кода се интерпретира, той е платформо-независим - практически за всяка платформа същестува съответния интерпретатор. Тъй като е компилиран до едно междинно ниво, той осигурява по-висока производителност от обикновените интерпретируеми езици. Всички съвременни браузъри имат вграден Java Virtual Mashine, а ако нямат - потребителя може да си го изтегли. Но все пак Java аплетите се инициализират бавно и са доста тромави, в сравнение с технологии като PHP
От своя страна, програмирането от страна на сървъра позволява извличане и обработване на информация, въведена от потребителя. То позволява използване на всички ресурси на сървъра, което означава например, че не е необходимо стартирането на mail-клиент на машината на клиента за да се изпрати E-mail. Вместо това се използва клиента на сървъра. Информацията може да бъде съхранявана на сървъра и по-късно обновявана или обработвана по някакъв начин.
Perl все още е един от широкоразпространените езици за web-програмиране. От една страна Perl интерпретатора е част от самия Unix (в частност Linux). От друга, тъй като Perl е създаден за обработка на данни, то е подходящ за извличането и обработката на данни от уеб-форма. Но Perl кода не е част от HTML документа и макар че един Perl скрипт може да създаде HTML документ, самия скрипт трябва да се извика от уеб-страницата. Докато езици като ASP и PHP са вградени в HTML и практически са част от HTML кода.
При програмирането в web има някои особености, с които трябва да се съобразявате. На първо място, стандартния изход не е екрана, а браузъра и съответно трябва да отпечатвате HTML код (това не се отнася за Java аплети, които сами по себе си са цели приложения, изпълнявани в браузър и които се изрисуват в собствения си прозорец).
Следващото нещо са въпросите за сигурността. Като цяло вие нямате достъп до файловата система на потребителя и всичко, което можете да направите е, да запишете cookie на неговия хард-диск. Особен е и начина на предаване на информацията от web-форма към CGI скрипт. Има два основни метода за предаване на данните - GET и POST. При първия информацията се предава като част от URL адреса ана скрипта, а при втория - тя се поддава на сървъра отделно и се предава на скрипта като стандартен вход.
Flash също предоставя някакъв тип програмиране от страна на клиента. С въвеждането на ActionScript, Flash анимацията вече може да работи със CGI скриптове, като с това постави Flash сред средствата за web-програмиране.