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

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

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

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

14.4. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ языков программирования

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

14.4.1. Π‘

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

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

Иногда прСимущСство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ достигаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΊΠΈΡ… ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠ°ΠΊ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ синтаксичСских Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈΠ»ΠΈ GUI-построитСли, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠΎΠ΄ Π‘, Ρ‚Π°ΠΊ Π²Π΅Π»ΠΈΠΊΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π°Π²Π΄Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π‘ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ части нСбольшого прилоТСния.

И ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π‘ Π΄ΠΎΠΊΠ°Π·Π°Π» свою Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΠΎΡΡ‚ΡŒ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² всСх Π΅Π³ΠΎ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ². ΠŸΡ€ΠΈ достаточно Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΌ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· рассматриваСмых здСсь языков обнаруТиваСтся ядро, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ΅ Π½Π° простом, пСрСносимом Π‘. Π­Ρ‚ΠΈ языки унаслСдовали ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· прСимущСств Π‘.

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

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° вСсомая ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ слСдуСт ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Π‘ (Π΄Π°ΠΆΠ΅ Ссли трСбования ΠΊ языку программирования Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ΡΡ языком Π±ΠΎΠ»Π΅Π΅ высокого уровня), состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ это способствуСт Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΡŽ ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΡ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. Π›ΡƒΡ‡ΡˆΠΈΠΌ справочником ΠΈ ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΌ пособиСм ΠΏΠΎ Π‘ для программистов являСтся ΠΊΠ½ΠΈΠ³Π° "The Π‘ Programming Language" [42].

ΠŸΠ΅Ρ€Π΅Π½ΠΎΡ C-ΠΊΠΎΠ΄Π° ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм Unix Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ прост, Π½ΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… областях, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ сигналы ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ процСссами, ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ слоТности. НСкоторыС ΠΈΠ· этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Π³Π»Π°Π²Π΅ 17. Π Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ C-привязок Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах, нСсомнСнно, ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ пСрСносимости Π‘, хотя опСрационная систСма Windows NT, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, тСорСтичСски Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ANSI/POSIX-совмСстимый стандарт Π‘ API.

ВысококачСствСнныС компиляторы Π‘ доступны Π² Internet Π² Π²ΠΈΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ; Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ извСстным ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎ примСняСмым являСтся компилятор Π‘ Π€ΠΎΠ½Π΄Π° Π‘Π²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния (Free Software Foundation β€” FSF), входящий Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ компиляторов GNU (GNU Compiler Collection β€” GCC). Π”Π°Π½Π½Ρ‹ΠΉ компилятор стал Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ для всСх Unix-систСм с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… систСм с Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. ВСрсии GCC доступны Π΄Π°ΠΆΠ΅ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм сСмСйства Microsoft. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ GCC доступны Π½Π° сайтС FSF <ftp://ftp.gnu.org/pub/gnu>.

Подводя ΠΈΡ‚ΠΎΠ³, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ прСимущСством Π‘ являСтся ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ использования рСсурсов ΠΈ Π±Π»ΠΈΠ·ΠΎΡΡ‚ΡŒ ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ, Π° ΠΊ нСдостаткам слСдуСт отнСсти Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ программисту, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π‘, приходится ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ управлСния рСсурсами.

14.4.1.1. Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: fetchmail

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

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

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

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

fetchmail ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Python, хотя ΠΈ со Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΡ‚Π΅Ρ€Π΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π Π°Π·ΠΌΠ΅Ρ€ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ структуры Π΄Π°Π½Π½Ρ‹Ρ… fetchmail ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Π±Ρ‹ shell ΠΈ Tcl ΠΈ строго ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ Π±Ρ‹ Π½Π° Π½Π΅Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ использования Perl. ΠŸΡ€ΠΈ этом прСдмСтная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ находится Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ СстСствСнных возмоТностСй Emacs Lisp. РСализация Π½Π° языкС Java Π½Π΅ Π±Ρ‹Π»Π° Π±Ρ‹ лишСна смысла, Π½ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ ΠΈ ΡƒΠ±ΠΎΡ€ΠΊΠ° мусора Π΄Π°Π»ΠΈ Π±Ρ‹ нСбольшой Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ Π² спСцифичСских ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… fetchmail ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ‚Π΅ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ Ρ€Π΅ΡˆΠ°Π»ΠΈΡΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π‘. Π‘++ Ρ‚Π°ΠΊ ΠΆΠ΅ Π½Π΅ смог Π±Ρ‹ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ fetchmail.

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

Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€ fetchmail, Π»ΠΈΡˆΠ΅Π½Π½Ρ‹ΠΉ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π‘, написан Π½Π° Python; ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ рассматриваСтся Π΄Π°Π»Π΅Π΅.

14.4.2. Π‘++

Когда Π² сСрСдинС 1980-Ρ… Π³ΠΎΠ΄ΠΎΠ² Π‘++ Π±Ρ‹Π» Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ Π² свСт, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ- ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ языки программирования Π±Ρ‹Π»ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎ Ρ€Π°Π·Ρ€Π΅ΠΊΠ»Π°ΠΌΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ Ρ€Π°Π΄ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ срСдство ΠΏΡ€ΠΎΡ‚ΠΈΠ² слоТности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ- ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ возмоТности Π‘++ казались бСсспорным прСимущСством Π½Π°Π΄ Π‘, ΠΈ ΠΏΡ€ΠΈΠ²Π΅Ρ€ΠΆΠ΅Π½Ρ†Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Π‘++ быстро сдСлаСт своСго ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠ° ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ.

Π­Ρ‚ΠΎΠ³ΠΎ Π½Π΅ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ. ΠžΡ‚Ρ‡Π°ΡΡ‚ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² самом Π‘++; Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости с Π‘ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ компромиссам Π² конструкции. ΠšΡ€ΠΎΠΌΠ΅ всСго ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, Π΄Π°Π½Π½ΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ помСшало пСрСвСсти Π‘++ Π½Π° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ автоматичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ динамичСской ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΡΠ°ΠΌΡƒΡŽ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π‘. ПозТС "Π³ΠΎΠ½ΠΊΠ° Π²ΠΎΠΎΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ" ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ компиляторов, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ сдСрТивала слабая ΠΈ прСТдСврСмСнная ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° стандартизации, ΠΏΡ€ΠΈΠ²Π΅Π»Π° ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π‘++ стал "Π²ΠΈΡ‚ΠΈΠ΅Π²Π°Ρ‚Ρ‹ΠΌ" ΠΈ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ слоТным языком.

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