Direi che un linguaggio non ti obbliga necessariamente a programmare all'interno di un certo paradigma. Un paradigma è più un modo di pensare e costruire il tuo programma, mentre un linguaggio è uno strumento che:
-
consente di codificare un programma in un certo paradigma;
-
supporta il paradigma della tua scelta in modo nativo, o
- non ti consente di fare certe cose.
C ++ consente di di programmare nello stile orientato agli oggetti così come nello stile procedurale e, se consideriamo i modelli, come jk. Detto questo, puoi avvicinarti allo stile funzionale della programmazione. Kotlin, probabilmente, non solo consente di fare queste cose, ma anche supporta in modo nativo molte funzionalità che sono richieste per codificare in tutti i paradigmi menzionati. D'altra parte, Java non ti permette di fare praticamente nulla, tranne OOP. Forse una sorta di codice in stile funzionale è possibile se consideriamo i flussi di Java 8. È molto più semplice fare programmazione orientata all'aspetto in Java e Kotlin, quindi è in C ++.
Alcune lingue ti limitano a certi paradigmi, gli altri ti offrono più scelte. Il prezzo di una scelta è ovvio: quando hai più opzioni, diventa difficile attenersi a un singolo paradigma per tutto il tempo, e il tuo codice potrebbe presto iniziare a puzzare.