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

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

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

ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ макросов с ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΎΠΉ Π½Π° основС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… условий позволяСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ pic(1) Π²Ρ‹Ρ€Π°ΠΆΠ°Ρ‚ΡŒ структуру Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌ Ρ‚Π°ΠΊΠΈΠΌ способом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ нСдоступСн для Π±ΠΎΠ»Π΅Π΅ соврСмСнных Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΎΠΊ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ SVG. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, благоприятно, Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· слСдствий конструкции Documenter's Workbench являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ использованиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ pic(1) Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ срСды DWB. Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ pic2graph, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π² качСствС ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π² Π³Π»Π°Π²Π΅ 7, Π±Ρ‹Π» ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ создан для достиТСния этой Ρ†Π΅Π»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… PostScript-возмоТностСй groff(1) ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ этап Π½Π° ΠΏΡƒΡ‚ΠΈ ΠΊ соврСмСнному растровому Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ.

Π‘ΠΎΠ»Π΅Π΅ Ρ‡Π΅Ρ‚ΠΊΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ являСтся ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° pic2plot(1), распространяСмая с ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ GNU plotutils, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ использована внутрСнняя ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° GNU pic(1). Код Π±Ρ‹Π» Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΡƒΡŽ синтаксичСский Π°Π½Π°Π»ΠΈΠ·, ΠΈ ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ troff-Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ. ОбС части взаимодСйствовали посрСдством уровня Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ². ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ данная конструкция ΠΏΠΎΠ΄Ρ‡ΠΈΠ½ΡΠ»Π°ΡΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ, программисты pic2plot(1) ΠΈΠΌΠ΅Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ этап синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° GNU pic ΠΈ Ρ€Π΅ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ соврСмСнной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для построСния Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ². Однако ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ нСдостаток. ВСкст Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ гСнСрируСтся со встроСнными Π² pic2plot ΡˆΡ€ΠΈΡ„Ρ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΡˆΡ€ΠΈΡ„Ρ‚Π°ΠΌ troff.

8.2.7. Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: синтаксис ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° fetchmail

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 8.5.

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

Как ΠΈ Π² случаС с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ pic(1), Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΈΠ½ΠΈ-язык ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ объявлСния Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ слабый ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ язык ΠΈ бСсконСчно ΡΠΏΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠ± отличиях. Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, Π² Π½Π΅ΠΌ Π½Π΅Ρ‚ Π½ΠΈ условных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Π½ΠΈ рСкурсии, Π½ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ². ЀактичСски ΠΎΠ½ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ явных ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… структур. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΎΠ½ описываСт скорСС дСйствия, Ρ‡Π΅ΠΌ зависимости, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΎΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ синтаксиса, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ GUI-описаниям Glade.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 8.5. БинтСтичСский ΠΊΠΎΠ΄ fetchmailrc

#ΠžΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΡƒΠ·Π΅Π» ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π² Ρ†ΠΈΠΊΠ»Π΅.

poll pop.provider.net proto pop3

 user "jsmith" with pass "secret1" is "smith" here

 user jones with pass "secret2" is "jjones" here with options keep

# ΠžΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΡƒΠ·Π΅Π» Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ

poll billywig.hogwarts.com with proto imap:

 user harry_potter with pass "floo" is harry_potter here

# ΠžΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΡƒΠ·Π΅Π» Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΠΌ Π² Ρ†ΠΈΠΊΠ»Π΅.

# ΠŸΠ°Ρ€ΠΎΠ»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ взят ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ~/.netrc

poll mailhost.net with proto imap:

 user esr is esr here

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΌΠΈΠ½ΠΈ-языки для слоТных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ часто пСрСходят эту Π³Ρ€Π°Π½ΠΈΡ†Ρƒ. Π”Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΊΡ‚ подчСркиваСтся здСсь ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ отсутствиС явных ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… структур Π² ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ ΠΌΠΈΠ½ΠΈ-языкС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ»ΠΎΡΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ΠΌ, Ссли это позволяСт прСдмСтная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ синтаксиса .fetchmailrc являСтся использованиС Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ просто для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ язык спСцификаций Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΡ…ΠΎΠ΄ΠΈΠ» Π½Π° английский язык. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова "with" ΠΈ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ слова "options" Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ фактичСски Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ, Π½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ описания для чтСния.

Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ синтаксис называСтся синтаксичСским сахаром (syntactic sugar). Π”Π°Π½Π½ΠΎΠΌΡƒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρƒ сопутствуСт извСстноС высказываниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ "синтаксичСский сахар Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π°ΠΊ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠΉ"[85]. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ синтаксичСский сахар Π½Π΅ создавал трудностСй большС, Ρ‡Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ.

Π’ Π³Π»Π°Π²Π΅ 9 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ созданиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, управляСмых Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, способствуСт изящному Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ рСдактирования ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² fetchmail с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ графичСского интСрфСйса.

8.2.8. Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: awk

Мини-язык awk являСтся ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ срСдством Unix старой ΡˆΠΊΠΎΠ»Ρ‹, ΠΏΡ€Π΅ΠΆΠ΄Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ Π² shell-сцСнариях. Как ΠΈ m4, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° awk ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для написания Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ…, Π½ΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для прСобразования тСкстового Π²Π²ΠΎΠ΄Π° Π² тСкстовый Π²Ρ‹Π²ΠΎΠ΄. ВСрсии ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ со всСми Unix-систСмами. НСкоторыС ΠΈΠ· Π½ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. Команда info gawk Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Unix вСсьма вСроятно ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠΏΡ€Π°Π²ΠΎΡ‡Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанныС Π½Π° awk, состоят ΠΈΠ· ΠΏΠ°Ρ€ шаблон/дСйствиС. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ шаблон прСдставляСт собой рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅; эта концСпция ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описываСтся Π² Π³Π»Π°Π²Π΅ 9. ПослС запуска awk-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ всС строки Π²ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅. КаТдая строка ΠΏΠΎ порядку сравниваСтся с ΠΏΠ°Ρ€ΠΎΠΉ шаблон/дСйствиС. Если шаблон соотвСтствуСт строкС, Ρ‚ΠΎ осущСствляСтся связанноС с шаблоном дСйствиС.

КаТдоС дСйствиС кодируСтся Π½Π° языкС, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ подмноТСству языка Π‘, с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, условными ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ, Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ ΠΈ ΠΎΠ½Ρ‚ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ Ρ‚ΠΈΠΏΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ†Π΅Π»Ρ‹Π΅ числа, строки ΠΈ (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π‘) словари[86].

Π―Π·Ρ‹ΠΊ дСйствий awk являСтся языком Π’ΡŒΡŽΡ€ΠΈΠ½Π³Π° ΠΈ позволяСт ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… вСрсиях ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сСтСвыС сокСты. Однако awk Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ², особСнно для ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Он Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎ, Π½ΠΎ часто встраиваСтся Π² сцСнарии. Π’ Π³Π»Π°Π²Π΅ 9, Π² ΡƒΡ‡Π΅Π±Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎ созданию HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° имССтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€ awk-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ awk ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² этой ΠΊΠ½ΠΈΠ³Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ язык Π½Π΅ являСтся модСлью для подраТания. ЀактичСски с 1990 Π³ΠΎΠ΄Π° awk ΠΏΠΎΡ‡Ρ‚ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π²Ρ‹ΡˆΠ΅Π» ΠΈΠ· употрСблСния. На смСну Π΅ΠΌΡƒ ΠΏΡ€ΠΈΡˆΠ»ΠΈ языки сцСнариСв Π½ΠΎΠ²ΠΎΠΉ ΡˆΠΊΠΎΠ»Ρ‹, особСнно Perl, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ явно прСдназначался для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π²Ρ‹Ρ‚Π΅ΡΠ½ΠΈΡ‚ΡŒ awk. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ достойны внимания, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΠΏΠΎΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΌΠΈΠ½ΠΈ-языков.

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

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

Дэвид ΠšΠΎΡ€Π½.

Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π»Π΅Ρ‚ послС Π²Ρ‹Ρ…ΠΎΠ΄Π° языка Perl Π² 1987 Π³ΠΎΠ΄Ρƒ, awk оставался конкурСнтоспособным просто ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π» ΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ ΠΈ Π±ΠΎΠ»Π΅Π΅ Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ. Однако ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ памяти ΠΏΠ°Π΄Π°Π»Π°, экономичСскиС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ для ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ языка ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ назначСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ экономно использовал ΠΎΠ±Π° рСсурса, тСряли свою силу. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ awk-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ всС Π±ΠΎΠ»Π΅Π΅ ΠΎΡ‚Π΄Π°Π²Π°Π»ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ Perl ΠΈΠ»ΠΈ (ΠΏΠΎΠ·Π΄Π½Π΅Π΅) языку Python, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π² памяти Π΄Π²Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языка сцСнария[87]. К 2000 Π³ΠΎΠ΄Ρƒ awk стал для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Unix-Ρ…Π°ΠΊΠ΅Ρ€ΠΎΠ² старой ΡˆΠΊΠΎΠ»Ρ‹ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΠΌ большС, Ρ‡Π΅ΠΌ воспоминаниС, Π½ΠΎ Π½Π΅ самоС Π΄ΠΎΡ€ΠΎΠ³ΠΎΠ΅.

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

8.2.9. Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: PostScript

PostScript β€” ΠΌΠΈΠ½ΠΈ-язык, спСциализациСй ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся описаниС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСкста ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ для графичСских устройств. Π”Π°Π½Π½Ρ‹ΠΉ язык Π±Ρ‹Π» ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π² Unix. Он основывался Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π»Π΅Π³Π΅Π½Π΄Π°Ρ€Π½ΠΎΠ³ΠΎ Ρ†Π΅Π½Ρ‚Ρ€Π° "Xerox Palo Alto Research Center", созданной Π²ΠΎ врСмя появлСния ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π»Π°Π·Π΅Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠ². Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π»Π΅Ρ‚ послС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΏΠ΅Ρ€Π²ΠΎΠΉ коммСрчСской вСрсии Π² 1984 Π³ΠΎΠ΄Ρƒ, PostScript оставался доступным Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°ΠΊ частный ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Adobe, Inc. ΠΈ Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ассоциировался с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌΠΈ Apple. PostScript Π±Ρ‹Π» ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ Π½Π° условиях Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ соглашСния, ΠΎΡ‡Π΅Π½ΡŒ Π±Π»ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΠΊ лицСнзиям Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ исходныС ΠΊΠΎΠ΄Ρ‹, ΠΈ с Ρ‚Π΅Ρ… ΠΏΠΎΡ€ стал стандартом Π΄Π΅-Ρ„Π°ΠΊΡ‚ΠΎ для управлСния ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΌΠΈ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС Unix. ВСрсия с ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ поставляСтся с Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ соврСмСнных Unix-систСм[88]. Π’Π°ΠΊΠΆΠ΅ доступно ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ тСхничСскоС Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² PostScript[89].