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

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

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

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

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, ΠΎΡ‡ΠΈΡ‰Π΅Π½Π½Ρ‹Ρ… ΠΈ освобоТдСнных ΠΎΡ‚ историчСского Π³Ρ€ΡƒΠ·Π°, β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ слоТности зависит ΠΎΡ‚ Ρ†Π΅Π»Π΅ΠΉ, опрСдСляСмых Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ, Π° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ распрСдСлСния контСкста срСди всСх инструмСнтов, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ тСкста ΠΈ связанных с Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, являСтся вСсьма Ρ†Π΅Π½Π½ΠΎΠΉ.

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). Лаборатория AI 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-ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ (структурная Ρ‡Π°ΡΡ‚ΡŒ), сколько с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² прСдставляСт собой бСспорядочноС "Π½Π°Π³Ρ€ΠΎΠΌΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ историчСских наростов". Однако ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π½Π΅Π±Ρ€Π΅Ρ‡ΡŒ Π΄Π°Π½Π½Ρ‹ΠΌ источником слоТности, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρƒ.