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

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

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

Π₯ΠΎΡ€ΠΎΡˆΠ°Ρ нотация ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Ρ‚ΠΎΠ½ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΈ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, которая со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠ΅ΠΉ Π½Π° ΠΆΠΈΠ²ΠΎΠ³ΠΎ учитСля.

The World of Mathematics (1956) β€”Π‘Π΅Ρ€Ρ‚Ρ€Π°Π½Π΄ РассСл (Bertrand Russell)

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

Π’ Unix имССтся давняя традиция ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… языков, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ области, языков, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΏΠΎΡΠΎΠ±ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€Π°Π΄ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌ сокращСнии количСства строк ΠΊΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΡƒΠ·ΠΊΠΎΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… (domain-specific) языков Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя многочислСнныС языки Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ тСкстов (troff, eqn, tbl, pic, grap), ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ (awk, sed, dc, bc) ΠΈ срСдства Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния (make, уасс, lex). НСвозмоТно провСсти Ρ‡Π΅Ρ‚ΠΊΠΈΠ΅ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ·ΠΊΠΎΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ языками ΠΈ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΌ Π²ΠΈΠ΄ΠΎΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (sendmail, BIND, X), ΠΈΠ»ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°ΠΌΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠ»ΠΈ языками сцСнариСв (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Π³Π»Π°Π²Π΅ 14).

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

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

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

Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ β€” Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ спСцификации ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΠΌΠΈΠ½ΠΈ-язык, Ρ‚.Π΅. Π² Π½Π΅ΠΌ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ слоТныС структуры ΠΈ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ΡΡ дСйствия Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. МоТно Π»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠ³ΠΎ языка ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…? Если это Ρ‚Π°ΠΊ, Ρ‚ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, настало врСмя пСрСвСсти ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈΠ· нСявного Π²ΠΈΠ΄Π° Π² явный Π² языкС спСцификации.

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

К соТалСнию, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΡΠΎΠ·Π΄Π°ΡŽΡ‚ свой ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΌΠΈΠ½ΠΈ-язык ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΌ способом ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ ΠΎΡΠΎΠ·Π½Π°ΡŽΡ‚, насколько ΠΎΠ½ Π·Π°ΠΏΡƒΡ‚Π°Π½. Как ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΠΌΠΈΠ½ΠΈ-язык? Иногда ΠΎΡ‚Π²Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ пСрСосмыслСниС конструкции всСго прилоТСния. Π”Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠ΅Ρ‡Π°Π»ΡŒΠ½ΠΎ извСстным ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Π±Ρ‹Π» Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ TECO, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²ΠΎΠ·Π½ΠΈΠΊ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ макрос, Π° Π·Π°Ρ‚Π΅ΠΌ появились Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈ условныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ программисты Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰Π΅ΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ. Бозданная Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ уродливая конструкция Π±Ρ‹Π»Π° Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ исправлСна ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ всСго Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°, основанного Π½Π° Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Π½Π½ΠΎΠΌ языкС. Π’Π°ΠΊ развивался Emacs Lisp (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рассматриваСтся Π½ΠΈΠΆΠ΅).

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

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

ΠΠ°Ρ‡Π°Ρ‚ΡŒ слСдуСт с нСбольшой классификации, которая ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ дальнСйший ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π».

8.1. ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ языков

ВсС языки, прСдставлСнныС Π½Π° рис. 8.1, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… этой ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π³Π»Π°Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ. ОписаниС ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² ΠΏΡ€Π°Π²ΠΎΠΉ части схСмы, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π² Π³Π»Π°Π²Π΅ 14.

Π’ Π³Π»Π°Π²Π΅ 5 Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈΡΡŒ Unix-соглашСния для Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Π½ΠΈΡ… имССтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ спСктр слоТности. На самом Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ находятся Ρ„Π°ΠΉΠ»Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ простыС ассоциации ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΈ свойствами, Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Ρ‚Π°ΠΊΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»Ρ‹ /etc/passwd ΠΈ .newsrc. Π”Π°Π»Π΅Π΅ прСдставлСны Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ ΠΌΠ°Ρ€ΡˆΠ°Π»ΠΈΠ½Π³ ΠΈΠ»ΠΈ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ структур Π΄Π°Π½Π½Ρ‹Ρ…. Одинаково Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ PNG ΠΈ SNG.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ Π½Π° Π³Ρ€Π°Π½ΠΈΡ†Π΅ ΠΌΠΈΠ½ΠΈ-языков, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ структуру, Π½ΠΎ ΠΈ дСйствия, выполняСмыС Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ срСдС (Ρ‚.Π΅. памяти Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ самого Ρ„Π°ΠΉΠ»Π° Π΄Π°Π½Π½Ρ‹Ρ…). XML-Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° стрСмится "ΠΏΠ΅Ρ€Π΅ΡˆΠ°Π³Π½ΡƒΡ‚ΡŒ" эту Π³Ρ€Π°Π½ΠΈΡ†Ρƒ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΌΠΈΠ½ΠΈ-языка, прСдставлСнным Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅, являСтся Glade, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° для создания GUI-интСрфСйсов. Π€ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ для чтСния ΠΈ записи Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ (скорСС Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ) ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°, ΠΏΡ€ΠΎΡ‡Π½ΠΎ ΡƒΠΊΡ€Π΅ΠΏΠΈΠ»ΠΈΡΡŒ Π² области ΠΌΠΈΠ½ΠΈ-языков. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ yacc ΠΈ lex. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ glade, yacc ΠΈ lex ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π³Π»Π°Π²Π΅ 9.

ΠœΠ°ΠΊΡ€ΠΎΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ Unix, m4 прСдставляСт собой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΡ‡Π΅Π½ΡŒ простой Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΌΠΈΠ½ΠΈ-язык (Ρ‚.Π΅. язык, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выраТаСтся ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹Ρ… связСй ΠΈΠ»ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, Π° Π½Π΅ ΠΊΠ°ΠΊ явныС дСйствия). Он часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС прСпроцСссора для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠΈΠ½ΠΈ-языков.

Рис. 8.1. ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ языков

make-Ρ„Π°ΠΉΠ»Ρ‹ Unix, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ процСсса сборки, Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‚ зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ исходными ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ[77], Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для создания ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈΠ· Π΅Π³ΠΎ исходного ΠΊΠΎΠ΄Π°. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° make ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ объявлСния для ΠΎΠ±Ρ…ΠΎΠ΄Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΠΎΠ³ΠΎ Π΄Π΅Ρ€Π΅Π²Π° зависимостСй, выполняя Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ для обновлСния сборки. Подобно спСцификациям yacc ΠΈ lex, make-Ρ„Π°ΠΉΠ»Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΌΠΈΠ½ΠΈ-языком. Они ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ ограничСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ дСйствия, выполняСмыС Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ срСдС (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π² Ρ‚ΠΎΠΉ части Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, Π³Π΄Π΅ располоТСны исходныС ΠΈ сгСнСрированныС Ρ„Π°ΠΉΠ»Ρ‹), make-Ρ„Π°ΠΉΠ»Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Π³Π»Π°Π²Π΅ 15.

Π―Π·Ρ‹ΠΊ XSLT, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для описания трансформаций XML-Ρ„Π°ΠΉΠ»ΠΎΠ², соотвСтствуСт Π²Π΅Ρ€Ρ…Π½Π΅ΠΌΡƒ ΡƒΡ€ΠΎΠ²Π½ΡŽ слоТности Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΌΠΈΠ½ΠΈ-языков. Он довольно слоТСн для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈ-язык, ΠΎΠ΄Π½Π°ΠΊΠΎ раздСляСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ характСристики Ρ‚Π°ΠΊΠΈΡ… языков, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ XSLT.