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

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

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

13.3.3. ЯвляСтся Π»ΠΈ Emacs Π΄ΠΎΠ²ΠΎΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΡ‚ΠΈΠ² Unix-Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΈ?

Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ΅ для Unix Π²ΠΈΠ΄Π΅Π½ΠΈΠ΅ ΠΌΠΈΡ€Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ привязано ΠΊ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΠ·ΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΌ Π½Π΅ слишком Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ спСциализированного ΠΊΠΎΠ΄Π° vi ΠΈ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Emacs.

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

Π”ΡƒΠ³ ΠœΠ°ΠΊΠΈΠ»Ρ€ΠΎΠΉ.

Нападки ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ vi Π½Π° Emacs, наряду с Π½Π°ΠΏΠ°Π΄ΠΊΠ°ΠΌΠΈ Π½Π° vi со стороны всС Π΅Ρ‰Π΅ привязанных ΠΊ ed Ρ€Π°Π΄ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… прСдставитСлСй старой ΡˆΠΊΠΎΠ»Ρ‹, β€” лишь эпизоды Π² ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌ спорС, противостоянии изобилия богатства ΠΈ Π΄ΠΎΠ±Ρ€ΠΎΠ΄Π΅Ρ‚Π΅Π»Π΅ΠΉ аскСтизма. Π”Π°Π½Π½Ρ‹ΠΉ спор связан с ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ стилями Unix старой ΠΈ Π½ΠΎΠ²ΠΎΠΉ школ.

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

Иной Π±Ρ‹Π»Π° Unix старой ΡˆΠΊΠΎΠ»Ρ‹. Π’ Bell Labs Π±Ρ‹Π»ΠΈ достаточныС рСсурсы, поэтому КСн Π½Π΅ Π±Ρ‹Π» ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ трСбованиями срочного создания ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°. Вспомним ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΈΠ΅ Паскаля Π·Π° написаниС Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ письма Π²Π²ΠΈΠ΄Ρƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, достаточного для написания ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ³ΠΎ.

Π”ΡƒΠ³ ΠœΠ°ΠΊΠΈΠ»Ρ€ΠΎΠΉ.

Π‘ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ Unix-программисты ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ изящноС прСвозносится Π½Π°Π΄ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½Ρ‹ΠΌ.

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, массивная конструкция Emacs появилась Π½Π΅ Π² Unix, Π° Π±Ρ‹Π»Π° создана Π ΠΈΡ‡Π°Ρ€Π΄ΠΎΠΌ М. Π‘Ρ‚ΠΎΠ»Π»ΠΌΠ΅Π½ΠΎΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ вСсьма ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰Π΅ΠΉΡΡ ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Ρ‹, ΠΏΡ€ΠΎΡ†Π²Π΅Ρ‚Π°ΡŽΡ‰Π΅ΠΉ Π² 1970-Ρ… Π³ΠΎΠ΄Π°Ρ… Π² Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΈΠΈ искусствСнного ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚Π° (Artificial Intelligence Lab) ΠœΠ°ΡΡΠ°Ρ‡ΡƒΡΠ΅Ρ‚ΡΠΊΠΎΠ³ΠΎ тСхнологичСского института (MIT). Лаборатория Al MIT Π±Ρ‹Π»Π° ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π±ΠΎΠ³Π°Ρ‚Π΅ΠΉΡˆΠΈΡ… ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΉ Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… Π½Π°ΡƒΠΊ Π›ΡŽΠ΄ΠΈ ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ рСсурсы ΠΊΠ°ΠΊ Π΄Π΅ΡˆΠ΅Π²Ρ‹Π΅, прСдвосхищая ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, которая Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… пятнадцати Π»Π΅Ρ‚ Π±Ρ‹Π»Π° Π±Ρ‹ нСТизнСспособной Π² ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС. Π‘Ρ‚ΠΎΠ»Π»ΠΌΠ΅Π½ Π±Ρ‹Π» Ρ€Π°Π²Π½ΠΎΠ΄ΡƒΡˆΠ΅Π½ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΠ·ΠΌΡƒ, ΠΎΠ½ искал ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΈ простор для своСго ΠΊΠΎΠ΄Π°.

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

Π’Π°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΈ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠ°ΠΊ Emacs, ставят Unix-программистов Π² Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒΡΡ с этим ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠΌ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠΎΠ΄ΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΠ·ΠΌ старой ΡˆΠΊΠΎΠ»Ρ‹ Unix Ρ†Π΅Π½Π΅Π½ ΠΊΠ°ΠΊ Π½Π°ΡƒΠΊΠ°, Π½ΠΎ Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΡ€Π°ΠΉΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ³ΠΌΠ°Ρ‚ΠΈΠ·ΠΌΠ°.

БущСствуСт Π΄Π²Π° ΠΏΡƒΡ‚ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Один β€” ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ большая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ являСтся большой. Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ состоит Π² Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ способа Π°Π½Π°Π»ΠΈΠ·Π° слоТности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ являСтся Π΄ΠΎΠ³ΠΌΠΎΠΉ.

ΠœΡ‹ΡΠ»Π΅Π½Π½Ρ‹ΠΉ экспСримСнт с Π·Π°ΠΌΠ΅Π½ΠΎΠΉ Lisp ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎ-Π½ΠΎΠ²ΠΎΠΌΡƒ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° частоС ΠΎΠ±Π²ΠΈΠ½Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Emacs Ρ€Π°Π·Π΄ΡƒΡ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΡΡ‚ΠΎΠ»ΡŒ Π²Π΅Π»ΠΈΠΊΠ°. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, это Ρ‚Π°ΠΊ ΠΆΠ΅ нСсправСдливо, ΠΊΠ°ΠΊ заявлСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» /bin/sh Ρ€Π°Π·Π΄ΡƒΡ‚, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Π΅Π»ΠΈΠΊΠ° коллСкция всСх сцСнариСв Π² систСмС. Emacs ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной ΠΈΠ»ΠΈ конструкциСй Π²ΠΎΠΊΡ€ΡƒΠ³ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ…, Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… инструмСнтов (Ρ€Π΅ΠΆΠΈΠΌΠΎΠ²), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ написаны Π½Π° Lisp.

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

Π­Ρ‚ΠΎΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ вСсьма ΡƒΠ΄ΠΎΠ±Π΅Π½. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ конструкциям, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ срСдства, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ (Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ большиС) ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² GNOME ΠΈ KDE. Π§Ρ‚ΠΎ-Ρ‚ΠΎ Π² Π½Π΅ΠΌ притягиваСт. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅ слСдуСт Π΄ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ "пСрспСктивС", ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰Π΅ΠΉ ΡΡ‚ΠΎΠ»ΡŒ искусно Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ всС сомнСния. Она ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ Π½Π΅ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ крайностСй отрицания ΠΈΠ»ΠΈ принятия Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Emacs являСтся ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈ большой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ β€” это ΠΈ Π΅ΡΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΠ·ΠΌΠ° Unix. Π§Ρ‚ΠΎ ΠΊΡ€ΠΎΠΌΠ΅ этого ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΈΠ· Π²ΠΈΠ΄ΠΎΠ² слоТности? И сущСствуСт Π»ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΡƒΡ€ΠΎΠΊΠΈ сводятся ΠΊ ΠΎΠ±Ρ‰ΠΈΠΌ Π·Π°ΠΊΠΎΠ½Π°ΠΌ?

13.4. НСобходимый Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Для Unix-ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΠΈ использования Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ…, Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… инструмСнтов Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Π° скрытая Π΄Π²ΠΎΠΉΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ; Ρ„ΠΎΠ½ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ нСявный, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Unix-ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π½Π΅ Π·Π°ΠΌΠ΅Ρ‡Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Ρ‡Π°ΡŽΡ‚ Π½Π΅ большС, Ρ‡Π΅ΠΌ Ρ€Ρ‹Π±Π° Π·Π°ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ Π²ΠΎΠ΄Ρƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ»Π°Π²Π°Π΅Ρ‚. Π­Ρ‚ΠΈΠΌ Ρ„ΠΎΠ½ΠΎΠΌ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ структуры ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (frameworks).

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

Π’ Unix старой ΡˆΠΊΠΎΠ»Ρ‹ СдинствСнной ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ структурой Π±Ρ‹Π»ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρ‹, ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ shell. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ»Π°ΡΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сцСнариСв, Π° ΠΎΠ±Ρ‰ΠΈΠΌ контСкстом Π±Ρ‹Π»Π° (ΠΏΠΎ сущСству) сама файловая систСма. Однако Π½Π° этом Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π½Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΎΡΡŒ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Emacs объСдинила Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму с мноТСством тСкстовых Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссов, ΠΏΠΎΡ‡Ρ‚ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ оставляя структуру shell ΠΏΠΎΠ·Π°Π΄ΠΈ. Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Wily Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ использованиС Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссов, Π½ΠΎ содСрТит Π² сСбС структуру shell. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Π΅ срСды ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ GUI-интСрфСйсам структуру для ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ Ρ‚ΠΎΠΆΠ΅ ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ структуру shell ΠΏΠΎΠ·Π°Π΄ΠΈ. КаТдая ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ структура ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ свои ΡΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ слабыС стороны. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ стали "ΠΆΠΈΠ»ΠΈΡ‰Π°ΠΌΠΈ" для мноТСства ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… срСдств β€” shell для сцСнариСв, Emacs для Lisp-Ρ€Π΅ΠΆΠΈΠΌΠΎΠ², Π° Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Π΅ срСды для Π³Ρ€ΡƒΠΏΠΏ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² GUI ΠΊΠ°ΠΊ посрСдством Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ "ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ ΠΈ ΠΎΡ‚ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ", Ρ‚Π°ΠΊ ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π±ΠΎΠ»Π΅Π΅ "эзотСричСских" способов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ Π±Ρ€ΠΎΠΊΠ΅Ρ€Ρ‹.

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

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