La programmazione procedurale è un approccio alla programmazione che è una delle basi dei mattoni per molti altri linguaggi (funzionale non essendo uno).
La maggior parte delle lingue rientrano nel set della "Programmazione procedurale" ed è probabilmente l'approccio progettuale più naturale per la maggior parte delle persone (se si pensa in termini di OO, 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, lo faccio
- In terzo luogo, faccio Z
Richiede un meccanismo per la definizione di "procedure" - blocchi di codice denominato simili ai metodi OO, che possono accettare da zero a molti parametri e facoltativamente restituire un valore (che sarebbe quindi generalmente chiamato una funzione - probabilmente portando alla confusione con i linguaggi funzionali )
Il paradigma non impone quali saranno le cose che farai, o il modo in cui le cose passeranno.
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.
Ciò differisce dalla programmazione orientata agli oggetti, che struttura il programma attorno a raccolte di dati e metodi (non funzioni) che agiscono su tali dati.
Un modo di pensarci è in termini di portata dei 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 ambiti annidati tra.
In un linguaggio orientato agli oggetti si aggiunge un nuovo contesto di scoping, quello dell'oggetto attualmente in uso, che è ortogonale a quanto sopra.
Un altro modo di pensare procedurale, rispetto all'orientamento agli oggetti è quello di considerare un linguaggio orientato agli oggetti in cui tutti i metodi devono essere dichiarati come statici. Il risultato è un linguaggio procedurale in cui le classi possono essere utilizzate per raggruppare le procedure.