# Programmazione web

Con la locuzione programmazione web si indicano le attività e le tecniche di programmazione, con i rispettivi linguaggi di scripting, che consentono la realizzazione e lo sviluppo di applicazioni per il Web. La programmazione web si articola in tre tipologie
* a) il design e developing per la realizzazione di siti web, CMS per blog, forum e reti sociali, applicazioni o portali per l'e-commerce;
* b) lo scripting lato client e lato server;
* c) la configurazione dei server web.

## Descrizione

La programmazione web è dipendente dagli obiettivi dell'applicazione sviluppata ed è strettamente legata alla scelta tra Web statico e Web dinamico.
* Il primo approccio è quello originario del Web e consiste nella stesura di documenti formattati direttamente in codice HTML e caratterizzati da una bassa interazione con l'utente.
* Il secondo, rappresenta invece l'evoluzione delle applicazioni Web con l'inserimento di processi di automazione ed una maggiore interattività con l'utente (vedi anche Web 2.0).
Il web dinamico fa sovente uso di database e di linguaggi di scripting elaborati dal server oppure dal client quali ad esempio PHP, ASP, .NET, JavaScript, Python: questi codici una volta elaborati restituiscono codice in HTML al web browser dell'utente.

### Programmazione web come industria

Dalla metà degli anni 1990, quella della programmazione Web è stata una delle industrie nel mondo che si è sviluppata più velocemente: nel 1995 c'erano meno di 1.000 compagnie nel settore solo negli Stati Uniti, ma dal 2005 erano già oltre 30.000 avendo avuto un forte sviluppo negli anni 2000 con l'avvento del Web 2.0 e la diffusione di applicazioni Web.
La crescita di questa industria è spinta dalla prospettiva del mercato di vendere prodotti e servizi ai loro clienti al fine di automatizzare il flusso di lavoro; il settore della programmazione web è quindi generalmente un settore florido e in continuo sviluppo.
Aumentata la domanda, è aumentata anche l'offerta, facendo scendere i prezzi. Sono inoltre state sviluppate piattaforme pubbliche gratuite. Un esempio è il pacchetto LAMP (Linux, Apache, MySQL, PHP). Gli sviluppatori web mirano a realizzare applicazioni che tradizionalmente erano disponibili solo in ambiente locale. Questo ha permesso la nascita di nuovi metodi di comunicazione, la decentralizzazione dell'informazione e la distribuzione dei contenuti in rete.
Esempio della trasformazione che la programmazione web ha portato nelle comunicazioni e nel commercio è l'e-commerce (es. eBay). Altro esempio di come lo sviluppo del software destinato al web abbia apportato nette trasformazioni nel modo di comunicare sono i blog. Per le grandi imprese e le grandi organizzazioni, i team di web developer si compongono anche di decine di persone, mentre le organizzazioni più piccole possono necessitare di un webmaster singolo.

## Suddivisione di base

A livello teorico la programmazione web può suddividersi in programmazione web lato client e programmazione web lato server a seconda che ci si occupi dello sviluppo del front-end o del back-end dell'applicazione web. Spesso allo sviluppatore capita di doversi occupare di entrambe le parti. Applicazioni web abbastanza semplici possono essere costruite anche totalmente con logica lato client (ad es. interamente in JavaScript). La parte data-layer, ovvero creazione del database con relative tabelle e manutenzione, è spesso opera di un database Administrator (DBA).

### Programmazione Client Side

* AJAX Fornisce nuovi metodi per l'utilizzo di JavaScript, linguaggi lato server (ASP.Net o PHP) e altri linguaggi al fine di migliorare l'esperienza dell'utente.
* Adobe Flash Player onnipresente piattaforma client-side, ma oramai obsoleta.
* JavaScript Formalmente chiamato ECMAScript, JavaScript è un utile strumento client-side (anch'esso praticamente onnipresente).

### Programmazione Server Side

* ASP (di proprietà Microsoft)
* ColdFusion (di proprietà Adobe)
* CGI e/o Perl (open source)
* Java, Java EE o WebObjects
* PHP (open source)
* Python (open source)
* Smalltalk
* .NET (di proprietà Microsoft)

### Database

* Oracle
* IBM DB2
* Microsoft SQL Server
* MySQL
* Firebird SQL
* PostgreSQL
* SQLite
* MongoDB

## Sicurezza

Con il diffondersi delle piattaforme web, è aumentata la richiesta di sicurezza nella trasmissione e archiviazione dati. Gli sviluppatori web devono perciò tener conto di diverse considerazioni, come il filtraggio dei dati in uscita e la cifratura. Pratiche malevole come l'SQL injection possono permettere di aver accesso ad indirizzi email, password e contenuti protetti come i numeri di carte di credito.
Sovente si fa uso di diversi metodi di cifratura quando si devono trasmettere o salvare informazioni delicate. Per esempio l'ausilio di protocolli crittografici quali TLS, o SSL, permettono una comunicazione sicura e l'integrità dei dati su reti TCP/IP, aiutando a prevenire eventuali frodi informatiche. Una conoscenza di base della sicurezza informatica fa spesso parte delle conoscenze dello sviluppatore web.
Siccome alcuni problemi di sicurezza vengono identificati solo dopo la pubblicazione delle applicazioni, gli aggiornamenti sulla sicurezza sono di importanza cruciale. È spesso compito dello sviluppatore web tenere le applicazioni aggiornate con patch sulla sicurezza.