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

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

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

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

ΠŸΠ΅Ρ€Π΅Π½ΠΎΡ Π‘-ΠΊΠΎΠ΄Π° ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм Unix Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ прост, Π½ΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… областях, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ сигналы ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ процСссами, ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ слоТности. НСкоторыС ΠΈΠ· этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Π³Π»Π°Π²Π΅ 17. Π Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π‘-привязок Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах, нСсомнСнно, ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ пСрСносимости Π‘, хотя опСрационная систСма 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 такая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° классичСски Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π‘-ΠΊΠΎΠ΄Π°, Π²Ρ‹Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… исходный ΠΊΠΎΠ΄ для лСксичСского ΠΈ грамматичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΈΠ· Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… спСцификаций. БущСствованиС уасс ΠΈ lex Π±Ρ‹Π»ΠΎ Π΄ΠΎΠ²ΠΎΠ΄ΠΎΠΌ Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ Π‘.

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

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

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

14.4.2. Π‘++

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

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

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

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ рСализация ОО-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π½Π° Π‘++ особСнно склонна ΠΊ созданию ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ говорят ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ расходы Π½Π° ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Π‘++ большС, Ρ‡Π΅ΠΌ Ρƒ эквивалСнтов, написанных Π½Π° Π‘, FORTRAN ΠΈΠ»ΠΈ Ada. ЯвляСтся Π»ΠΈ данная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ОО, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π‘++, ΠΈΠ»ΠΈ это комплСксная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” ΠΏΠΎΠΊΠ° Π½Π΅ ясно, хотя Π΅ΡΡ‚ΡŒ смысл ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Ρ‚ΡŒ послСднСС [341.

Π’ послСдниС Π³ΠΎΠ΄Ρ‹ Π‘++ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ» Π² сСбя Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ Π½Π΅-ОО-ΠΈΠ΄Π΅ΠΈ. Π’ языкС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌ Π² Lisp, Ρ‚.Π΅. ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π΅Π³ΠΎ Π½Π΅ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ. STL (Standard Template Library, стандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° шаблонов) обСспСчиваСт Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ‚.Π΅. Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², нСзависимых ΠΎΡ‚ сигнатур ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… для выполнСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²ΠΎ врСмя выполнСния. (Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для языков, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… статичСский ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Ρ‚ΠΈΠΏΠΎΠ² Π² процСссС компиляции; Π±ΠΎΠ»Π΅Π΅ динамичСскиС языки просто ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ ссылки Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±Π΅Π· Ρ‚ΠΈΠΏΠ° ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Ρ‚ΠΈΠΏΠΎΠ² Π²ΠΎ врСмя выполнСния.)

Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык, ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ снизу Π²Π²Π΅Ρ€Ρ… с языком Π‘, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ориСнтированная ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, ΡΠ²ΡΠ·ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» для самых соврСмСнных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ STL ΠΈ Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, β€” Π‘++ ΠΏΡ€Π΅Ρ‚Π΅Π½Π΄ΡƒΠ΅Ρ‚ Π½Π° Ρ€ΠΎΠ»ΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ срСдства, Π½ΠΎ Ρ†Π΅Π½ΠΎΠΉ этого являСтся ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, Π³ΠΎΡ€Π°Π·Π΄ΠΎ большая, Ρ‡Π΅ΠΌ Ρ‚Π°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΌΠΎΠ·Π³ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программиста. Как Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ΠΎ Π² Π³Π»Π°Π²Π΅ 4, Π³Π»Π°Π²Π½Ρ‹ΠΉ конструктор языка ΠΏΡ€ΠΈΠ·Π½Π°Π», Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΈ Π½Π΅ ΠΆΠ΄Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΠ΄ΠΈΠ½ программист смоТСт ΠΏΠΎΡΡ‚ΠΈΡ‡ΡŒ язык ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ. Unix-Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π½Π΅ слишком Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΡ‚Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π‘++. ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ этого слуТит ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ…, Π½ΠΎ извСстных ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ: "Π‘++ β€” это спрут, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΡ€ΠΈΡˆΠΈΠ²Π°Π½ΠΈΡ Π»ΠΈΡˆΠ½ΠΈΡ… Π½ΠΎΠ³ собакС".