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

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

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

Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π‘ ΠΈ Π‘++ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΎΡ‚ программистов ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ β€” ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, явно ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ связными списками, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π±ΡƒΡ„Π΅Ρ€ΠΎΠ², ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡƒΡ„Π΅Ρ€ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΈ Π²Ρ‹ΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Ρ‚ΡŒ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ. НСкоторыС ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΏΡƒΡ‚Π΅ΠΌ искусствСнных дСйствий, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π‘ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ сборки мусора, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, рСализация Boehm-Weiser, ΠΎΠ΄Π½Π°ΠΊΠΎ конструкция Π‘ Ρ‚Π°ΠΊΠΎΠ²Π°, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹ΠΌ.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π² Π‘ β€” ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΉ источник трудностСй ΠΈ ошибок. По ΠΎΡ†Π΅Π½ΠΊΠ°ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ исслСдования (Ρ†ΠΈΡ‚Π°Ρ‚Π° ΠΈΠ· [9]), 30 ΠΈΠ»ΠΈ 40% Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ отводится Π½Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ слоТными структурами Π΄Π°Π½Π½Ρ‹Ρ…. Π’ это число Π΄Π°ΠΆΠ΅ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π½Π° ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ. НСсмотря Π½Π° отсутствиС Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ программисты ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ ошибки управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΡΠ²Π»ΡΡŽΡ‚ΡΡ СдинствСнным ΠΊΡ€ΡƒΠΏΠ½Π΅ΠΉΡˆΠΈΠΌ источником постоянных ошибок Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅89. ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡƒΡ„Π΅Ρ€Π° являСтся ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Π°Π²Π°Ρ€ΠΈΠΉ ΠΈ Π±Ρ€Π΅ΡˆΠ΅ΠΉ Π² систСмС бСзопасности. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ динамичСской ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ особСнно Ρ‡Ρ€Π΅Π²Π°Ρ‚ΠΎ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ²Π°Ρ€Π½Ρ‹Ρ… ΠΈ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ отслСТиваСмых ошибок, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ памяти ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ указатСля.

ВмСстС с Ρ‚Π΅ΠΌ Π½Π΅ Ρ‚Π°ΠΊ Π΄Π°Π²Π½ΠΎ Ρ€ΡƒΡ‡Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈΠΌΠ΅Π»ΠΎ смысл. Однако Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ "ΠΌΠ°Π»Ρ‹Ρ… систСм" большС Π½Π΅Ρ‚, Π° Π² ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ€ΡƒΡ‡Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π½Π΅ трСбуСтся. Π’ соврСмСнных условиях Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ цСлСсообразно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ язык Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ (ΠΈ Π½Π° порядок сокращаСт количСство ошибок Ρ†Π΅Π½ΠΎΠΉ использования нСсколько большСго числа Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ памяти).

Π’ Π½Π΅Π΄Π°Π²Π½Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ [63] собран Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»ΡΡŽΡ‰ΠΈΠΉ массив статистичСских Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ заявлСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ программисты сочтут вСсьма ΠΏΡ€Π°Π²Π΄ΠΎΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ: ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ программистов ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с языками сцСнариСв ΠΏΠΎΡ‡Ρ‚ΠΈ Π² Π΄Π²Π° Ρ€Π°Π·Π° большС продуктивности ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π‘ ΠΈΠ»ΠΈ Π‘++. Π”Π°Π½Π½ΠΎΠ΅ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ согласуСтся с ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΎΡ†Π΅Π½ΠΊΠΎΠΉ Π·Π°Ρ‚Ρ€Π°Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (30-40 %), Π° вСдь Π΅Ρ‰Π΅ слСдуСт ΡƒΡ‡Π΅ΡΡ‚ΡŒ ΠΈΠ·Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. ΠŸΠΎΡ‚Π΅Ρ€ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ использовании ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ языка сцСнариСв ΠΎΡ‡Π΅Π½ΡŒ часто Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ для Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ склонны ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ΠΌ 1/О-событий, сСтСвой Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ кэша, Π° Π½Π΅ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ сам процСссор.

Π’ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, сообщСство Unix ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ приблиТаСтся ΠΊ Π΄Π°Π½Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ зрСния, особСнно с 1990 Π³ΠΎΠ΄Π°, это Π²ΠΈΠ΄Π½ΠΎ ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰Π΅ΠΉ популярности Perl ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков сцСнариСв. Однако Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π΅Ρ‰Π΅ (ΠΊ сСрСдинС 2003 Π³ΠΎΠ΄Π°) Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π°ΠΌ. МногиС Unix-программисты Π΄ΠΎ сих ΠΏΠΎΡ€ ΠΎΡΠΌΡ‹ΡΠ»ΠΈΠ²Π°ΡŽΡ‚ ΡƒΡ€ΠΎΠΊ, ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ языками Perl ΠΈ Python.

Π’Π° ΠΆΠ΅ тСндСнция, хотя ΠΈ выраТСнная Π½Π΅ Ρ‚Π°ΠΊ ярко, Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΌΠΈΡ€Π° Unix, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‰Π΅ΠΌΡΡ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΎΡ‚ Π‘++ ΠΊ Visual BASIC, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ проявляСтся Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для Microsoft Windows ΠΈ NT, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΊ Java Π² ΠΌΠΈΡ€Π΅ мэйнфрСймов.

АргумСнты ΠΏΡ€ΠΎΡ‚ΠΈΠ² Π‘ ΠΈ Π‘++ Π² Ρ€Π°Π²Π½ΠΎΠΉ стСпСни ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языкам, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ Pascal, Algol, PL/I, FORTRAN ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Ρ‹ BASIC. НСсмотря Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ "гСроичСскиС усилия", Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ada, отличия ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ языками ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ внСшними ΠΏΡ€ΠΈ сопоставлСнии ΠΈΡ… основных конструктивных Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ программисту. Π’ Unix Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ созданных языков доступны Π² Π²ΠΈΠ΄Π΅ высококачСствСнных Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. НСсмотря Π½Π° это, Π² ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌ использовании Π² Unix ΠΈΠ»ΠΈ Windows Π½Π΅ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… языков. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΎΡ‚ΠΊΠ°Π·Π°Π»ΠΈΡΡŒ ΠΎΡ‚ Π½ΠΈΡ… Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ Π‘ ΠΈΠ»ΠΈ Π‘++. БоотвСтствСнно, Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΎΠ½ΠΈ Π½Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ.

14.3. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки ΠΈ ΡΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹Π΅ стратСгии

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

ИспользованиС сцСнариСв β€” нисколько Π½Π΅ новая идСя Π² ΠΌΠΈΡ€Π΅ Unix. Π’ 1970-Ρ… Π³ΠΎΠ΄Π°Ρ…, Π² эпоху Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΌΠ΅Π½ΡŒΡˆΠΈΡ… машин, Unix shell (ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ для ΠΊΠΎΠΌΠ°Π½Π΄, Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π² Unix-консоль) Π±Ρ‹Π» спроСктирован ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык программирования. Π”Π°ΠΆΠ΅ Ρ‚ΠΎΠ³Π΄Π° Π±Ρ‹Π»ΠΎ распространСно написаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π½Π° shell ΠΈΠ»ΠΈ использованиС shell для написания ΡΠ²ΡΠ·ΡƒΡŽΡ‰Π΅ΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰Π΅ΠΉ встроСнныС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΈ нСстандартныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π‘ Π² цСлостныС систСмы, ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π»Π° большС, Ρ‡Π΅ΠΌ сумма эффСктивности ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… частСй. Π’ классичСских Π²Π²ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠ½ΠΈΠ³Π°Ρ… ΠΏΠΎ Unix-срСдС (Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ "The Unix Programming Environment" [39]) ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассматриваСтся данная Ρ‚Π°ΠΊΡ‚ΠΈΠΊΠ°, ΠΈ это Π²ΠΏΠΎΠ»Π½Π΅ обосновано: ΠΎΠ½Π° Π±Ρ‹Π»Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Unix.

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

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

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

14.4.1. Π‘

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

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

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

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

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