//. . .
};
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅, ΠΌΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡΡ impi _stream ΠΈ ompi _stream Π² Π΅Π΄ΠΈΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ mpi _stream. Π ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡΡ istream ΠΈ ostream ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ "<<" ΠΈ ">>", ΠΌΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠΌ ΠΈΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΡ Π² ΠΊΠ»Π°ΡΡΠ΅ mpi_stream. Π Π»ΠΈΡΡΠΈΠ½Π³Π΅ 9.7 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠΈ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ:
// ΠΠΈΡΡΠΈΠ½Π³ 9.7. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Β ΠΈ **Β»*
//. . .
mpi_stream &operator<<(string X) {
MPI_Send(const_cast<char*>(X.data()),X.size(),
MPI__CHAR, Rank, Tag, Comm) ; return(*this);
}
// Π£ΠΏΡΠΎΡΠ΅Π½Π½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΡΡΠ΅ΡΠΎΠΌ, mpi_stream &operator<<(vector<long> &X) {
long *Buffer;
Buffer = new long[X.size()]; copy(X.begin(),X.end(),Buffer);
MPI_Send(Buffer,X.size(),MPI_LONG,Rank,Tag,Comm); delete Buffer; return(*this);
}
// Π£ΠΏΡΠΎΡΠ΅Π½Π½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΡΡΠ΅ΡΠΎΠΌ, mpi_stream &operator>>(string &X) {
char Buffer[10000];
MPI_Recv(Buffer,10000,MPI_CHAR,Rank,Tag,Comm, &Status); MPI_Get_count(&Status,MPI_CHAR,&BufferCount); X.append(Buffer); return(*this);
}
ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° mpios Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 9.7 ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρ ΠΊΠ»Π°ΡΡΠ° ios Π² ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π΅ ΠΊΠ»Π°ΡΡΠΎΠ² iostream, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° mpi_stream. ΠΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² Π²Π°ΡΠΈΡ MPI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ , Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ "<<" ΠΈ ">>", ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ Ρ ΡΡΠ΅ΡΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ . ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΡΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ². Π ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠΏΡΠΎ Ρ Π΅Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±ΡΡΠ΅ΡΠΎΠΌ. ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠ΅Π»ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ (Π½Π° Π±Π°Π·Π΅ ΡΠ°Π±Π»ΠΎΠ½Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ²) ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ (Π½Π° Π±Π°Π·Π΅ ΠΊΠ»Π°ΡΡΠΎΠ²-ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ ΡΠ΅ΡΡΡΡΠΎΠ²). Π Π»ΠΈΡΡΠΈΠ½Π³Π΅ 9.7 ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΊΠ»Π°ΡΡ mpios ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡ, ΡΡΠ°ΡΡΡ ΠΊΠ»Π°ΡΡΠ° mpi_stream, Π½ΠΎΠΌΠ΅Ρ Π±ΡΡΠ΅ΡΠ° ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π½Π³Π° ΠΈΠ»ΠΈ ΡΠ΅Π³Π° (ΡΡΠΎ β Π»ΠΈΡΡ ΠΎΠ΄Π½Π° ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ ΠΊΠ»Π°ΡΡΠ° mpi_streamβ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈΡ ). ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡ mpi_stream ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π»ΡΠ±ΠΎΠΉ MPI-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ MPI-Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΡΠ»Π΅Π΄ΡΡ Ρ ΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
//. . .
int X; float Y;
vector<float> Z;
mpi_s tream S tream (Rank, Tag, MPI_WORLD_COMM) ;
Stream Β« X << Z; Stream << Y;
//...
Stream >> Z;
Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π» ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅ Π΄ ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΠ Π’ΠΊΠΎ Π΄. ΠΠ΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ, Π² ΠΎΠΏΡΠ΅ Π΄ Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² "<<" ΠΈ ">>" Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ.
Π Π΅Π·ΡΠΌΠ΅
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ SPMD- ΠΈ MPMD-ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ Π²ΡΠΈΠ³ΡΡΠ²Π°Π΅Ρ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌΠ°. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ MPT ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π‘++-ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ, Π² Π½Π΅ΠΌ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΎ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΡΡΠ΄Π½ΠΎΡΡΠΈ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡ MPI. ΠΠ»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ MPMD-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΎΠ±Ρ-Π΅ΠΊΡΠ½ΠΎΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠ°ΠΊ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ C++-ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ SPMD-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ MPI-Π·Π°Π΄Π°Ρ. Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ β ΡΡΠΎ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π³ΡΡΠΏΠΏΠ°ΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΠ·ΡΡΡΠΈΠΌΠΈΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΡΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ Π·Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΠ°Π±ΠΎΡΡ, ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² MPI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°ΡΡ Ρ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ. ΠΠ»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ². ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ MPI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠΏΠ»ΠΎΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΡΠ»Ρ-ΡΠΈΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΊΠΎΠ΄ ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ»ΡΡΠ°Π»Ρ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ Π΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΌ. Π’Π΅ΠΌ ΡΠ°ΠΌΡΠΌ ΡΠΏΡΠΎΡΠ°Π΅ΡΡΡ ΠΎΡΠ»Π°Π΄ΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΈΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°. ΠΠ Π’Π·Π°Π΄Π°ΡΠΈ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°Π±Π»ΠΎΠ½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΠ·ΡΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠΉ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ , ΡΠ΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΈΠΏΠ°.
ΠΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ
ΠΡΡΠ» ΠΈ, Π½ Π΅ ΠΎΡΠΎΡΠΌΠ»Π΅ Π½Π½ ΡΠ΅ Π² ΡΠ»ΠΎΠ²Π΅Ρ Π½ ΡΡ ΠΎ Π± ΠΎΠ»ΠΎΡΠΊΡ, β ΡΡΠΎ Π²ΠΏΠΎΠ» Π½ Π΅ ΠΎΠ±ΡΡ Π½ ΠΎΠ΅ ΡΠ²Π»Π΅ Π½ΠΈ Π΅. ΠΠ°Ρ ΠΈ ΠΈ Π΄Π΅ ΠΈ ΡΠ°ΡΡΠΎ Π²ΠΎΠ· Π½ΠΈ ΠΊΠ°Ρ Ρ Π½ Π° ΡΡΠΎΠ² Π½ Π΅ ΠΎΡΡΡΠ΅ Π½ΠΈΠΈ. ΠΡ Π²Π΄ΡΡΠ³ Π½Π°Ρ ΠΈΠ½ Π°Π΅ΠΌ ΡΡΠ²Ρ Ρ Π²ΠΎΠ²Π° Ρ Ρ ΠΏΡΠ°Π² ΠΈ Π»Ρ Π½ ΠΎΡ Ρ Ρ ΡΠ΅ΡΠ΅ Π½ΠΈ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π½ Π°Π΄ ΠΊΠΎ Ρ ΠΎΡΡΠΌ ΠΈ Π± ΠΈ Π» ΠΈ ΡΡ Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΈ Ρ ΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ Ρ ΠΎΠΌ ΡΠ΅ΡΠ°Π΅ΠΌΡΡ ΠΎ Π± ΠΎΠ· Π½ Π°Ρ ΠΈΡ Ρ ΠΈ Ρ Π½ Π° Ρ ΠΎΠΌ ΠΈ Π» ΠΈ ΠΈΠ½ ΠΎΠΌ ΡΠ·ΡΠΊΠ΅... ΠΡΠ΅ Π½ Ρ ΠΌ Π½ ΠΎΠ³ΠΎ ΠΈ Π΄Π΅ΠΉ ΠΏΡ ΠΈ Ρ ΠΎΠ΄Ρ Ρ Π½ Π°ΠΌ Π² Π³ΠΎΠ»ΠΎΠ²Ρ Π² Π±Π΅ΡΡΠ»ΠΎΠ²Π΅Ρ Π½ ΠΎΠΉ ΡΠΎΡΠΌΠ΅... Π. ΠΠΎΡΡ Π»Π΅Ρ (Π. Koehler), The Ability of Birds to Count
ΠΠΎΠ΄Π΅Π»Ρ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ΄Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ΅ ΡΠ΅Π»ΠΎ, Β«ΡΠΎΠ±ΡΠ°Π½Π½ΠΎΠ΅Β» Ρ ΡΠ΅Π»ΡΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π»ΡΡΡΠ΅Π³ΠΎ Π΅Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΅Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ. ΠΡΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π΅Π΅ ΡΠ°ΡΡΠΈ, Π°ΡΡΠΈΠ±ΡΡΡ, Π°ΡΠ°ΠΊΠΆΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ. ΠΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ β Π²Π°ΠΆΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π²ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π»ΡΠ±ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΠΏΠΎΠ½ΠΈΠΌΠ°Π»ΠΈ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ. ΠΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π²ΡΡΠ²ΠΈΡΡ Π·Π°Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ Π² ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ ΠΈ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅.
Π£Π½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Uniflted Modeling Language β UML) ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ. Π―Π·ΡΠΊ UML ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΡΠ°Π½Π΄Π°ΡΡ Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡ-Π½ΡΡΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ. ΠΡΠΎΡ ΡΠ·ΡΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈ ΡΡΠ»ΠΎΠ²Π½ΡΠ΅ Π·Π½Π°ΠΊΠΈ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΡ ΠΠ, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΎΡΠ΅ΠΊ Π·ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠΉ ΡΠΎΠΊΡΡΠΈΡΠΎΠ²ΠΊΠ΅. Π―Π·ΡΠΊ UML Π²ΠΎΠ±ΡΠ°Π» Π² ΡΠ΅Π±Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½-Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΡΠ°Π΄ΠΈ ΠΡΡΠ΅ΠΌ (GradyBooch), ΠΠΆΠ΅ΠΉΠΌΡΠΎΠΌ Π Π°ΠΌΠ±Π°Ρ Qames Rumbaugh) ΠΈ ΠΠΉΠ²Π°ΡΠΎΠΌ ΠΠΆΠ΅ΠΊΠΎΠ±ΡΠΎΠ½ΠΎΠΌ (Ivar Jacobson) Π² 1980-Ρ ΠΈ 1990-Ρ Π³ΠΎΠ΄Π°Ρ . ΠΠ½ Π±ΡΠ» ΠΏΡΠΈΠ½ΡΡ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π³ΡΡΠΏΠΏΠΎΠΉ ΠΏΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Object Management Group β OMG), ΠΌΠ΅ΠΆΠ΄ΡΠ½Π°ΡΠΎΠ΄Π½ΠΎΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, ΡΠΎΡΡΠΎΡΡΠ΅ΠΉ ΠΈΠ· ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΠ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΈ Π½Π°ΡΡΠΈΡΡΠ²Π°ΡΡΠ΅ΠΉ Π±ΠΎΠ»Π΅Π΅ 800 ΡΠ»Π΅Π½ΠΎΠ². ΠΡΠΈΠ½ΡΡΠΈΠ΅ UML Π΄Π°Π»ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΠ Π½Π΅ ΠΏΡΠΎΡΡΠΎ Π΅Π΄ΠΈΠ½ΡΠΉ ΡΠ·ΡΠΊ, Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΈΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ, Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ UML. ΠΠΎΠΌΠΈΠΌΠΎ ΠΏΠΎΠΌΠΎΡΠΈ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° (Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ?), ΠΏΠΎΠ½ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌ (ΠΊΠΎΠ³Π΄Π° ΠΈΠΌΠ΅Π½Π½ΠΎ?), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ΄ΡΠΌΠ°ΡΡ ΡΡΠ΅ΠΏΠ΅Π½Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ?). ΠΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠΎ ΡΡΡΡΠΊΡΡΡΠ½ΠΎΠΉ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΠ΅ΠΊ Π·ΡΠ΅Π½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΊΠ»Π°ΡΡΡ, ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΡΠ»ΡΠΆΠ°Ρ ΡΠ΅Π»ΡΠΌ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ ΠΈ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΡΠ°ΠΆΠ°ΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ, ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅.