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

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

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

Как ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ случаС, Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… языков Π½Π΅ прСдоставил Π±Ρ‹ Ρ‚Π°ΠΊΠΎΠ³ΠΎ нСпосрСдствСнного интСрфСйса ΠΊ Tk GUI, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ составляСт Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°.

14.4.6. Python

Python являСтся языком написания сцСнариСв, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΌ для тСсной ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Π‘. Он способСн ΠΊΠ°ΠΊ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚Π°ΠΊ ΠΈ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² динамичСски Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Π΅ Π‘-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ· Π‘ ΠΊΠ°ΠΊ встроСнный язык сцСнариСв. Бинтаксис Python ΠΎΡ‡Π΅Π½ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π³ΠΈΠ±Ρ€ΠΈΠ΄ синтаксиса Π‘ ΠΈ сСмСйства Modula, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρƒ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ структура Π±Π»ΠΎΠΊΠ° фактичСски опрСдСляСтся отступами (Π² языкС Π½Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ² явных Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² begin/end ΠΈΠ»ΠΈ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок Π‘). ΠŸΠ΅Ρ€Π²Π°Ρ публичная вСрсия Python Π²Ρ‹ΡˆΠ»Π° Π² 1991 Π³ΠΎΠ΄Ρƒ.

Π―Π·Ρ‹ΠΊ Python прСдставляСт собой ΠΎΡ‡Π΅Π½ΡŒ Ρ‡Π΅Ρ‚ΠΊΡƒΡŽ, ΡΠ»Π΅Π³Π°Π½Ρ‚Π½ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ с прСвосходными свойствами ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Он прСдоставляСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ стилС, Π½ΠΎ Π½Π΅ Π²Ρ‹Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ этого (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΌ способом, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ Π‘). Π―Π·Ρ‹ΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ систСму Ρ‚ΠΈΠΏΠΎΠ², ΡΡ€Π°Π²Π½ΠΈΠΌΡƒΡŽ ΠΏΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ с систСмой Ρ‚ΠΈΠΏΠΎΠ² Perl, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ динамичСскиС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΈ ассоциативныС списки, Π½ΠΎ ΠΌΠ΅Π½Π΅Π΅ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΡƒΡŽ (Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ систСма Perl Π±Ρ‹Π»Π° создана ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Ρ€Π°ΠΆΠ°Π½ΠΈΠ΅ систСмС Python). Π”Π°Π½Π½Ρ‹ΠΉ язык устраиваСт Π΄Π°ΠΆΠ΅ Lisp-Ρ…Π°ΠΊΠ΅Ρ€ΠΎΠ², прСдоставляя бСзымянныС лямбда-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ (Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ функциями ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ). Python поставляСтся с Tk-инструмСнтариСм, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для простого создания GUI-интСрфСйсов.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ дистрибутив Python Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя клиСнтскиС классы для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π²Π°ΠΆΠ½Ρ‹Ρ… Internet-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² (SMTP, FTP, POP3, IMAP, HTTP) ΠΈ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ классы для HTML. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ рассматриваСмый язык Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΡŒΠ½Ρ‹Ρ… Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΠ² ΠΈ ΠΊΠ°Π½Π°Π»ΠΎΠ² сСтСвого администрирования. Он Ρ‚Π°ΠΊΠΆΠ΅ прСвосходно ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Web CGI ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ с Perl Π½Π° участкС высокой слоТности Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ области.

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

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

Python ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ Π² Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ языку Perl для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΡΠ²ΡΠ·ΡƒΡŽΡ‰ΠΈΡ… сцСнариСв, сильно зависящих ΠΎΡ‚ возмоТностСй ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π”Π°Π½Π½Ρ‹ΠΉ язык Π±Ρ‹Π» Π±Ρ‹ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ Π² ΠΌΠ΅Π»ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΠΎΠ»Π΅Π΅ подходящим ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ shell ΠΈΠ»ΠΈ Tcl.

Как ΠΈ Perl, Python ΠΈΠΌΠ΅Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ сообщСство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² с Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΌ Web-сайтом <http://www.python.org>, содСрТащим мноТСство ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Python, инструмСнтов ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ.

НаиболСС ΠΏΠΎΠ»Π½Ρ‹ΠΌ справочником ΠΏΠΎ языку Python являСтся ΠΊΠ½ΠΈΠ³Π° "Programming Python" [51]. ΠžΠ±ΡˆΠΈΡ€Π½Π°Ρ докумСнтация ΠΏΠΎ Python-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌ Ρ‚Π°ΠΊΠΆΠ΅ доступна Π½Π° Web-сайтС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Python.

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

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

14.4.6.1. НСбольшой ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎ Python: imgsizer

Imgsizer β€” ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°, которая пСрСписываСт WWW-страницы Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Π³ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ автоматичСски ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Π²Π΅Ρ€Π½Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ изобраТСния (это ускоряСт Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ страниц Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ…). Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ "URL WWW tools" <http://www.ibiblio.org> Π°Ρ€Ρ…ΠΈΠ²Π° ibiblio.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° imgsizer ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»Π° написана Π½Π° Perl, ΠΈ Π±Ρ‹Π»Π° ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ нСбольшого, управляСмого шаблонами инструмСнта ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста. ПозднСС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±Ρ‹Π»Π° транслирована Π² Python Π² цСлях получСния прСимущСства Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python ΠΏΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ HTTP-ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ этого Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ внСшнСй ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ доставки страницы Π±Ρ‹Π»Π° устранСна. ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ использованиС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ file(1) ΠΈ identify(1) ΠΏΠ°ΠΊΠ΅Ρ‚Π° ImageMagick Π² качСствС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… срСдств для получСния Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² пиксСлях.

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

14.4.6.2. Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎ Python срСднСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π°: fetchmailconf

Π’ Π³Π»Π°Π²Π΅ 11 ΠΏΠ°Ρ€Π° fetchmail/fetchmailconf Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»Π°ΡΡŒ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· способов отдСлСния Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚ интСрфСйса. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Python Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ fetchmailconf.

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ fetchmailconf ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ инструмСнтарий Tk для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ многопанСльного Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ с графичСским интСрфСйсом (для GTK Ρ‚Π°ΠΊΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Python-привязки ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ инструмСнтарии, Π½ΠΎ Tk-привязки ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ Python).

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ для высококвалифицированных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ GUI-интСрфСйс ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 60 Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², распрСдСлСнных ΠΏΠΎ Ρ‚Ρ€Π΅ΠΌ уровням ΠΏΠ°Π½Π΅Π»Π΅ΠΉ. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ управлСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ ΠΈΠ· Ρ„Π»Π°ΠΆΠΊΠΎΠ², ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ, тСкстовых ΠΏΠΎΠ»Π΅ΠΉ ΠΈ списков. НСсмотря Π½Π° эти слоТности, Π°Π²Ρ‚ΠΎΡ€Ρƒ ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ мСньшС Π½Π΅Π΄Π΅Π»ΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ дня Π½Π° ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Python ΠΈ Tk, для проСктирования ΠΈ кодирования ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ вСрсии.

Python прСвосходит Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки Π² быстром создании ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² GUI-интСрфСйсов, Π° (ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ fetchmailconf) ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ часто ΡΠ²Π»ΡΡŽΡ‚ΡΡ основными ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Perl ΠΈ Tcl ΠΈΠΌΠ΅ΡŽΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ ΡΠΈΠ»ΡŒΠ½Ρ‹Π΅ стороны Π² Π΄Π°Π½Π½ΠΎΠΉ области (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ инструмСнтарий Tk, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» написан для Tcl), Π½ΠΎ ΠΎΠ½ΠΈ слоТнСС Π² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ слоТности ΠΊΠΎΠ΄Π° fetchmailconf (ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ 1400 строк). Emacs Lisp Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для GUI-программирования.

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

14.4.6.3. Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Python: PIL

Python-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ (Python Imaging Library β€” PIL) ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ растровой Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ мноТСство популярных Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ PNG, JPEG, BMP, TIFF, PPM, XBM ΠΈ GIF. Python-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ изобраТСния. Π’ число ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… трансформаций Π²Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠ°Π΄Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ сдвиг. Π’Π°ΠΊΠΆΠ΅ поддСрТиваСтся пиксСльноС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, искривлСниС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ прСобразования Ρ†Π²Π΅Ρ‚ΠΎΠ². Дистрибутив PIL Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Python-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ доступными Π΄Π°Π½Π½Ρ‹Π΅ срСдства ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ PIL ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для трансформации ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈΠ»ΠΈ Π² качСствС ΠΌΠΎΡ‰Π½ΠΎΠ³ΠΎ инструмСнтария, посрСдством ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ рСализуСтся программируСмая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° растровых ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.