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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования для UnixΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 90

Автор Π­Ρ€ΠΈΠΊ Π Π΅ΠΉΠΌΠΎΠ½Π΄

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· классичСских ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ интСрфСйсов являСтся CLI-сСрвСр. CLI-сСрвСр β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΏΡ€ΠΈ запускС Π² ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ простой CLI-интСрфСйс, ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Π΅ со стандартного Π²Π²ΠΎΠ΄Π° ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° стандартный Π²Ρ‹Π²ΠΎΠ΄. Когда сСрвСр запускаСтся Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ сСрвСр, ΠΎΠ½ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ это ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ свой стандартный Π²Π²ΠΎΠ΄ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ TCP/IP-ΠΏΠΎΡ€Ρ‚Ρƒ.

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ… Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ сСрвСр ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ пСрСводится Π² Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ, Π° для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ оставался Π² ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡. Но Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ большая Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° "Π½Π΅ Π·Π½Π°Π΅Ρ‚" ΠΈ "Π½Π΅ заботится" ΠΎ Ρ‚ΠΎΠΌ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π² ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈΠ»ΠΈ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° ΠΊΠ°ΠΊ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ TCP/IP-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°.

Π‘Π΅Ρ€Π²Π΅Ρ€Ρ‹ POP3, IMAP, SMTP ΠΈ HTTP ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ. Π•Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ модСлями ΠΊΠ»ΠΈΠ΅Π½Ρ‚/сСрвСр, описанными Ρ€Π°Π½Π΅Π΅ Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅. HTTP-сСрвСр Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. CGI-сцСнарии, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ содСрТания Π² Web, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² обСспСчСнной Π΄Π°Π½Π½Ρ‹ΠΌ сСрвСром ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ срСдС, Π³Π΄Π΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π²Π²ΠΎΠ΄ (ΠΈΠ· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²) ΠΈΠ· стандартного Π²Π²ΠΎΠ΄Π° ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ сгСнСрированныС Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ своСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ HTML-страницы Π² стандартный Π²Ρ‹Π²ΠΎΠ΄.

Π₯отя данная модСль вСсьма Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Π°, Ρ‚Π΅Ρ€ΠΌΠΈΠ½ "CLI-сСрвСр" Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π²Π²Π΅Π΄Π΅Π½ Π² ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ.

11.6.10. МодСль интСрфСйсов Π½Π° основС языков

Π’ Π³Π»Π°Π²Π΅ 8 Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈΡΡŒ ΡƒΠ·ΠΊΠΎΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΈΠ½ΠΈ-языки ΠΊΠ°ΠΊ срСдства пСрСмСщСния спСцификации ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Π±ΠΎΠ»Π΅Π΅ высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ с ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½ΠΈΠ΅ΠΌ гибкости ΠΈ сокращСниСм количСства ошибок. Благодаря этим достоинствам CLI-интСрфСйс Π½Π° основС языков сСгодня Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ опрСдСляСт ΡΡ‚ΠΈΠ»ΡŒ Unix-интСрфСйсов.

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

Одной ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ проСктирования Π² Unix являСтся комбинация клиСнтского GUI-интСрфСйса с сСрвСрной Ρ‡Π°ΡΡ‚ΡŒΡŽ, прСдставлСнной CLI-ΠΌΠΈΠ½ΠΈ-языком. Π₯ΠΎΡ€ΠΎΡˆΠΎ спроСктированныС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ слоТны, Π½ΠΎ часто ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ простыми ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΌΠΈ, Ρ‡Π΅ΠΌ большой объСм ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ понадобился Π±Ρ‹ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΄Π°ΠΆΠ΅ нСбольшой части Ρ‚Π΅Ρ… Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ способСн Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΌΠΈΠ½ΠΈ-язык.

Данная общая модСль, Π±Π΅Π· сомнСния, Π½Π΅ являСтся ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ для Unix. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ состоят ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… GUI-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… обращаСтся ΠΊ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ сСрвСру, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ язык запросов, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ SQL. Однако данная модСль Ρ€Π°Π·Π²ΠΈΠ²Π°Π»Π°ΡΡŒ прСимущСствСнно Π² Unix-срСдС ΠΈ Π΄ΠΎ сих ΠΏΠΎΡ€ остаСтся Π² Π½Π΅ΠΉ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ понятной ΠΈ примСняСтся ΡˆΠΈΡ€Π΅, Ρ‡Π΅ΠΌ Π² ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах.

Когда клиСнтская ΠΈ сСрвСрная части систСмы, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰Π΅ΠΉ Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ проСктирования, скомбинированы Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Ρ‚ΠΎ ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ часто говорят, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ "встроСнный язык сцСнариСв". Π’ Unix-срСдС ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ извСстных экзСмпляров Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ являСтся Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Emacs. НСкоторыС прСимущСства Emacs Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Π³Π»Π°Π²Π΅ 8.

Π”Ρ€ΡƒΠ³ΠΈΠΌ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ являСтся срСдство script-fu ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ GIMP. GIMP β€” ΠΌΠΎΡ‰Π½Ρ‹ΠΉ графичСский Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ GUI-интСрфСйс, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ интСрфСйсу ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Adobe Photoshop. БрСдство script-fu позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GIMP Π² сцСнариях, написанных Π½Π° языкС Scheme (Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚ Lisp). Доступно Ρ‚Π°ΠΊΠΆΠ΅ написаниС сцСнариСв Π½Π° языках Tcl, Perl ΠΈΠ»ΠΈ Python. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанныС Π½Π° любом ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… языков, ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GIMP Ρ‡Π΅Ρ€Π΅Π· Π΅Π³ΠΎ интСрфСйс ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ДСмонстрационноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ срСдства прСдставлСно Π½Π° Web-страницС[106], ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ простыС Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΡ‹ ΠΈ графичСскиС ΠΊΠ½ΠΎΠΏΠΊΠΈ посрСдством CGI-интСрфСйса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Scheme-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ экзСмпляру GIMP ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

11.7. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Unix-ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ проСктирования интСрфСйсов

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ написаниС сцСнариСв ΠΈ созданиС ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΎΠ², Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΡƒΡŽ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ интСрфСйса, Ρ‚.Π΅. модСль с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ числом ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΊ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΡŽ ΠΈ наимСньшСй ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ.

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

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

Один ΠΈΠ· способов ΠΎΠ±ΠΎΠΉΡ‚ΠΈ эту Π΄ΠΈΠ»Π΅ΠΌΠΌΡƒ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² создании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ€Π΅ΠΆΠΈΠΌΠ°ΠΌΠΈ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ нСсколько ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ являСтся Web-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ lynx(1). ΠžΠ±Ρ‹Ρ‡Π½ΠΎ lynx ΠΈΠΌΠ΅Π΅Ρ‚ rogue-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ интСрфСйс для ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ использования, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ -dump, ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΌ Π΅Π³ΠΎ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ-источник, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Web-страницу Π² тСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ распСчатываСтся Π½Π° стандартный Π²Ρ‹Π²ΠΎΠ΄.

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

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹Π±ΠΎΡ€ "ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ" ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ‚ созданию GUI-интСрфСйса, Unix-способом Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π΄Π²Π΅ части согласно ΠΌΠΎΠ΄Π΅Π»ΠΈ "Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ядра ΠΈ интСрфСйса".

Π’ сущности, комбинируя идСю ΠΈΠ· Π³Π»Π°Π²Ρ‹ 7 с описанной Π²Ρ‹ΡˆΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ модСль проСктирования, Π²ΠΎΠ·Π½ΠΈΠΊΡˆΡƒΡŽ Π² Linux ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… соврСмСнных Unix-систСмах с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. Π’ этой ΠΌΠΎΠ΄Π΅Π»ΠΈ GUI-интСрфСйсы ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ просто Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Π½Ρ‹ΠΌΠΈ дополнСниями, Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ пСрспСктивноС Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ для прилоТСния усилий ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

11.7.1. МодСль многопарамСтричСских ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

ΠœΠ½ΠΎΠ³ΠΎΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π΅ΡΠΊΠ°Ρ (polyvalent) ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ рядом Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Ρ… особСнностСй.

1. ΠŸΡ€ΠΈΠΊΠ»Π°Π΄Π½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ находится Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ API-интСрфСйсом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ связан с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠ½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для связи с внСшним ΠΌΠΈΡ€ΠΎΠΌ прСдставляСт собой Ρ‚ΠΎΠ½ΠΊΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π½Π°Π΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ. Или, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, сущСствуСт нСсколько ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ стилями ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ.

2. ΠžΠ΄Π½ΠΈΠΌ ΠΈΠ· Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса являСтся модСль "заклинания", модСль компилятора" ΠΈΠ»ΠΈ CLI-модСль", Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

3. ΠžΠ΄Π½ΠΈΠΌ ΠΈΠ· Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса являСтся GUI-интСрфСйс, Π»ΠΈΠ±ΠΎ связанный нСпосрСдствСнно с основной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, Π»ΠΈΠ±ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ процСсс, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ CLI-интСрфСйсом.

4. ΠžΠ΄Π½ΠΈΠΌ ΠΈΠ· Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса являСтся интСрфСйс сцСнариСв, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· соврСмСнных ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… языков сцСнариСв, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Perl, Python ΠΈΠ»ΠΈ Tcl.

5. НС ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса являСтся rogue-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ интСрфСйс, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° curses(3).

Π’ наибольшСй стСпСни Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² настоящСС врСмя соотвСтствуСт ΠΏΠ°ΠΊΠ΅Ρ‚ GIMP.