C'è un certo numero di sensi nella parola "spazio dei nomi". In C, ad esempio, le strutture si trovano in uno spazio dei nomi diverso rispetto alle variabili locali. Tradizionalmente, si farebbe riferimento a "struct mystruct" piuttosto che a "mystruct". Dimentico per la C corrente, ma in C ++ puoi normalmente (ma non sempre) cancellare la parola "struct" - la struttura del namespace perde, ma solo quando non causa ambiguità.
Penso che moz abbia ragione per denominare la convenzione "namespace" come questa.
I prefissi dei nomi sono comuni in C per evitare ambiguità quando vengono utilizzate più librerie insieme. Rendere questi prefissi semi-opzionali ha senso in quel contesto. I moduli sono in circolazione da molto tempo in alcune lingue, e ovviamente a livello superficiale fanno la stessa cosa - ma il "prefisso" è tipicamente opzionale. Gli spazi dei nomi in stile C ++ sono da qualche parte nel mezzo - un tipo di modulo che non è un modulo.
Quindi sì, ho il sospetto che esistesse una sorta di "OK - i moduli possono aiutare a risolvere questo problema, ma non abbiamo davvero bisogno di moduli perché abbiamo già la logica #include e le classi - adattiamo" agli spazi dei nomi C ++.
Ovviamente, #include e le classi non risolvono tutti i tuoi problemi di modularità, anche con i namespace - ma questa è un'altra storia.