User:StasFomin/Language Oriented Programming

From Wiki4Intranet
Jump to: navigation, search
Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

БСгодня Ρƒ мСня ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π΄ΠΎΠΊΠ»Π°Π΄, Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ я Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎ языковый Ρ‚Π΅ΠΌΡƒ (???) Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

МСня Π·ΠΎΠ²ΡƒΡ‚ Максим Мазин, я Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ JetBrains ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠΌ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ YouTrack. YouTrack β€” это Π±Π°Π³Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€, ΠΈ самоС ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π² YouTrack Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ написан с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Language Record программирования. Π§Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅? Π­Ρ‚ΠΎ такая концСпция, которая ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ написании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Π²Ρ‹ создаСтС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык, Π° Π·Π°Ρ‚Π΅ΠΌ, Π½Π° этом ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ языкС, Π²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ ΡƒΠΆΠ΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ собствСнно ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.


Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

Для Ρ‡Π΅Π³ΠΎ это? Какой ΠΎΡ‚ этого ΠΏΡ€ΠΎΠΊ, ΠΈ Ρ‡Ρ‚ΠΎ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ всСм β€” ΠΎΠ± этом я ΠΈ Π±ΡƒΠ΄Ρƒ сСгодня Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ β€” Π²ΠΎΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ языки программирования. ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ языка Java, PHP ΠΈΠ»ΠΈ C# Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” Ρƒ вас ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство bullet plate (??? 01:15) -ΠΊΠΎΠ΄Π°, Ρ‚.Π΅. Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ ΠΈΠ· Ρ€Π°Π·Π° Π² Ρ€Π°Π·, Π½ΠΎ Π½Π΅ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π° просто для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ компилятор ΠΌΠΎΠ³ этот ΠΊΠΎΠ΄ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠŸΠΈΡΠ°Ρ‚ΡŒ скобочки ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅, Ρ‚ΠΎΡ‡ΠΊΠΈ, … Π½Ρƒ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

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

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

Π’ языкС Java сущСствуСт конструкция synchronized, которая Π½Π΅ являСтся ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ конструкциСй ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния, являСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ, ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ конструкциСй, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΉ для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, Π² языкС C++, сущСствуСт ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². Π’ΠΎΡ‚, сравнитС. Π’ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ ситуации, Ссли Π±Ρ‹ Ρƒ вас Π½Π΅ Π±Ρ‹Π»ΠΎ конструкции synchronized Π²Π°ΠΌ Π±Ρ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²ΠΎΡ‚ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎΡ‚ ΠΊΠΎΠ΄Π°. Π‘Π»ΠΎΠΊ Β«finallyΒ» ΠΈ Π±Π»ΠΎΠΊ получСния Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, это всС Π²ΠΎΡ‚ bullet-plate ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ интСрСсно ΠΏΠΈΡΠ°Ρ‚ΡŒ постоянно. ВмСсто этого сущСствуСт DSL-ная конструкция Β«synchronizedΒ», которая позволяСт Π·Π°Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΈ Π½Π΅ бСспокоится ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΅Π΅ Π½Π°Π΄ΠΎ ΠΎΡ‚ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π² языкС C++ Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π²Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²ΠΈΠ΄, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ Ρƒ вас ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π°Π΄ комплСксными числами.


Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

Π­Ρ‚ΠΎ всС ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π½ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π² языкС Java, начиная с пятой вСрсии, появились read-write Π»ΠΎΠΊΠΈ, ΠΈ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ для нас, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ снова Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ стиля, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ слСва:

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

Π’.Π΅. Π½Π°Π΄ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ, Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΎΡ‚ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ, … это всС ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π½ΠΈΠ²Π΅Π»ΠΈΡ€ΡƒΠ΅Ρ‚ удобства.

Если Π±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒβ€¦ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ языки, Π½Π°ΠΌ Π±Ρ‹ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. НапримСр, Ρ‚Π΅ конструкции, языковыС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ, Π² языкС Java, ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π°ΠΌ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π·Π°Π΄Π°Ρ‡. Но ΠΌΡ‹ Π² ΠΆΠΈΠ·Π½ΠΈ сталкиваСмся ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ. НапримСр, Ссли ΠΌΡ‹ пишСм Π²Π΅Π±-аппликСйшн, Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Π΅Π±-ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Для этого DSLΠ΅ΠΉ Π½Π΅Ρ‚, Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅, Ссли ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠ°ΠΊΡƒΡŽ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ Π²Ρ€ΠΎΠ΄Π΅ dependency injection, Ρ‚ΠΎ Π½Π°ΠΌ Ρ‚ΠΎΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ, ΠΈ Ρ…ΡƒΠΆΠ΅ Ρ‚ΠΎΠ³ΠΎ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ смСси языков, ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π° Java, Π½Π° XMLΠ΅, ΠΈ всС это Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ вСсСло. И Π³Π»Π°Π²Π½ΠΎΠ΅ β€” Π½Π°ΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ с этим Π½Π΅ ΠΏΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ созданиС языкового Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π³Ρ€ΠΎΠ·ΠΈΡ‚ Π½Π°ΠΌ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ рисками.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

КакиС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈ создании DSL ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ потрСбности Π½Π΅ Π±Ρ€ΠΎΡΠ°Ρ‚ΡŒΡΡ сразу ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ DSL?

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

Бамая главная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ всС ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ всС люди, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ созданиСм DSLΠ΅ΠΉ, это ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ языковых Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ. Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ имССтся Π² Π²ΠΈΠ΄Ρƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π²Π° языковых Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ созданы нСзависимыми Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

Π’ΠΎΡ‚ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Если Ρƒ вас Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ, Π² нашСм случаС для Java, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Hibernate, Spring ΠΈΠ»ΠΈ Joda Time, Ρ‚ΠΎ всС ΠΎΠ½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ собой совмСстимы, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ, Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ компиляции. Π’.Π΅. Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² вашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈ Hibernate ΠΈ Spring, ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π²Π°ΠΌ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ. Но Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ языковыС надстройки, Π² Π²ΠΈΠ΄Π΅ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ макросов, ΠΈΠ»ΠΈ Π΅Ρ‰Π΅ ΠΊΠ°ΠΊΠΈΡ…-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ‚Π΅Ρ…Π½ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ Π²Π°ΠΌ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ конструкции Π² язык Java, Ρ‚ΠΎ ΠΈ эти надстройки созданы нСзависимым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‚ΠΎ всС врСмя сущСствуСт риск, Ρ‡Ρ‚ΠΎ эти надстройки Π±ΡƒΠ΄ΡƒΡ‚ с Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf
Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

Π’ΠΎΡ‚ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊΠΎΠΉ ΠΎΡ‡Π΅Π½ΡŒ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Допустим Ρƒ нас ΠΎΡ‚ΠΊΡƒΠ΄Π°-Ρ‚ΠΎ появилось Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅, ΠΈ Π² частности ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΠΎΠ»ΡΡ†ΠΈΡŽ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² строках. МоТно Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, ΠΈ вмСсто Β«resultCountΒ» Π±ΡƒΠ΄Π΅Ρ‚ подставлСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого выраТСния.

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

Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ½ ΠΎΡ‡Π΅Π½ΡŒ простой, Π½ΠΎ ΠΏΠΎ Ρ„Π°ΠΊΡ‚Ρƒ, всС, ΠΊΡ‚ΠΎ создаСт DSL Π½Π° основС тСкстовой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Ρƒ Π½ΠΈΡ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅Ρ‚ увСрСнности Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²Ρ‹.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

Другая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, которая ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Π½Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ DSLΠΈ. Допустим Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π²ΠΎΠΏΡ€Π΅ΠΊΠΈ слоТностями ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ с ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ Π²Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ DSL. ΠŸΠΈΡˆΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ прСпроцСссор, Π½Π°Ρ‚Ρ€Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚Π΅ этот прСпроцСссор Π½Π° Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ вашими DSLΠ½Ρ‹ΠΌΠΈ конструкциями, ΠΎΠ½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈ Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΠΎΠ΄, Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ исполняСмый ΠΊΠΎΠ΄. Π­Ρ‚ΠΎ всС ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π½ΠΎ Π² нашС врСмя Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΏΠΈΡˆΠ΅Ρ‚ ΠΊΠΎΠ΄, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ IDE. Π’Π°ΠΊ Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ просто, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±Π΅Π· использования IDE ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° драматичСски сниТаСтся. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ создадитС Ρ‚Π°ΠΊΠΎΠΉ DSL, Π±ΡƒΠ΄ΡƒΡ‚ ситуации, ΠΊΠΎΠ³Π΄Π° ваши Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ваши ΠΊΠΎΠ»Π»Π΅Π³ΠΈ, ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ просто язык Java Π² Idea, просто язык C# вмСстС с ReSharperΠΎΠΌ, Π½Π΅ΠΆΠ΅Π»ΠΈ Π±Ρ€Π°Ρ‚ΡŒ вашС ΠΏΠΎΠ΄Π΅Π»ΠΈΠ΅, ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ вашСго подСлия ΠΏΠΈΡΠ°Ρ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ IDE.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

Под ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ IDE понимаСтся всС возмоТности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ соврСмСнныС IDE ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ. Π’.Π΅. это подсвСтка синтаксиса СстСствСнно, подсвСтка ошибок Π΄ΠΎ компиляции, Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³, интСграция с Version Control-Π°ΠΌΠΈ, всС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅.

И Π΄Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ само ΠΏΠΎ сСбС созданиС языка это Ρ€Π΅ΡˆΠ΅Π½Π½Π°Ρ матСматичСская Π·Π°Π΄Π°Ρ‡Π°. Если Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для прСдставлСния синтаксиса, Π²Ρ‹ смоТСтС ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ компилятор. Но ΠΎΠ½Π°, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, трудоСмкая, Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ компилятор компиляторов.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

И Ссли Π²Ρ‹ ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ°Π΅Ρ‚Π΅ΡΡŒ Π² языково-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π½ΡŒ Π³Π»ΡƒΠ±ΠΎΠΊΠΎ, Ρ‚.Π΅. Π²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Ρ‚ΠΎ Ρƒ вас ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° совмСстимости Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ. Π’.Π΅. Ρƒ вас Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ систСмы Ρ‚ΠΈΠΏΠΎΠ². Π’.Π΅. Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ Π΄Π²Π° нСзависимых Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ систСмы Ρ‚ΠΈΠΏΠΎΠ² этих Π΄Π²ΡƒΡ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»ΠΈ ΠΈ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠ³Ρƒ.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ DSL Π² Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅, Ρ‚Π΅ΠΌΠ° ΠΎΡ‡Π΅Π½ΡŒ горячая, Ρ‚ΡƒΡ‚ Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅ Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Nemerle, ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΅Ρ‰Π΅ OCaml, сСйчас Π΅ΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… срСдств, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ DSLΠΈ. Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… Eclipsa сущСствуСт XText-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΡƒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ DSLя c ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ IDE.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

Π£ всСх Ρƒ Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Главная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²Ρ‹Ρ‚Π΅ΠΊΠ°Π΅Ρ‚ ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π½Π° тСкстовыС Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ. А Ρ€Π°Π· ΠΎΠ½ΠΈ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π½Π° тСкстовыС Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ, Ρ‚ΠΎ Ρƒ Π½ΠΈΡ… Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… шансов ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ совмСстимости конструкций.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

Но ΠΊ ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π² нашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ JetBrains, Π±Ρ‹Π»Π° создана срСда MPS.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

MPS ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ meta-programming system, Π² основном ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для создания ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ языков, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Ρ‡Ρ‚ΠΎ сразу послС Π΅Π³ΠΎ создания появлялась ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° IDE.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

Π― ΡƒΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· сказал, Ρ‡Ρ‚ΠΎ тСкстовыС Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ приводят ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ СстСствСнным Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ являСтся Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ с AST β†’ абстрактным синтаксичСским Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ, ΠΈ Π·Π°ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ программиста прямо, Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ абстрактноС синтаксичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ Ρ‚Π°ΠΊΠΈΠ΅ Ρ€Π°Π½Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΡΡŒ, ΠΈ ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ сводятся ΠΊ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌ. РисуСтся Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ смыслС… Ρƒ мСня Ρ€Π΅Π±Π΅Π½ΠΎΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° свойствах Π² большСй стСпСни, Π²Ρ‹ рисуСтС Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹, Ρƒ вас ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, Π΄Π°Π»Π΅Π΅ эти ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ, получаСтся ΠΊΠΎΠ΄.

Π•ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ эти ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ β€” ΠΌΡ‹ΡˆΠΊΠΎΠΉ Ρ…Π²Π°Ρ‚Π°Ρ‚ΡŒ, Ρ‚Π°ΡΠΊΠ°Ρ‚ΡŒ, Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Π£ нас, Ρƒ программистов, Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡ΠΊΠ° ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² MPSΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° концСпция ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ².

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

О Ρ‡Π΅ΠΌ Ρ€Π΅Ρ‡ΡŒ? Π’ΠΎΡ‚ Ρƒ вас Π΅ΡΡ‚ΡŒ абстрактноС синтаксичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ. Π’.Π΅. это Ρ‚ΠΎ прСдставлСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ получаСтся, Π² любом случаС получаСтся, ΠΊΠΎΠ³Π΄Π° парсСр распарсил ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя, Ρƒ вас Π΅ΡΡ‚ΡŒ Π΅Π³ΠΎ проСкция, Π²ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ тСкста.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° этого синтаксичСского Π΄Π΅Ρ€Π΅Π²Π° Π΅ΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Π΅ΠΌΡƒ ячСйка. Π’Π΅ ΠΈΠ· вас, ΠΊΡ‚ΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с TeXΠΎΠΌ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅, для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Ρƒ вас Π΅ΡΡ‚ΡŒ ячСйка, ячСйки ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ Π² Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ячСйки ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

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

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

Π£ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ стороны, ΠΈ Π΅ΡΡ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ стороны. ΠŸΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ стороны понятны. Π£ нас Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… тСкстовых Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊ, Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ тСкста, Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ тСкстовых Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊ, Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ², всС совмСстимо, всС ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ.

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

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

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

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

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

ВмСстС с MPSΠΎΠΌ, Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ, ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Ρ€Π°Π·Π½Ρ‹Π΅ языковыС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с замыканиями, с коллСкциями… ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. И Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ количСство языков для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с XML, Ρ‚ΡƒΠΏΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π’.Π΅. Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ XML, ΠΈ Ρ‡Ρ‚ΠΎ самоС Π³Π»Π°Π²Π½ΠΎΠ΅ β€” Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ XML ΠΈΠ· своСго ΠΊΠΎΠ΄Π°.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

Ну ΠΈ Π΅Ρ‰Π΅ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ количСство языков, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для создания языков. MPS Π² ΠΏΠ»Π°Π½Π΅ создания языков Π²ΠΏΠΎΠ»Π½Π΅ чСстно (??? 16:20)

ВмСсто дСмонстрации β€” выглядит ΠΊΠ°ΠΊ-Ρ‚ΠΎ Ρ‚Π°ΠΊ ↑.

Π― ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π΅ со своСго ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, поэтому всС, ΠΊΠΎΠ³ΠΎ интСрСсуСт дСмонстрация, ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°ΡŽ Π½Π° стСнд Π² ΠΊΠΎΡ€ΠΈΠ΄ΠΎΡ€Π΅. Π’ΡƒΡ‚ посмотритС, ΠΊΠ°ΠΊ просто Π²Π·ΡΡ‚ΡŒ ΠΈ Π·Π°DSLΠ»ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ языковой конструкции.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

ЀактичСски, это всС, Ρ‡Ρ‚ΠΎ я Ρ…ΠΎΡ‚Π΅Π» Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ нСсколько Π²Π°ΠΆΠ½Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

MSP ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для создания языковых Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, Ρ‚.Π΅. Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Java ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ конструкций, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π² Π½ΠΈΡ… Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ собствСнныС DSLΠΈ.

Π’ΠΎΡ‚ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠœΠ°Ρ€Ρ‚ΠΈΠ½ Π€Π°ΡƒΠ»Π΅Ρ€ создал язык для описания своСй финансовой отчСтности.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ MPSΠ° ΠΌΡ‹ написали YouTrack, Ρ‚Π°ΠΊΠΎΠΉ большой Π±Π°Π³Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€ β€” большой, Π² смыслС с большим количСством ΠΊΠΎΠ΄Π° (сгСрСнированного). Но ΠΌΠΎΠΉ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ подсказываСт ΠΌΠ½Π΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ пишСм ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ, этого ΠΊΠΎΠ΄Π° достаточно ΠΌΠ°Π»ΠΎ. ΠžΠΏΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠΌΡΡ, ΠΌΡ‹ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ выглядит ΠΊΠΎΠ΄ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅, сколько Ρ‚Π°ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†. Кода достаточно ΠΌΠ°Π»ΠΎ, ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции поднят достаточно высоко. Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ YouTrack Π±Ρ‹Π» создан Π½Π°Π±ΠΎΡ€ языков, Ρ‡Π°ΡΡ‚ΡŒ этих языков ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π°, Π° Ρ‡Π°ΡΡ‚ΡŒ β€” Π·Π°ΠΊΡ€Ρ‹Ρ‚Π°. ΠœΡ‹ ΠΈΡ… ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΡ‚Π΄Π°Π΅ΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ достигли ΠΏΠΎΠΊΠ° ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ½ΠΎΠ³ΠΎ качСства.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

Π’ΠΎΡ‚, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ настоящСС, ΠΆΠΈΠ²ΠΎΠ΅.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

Π£ MPSΠ° Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ свойство. Он Β«Apache 2.0Β»-Π»ΠΈΡ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ, абсолюно бСсплатный, Π΄Π°ΠΆΠ΅ для коммСрчСского использования.

Language Oriented Programming (LOP) Π² дСйствии (Максим Мазин, ADD-2011).pdf

Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ здСсь. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ вопросы, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ Π²Π°ΠΌ ΠΈΡ… Π·Π°Π΄Π°Ρ‚ΡŒ.

(18:46)