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

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

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

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

Подводя ΠΈΡ‚ΠΎΠ³ΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎ прСимущСством Π‘++ являСтся сочСтаниС эффСктивности ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ языка со срСдствами ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠ³ΠΎ программирования. К нСдостаткам относятся Π΅Π³ΠΎ Π²Ρ‹Ρ‡ΡƒΡ€Π½ΠΎΡΡ‚ΡŒ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΊΠ»ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ ΠΊ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ свСрхслоТных конструкций.

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

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΌ справочником ΠΏΠΎ Π‘++ являСтся ΠΊΠ½ΠΈΠ³Π° Бтрауструпа (Stroustrup) "The Π‘++ Programming Language" [82]. ΠžΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΌ пособиСм ΠΏΠΎ Π‘++ ΠΈ основным ОО-ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… являСтся ΠΊΠ½ΠΈΠ³Π° "Π‘++: A Dialog" [36]. Π‘Ρ‚Π°Ρ‚ΡŒΡ "Π‘++ Annotations" [6] прСдставляСт собой сТатый Π²Π²ΠΎΠ΄Π½Ρ‹ΠΉ курс ΠΏΠΎ Π‘++ для ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… программистов Π½Π° Π‘.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π‘++ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ компиляторов GNU. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, язык доступСн ΠΊΠ°ΠΊ для Unix, Ρ‚Π°ΠΊ ΠΈ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм Microsoft; Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ Π‘. Доступна ΠΎΠ±ΡˆΠΈΡ€Π½Π°Ρ коллСкция Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ <http: //www.boost.org/>. Однако ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ языка ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ (Π² сСрСдинС 2003 Π³ΠΎΠ΄Π°) Π² Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… рСализациях Π‘++ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠ΅ΡΡ подмноТСства ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ISO-стаНдарта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ находится Π² процСссС ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ90.

14.4.2.1. Π‘++ ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: инструмСнтарий Qt

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠ½Ρ‹ΠΉ инструмСнтарий Qt прСдставляСт собой Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ успСха Π‘++ Π² соврСмСнном ΠΌΠΈΡ€Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ прСдоставляСт ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ элСмСнтов управлСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ API для написания графичСских ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов для систСмы X Window, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΡΠΎΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ (ΠΈ довольно эффСктивно) Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΠ΄ ΠΈ восприятиС интСрфСйсов Motif, MacOS Platinum ΠΈΠ»ΠΈ Microsoft Windows. ЀактичСски Qt прСдоставляСт Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС, Ρ‡Π΅ΠΌ просто GUI-слуТбы, β€” ΠΎΠ½ прСдоставляСт пСрСносимый ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ с классами для XML, доступа ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ, сокСтов, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссов, Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ², ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Ρ‚Ρ‹ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, доступа ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… абстрактных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Unicode.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Qt являСтся Π²Π°ΠΆΠ½Ρ‹ΠΌ ΠΈ Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° KDE, ΡΡ‚Π°Ρ€Π΅ΠΉΡˆΠ΅Π³ΠΎ ΠΈΠ· Π΄Π²ΡƒΡ… ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ GUI ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

РСализация Qt Π½Π° Π‘++ дСмонстрируСт прСимущСства ОО-языка программирования для инкапсуляции ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. Π’ языкС, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, видимая иСрархия элСмСнтов управлСния интСрфСйса ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π΅Ρ‚ΠΊΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ экзСмпляров классов Π² ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎ ΠΆΠ΅ самоС ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‹ΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Π‘ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ явного прСобразования Ρ‡Π΅Ρ€Π΅Π· ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΠ΄, написанный Π½Π° Π‘++, Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Ρ‡ΠΈΡ‰Π΅. ПолСзно ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с извСстным своСй ΠΏΡ€ΠΈΡ‡ΡƒΠ΄Π»ΠΈΠ²ΠΎΡΡ‚ΡŒΡŽ Π‘ API Π² Motif.

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ справочная докумСнтация ΠΏΠΎ Qt доступна Π½Π° сайтС Trolltech <http://www.trolltech.com/>.

14.4.3. Shell

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ (ΠΈ Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя СдинствСнным) пСрСносимым ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком Π±Ρ‹Π» 'Bourne shell' (sh) 7 вСрсии Unix. Π’ настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ€ΠΎΠ΄ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Bourne shell Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стСпСни вытСснили разновидности совмСстимого снизу Π²Π²Π΅Ρ€Ρ… Korn Shell (ksh). ЕдинствСнным Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΌ ΠΈΠ· Π½ΠΈΡ… являСтся Bourne Again Shell (bash).

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ согласованно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ нСсколько Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²ΠΈΠ΄ΠΎΠ² shell, Π½ΠΎ ΠΊΠ°ΠΊ языки программирования ΠΎΠ½ΠΈ Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹. НаиболСС извСстным ΠΈΠ· Π½ΠΈΡ…, вСроятно, являСтся Π‘ shell (csh), ΠΏΠ΅Ρ‡Π°Π»ΡŒΠ½ΠΎ извСстный своСй Π½Π΅ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΡΡ‚ΡŒΡŽ для написания сцСнариСв91.

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ€Π½Ρ‹Π΅ shell-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ просты ΠΈ СстСствСнны Π² написании.. Π―Π·Ρ‹ΠΊ shell послуТил Π½Π°Ρ‡Π°Π»ΠΎΠΌ Unix-Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΈ быстрого создания ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языках.

Π― написал ΡΠ°ΠΌΡƒΡŽ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ netnews Π² Π²ΠΈΠ΄Π΅ shell-сцСнария Π² 150 строк. Она ΠΈΠΌΠ΅Π»Π° нСсколько Π³Ρ€ΡƒΠΏΠΏ новостСй ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Π΅ΡΡ‚Π½ΡƒΡŽ рассылку. Π“Ρ€ΡƒΠΏΠΏΡ‹ новостСй прСдставляли собой ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ, Π° пСрСкрСстная рассылка Π±Ρ‹Π»Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΊΠ°ΠΊ мноТСствСнныС ссылки Π½Π° ΡΡ‚Π°Ρ‚ΡŒΡŽ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±Ρ‹Π»Π° слишком ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ для Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ использования, Π½ΠΎ Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ позволяла бСсконСчно ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с конструкциСй ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°.

Π‘Ρ‚ΠΈΠ²Π΅Π½ М. Π‘Π΅Π»Π»ΠΎΠ²ΠΈΠ½.

Однако ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ увСличСния своСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, shell-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ часто становятся скорСС ΡƒΠ·ΠΊΠΎΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ. НСкоторыС ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ синтаксиса shell (особСнно ΠΏΡ€Π°Π²ΠΈΠ»Π° использования ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΈ синтаксис ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²) ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ±ΠΈΡ‚ΡŒ с Ρ‚ΠΎΠ»ΠΊΡƒ. Π”Π°Π½Π½Ρ‹Π΅ нСдостатки, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, обусловлСны компромиссами Π² Ρ‚ΠΎΠΉ части конструкции shell, которая связана с языком программирования. Π­Ρ‚ΠΈ компромиссы Π±Ρ‹Π»ΠΈ внСсСны, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ shell ΠΊΠ°ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΊΠ°ΠΊ "shell-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹" Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΈ Π½Π΅ написаны ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π° shell, Π½ΠΎ Π² Π½ΠΈΡ… интСнсивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π‘-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ sort(1), ΠΈ стандартныС ΠΌΠΈΠ½ΠΈ-языки ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ sed(1) ΠΈΠ»ΠΈ awk(1). Однако Π΄Π°Π½Π½Ρ‹ΠΉ Π²ΠΈΠ΄ программирования Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π»Π΅Ρ‚ ΠΈΠ΄Π΅Ρ‚ Π½Π° ΡƒΠ±Ρ‹Π»ΡŒ. Π’ наши Π΄Π½ΠΈ подобная слоТная ΡΠ²ΡΠ·ΡƒΡŽΡ‰Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Π½Π° Perl ΠΈΠ»ΠΈ Python, a shell рСзСрвируСтся для ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΡ… ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‰ΠΈΠΊΠΎΠ² (для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Π΅ языки Π±Ρ‹Π»ΠΈ Π±Ρ‹ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎ слоТными) ΠΈ сцСнариСв ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ систСмы (которая Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ доступны).

Π‘Π°Π·ΠΎΠ²ΠΎΠ΅ shell-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ достаточно описано Π² любой Π²Π²ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ ΠΏΠΎ Unix. "The Unix Programming Environment" [39] остаСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… источников для программистов срСднСго ΠΈ высокого класса. Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΊΠ»ΠΎΠ½Ρ‹ Korn shell прСдставлСны Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Unix-систСмС.

Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ shell-сцСнарии часто ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ пСрСносимости Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·-Π·Π° самой ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, Π° Π²Π²ΠΈΠ΄Ρƒ сдСланных Π² Π½ΠΈΡ… ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎ доступности Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² качСствС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… случаях ΠΊΠ»ΠΎΠ½Ρ‹ bash ΠΈ ksh доступны Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΡ‚ Unix, shell-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (практичСски) Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ пСрСнСсти Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Unix.

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

ΠŸΠΎΡ‡Ρ‚ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ shell, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС Unix-систСмы ΠΈ эмуляторы Unix ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°ΠΌΠΈ. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ для Linux ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Unix Π² настоящСС врСмя являСтся bash.

14.4.3.1. Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: xmlto

xmlto β€” ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ сцСнарий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для прСдставлСния ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ XML-DocBook-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² Π²ΠΈΠ΄Π΅ HTML, PostScript, простого тСкста ΠΈΠ»ΠΈ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ доступного Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° (Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ DocBook рассматриваСтся Π² Π³Π»Π°Π²Π΅ 18). Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ xmlto написан Π² bash.