La Programmazione procedurale è un approccio alla programmazione che è uno dei fondamenti dei blocchi costitutivi per molti altri progetti linguistici (funzionale a non esserlo).
La maggior parte delle lingue rientrano nel set di "Programmazione procedurale" ed è probabilmente l'approccio di progettazione più naturale per la maggior parte delle persone (se pensi in termini di OO, allora direi che sei in minoranza).
BASIC è procedurale.
Come altri hanno già detto, è un meccanismo per strutturare i programmi in modo sequenziale.
- Prima faccio x
- Secondo io faccio y
- Terzo, faccio Z
Richiede un meccanismo per la definizione di "procedure" - blocchi di codice con nome simili ai metodi OO, che possono accettare zero a molti parametri e facoltativamente restituire un valore (che in genere si chiamerebbe funzione - probabilmente causa della tua confusione con le lingue funzionali)
Il paradigma non stabilisce quali saranno le cose che farai o il modo in cui le cose verranno passate.
Descrive semplicemente che il programma sarà strutturato come una serie di procedure (o funzioni) che operano in modo sequenziale. I dati vengono quindi definiti indipendentemente dalle procedure.
Questo differisce dalla programmazione orientata agli oggetti, che struttura il programma attorno a collezioni di dati e metodi (non funzioni) che agiscono su quei dati.
Un modo per pensarci è in termini di ambito dati.
In un linguaggio procedurale l'ambito è abbastanza semplice. Una variabile può essere nell'ambito di una determinata procedura (dichiarata localmente), fino al livello della cosa principale che chiama roba (dichiarata globalmente), con scope annidati tra.
In un linguaggio orientato agli oggetti si aggiunge un nuovo contesto di scoping, che è quello dell'oggetto attualmente in uso, che è ortogonale a quanto sopra.
Un altro modo di pensare procedurale, in quanto a confronto con l'oggetto è considerare un linguaggio orientato agli oggetti dove tutti i metodi devono essere dichiarati come statici. Il risultato è un linguaggio procedurale in cui le classi possono essere utilizzate per raggruppare insieme le procedure.