Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈ распрСдСлСнноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π‘++Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 120

Автор Π₯ьюз ΠšΠ°ΠΌΠ΅Ρ€ΠΎΠ½

while true do

get next percept p

Π’ = brf(B,p)

I = deliberate(B)

П= plan(B,I)

execute(П)

end while_

Π­Ρ‚Π° модСль повСдСния рСализуСтся ΡˆΠΈΡ€ΠΎΠΊΠΈΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π°Π³Π΅Π½Ρ‚ΠΎΠ². Если Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π°Π³Π΅Π½Ρ‚Ρ‹, Ρ‚ΠΎ скорСС всСго эта ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. На фиксации ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ дСйствий Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈ Β«ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡΒ» каркасныС классы. Для Ρ†ΠΈΠΊΠ»Π° управлСния Π°Π³Π΅Π½Ρ‚Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ brf (), deliberate () ΠΈ plan () Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ чисто Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ функциями. Π¦ΠΈΠΊΠ» управлСния Π°Π³Π΅Π½Ρ‚Π°ΠΌΠΈ опрСдСляСт, Π² ΠΊΠ°ΠΊΠΎΠΌ порядкС ΠΈ ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ сам Ρ„Π°ΠΊΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Ρ‹. Однако ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ содСрТаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс. ΠŸΡ€ΠΈ Π½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° управлСния Π°Π³Π΅Π½Ρ‚Π°ΠΌΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ Ρ†Π΅Π»Ρ‹ΠΉ класс ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’Π΅Π΄ΡŒ систСмы, состоящиС ΠΈΠ· мноТСства ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ…ΡΡ Π°Π³Π΅Π½Ρ‚ΠΎΠ², постСпСнно становятся стандартом для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. Π’Π°ΠΊΠΈΠ΅ систСмы часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠ°Π³Π΅ΠΏΡ‚ΠΏΡ‹ΠΌΠΈ систСмами. АгСнтно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ систСмы ΠΌΡ‹ рассмотрим Π² Π³Π»Π°Π²Π΅ 12, Π° ΠΏΠΎΠΊΠ° ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π°Π³Π΅Π½Ρ‚Π½Ρ‹Π΅ каркасныС классы ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ слоТности Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠ°Π³Π΅Π½Ρ‚Π½Ρ‹Ρ… систСм, Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Ρ†Π΅Π½Π½ΠΎ Π² свСтС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠ°Π³Π΅Π½Ρ‚Π½Ρ‹Π΅ систСмы становятся ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ срСднС- ΠΈ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΈΠ»ΠΈ массового ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°.

ΠšΠ°Ρ€ΠΊΠ°ΡΠ½Ρ‹Π΅ классы ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ своих ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ² Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ»Π°Π½ΠΎΠΌ дСйствий (Ρ‡Ρ‚ΠΎ вСсьма ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ»ΠΈ распрСдСлСнных систСм), Π½ΠΎ ΠΈ Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ синхронизации, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΌΡŒΡŽΡ‚Π΅ΠΊΡΡ‹, сСмафоры ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΈ сообщСний. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° «классной доски» β€” ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ срСдство для взаимодСйствия мноТСства Π°Π³Π΅Π½Ρ‚ΠΎΠ²β€” прСдставляСт собой критичСский Ρ€Π°Π·Π΄Π΅Π», ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сразу нСсколько Π°Π³Π΅Π½Ρ‚ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ· Π½Π΅Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΅Π΅ Ρ‚ΡƒΠ΄Π°. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, каркасный класс Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π±Π°Π·ΠΎΠ²ΡƒΡŽ структуру для ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π°Π³Π΅Π½Ρ‚Π°ΠΌΠΈ, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ синхронизации и»классной доской». НапримСр, листинг 11.25 содСрТит Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ каркасный класс ΠΌΠΎΠ³ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для доступа ΠΊ «классной доскС».

// Листинг 11.25. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² recordMessge() ΠΈ

// getMessage() для класса agent_framework

int agent_framework::recordMessage(void) {

Mutex.lock();

BlackBoardStream << Agent[N].message(); Mutex.unlock();

}

int agent_framework::getMessage(void) {

}

Mutex.lock();

BlackBoardStream Β» Values; Agent[N].perceive(Values); Mutex.unlock();

Π—Π΄Π΅ΡΡŒ каркасный класс Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Ρ‰ΠΈΡ‰Π°Ρ‚ΡŒ доступ ΠΊ «классной доскС» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² синхронизации. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΊΠΎΠ³Π΄Π° Π°Π³Π΅Π½Ρ‚Ρ‹ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ сообщСния с «классной доски» ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΈΡ… Ρ‚ΡƒΠ΄Π°, синхронизация ΡƒΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ обСспСчСна каркасным классом. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρƒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ синхронизации доступа ΠΊ «классной доскС». Базовая структура Π°Π³Π΅Π½Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ каркасного класса agent_framework ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° рис. 11.11.

Рис. 11.11. Базовая структура каркасного класса agent_framework

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ каркасный класс инкапсулируСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΌΡŒΡŽΡ‚Π΅ΠΊΡΡ‹ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ условий. АгСнтно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ каркасный класс (см. рис. 11.11) для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ взаимодСйствия процСссов Π² MPI- Π»ΠΈΠ±ΠΎ PVM-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ систСмС Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ MPI- Π»ΠΈΠ±ΠΎ PVM-ΠΏΠΎΡ‚ΠΎΠΊΠΈ сообщСний. ВспомнитС, Ρ‡Ρ‚ΠΎ эти ΠΏΠΎΡ‚ΠΎΠΊΠΈ сообщСний Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ ΠΊΠ°ΠΊ интСрфСйсныС классы, Ρ‡Ρ‚ΠΎ позволяСт программисту для доступа ΠΊ PVM- ΠΈΠ»ΠΈ MPI-классу ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ iostreams-прСдставлСниС. Если MPI- ΠΈΠ»ΠΈ PVM-классы Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, Π°Π³Π΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· сокСты, ΠΊΠ°Π½Π°Π»Ρ‹ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π’ любом случаС ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ синхронизации с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ интСрфСйсных классов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ ΠΈΡ… использованиС. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° «классной доски», показанная Π½Π° рис. 11.11, являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ прСимущСства ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, обСспСчиваСмой ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΌΠΈ классами, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°. АгСнты, выполняСмыС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ эффСктив-ΠΊΡƒΡŽ модСль ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ распрСдСлСнного программирования.

РСзюмС

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования, прСдставлСнныС Π² Π³Π»Π°Π²Π΅ 2, ΠΌΠΎΠΆΠ½ΠΎ эффСктивно Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Β«ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈΒ», рассмотрСнныС Π² этой Π³Π»Π°Π²Π΅. Роль интСрфСйсного класса Π² ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠΈ использования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΡ€Π΅ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠ½Ρ‹ΠΉ класс вносит Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ API-интСрфСйса ΠΏΡƒΡ‚Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΊΠ°ΠΊ MPI ΠΈΠ»ΠΈ PVM. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠ½Ρ‹Π΅ классы ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Ρ‚ΠΈΠΏΠΎΠ²ΡƒΡŽ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования ΠΊΠΎΠ΄Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ программисту Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠΉ «систСмС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Β», ΠΊΠ°ΠΊ с PVM- ΠΈΠ»ΠΈ MPI-ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΠ΅ΠΆΠΏΡ€ΠΎΡ†Π΅ΡΡΠ½ΠΎΠ΅ взаимодСйствиС (IPC) упрощаСтся ΠΏΡƒΡ‚Π΅ΠΌ связывания ΠΊΠ°Π½Π°Π»Π° ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² сообщСний ΡΡŽΠ‘Π§Π³Π΅Π°Ρ‚Π‘ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² вставки (Β«) ΠΈ извлСчСния (Β») для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… классов. Класс ostream_iterator Π΄ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ свою ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡ‚ΡŒ Π² Β«ΠΎΠΏΡ‚ΠΎΠ²ΠΎΠΉΒ» пСрСсылкС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΈΡ… содСрТимого ΠΌΠ΅ΠΆΠ΄Ρƒ процСссами. Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ‚ΠΈΠΏΠ° ostream_iterator ΠΈ istream_iterator Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ свя-Π·ΡƒΡŽΡ‰Π΅Π΅ Π·Π²Π΅Π½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ стандартными Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ ΠΈ IPC-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ модСль ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сообщСний ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ распрСдСлСнных прилоТСниях, Ρ‚ΠΎ любой ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ процСссами, ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ прилоТСния Π² Ρ†Π΅Π»ΠΎΠΌ. К Ρ‚Π°ΠΊΠΈΠΌ способам упрощСния относится использованиС iostreams-классов ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Ρ‚ΠΈΠΏΠ° ostream_iterator ΠΈ istream_iterator. ΠšΠ°Ρ€ΠΊΠ°ΡΠ½Ρ‹ΠΉ класс прСдставлСн здСсь ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠœΡ‹ рассматриваСм классы, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ классам ΠΌΡŒΡŽΡ‚Π΅ΠΊΡΠΎΠ², ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… условий ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ скрыты ΠΎΡ‚ программиста Π² каркасном классС (Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ!). ΠŸΡ€ΠΈ создании срСднС- ΠΈ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π΅-Π±ΡƒΡŽΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°, программист Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Β«Π·Π°ΡΡ‚Ρ€Π΅Π²Π°Ρ‚ΡŒΒ» Π½Π° этих Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ…. Π’ ΠΈΠ΄Π΅Π°Π»Π΅ для удовлСтворСния Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ каркасный класс Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΎΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ уровня ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ нас Β«Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌΠΈΒ» схСмами Ρ€Π°Π²Π½ΠΎΠΏΡ€Π°Π²Π½Ρ‹Ρ… элСмСнтов ΠΈ взаимодСйствия Ρ‚ΠΈΠΏΠ° Β«ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСр». ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ каркасных классов: для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ чисСл, Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ примСнСния Π°Π³Π΅Π½Ρ‚ΠΎΠ², Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ «классной доски», GUI ΠΈ Ρ‚.Π΄.

ΠœΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°, состоит Π² построСнии ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π±Π°Π·Π΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ каркасных классов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ оснащСны Π½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ синхронизации, связанными ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌΠΈ. Π’ Π³Π»Π°Π²Π°Ρ… 12 ΠΈ 13 ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ остановимся Π½Π° каркасных классах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ рассмотрим использованиС стандартных Π‘++-Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для управлСния процСссом создания мноТСства Π·Π°Π΄Π°Ρ‡ ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² прилоТСниях, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°.

РСализация Π°Π³Π΅Π½Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€

Нам прСдстоит ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ Π½Π΅ΠΌΠ°Π»ΠΎ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ ΠΏΠΎΠΉΠΌΠ΅ΠΌ, ΠΊΠ°ΠΊ люди ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ свои Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΠΊΠ°ΠΊΡƒΡŽ Ρ€ΠΎΠ»ΡŒ эти описания ΠΈΠ³Ρ€Π°ΡŽΡ‚ Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Π·Π°Π΄Π°Ρ‡. Но ΠΌΡ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅ΠΌ достаточно для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ людьми описания, прСдставлСнныС ΠΊΠ°ΠΊ Π² Π²ΠΈΠ΄Π΅ высказываний, Ρ‚Π°ΠΊ ΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ΅ рисунков, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сымитированы ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌΠΈ. ГСрбСртА. Π‘Π°ΠΉΠΌΠΎΠ½(НСrbΠ΅rt. Simon), Machine as Mind (Android Epistemology)

Если Π±Ρ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ (ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ΅) ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ позволяло Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π² Π»ΡŽΠ±Ρ‹Ρ… ситуациях, Ρ‚ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ нСобходимости для развития Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ распрСдСлСнного программирования. Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случалх ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования просто Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ трСбованиям ΠΈ ΠΎΠΏΡ‹Ρ‚Ρƒ соврСмСнных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ². Π’ процСссС поиска Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ всС Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹ находят Π±ΠΎΠ»Π΅Π΅ эффСктивныС способы ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ПО. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ шагом Π²ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΌ (изобиловавшим бСзусловными ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°ΠΌΠΈ), ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ смСнило структурноС. Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΡ… Π°Π³Π΅Π½Ρ‚Ρ‹ ΠΈ Π°Π³Π΅Π½Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΡƒΡŽ (Π±ΠΎΠ»Π΅Π΅ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ) ΡΡ‚ΡƒΠΏΠ΅Π½ΡŒ развития программирования. АгСнты ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΈΠ½ΠΎΠΉ (Π±ΠΎΠ»Π΅Π΅ слоТный) ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ прСдставлСния распрСдСлСнных/ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.