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

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

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

Массивная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, поставляСмая с Emacs, Ρ‚Π°ΠΊΠΆΠ΅ являСтся случайной. Π‘ΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сущСствСнной, Π½ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΈΡ… Π½Π°Π±ΠΎΡ€, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉΡΡ Π² настоящСС врСмя, β€” ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ истории ΠΈ случая. ВсС ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹, Π° Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ остался Π±Ρ‹ ΡƒΠ·Π½Π°Π²Π°Π΅ΠΌΡ‹ΠΉ Emacs.

Однако взаимодСйствиС с подпроцСссами являСтся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ свойством. Π‘Π΅Π· Π½Π΅Π³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΡ‹ Emacs Π±Ρ‹Π»ΠΈ Π±Ρ‹ Π½Π΅ способны Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡƒΡŽ IDE-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС интСрфСйсной части для ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… срСдств.

ΠŸΠΎΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ являСтся ΠΎΠΏΡ‹Ρ‚ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… стандартныС привязки клавиш ΠΈ внСшний Π²ΠΈΠ΄ Emacs Π±Π΅Π· эмуляции Π΅Π³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΠΈ. БущСствовало нСсколько Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ»ΠΎΠ½ΠΎΠ², Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ извСстными ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ, вСроятно, MicroEmacsnpico, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ распространСния.

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

Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Wily прСдставляСт собой ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½ΡƒΡŽ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Emacs. Как Π² случаС с Sam, ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ слоТности Π² Wily Π½ΠΈΠ·ΠΎΠΊ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΎ, Π½ΠΎ эффСктивно описан Π½Π° ΠΎΠ΄Π½ΠΎΠΉ страницС.

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

ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, которая Π² Emacs рСализуСтся Π² Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… Lisp-Ρ€Π°ΡΡˆΠΈ-Ρ€Π΅Π½ΠΈΠΉ, Π² Wily распрСдСлСна ΠΏΠΎ спСциализированным симбионтам, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ совмСстимым со ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ интСрфСйсом сообщСний Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ симбионты ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ написаны Π½Π° любом Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ языкС. Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ этому, симбионты (Π²Π²ΠΈΠ΄Ρƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π²Π½Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°) Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ нСблагоприятно ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π° ΠΈΠ»ΠΈ Π½Π° ядро Wily (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² Emacs). НСдостатком являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ сам Wily Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ способСн нСпосрСдствСнно Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ срСдствами Unix, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΊΠ°ΠΊ подпроцСссы.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, распрСдСлСнныС сцСнарии wily Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ срСдством, ΠΊΠ°ΠΊ встроСнный язык сцСнариСв Π² Emacs. БоотвСтствСнно, Ρ€Π°ΠΌΠΊΠΈ тСхничСских Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Wily Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ суТСны. Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°, Π² частности, ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΊΠ°ΠΊΠΎΠΉ Π±Ρ‹ Ρ‚ΠΎ Π½ΠΈ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ подсвСчивания синтаксиса ΠΈΠ»ΠΈ рСдактирования Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ³ΠΎ тСкстового Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, ΠΈ Π½ΠΈ Wily, Π½ΠΈ Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ Π² Plan 9, acme, Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ВсС Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ заставляСт Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅Ρ‚ΠΊΠΎ ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ вопрос Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Ρ‹: ΠΊΠΎΠ³Π΄Π° большиС Ρ†Π΅Π»ΠΈ ΠΎΠΏΡ€Π°Π²Π΄Ρ‹Π²Π°ΡŽΡ‚ созданиС большой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹?

13.3.2. ΠšΠΎΠΌΠΏΡ€ΠΎΠΌΠΈΡΡΡ‹ Π½Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚

БопоставлСниС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² Sam ΠΈ vi явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Ссли Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ компромисса ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΠ·ΠΌΠΎΠΌ ed ΠΈ Π²ΡΠ΅ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠ»Π½ΠΎΡ‚ΠΎΠΉ Emacs Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ успСха. Π’Π°ΠΊΠΈΠ΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΡΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ vi, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΡƒΡ‚Ρ€Π°Ρ‚ΠΈΠ» прСимущСства минималистской конструкции, Π½ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Π» достоинств Emacs. Напротив, vi ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² Π»ΠΎΠ²ΡƒΡˆΠΊΡƒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎΠΉ Π»ΠΎΠ²ΡƒΡˆΠΊΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°Π» Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€

Wily, Π½ΠΎ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒΡΡ с ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒΡŽ Emacs ΠΈ для выполнСния ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ нСстандартного интСрфСйса сопряТСния ΠΎΡ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π΅Π³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… симбионтов.

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, сущСствуСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Ρ‚ΠΎΠ»ΠΊΠ°ΡŽΡ‰Π°Ρ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹ Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ увСличСния слоТности. Π’ случаС с vi Π΄Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ слоТно: это стрСмлСниС ΠΊ удобству. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ тСорСтичСски Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½Ρ‹ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ed, вСсьма Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ (ΠΊΡ€ΠΎΠΌΠ΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, самого КСна Вомпсона) ΠΎΡ‚ΠΊΠ°Π·Π°Π»ΠΈΡΡŒ Π±Ρ‹ ΠΎΡ‚ экранного рСдактирования Π² стрСмлСнии ΠΏΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π΄ΡƒΠ²Π°Π½ΠΈΡŽ ΠΊΠΎΠ΄Π°.

Π’ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌ смыслС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-посрСдники ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΈ внСшним ΠΌΠΈΡ€ΠΎΠΌ особСнно Π±ΠΎΠ³Π°Ρ‚Ρ‹ функциями. Π’ число Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ входят Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹, Π½ΠΎ ΠΈ Web-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для чтСния ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΈ новостСй, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ВсС ΠΎΠ½ΠΈ стрСмятся Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² соотвСтствии с Π·Π°ΠΊΠΎΠ½ΠΎΠΌ ΠΎΡ…Π²Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (Law of Software Envelopment), извСстным Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ Π·Π°ΠΊΠΎΠ½ Завински, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ гласит: "КаТдая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пытаСтся Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ смоТСт Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎΡ‡Ρ‚Ρƒ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π°ΠΊΠΎΠΉ стСпСни, Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚Π΅ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚".

Π”ΠΆΠ΅ΠΉΠΌΠΈ Завински (Jamie Zawinski), Π°Π²Ρ‚ΠΎΡ€ этого утвСрТдСния (ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π΅Π΄ΡƒΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Web-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² Netscape ΠΈ Mozilla), Π² Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌ смыслС ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ склонны ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π² Π½Π΅Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ "ΡˆΠ²Π΅ΠΉΡ†Π°Ρ€ΡΠΊΠΎΠΌΡƒ армСйскому Π½ΠΎΠΆΡƒ". ΠšΠΎΠΌΠΌΠ΅Ρ€Ρ‡Π΅ΡΠΊΠΈΠΉ успСх ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ…, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΌΠΈΡ€Π° Unix часто ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ Π΄Π°Π½Π½ΡƒΡŽ Ρ‚Π΅ΠΎΡ€ΠΈΡŽ ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠ²Π΅Π½Π½ΠΎ ставит ΠΏΠΎΠ΄ сомнСниС Unix-Ρ„ΠΈΠ»ΠΎΡΠΎΡ„ΠΈΡŽ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΠ·ΠΌΠ°.

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

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

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

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ спСцификС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², Sam ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ конструкция vi Π½Π΅ Π²Π΅Ρ€Π½Π°. Wily β€” смСлая ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΊΡ€Π°ΠΉΠ½ΠΎΡΡ‚ΡŒ Emacs, которая Π½Π΅ достигла Ρ†Π΅Π»ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Wily Π½Π΅ способСн ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ подсвСтку синтаксиса. Однако Wily ΠΈΠ»ΠΈ нСкоторая рСализация конструктивных ΠΈΠ΄Π΅ΠΉ Emacs, ΠΎΡ‡ΠΈΡ‰Π΅Π½Π½Ρ‹Ρ… ΠΈ освобоТдСнных ΠΎΡ‚ историчСского Π³Ρ€ΡƒΠ·Π°, β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ слоТности зависит ΠΎΡ‚ Ρ†Π΅Π»Π΅ΠΉ, опрСдСляСмых Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ, Π° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ распрСдСлСния контСкста срСди всСх инструмСнтов, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ тСкста ΠΈ связанных с Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, являСтся вСсьма Ρ†Π΅Π½Π½ΠΎΠΉ.