In che modo, l'interfaccia Message Passing Interface (MPI) è correlata al concetto generale di "passaggio di messaggi"?
Certo, la domanda suono è ridicola. Sicuramente, "Message Passing Interface" è un'interfaccia per il passaggio dei messaggi, giusto? Tuttavia, non mi è chiaro se l'MPI sia in qualche modo correlato al concetto generale di passaggio del messaggio nei linguaggi di programmazione o se il nome "Interfaccia di passaggio dei messaggi" sia un artefatto storico.
Come descritto da Wikipedia , e poiché ho familiarità con esso, il messaggio che passa è un concetto dalla programmazione orientata agli oggetti in cui agli oggetti vengono inviati "messaggi" che richiedono un'azione ma che non sono strettamente accoppiati al codice che implementa quell'azione. I dettagli variano molto tra i linguaggi di programmazione, ma l'elemento cruciale che esiste un livello di riferimento indiretto che consente agli oggetti di decidere come implementare le funzioni membro in fase di esecuzione e senza che il chiamante conosca i dettagli. Ad esempio, i messaggi potrebbero essere una stringa che specifica l'azione richiesta insieme agli argomenti appropriati e gli oggetti che ricevono un messaggio deciderebbero quale codice inviare a basato sulla stringa e gli argomenti. Un altro componente è in genere che il messaggio è autonomo e gli argomenti nel messaggio non sono riferimenti a dati esterni al messaggio. Il chiamante potrebbe dover copiare i dati ma l'oggetto chiamato è libero di modificare i dati ricevuti in base alle esigenze senza preoccuparsi di influenzare il chiamante.
Al contrario, MPI è relativamente di basso livello - essendo solo leggermente più alto dei socket BSD estraendo i dettagli del SO - e non è OOP in natura.