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

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

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

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² Unix Π΅ΡΡ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ инструмСнты ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½, ΠΎΠ½ΠΈ Π½Π΅ связаны с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (Integrated Development Environment β€” IDE). Π˜Ρ… поиск ΠΈ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ Π² ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠΉ потрСбностям Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, всСгда Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… усилий.

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

ИспользованиС IDE ΠΈΠΌΠ΅Π΅Ρ‚ смысл для одноязыкового программирования Π² слабо оснащСнной инструмСнтами срСдС. Если Ρ€Π°Π±ΠΎΡ‚Π° программиста ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° ΠΎΡ‚Ρ‚Π°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΊΠΎΠ΄Π° Π½Π° Π‘ ΠΈΠ»ΠΈ Π‘++, Ρ‚ΠΎ IDE-срСды вСсьма цСлСсообразны. Однако Π² Unix Π²Ρ‹Π±ΠΎΡ€ языков ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Π΅Π΅, Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΊΠΎΠ΄Π°, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… стандартных ΠΈ нСстандартных инструмСнтов являСтся общСпринятой.

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

Π’ Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ тактичСскиС ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² Unix β€” созданиС ΠΊΠΎΠ΄Π°, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΡ‚Π»Π°Π΄ΠΊΠ°, Π° Ρ‚Π°ΠΊΠΆΠ΅ автоматизация большого количСства ΠΌΠΎΠ½ΠΎΡ‚ΠΎΠ½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹, связанной с этими Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ, с Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠ³ ΡΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… аспСктах. Как ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΏΡ€ΠΈ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° основноС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π² большСй стСпСни ΡƒΠ΄Π΅Π»Π΅Π½ΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π΅, Ρ‡Π΅ΠΌ ΠΏΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΌ инструкциям. Если ΠΆΠ΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ интСрСсуСтся ΠΏΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΌΠΈ дСталями, Ρ‚ΠΎ рСкомСндуСтся ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΊΠ½ΠΈΠ³Π΅ "Programming with GNU Software" [50], Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ описываСтся Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ инструмСнтов, рассмотрСнных Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅.

МногиС ΠΈΠ· описываСмых инструмСнтов Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ программист Π² состоянии Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, хотя ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΠΈ с большим количСством ошибок. ΠžΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹Π΅ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π½Π° Ρ†ΠΈΠΊΠ» обучСния сполна окупятся ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΠΎΠ»Π΅Π΅ эффСктивно ΠΈ ΡƒΠ΄Π΅Π»ΡΡ‚ΡŒ мСньшС внимания Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ дСталям ΠΈ большС конструкции Π² Ρ†Π΅Π»ΠΎΠΌ.

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

15.2. Π’Ρ‹Π±ΠΎΡ€ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ ΠΈ самым основным инструмСнтом Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ являСтся тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, подходящий для ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

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

Π’ качСствС инструмСнтов для ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² сфСрС Unix-программирования ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎΠΌΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‚ Π΄Π²Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… доступСн Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ, нСсомнСнно, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² любой соврСмСнной Unix-систСмС. Π Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°Ρ… vi ΠΈ Emacs. Они Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈΡΡŒ Π² Π³Π»Π°Π²Π΅ 13 ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Π΅ΠΌΡ‹ цСлСсообразного Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.

Как ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ Π² Π³Π»Π°Π²Π΅ 13, Π΄Π°Π½Π½Ρ‹Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ Ρ‚Π΅Π½Π΄Π΅Π½Ρ†ΠΈΠΈ Ρ€Π΅Π·ΠΊΠΎ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΡΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… философий проСктирования, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΎΠ±Π° ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ популярными срСди ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ части ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚ΠΈΠ½Π³Π΅Π½Ρ‚Π°. ΠžΠΏΡ€ΠΎΡΡ‹ Unix- программистов Π½Π΅ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ 50/50 ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ доля всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² минимальна.

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

15.2.1. ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ свСдСния ΠΎ vi

НазваниС vi β€” Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° ΠΎΡ‚ "visual editor" (Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€), произносится ΠΊΠ°ΠΊ "Π²ΠΈ Π°ΠΉ" (Π° Π½Π΅ "Π²Π°ΠΉ" ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π½Π΅ "ΡˆΠ΅ΡΡ‚ΡŒ").

vi Π½Π΅ Π±Ρ‹Π» самым Ρ€Π°Π½Π½ΠΈΠΌ экранным Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ. Пальма пСрвСнства Π² этой области ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Rand editor (re), которая Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Π² Version 6 Unix Π² 1970-Ρ… Π³ΠΎΠ΄Π°Ρ…. Однако vi β€” самый Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡƒΡŽΡ‰ΠΈΠΉ экранный Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, созданный для Unix, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎ сих ΠΏΠΎΡ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈ являСтся "свящСнной" ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΈ Unix.

ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ вСрсия vi Π±Ρ‹Π»Π° Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π² самых Ρ€Π°Π½Π½ΠΈΡ… дистрибутивах BSD начиная с 1976 Π³ΠΎΠ΄Π°; Π² настоящСС врСмя ΠΎΠ½Π° устарСла. Π”Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Π·Π°ΠΌΠ΅Π½ΠΈΠ» Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ "new vi", ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ поставлялся с 4.4BSD ΠΈ имССтся Π² соврСмСнных Π΅Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ BSD/OS, FreeBSD ΠΈ NetBSD. БущСствуСт нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΌΠΈ функциями, особСнно vim, vile, elvis ΠΈ xvi, срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… vim, вСроятно, являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярным ΠΈ поставляСтся Π² составС ΠΌΠ½ΠΎΠ³ΠΈΡ… Linux-систСм. ВсС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ довольно ΠΏΠΎΡ…ΠΎΠΆΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ основной Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΉ со Π²Ρ€Π΅ΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ вСрсии vi.

ВСрсии vi доступны для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм Windows ΠΈ MacOS.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π²Π²ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠ½ΠΈΠ³ ΠΏΠΎ Unix Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя Π³Π»Π°Π²Ρƒ, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΡƒΡŽ основноС использованиС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° vi. ΠžΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы ΠΏΠΎ использованию vi доступны Π½Π° сайтС Editor FAQ/vi <http://www.faqs.org/faqs/editot-faq/vi/>. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΏΠΈΠΉ Π΄Π°Π½Π½ΠΎΠΉ страницы ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ поиска Π² Web страниц, Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°Ρ… ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ слова "vi" ΠΈ "FAQ".

15.2.2. ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ свСдСния ΠΎ Emacs

Emacs ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ "EDiting MACroS" (произносится "ΠΈ-макс"). Он ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π» написан Π² ΠΊΠΎΠ½Ρ†Π΅ 1970-Ρ… Π³ΠΎΠ΄ΠΎΠ² ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ макросов Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ назывался Π’Π•Π‘Πž, послС Ρ‡Π΅Π³ΠΎ пСрСписывался нСсколько Ρ€Π°Π· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами. Π—Π°Π±Π°Π²Π½ΠΎ, Ρ‡Ρ‚ΠΎ соврСмСнныС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Emacs Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя Ρ€Π΅ΠΆΠΈΠΌ эмуляции TECO.

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

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠΉ вСрсиСй Emacs, повсСмСстно доступной Π½Π° соврСмСнных Unix-систСмах, являСтся GNU Emacs; ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ запускаСтся ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ emacs Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Unix-ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ докумСнтация ΠΏΠΎ GNU Emacs доступны Π½Π° сайтС Π°Ρ€Ρ…ΠΈΠ²Π° Π€ΠΎΠ½Π΄Π° свободного ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния <ftp://gnu.org/pub/gnu>.

БущСствуСт Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся XEmacs. Он ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹ΠΉ X-интСрфСйс, Π½ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ‚Π΅ ΠΆΠ΅ возмоТности (унаслСдованныС ΠΎΡ‚ Emacs 19). Π”ΠΎΠΌΠ°ΡˆΠ½ΡΡ страница XEmacs: <http://www.xemacs.org>. Emacs (ΠΈ Emacs Lisp) повсСмСстно доступны Π² соврСмСнных Unix-систСмах. Он пСрСнСсСн Π½Π° MS-DOS (Π³Π΄Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ слабо), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы Windows 95 ΠΈ NT (Π³Π΄Π΅, ΠΊΠ°ΠΊ говорят, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ достаточно Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ).

Emacs Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя собствСнноС ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΡƒΡ‡Π΅Π±Π½ΠΎΠ΅ руководство ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ ΠΏΠΎ запуску Π΄Π°Π½Π½Ρ‹Ρ… рСсурсов ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° стандартном экранС запуска Emacs. Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ являСтся ΠΊΠ½ΠΈΠ³Π° "Learning GNU Emacs" [10].

ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Unix-вСрсиях Netscape/Mozilla, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² тСкстовых ΠΎΠΊΠ½Π°Ρ… Internet Explorer (Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅), скопированы со стандартных привязок для основных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ рСдактирования тСкста. Π”Π°Π½Π½Ρ‹Π΅ привязки β€” блиТайшиС элСмСнты ΠΊ кроссплатформСнному стандарту ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ².