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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π–ΡƒΡ€Π½Π°Π» Β«ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ€Π°Β» β„– 10 ΠΎΡ‚ 14 ΠΌΠ°Ρ€Ρ‚Π° 2006 Π³ΠΎΠ΄Π°Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 31

Автор ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ€Π°

ΠšΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Ρ€Π°Π·ΠΈΡ‚ΡŒ: язык β€” это Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ знаковая систСма, Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ создали, являСтся скорСС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ модСлью. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΡŒ языка, Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ абстрактным синтаксисом. Если Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒΡΡ, Β«Π·Π½Π°ΠΊΠΎΠ²ΠΎΠΉ систСмой» DSL Π² контСкстС языковых инструмСнтариСв ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ понятий языка.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° для DSL β€” занятиС Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, Π½Π΅ΠΆΠ΅Π»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ самого DSL, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚ΡƒΡ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ»Π΅ для творчСства.

MPS ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ встроСнным Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€ΠΎΠΌ для создания Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² DSL, основанном Π½Π° ΠΈΠ΄Π΅Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ячССк. Поясним эту идСю Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° для ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Β«ΡΡ‚Π°Ρ‚ΡŒΡΒ». На рис. 3 ячСйка-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня содСрТит Π΄Π²Π΅ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ячСйки, располоТСнныС Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ. ВСрхняя ячСйка содСрТит константноС слово Β«ΡΡ‚Π°Ρ‚ΡŒΡΒ», Π° ниТняя являСтся Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ для Π΄Ρ€ΡƒΠ³ΠΈΡ… ячССк. И Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

ПослС опрСдСлСния «раскладки» составных частСй остаСтся ΡΠ²ΡΠ·Π°Ρ‚ΡŒ с Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Β«Π½Π°Π·Π²Π°Π½ΠΈΠ΅Β» ΠΈ Β«Π°Π²Ρ‚ΠΎΡ€Β», Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Π²Ρ‹Π±ΠΎΡ€Π° Π°Π²Ρ‚ΠΎΡ€Π° ΠΈΠ· списка, ΠΈ получится Π½Π΅Ρ‡Ρ‚ΠΎ, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½ΠΎΠ΅ Π½Π° рис. 4. ΠŸΡ€ΠΎΡ†Π΅ΡΡ рСдактирования Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΎΡ‡Π΅Π½ΡŒ прост ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ ΡƒΠ΄ΠΎΠ±Π΅Π½ (хотя ΠΈ слСгка Π½Π΅ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π΅Π½). НапримСр, для добавлСния ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ячСйку Β«β€¦Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ подраздСл…» ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π²Π²ΠΎΠ΄ тСкста. ПослС наТатия клавиши Enter фокус Π²Π²ΠΎΠ΄Π° пСрСмСстится Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π».

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ синтаксичСских Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ²

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

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ синтаксичСских Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² (ГБА) β€” это ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°, Π½Π° Π²Ρ…ΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ поступаСт Ρ„Π°ΠΉΠ» с описаниСм ΠΏΡ€Π°Π²ΠΈΠ» Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ языка, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ†Π΅Π»Π΅Π²Ρ‹ΠΌ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ исходныС тСксты Π½Π° C++ (ΠΈΠ»ΠΈ, допустим, Java), содСрТащиС ΠΊΠΎΠ΄ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ конструкций Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ языка ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, для формирования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ. НаписаниС собствСнного ГБА «с изюминкой» Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя являлось прСстиТной акадСмичСской Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ Π² области computer science, поэтому число ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… инструмСнтов сСгодня исчисляСтся дСсятками. Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² названиях ΠΌΠ½ΠΎΠ³ΠΈΡ… ГБА: Β«Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ компилятор компиляторов» (yacc), Β«Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ инструмСнт для распознавания языков» (ANTLR) ΠΈ Ρ‚. ΠΏ.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ ANTLR для языка арифмСтичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, содСрТащих числа, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ β€˜+’ ΠΈ β€˜*’. Π₯отя подобная запись ΠΈ выглядит ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ²Π°Ρ‚ΠΎ, ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π½Π°Π²Ρ‹ΠΊΠΎΠ² ΠΎΠ½Π° воспринимаСтся достаточно Π»Π΅Π³ΠΊΠΎ.

expr : mexpr (β€˜+’ mexpr)* β€˜;’!;

mexpr : number (β€˜*’ number)*;

number : (β€˜0’..’9’)+;

НСсмотря Π½Π° ряд трудностСй, связанных с повсСмСстным ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ГБА, Π½Π° сСгодняшний дСнь ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ распространСнным срСдством Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Π±ΠΎΡ€Π° исходных тСкстов*. НапримСр, Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚Π΅Π»ΡŒ SQL для ΡˆΠΈΡ€ΠΎΠΊΠΎ извСстной ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ Π‘Π£Π‘Π” PostgreSQL Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΠ°Ρ€Ρ‹ lex ΠΈ yacc. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ эта «сладкая ΠΏΠ°Ρ€ΠΎΡ‡ΠΊΠ°Β» ΠΎΠΊΠ°Π·Π°Π»Π° сущСствСнноС влияниС Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ софт, ΠΏΠΎΡ€ΠΎΠ΄ΠΈΠ² Ρ†Π΅Π»ΠΎΠ΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Β«ΠΌΠ°Π»Ρ‹Ρ… языков» (ΠΏΠΎ сути своСй ΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ DSL), с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ *nix-систСм часто ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π΅Π»ΠΎ ΠΏΡ€ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².

* Π’ΠΎΡ‚, ΠΊΡ‚ΠΎ боролся с нСоднозначностями ΠΈ устранСниСм Π»Π΅Π²ΠΎΠΉ рСкурсии ΠΏΡƒΡ‚Π΅ΠΌ ввСдСния Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ» Π² Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΡƒ, Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, трудности ΠΊΠ°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° приходится ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π²Π°Ρ‚ΡŒ.

ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ° DSL ΠΊ языку Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

DSL сам ΠΏΠΎ сСбС, ΠΏΡƒΡΡ‚ΡŒ Π΄Π°ΠΆΠ΅ ΠΈ с Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ, Π½Π΅ прСдставляСт интСрСса Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΌΡ‹ Π½Π΅ привяТСм Π΅Π³ΠΎ понятия ΠΊ языку Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ β€” ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ языку программирования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Java ΠΈΠ»ΠΈ Π‘#. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ Π² языковых инструмСнтариях ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ мСтапрограммирования (см. Π²Ρ€Π΅Π·ΠΊΡƒ Β«Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°?Β»).

Π’ΠΈΠ΄ ΠΌΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ сущСствСнно зависит ΠΊΠ°ΠΊ ΠΎΡ‚ структуры DSL, Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚ языка Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. НапримСр, Π² случаС DSL Β«Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΡΡ‚Π°Ρ‚ΡŒΠΈ Π² КВ» ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ HTML ΠΈΠ»ΠΈ макрос для Word, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² процСссС выполнСния сформируСт шаблон Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. ΠŸΡ€ΠΈ этом ΠΌΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ HTML, Π±ΡƒΠ΄Π΅Ρ‚ сильно ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΌΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Word.

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

ΠŸΡ€ΠΎΡ†Π΅ΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

ΠžΠ±ΠΎΠ±Ρ‰Π°Ρ, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ этапы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с участиСм языковых инструмСнтариСв:

1. CΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ°, содСрТащСго Ρ‡Π°ΡΡ‚ΠΈΡ‡Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ минимально Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° бизнСс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ («скСлСт» Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ прилоТСния).

2. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ сущСствСнных абстракций ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° DSL.

3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² для понятий DSL.

4. ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° прилоТСния Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ языкового инструмСнтария.

5. РСализация бизнСс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… DSL.

6. АвтоматичСская гСнСрация исходных тСкстов Π½Π° языкС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π­Ρ‚Π°ΠΏΡ‹ 2β€”6 схСматичСски ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Ρ‹ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ (рис. 5), Ρ‚Π°ΠΌ ΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° взаимосвязь ΠΌΠ΅ΠΆΠ΄Ρƒ языковыми инструмСнтариями ΠΈ классичСскими срСдами Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

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

ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ подавляСтся расхоТдСниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ исходного ΠΊΠΎΠ΄Π°. ВысокоуровнСвыС абстракции ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, записанныС Π½Π° DSL, связаны с ΠΊΠΎΠ΄ΠΎΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠŸΡ€ΠΈ этом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ всСгда остаСтся Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ, вСдь измСнСния исходного ΠΊΠΎΠ΄Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ измСнСниям Π² самом DSL;

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

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

становится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС DSL Π² схоТих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…. ВсС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ DSL, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΎΠ±Ρ‰ΠΈΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², становятся ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΌ Π°ΠΊΡ‚ΠΈΠ²ΠΎΠΌ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡΠ²Π»ΡΡŽΡ‚ΡΡ квинтэссСнциСй ΠΎΠΏΡ‹Ρ‚Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС Π² Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ….

На ΠΌΠΎΠΉ взгляд, Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρƒ языковых инструмСнтариСв сущСствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΉ нСдостаток: риск попадания Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ поставщика ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ сСйчас DSL ТСстко привязан ΠΊ языковому ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡŽ, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ½ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½. И Ссли Π² ΠΌΠΈΡ€Π΅ Microsoft этот вопрос ΠΎΡ‚ΠΏΠ°Π΄Π°Π΅Ρ‚ автоматичСски (Π²Π²ΠΈΠ΄Ρƒ Ρ‚ΠΎΡ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π° зависимости), Ρ‚ΠΎ для Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ MPS ΠΎΠ½ Π²ΠΏΠΎΠ»Π½Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½, Π΄Π°ΠΆΠ΅ нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ всС Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° MPS хранятся Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ XML. РазумССтся, это Π½Π΅ являСтся Π½Π΅ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»ΠΈΠΌΡ‹ΠΌ прСпятствиСм Π½Π° ΠΏΡƒΡ‚ΠΈ ΠΊ использованию языковых инструмСнтариСв, Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Ρ‡Ρ‚ΠΎ стандартизация Π² этой области станСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ лишь с появлСниСм Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅ ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΈ нСсовмСстимых Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ². ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΊ списку тСхнологичСских рисков ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° добавляСтся Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡƒΠ½ΠΊΡ‚ΠΈΠΊ.