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

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

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

Π―Π·Ρ‹ΠΊ форматирования TeX (см. Π³Π»Π°Π²Ρƒ 18) Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Π’Π΅Π₯ β€” ΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎ разрабатывался ΠΊΠ°ΠΊ язык Π’ΡŒΡŽΡ€ΠΈΠ½Π³Π° (Π² Π½Π΅ΠΌ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ условныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈ рСкурсия), ΠΎΠ΄Π½Π°ΠΊΠΎ, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΡ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, TeX-ΠΊΠΎΠ΄ часто Π½Π΅Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ Ρ‚Ρ€ΡƒΠ΄Π½Ρ‹ΠΉ Π² ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ для LaTeX, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π’eX-ΠΌΠ°ΠΊΡ€ΠΎΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ: ΠΎΠ½ΠΈ созданы Π² ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΌ TeX-стилС, Π½ΠΎ Π΄Π°ΠΆΠ΅ нСсмотря Π½Π° это ΠΈΡ… ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ.

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

Данная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° особСнно Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Π° для прСпроцСссоров ΠΈ макросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ многострочныС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, условно Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ тСкст, ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ количСство строк Π² Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΠΎΠΌ тСкстС.

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

Π’ прСпроцСссорС Π‘ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΡƒΡ‚Π΅ΠΌ создания Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² #line ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° выполняСтся Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ многострочноС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅. ΠžΠΆΠΈΠ΄Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π‘-компилятор ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡ… ΠΈ соотвСтствСнно скоррСктируСт Π½ΠΎΠΌΠ΅Ρ€Π° строк Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π°Ρ… ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…. К соТалСнию, Π² макропроцСссорС Ρ‚4 ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ срСдство отсутствуСт.

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

8.3.5. Π―Π·Ρ‹ΠΊ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ уровня

НС ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π±ΡƒΠ΄ΡƒΡ‚ Π»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ядро ΠΌΠΈΠ½ΠΈ-языка Π² качСствС ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½ΠΎΠ³ΠΎ процСсса. Если это Ρ‚Π°ΠΊ, Ρ‚ΠΎ конструкция, вСроятно, Π΄ΠΎΠ»ΠΆΠ½Π° мСньшС ΠΏΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ язык для взаимодСйствия с Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ ΠΈ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΡ…ΠΎΠΆΠ΅ΠΉ Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ уровня, рассмотрСнныС Π² Π³Π»Π°Π²Π΅ 5.

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

Π•Ρ‰Π΅ Ρ…ΡƒΠΆΠ΅, ΠΊΠΎΠ³Π΄Π° Π²Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ буфСризируСтся (часто Π½Π΅ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ, ΠΊΠ°ΠΊ Π² stdio). ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π² Π²Π΅Ρ€Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚, нСсмотря Π½Π° это, впослСдствии ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Π²Π²ΠΎΠ΄.

Π”ΡƒΠ³ ΠœΠ°ΠΊΠΈΠ»Ρ€ΠΎΠΉ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π³Π»Π°Π²Π½Ρ‹Π΅ процСссы ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΌΠΈΠ½ΠΈ-языками, Π³Π΄Π΅ данная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½Π°, ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌ ΠΏΡ€ΠΈ рассинхронизации Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½ΠΎΠ³ΠΎ процСссов (ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ упомянутая Π² Π³Π»Π°Π²Π΅ 7).

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

Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… языках доступны эквивалСнты ΠΏΠ°ΠΊΠ΅Ρ‚Π° expect. ΠŸΠΎΠ»Π΅Π·Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Web, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π² качСствС поисковой Ρ„Ρ€Π°Π·Ρ‹ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ языка с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ словами "Tel expect". Однако для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΌΠΈΠ½ΠΈ-языка Π±Ρ‹Π»ΠΎ Π±Ρ‹ нСдальновидно ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ спСциалистами ΠΏΠΎ использованию ΠΏΠ°ΠΊΠ΅Ρ‚Π° expect. Π”Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ, Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ являСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΡΠ²ΡΠ·ΡƒΡŽΡ‰ΠΈΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ ΠΈ мСстом возникновСния ошибок.

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΌΠΈΠ½ΠΈ-языка слСдуСт ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅. Π₯ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΈΠ΄Π΅Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΈ, которая измСняСт Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ становятся Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌΠΈ Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ уровня с нСдвусмыслСнными раздСлитСлями ΠΊΠΎΠ½Ρ†Π° Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΎΠΌ заполнСния Π±Π°ΠΉΡ‚Π°ΠΌΠΈ.

9 ГСнСрация ΠΊΠΎΠ΄Π°: ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ уровня спСцификации

Попавший Π² Ρ‚ΡƒΠΏΠΈΠΊ программист... часто ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ большС, отходя ΠΎΡ‚ ΠΊΠΎΠ΄Π°, ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡŒ ΠΈ анализируя ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ Π΄Π°Π½Π½Ρ‹Π΅. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ являСтся ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒΡŽ программирования. "The Mythical Man-Month", юбилСйноС ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ (1975-1995) β€”Π€Ρ€Π΅Π΄ Брукс

Π’ Π³Π»Π°Π²Π΅ 1 ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ людям Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ мыслСнно ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС Π΄Π°Π½Π½Ρ‹Π΅, Ρ‡Π΅ΠΌ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ это, слСдуСт ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π΄ΠΈΠ΄Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ силу Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ 50-ΡƒΠ·Π»ΠΎ-Π²ΠΎΠ³ΠΎ Π΄Π΅Ρ€Π΅Π²Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ с Π±Π»ΠΎΠΊ-схСмой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, состоящСй ΠΈΠ· 50 строк. Или (Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ Π»ΡƒΡ‡ΡˆΠ΅) Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° массива, Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‰Π΅Π³ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ прСобразования, с эквивалСнтным ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹Π±ΠΎΡ€Π°. Различия Π² прозрачности ΠΈ ясности ΠΏΠΎΡ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹'.

Π”Π°Π½Π½Ρ‹Π΅ Π±ΠΎΠ»Π΅Π΅ понятны, Ρ‡Π΅ΠΌ программная Π»ΠΎΠ³ΠΈΠΊΠ°. Π­Ρ‚ΠΎ Π²Π΅Ρ€Π½ΠΎ нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ, Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ языком Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ, систСмой шаблонов ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ€ΠΎΠΌ макросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ. Π₯ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ являСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ большС слоТности конструкции ΠΈΠ· ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² Π΄Π°Π½Π½Ρ‹Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π±ΠΎΡ€ Ρ„ΠΎΡ€ΠΌ прСдставлСния Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ сопровоТдСниС ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ этими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΡ… Ρ„ΠΎΡ€ΠΌ Π² Ρ„ΠΎΡ€ΠΌΡ‹, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹Π΅ для машинной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, β€” Π·Π°Π΄Π°Ρ‡Π° машин, Π° Π½Π΅ людСй.

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

Π“Π΅Π½Ρ€ΠΈ БпСнсСр.

Π­Ρ‚ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ тСорСтичСски обосновываСт Π½Π°Π±ΠΎΡ€ практичСских ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ всСгда Π±Ρ‹Π»ΠΈ Π²Π°ΠΆΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ инструмСнтария Unix-программиста β€” языки ΠΎΡ‡Π΅Π½ΡŒ высокого уровня, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, управляСмыС Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΊΠΎΠ΄Π° ΠΈ ΡƒΠ·ΠΊΠΎΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΈΠ½ΠΈ-языки. ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΈΡ… Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ всС ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ способами, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° Π½Π° нСсколько ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ Π²Ρ‹ΡˆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ спСцификации ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹Ρ‚ΡŒ мСньшС. Π Π°Π½Π΅Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ»ΠΎΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π΅Ρ„Π΅ΠΊΡ‚ΠΎΠ² стрСмится ΠΊ ΠΏΠΎΡ‡Ρ‚ΠΈ постоянному Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языках программирования. ВсС ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ практичСскиС ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ сокращСниС количСства строк ΠΈ, соотвСтствСнно, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ вСроятности появлСния ошибок.

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