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

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

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

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

Π›ΡƒΡ‡ΡˆΠΈΠΌ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹ΠΌ справочником, вСроятно, являСтся ΠΊΠ½ΠΈΠ³Π° "Java In A Nutshell" [19], ΠΎΠ½Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π½Π΅ являСтся Π»ΡƒΡ‡ΡˆΠΈΠΌ ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΌ пособиСм. Π’Π°ΠΊΠΈΠΌ, вСроятно, ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠ½ΠΈΠ³Ρƒ "Thinking in Java" [17]. Бсылки Π½Π° всС ΠΌΠΈΡ€ΠΎΠ²Ρ‹Π΅ Web-сайты, посвящСнныС Java, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с сайта Java Sun <http: //j ava. sun. com>, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ‚Π°ΠΊΠΆΠ΅ прСдставлСна полная HTML-докумСнтация, доступная для бСсплатной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ссылки ΠΏΠΎ Java Ρ‚Π°ΠΊΠΆΠ΅ собраны Π½Π° сайтС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Open Directory Java Page <http://dmoz.org/Computers/Programming/Languages/Java/>.

Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Java доступны для всСх Unix-систСм, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм Microsoft, MacOS ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ.

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ Kaffe, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Java, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ классов ΡΠΎΠ³Π»Π°ΡΡƒΡŽΡ‚ΡΡ с большСй Ρ‡Π°ΡΡ‚ΡŒΡŽ JDK 1.1 ΠΈ частично с JDK 1.2, доступны Π½Π° сайтС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Kaffe chttp: //www. kaffe. org/>.

БущСствуСт Java-интСрфСйс для GCC. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° GCJ способна ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Java-ΠΊΠΎΠ΄ Π»ΠΈΠ±ΠΎ Π² Java-Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄, Π»ΠΈΠ±ΠΎ Π² собствСнный ΠΊΠΎΠ΄, Π° Ρ‚Π°ΠΊΠΆΠ΅ Java-Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ β€” Π² собствСнный ΠΊΠΎΠ΄. Π”Π°Π½Π½Ρ‹ΠΉ компилятор поставляСтся Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ классов, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ JDK 1.2, ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ Java-Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся gij. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ описаны Π½Π° страницС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° GCJ <http://дсс.gnu.org/j ava/>.

БущСствуСт Java IDE-срСда для Emacs, см. сайт ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° JDEE <http://jdee. sunsite.dk/>.

Java прСкрасно пСрСносится ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ языка. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΈΠ·-Π·Π° Π½Π΅ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (особСнно Ρ€Π°Π½Π½ΠΈΡ… вСрсий JDK 1.1, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ JDK 1.2).

ΠΠ°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌ качСством Java являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ язык достаточно ΠΏΠ»ΠΎΡ‚Π½ΠΎ приблизился ΠΊ ΠΈΠ΄Π΅Π°Π»Ρƒ "написанноС ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π²Π΅Π·Π΄Π΅", для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ Π² качСствС нСзависимой ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы срСды. Наибольший нСдостаток Java Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Ρ€ΠΎΠ±Π»Π΅Π½ΠΈΠ΅ Java 1/Java 2 ΠΏΠΎΠ΄Ρ€Ρ‹Π²Π°Π΅Ρ‚ эту Ρ†Π΅Π»ΡŒ, Π³Π»ΡƒΠ±ΠΎΠΊΠΎ разочаровывая Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

14.4.7.1. Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: FreeNet

Freenetβ€” ΠΎΠ΄Π½ΠΎΡ€Π°Π½Π³ΠΎΠ²Ρ‹ΠΉ сСтСвой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Ρ†Π΅Π»ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ Ρ†Π΅Π½Π·ΡƒΡ€Ρƒ ΠΈ ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ наполнСния Web-страниц92. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Freenet прСдвидят нСсколько Π²ΠΈΠ΄ΠΎΠ² использования ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

β€’ ΠΠ΅ΠΏΠΎΠ΄ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠ΅ Ρ†Π΅Π½Π·ΡƒΡ€Π΅ распространСниС спорной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ: Freenet Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ свободу слова, Π±Π΅Π· Ρ†Π΅Π½Π·ΡƒΡ€Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡƒΡŽ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡŽ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ², ΠΎΡ‚ рядовой Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Турналистики Π΄ΠΎ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Π½Ρ‹Ρ… Ρ€Π°Π·ΠΎΠ±Π»Π°Ρ‡Π΅Π½ΠΈΠΉ.

β€’ Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ распространСниС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ наполнСния, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅Π³ΠΎ большой полосы пропускания: Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π·Π΅Ρ€ΠΊΠ°Π»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для распространСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Debian Linux.

β€’ ВсСобщая публикация ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ²: Freenet позволяСт ΠΈΠΌΠ΅Ρ‚ΡŒ Web-сайт Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΆΠ΅Π»Π°ΡŽΡ‰Π΅ΠΌΡƒ Π±Π΅Π· ограничСния пространства ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π΅ΠΊΠ»Π°ΠΌΡ‹, Π΄Π°ΠΆΠ΅ Ссли ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡ‹ΠΉ Web-масгСр Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

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

Π―Π·Ρ‹ΠΊ Java Π±Ρ‹Π» Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, ΠΏΠΎ Π΄Π²ΡƒΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…: Ρ†Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎ ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ совмСстимыС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° самых Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…, поэтому высокая ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ Java являСтся Π³Π»Π°Π²Π½Ρ‹ΠΌ прСимущСством. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…: ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ‚Π°ΠΊΠΎΠ²Π°, Ρ‡Ρ‚ΠΎ Π²Π°ΠΆΠ½Ρ‹ΠΌ являСтся сСтСвой API-интСрфСйс, a Java ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ встроСнный API.

Π―Π·Ρ‹ΠΊ Π‘ являСтся Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ для инфраструктурных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ высокиС трСбования ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½ΠΎ нСдостаток стандартизированного сСтСвого API Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΠ» Π±Ρ‹ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ. Π’Π°ΠΊΠΈΠ΅ ΠΆΠ΅ трудности Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ Π±Ρ‹ ΠΈ Π² случаС использования Π‘++. Π―Π·Ρ‹ΠΊΠΈ Tel, Perl ΠΈΠ»ΠΈ Python ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ пСрСносимости, Π½ΠΎ Ρ†Π΅Π½ΠΎΠΉ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΠΎΡ‚Π΅Ρ€ΡŒ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Emacs Lisp Π±Ρ‹Π» Π±Ρ‹ ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ.

14.4.8. Emacs Lisp

Emacs Lisp являСтся языком сцСнариСв, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для программирования Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Emacs. ΠŸΠ΅Ρ€Π²Π°Ρ общСдоступная вСрсия Π΄Π°Π½Π½ΠΎΠ³ΠΎ языка появилась Π² 1984 Π³ΠΎΠ΄Ρƒ.

Emacs Lisp Π½Π΅ являСтся ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ языком, ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ рассмотрСнныС Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ языки. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ тСорСтичСски достаточно ΠΌΠΎΡ‰Π½Ρ‹ΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² качСствС ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ, Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ ΠΎΠ½ примСнялся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для написания ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для самого Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Emacs. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Emacs Lisp Π½Π΅ сообщаСтся с Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ обСспСчСниСм Ρ‚Π°ΠΊ ΠΆΠ΅ свободно, ΠΊΠ°ΠΊ соврСмСнныС языки сцСнариСв.

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

Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π‘-компилятор ΠΈ Π»ΠΈΠ½ΠΊΠ΅Ρ€, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° make(1), систСмы контроля вСрсий ΠΈ символичСскиС ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΈ; Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Emacs Lisp рассматриваСтся Π² Π³Π»Π°Π²Π΅ 15.

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

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

Emacs Lisp β€” ΠΏΠΎ сути Lisp. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ автоматичСски управляСт ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ изящСн, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ, Ρ‡Π΅ΠΌ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… языков, ΠΈΠ»ΠΈ, Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π½Π΅Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… языков. Emacs Lisp Π½Π° этом ΡƒΡ€ΠΎΠ²Π½Π΅ способСн ΡΠΎΠΏΠ΅Ρ€Π½ΠΈΡ‡Π°Ρ‚ΡŒ с Java ΠΈΠ»ΠΈ Python ΠΈ прСвосходит языки Π‘ ΠΈΠ»ΠΈ Π‘++, Perl, shell ΠΈΠ»ΠΈ Tel. НСизмСнная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Lisp, которая Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² нСдостаткС стандартизированной ОБ-привязки для пСрСносимости, Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ядром Emacs, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π° самом Π΄Π΅Π»Π΅ являСтся ОБ-привязкой.

Другая нСпрСодолимая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°β€” Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ рСсурсов, Π½Π° соврСмСнных ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… Π±ΠΎΠ»Π΅Π΅ Π½Π΅ являСтся Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. Π Π°Π½Π΅Π΅ Π±Ρ‹Π»ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎ распространСны Π½Π°ΡΠΌΠ΅ΡˆΠ»ΠΈΠ²Ρ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ названия, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ "Emacs Makes A Computer Slow" (Emacs Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€) ΠΈ "Eventually Munches All Computer Storage" (Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ всю ΠΏΠ°ΠΌΡΡ‚ΡŒ) (фактичСски Π² дистрибутив Emacs Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ список Ρ‚Π°ΠΊΠΈΡ… Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΊ). Но Π² настоящСС врСмя ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Web-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹) ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ слоТными, Ρ‡Π΅ΠΌ Emacs, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² сравнСнии с Π½ΠΈΠΌΠΈ каТСтся довольно ΡƒΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹ΠΌ.