User:StasFomin/Language Oriented Programming
Π‘Π΅Π³ΠΎΠ΄Π½Ρ Ρ ΠΌΠ΅Π½Ρ ΠΏΠ΅ΡΠ²ΡΠΉ Π΄ΠΎΠΊΠ»Π°Π΄, ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Ρ Π±ΡΠ΄ΡΡ ΠΏΡΠΎ ΡΠ·ΡΠΊΠΎΠ²ΡΠΉ ΡΠ΅ΠΌΡ (???) Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ.
ΠΠ΅Π½Ρ Π·ΠΎΠ²ΡΡ ΠΠ°ΠΊΡΠΈΠΌ ΠΠ°Π·ΠΈΠ½, Ρ ΡΠ°Π±ΠΎΡΠ°Ρ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ JetBrains ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠΌ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ YouTrack. YouTrack β ΡΡΠΎ Π±Π°Π³ΡΡΠ΅ΠΊΠ΅Ρ, ΠΈ ΡΠ°ΠΌΠΎΠ΅ ΡΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π² YouTrack ΡΠΎ, ΡΡΠΎ ΠΎΠ½ Π½Π°ΠΏΠΈΡΠ°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Language Record ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π§ΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅? ΠΡΠΎ ΡΠ°ΠΊΠ°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΏΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ, Π° Π·Π°ΡΠ΅ΠΌ, Π½Π° ΡΡΠΎΠΌ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅, Π²Ρ Π½Π°ΡΠΈΠ½Π°Π΅ΡΠ΅ ΡΠΆΠ΅ ΠΏΠΈΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΠΊΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ»Ρ ΡΠ΅Π³ΠΎ ΡΡΠΎ? ΠΠ°ΠΊΠΎΠΉ ΠΎΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠΊ, ΠΈ ΡΡΠΎ ΠΌΠ΅ΡΠ°Π΅Ρ Π΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ Π²ΡΠ΅ΠΌ β ΠΎΠ± ΡΡΠΎΠΌ Ρ ΠΈ Π±ΡΠ΄Ρ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°ΡΡ.
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ β Π²ΠΎΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ·ΡΠΊΠ° Java, PHP ΠΈΠ»ΠΈ C# Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° β Ρ Π²Π°Ρ ΠΏΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ bullet plate (??? 01:15) -ΠΊΠΎΠ΄Π°, Ρ.Π΅. ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΡΡ ΠΈΠ· ΡΠ°Π·Π° Π² ΡΠ°Π·, Π½ΠΎ Π½Π΅ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ, Π° ΠΏΡΠΎΡΡΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΌΠΎΠ³ ΡΡΠΎΡ ΠΊΠΎΠ΄ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ. ΠΠΈΡΠ°ΡΡ ΡΠΊΠΎΠ±ΠΎΡΠΊΠΈ ΠΊΡΡΠ³Π»ΡΠ΅, ΡΠΎΡΠΊΠΈ, β¦ Π½Ρ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
Π ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ΡΡ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ, ΡΠΎ Ρ Π²Π°Ρ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π΅ΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π±ΠΎΠ»Ρ ΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΎΡΠΊΡΡΠ²Π°ΡΡ ΠΎΠΊΠ½Π°, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Ρ Π²Π°Ρ Π·Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°. Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Ρ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π‘#, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² ΡΠ·ΡΠΊ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ.
Π ΡΠ·ΡΠΊΠ΅ Java ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ synchronized, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ, ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΠΎΠΉ Π΄Π»Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, Π² ΡΠ·ΡΠΊΠ΅ C++, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ². ΠΠΎΡ, ΡΡΠ°Π²Π½ΠΈΡΠ΅. Π Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ, Π΅ΡΠ»ΠΈ Π±Ρ Ρ Π²Π°Ρ Π½Π΅ Π±ΡΠ»ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ synchronized Π²Π°ΠΌ Π±Ρ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π²ΠΎΡ ΡΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎΡ ΠΊΠΎΠ΄Π°. ΠΠ»ΠΎΠΊ Β«finallyΒ» ΠΈ Π±Π»ΠΎΠΊ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΡΡΠΎ Π²ΡΠ΅ Π²ΠΎΡ bullet-plate ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ DSL-Π½Π°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Β«synchronizedΒ», ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Ρ Π²Π°ΡΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΈ Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π΅Π΅ Π½Π°Π΄ΠΎ ΠΎΡΠΏΡΡΡΠΈΡΡ.
Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π² ΡΠ·ΡΠΊΠ΅ C++ Π΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΠΈΠ΄, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ Ρ Π²Π°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°Π΄ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ.
ΠΡΠΎ Π²ΡΠ΅ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ, Π½ΠΎ ΠΊΠ°ΠΊ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ Π² ΡΠ·ΡΠΊΠ΅ Java, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΏΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ, ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ read-write Π»ΠΎΠΊΠΈ, ΠΈ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π΄Π»Ρ Π½Π°Ρ, ΡΡΠΎ Π½Π°ΠΌ ΡΠ½ΠΎΠ²Π° Π½ΡΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Π²ΠΎΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΡΠ»Π΅Π²Π°:
Π’.Π΅. Π½Π°Π΄ΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π·Π°Ρ Π²Π°ΡΡΠ²Π°ΡΡ, Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΎΡΠΏΡΡΠΊΠ°ΡΡ, β¦ ΡΡΠΎ Π²ΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½ΠΈΠ²Π΅Π»ΠΈΡΡΠ΅Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π°.
ΠΡΠ»ΠΈ Π±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΠΈΡΠ°ΡΡβ¦ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΡΡΠΈΡΡΡΡ ΡΠ·ΡΠΊΠΈ, Π½Π°ΠΌ Π±Ρ ΡΠ΄Π°Π»ΠΎΡΡ ΡΠ΅ΡΠΈΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΡΠ·ΡΠΊΠΎΠ²ΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΡΡΡ, Π² ΡΠ·ΡΠΊΠ΅ Java, ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²Π°ΠΌ ΡΠ΅ΡΠ°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ Π·Π°Π΄Π°Ρ. ΠΠΎ ΠΌΡ Π² ΠΆΠΈΠ·Π½ΠΈ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ ΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ Π²Π΅Π±-Π°ΠΏΠΏΠ»ΠΈΠΊΠ΅ΠΉΡΠ½, ΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ , ΠΏΠΈΡΠ°ΡΡ Π²Π΅Π±-ΡΡΠΎΠ²Π΅Π½Ρ, ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ DSLΠ΅ΠΉ Π½Π΅Ρ, Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ.
Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΊΠ°ΠΊΡΡ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π²ΡΠΎΠ΄Π΅ dependency injection, ΡΠΎ Π½Π°ΠΌ ΡΠΎΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ, ΠΈ Ρ ΡΠΆΠ΅ ΡΠΎΠ³ΠΎ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΌΠ΅ΡΠΈ ΡΠ·ΡΠΊΠΎΠ², ΠΏΠΈΡΠ°ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π½Π° Java, Π½Π° XMLΠ΅, ΠΈ Π²ΡΠ΅ ΡΡΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ Π²Π΅ΡΠ΅Π»ΠΎ. Π Π³Π»Π°Π²Π½ΠΎΠ΅ β Π½Π°ΠΌ Π½ΠΈΡΠ΅Π³ΠΎ Ρ ΡΡΠΈΠΌ Π½Π΅ ΠΏΠΎΠ΄Π΅Π»Π°ΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π³ΡΠΎΠ·ΠΈΡ Π½Π°ΠΌ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΈΡΠΊΠ°ΠΌΠΈ.
ΠΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ DSL ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ Π±Ρ ΠΏΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠΈ Π½Π΅ Π±ΡΠΎΡΠ°ΡΡΡΡ ΡΡΠ°Π·Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ DSL?
Π‘Π°ΠΌΠ°Ρ Π³Π»Π°Π²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΠ΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Π²ΡΠ΅ Π»ΡΠ΄ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΡΠ°ΡΡΡΡ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ DSLΠ΅ΠΉ, ΡΡΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΡΠ·ΡΠΊΠΎΠ²ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ. Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΠΈΠΌΠ΅Π΅ΡΡΡ Π² Π²ΠΈΠ΄Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π²Π° ΡΠ·ΡΠΊΠΎΠ²ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ·Π΄Π°Π½Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ.
ΠΠΎΡ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ, Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄Π»Ρ Java, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Hibernate, Spring ΠΈΠ»ΠΈ Joda Time, ΡΠΎ Π²ΡΠ΅ ΠΎΠ½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ, ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎ, Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. Π’.Π΅. Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈ Hibernate ΠΈ Spring, ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π²Π°ΠΌ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ. ΠΠΎ Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΠ·ΡΠΊΠΎΠ²ΡΠ΅ Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠΈ, Π² Π²ΠΈΠ΄Π΅ ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², ΠΈΠ»ΠΈ Π΅ΡΠ΅ ΠΊΠ°ΠΊΠΈΡ -Π½ΠΈΠ±ΡΠ΄Ρ ΡΠ΅Ρ Π½ΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π²Π°ΠΌ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π² ΡΠ·ΡΠΊ Java, ΡΠΎ ΠΈ ΡΡΠΈ Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠΎ Π²ΡΠ΅ Π²ΡΠ΅ΠΌΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΈΡΠΊ, ΡΡΠΎ ΡΡΠΈ Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠΈ Π±ΡΠ΄ΡΡ Ρ Π΄ΡΡΠ³ Π΄ΡΡΠ³ΠΎΠΌ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ²Π°ΡΡ.
ΠΠΎΡ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊΠΎΠΉ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΠΎΠΏΡΡΡΠΈΠΌ Ρ Π½Π°Ρ ΠΎΡΠΊΡΠ΄Π°-ΡΠΎ ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅, ΠΈ Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² ΡΡΡΠΎΠΊΠ°Ρ . ΠΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ, ΠΈ Π²ΠΌΠ΅ΡΡΠΎ Β«resultCountΒ» Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
Π ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, Π² Π΄ΡΡΠ³ ΠΊ Π½Π°ΠΌ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ Π΄ΡΡΠ³ΠΎΠ΅ ΡΠ·ΡΠΊΠΎΠ²ΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ ΠΈ Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΡΠΎΠΆΠ΅ Π΄Π΅Π»Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΈΡ ΡΡΡΠΎΠΊ. Π Java ΠΆΠ΅ Π½Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΈΠΈ ΡΡΡΠΎΠΊ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎ, ΡΡΠΎ ΡΠ°Π·Π½ΡΠ΅ Π»ΡΠ΄ΠΈ Π±ΡΠ΄ΡΡ Π΅Π΅ ΡΠ΅Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ Π² ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ²ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΡ . Π Π΄ΠΎΠΏΡΡΡΠΈΠΌ, ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ»Π΅Π³ΠΊΠ° ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ. Π’ΠΎΠ³Π΄Π° ΠΏΡΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ·ΡΠΊΠΎΠ²ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ A ΠΈ B, Ρ Π²Π°Ρ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΡΡΡΡΠ°Π½ΠΈΠΌΠ°Ρ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΡ, ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΠΎΡ ΡΡΠΎΡ Π²ΠΎΡ buzz.
ΠΠ°Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠ½ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠΉ, Π½ΠΎ ΠΏΠΎ ΡΠ°ΠΊΡΡ, Π²ΡΠ΅, ΠΊΡΠΎ ΡΠΎΠ·Π΄Π°Π΅Ρ DSL Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΡΠ°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°ΡΠ΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Ρ Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅Ρ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΠΈ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΠ²Ρ.
ΠΡΡΠ³Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠ΅ΡΠ°Π΅Ρ Π½Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ DSLΠΈ. ΠΠΎΠΏΡΡΡΠΈΠΌ ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π²ΠΎΠΏΡΠ΅ΠΊΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΡ ΡΠ°Π·Π½ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ Π²Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ DSL. ΠΠΈΡΠΈΡΠ΅ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ, Π½Π°ΡΡΠ°Π²Π»ΠΈΠ²Π°Π΅ΡΠ΅ ΡΡΠΎΡ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π½Π° Π²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²Π°ΡΠΈΠΌΠΈ DSLΠ½ΡΠΌΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ, ΠΎΠ½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ ΠΈ Π²ΡΠ΄Π°Π΅Ρ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΊΠΎΠ΄, Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄. ΠΡΠΎ Π²ΡΠ΅ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ, Π½ΠΎ Π² Π½Π°ΡΠ΅ Π²ΡΠ΅ΠΌΡ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΠΏΠΈΡΠ΅Ρ ΠΊΠΎΠ΄, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ IDE. Π’Π°ΠΊ Π½Π΅ Π΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΡΡΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ IDE ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π΄ΡΠ°ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ½ΠΈΠΆΠ°Π΅ΡΡΡ. ΠΠΎΡΡΠΎΠΌΡ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π², ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ ΡΠ°ΠΊΠΎΠΉ DSL, Π±ΡΠ΄ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ, Π²Π°ΡΠΈ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ, ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΡΠΎ ΡΠ·ΡΠΊ Java Π² Idea, ΠΏΡΠΎΡΡΠΎ ΡΠ·ΡΠΊ C# Π²ΠΌΠ΅ΡΡΠ΅ Ρ ReSharperΠΎΠΌ, Π½Π΅ΠΆΠ΅Π»ΠΈ Π±ΡΠ°ΡΡ Π²Π°ΡΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΠ΅, ΠΈ ΡΡΠΎ-ΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ ΠΏΠΈΡΠ°ΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π½Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ IDE.
ΠΠΎΠ΄ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ IDE ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΡΡ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ IDE ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ. Π’.Π΅. ΡΡΠΎ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ Π΄ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Version Control-Π°ΠΌΠΈ, Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅.
Π Π΄Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠ°ΠΌΠΎ ΠΏΠΎ ΡΠ΅Π±Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° ΡΡΠΎ ΡΠ΅ΡΠ΅Π½Π½Π°Ρ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π·Π°Π΄Π°ΡΠ°. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ. ΠΠΎ ΠΎΠ½Π°, ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΡΡΠ΄ΠΎΠ΅ΠΌΠΊΠ°Ρ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ².
Π Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ³ΡΡΠΆΠ°Π΅ΡΠ΅ΡΡ Π² ΡΠ·ΡΠΊΠΎΠ²ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠ΅Π½Ρ Π³Π»ΡΠ±ΠΎΠΊΠΎ, Ρ.Π΅. Π²Ρ Π½Π°ΡΠΈΠ½Π°Π΅ΡΠ΅ ΡΡΡΠΎΠΈΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, ΡΠΎ Ρ Π²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ. Π’.Π΅. Ρ Π²Π°Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏΠΎΠ². Π’.Π΅. Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π΄Π²Π° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, ΡΠΎ Π½ΡΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏΠΎΠ² ΡΡΠΈΡ Π΄Π²ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ, Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΠΎΡΡΠ°Π±Π°ΡΡΠ²Π°Π»ΠΈ ΠΈ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΈΡΡ Π΄ΡΡΠ³ ΠΊ Π΄ΡΡΠ³Ρ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π½ΡΡ ΠΏΠΎΠΏΡΡΠΎΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°ΡΡ DSL Π² ΡΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅, ΡΠ΅ΠΌΠ° ΠΎΡΠ΅Π½Ρ Π³ΠΎΡΡΡΠ°Ρ, ΡΡΡ Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅ Π΅ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Nemerle, ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΅ΡΠ΅ OCaml, ΡΠ΅ΠΉΡΠ°Ρ Π΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π½ΡΡ ΡΡΠ΅Π΄ΡΡΠ², ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ DSLΠΈ. Π ΡΠ°ΠΌΠΊΠ°Ρ Eclipsa ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ XText-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΡ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ DSLΡ c ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ IDE.
Π£ Π²ΡΠ΅Ρ Ρ Π½ΠΈΡ Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠ»Π°Π²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΡΡΠ΅ΠΊΠ°Π΅Ρ ΠΈΠ· ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Ρ Π½Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ. Π ΡΠ°Π· ΠΎΠ½ΠΈ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Ρ Π½Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ, ΡΠΎ Ρ Π½ΠΈΡ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΠ°Π½ΡΠΎΠ² ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ.
ΠΠΎ ΠΊ ΡΡΠ°ΡΡΡΡ, Π² Π½Π°ΡΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ JetBrains, Π±ΡΠ»Π° ΡΠΎΠ·Π΄Π°Π½Π° ΡΡΠ΅Π΄Π° MPS.
MPS ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ meta-programming system, Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΠ·ΡΠΊΠΎΠ², ΠΏΡΠΈΡΠ΅ΠΌ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, ΡΡΠΎ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΡΠ²Π»ΡΠ»Π°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° IDE.
Π― ΡΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π· ΡΠΊΠ°Π·Π°Π», ΡΡΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ. ΠΠΎΡΡΠΎΠΌΡ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ° Π½Π°ΠΏΡΡΠΌΡΡ Ρ AST β Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π΄Π΅ΡΠ΅Π²ΠΎΠΌ, ΠΈ Π·Π°ΡΡΠ°Π²Π»ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° ΠΏΡΡΠΌΠΎ, Π½Π°ΠΏΡΡΠΌΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ.
ΠΠΎΠΏΡΡΠΊΠΈ ΡΠ°ΠΊΠΈΠ΅ ΡΠ°Π½Π΅Π΅ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΡΡ, ΠΈ ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠΏΡΡΠΊΠΈ ΡΠ²ΠΎΠ΄ΡΡΡΡ ΠΊ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌ. Π ΠΈΡΡΠ΅ΡΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°, Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅β¦ Ρ ΠΌΠ΅Π½Ρ ΡΠ΅Π±Π΅Π½ΠΎΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅Ρ Π½Π° ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ Π² Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ, Π²Ρ ΡΠΈΡΡΠ΅ΡΠ΅ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ, Ρ Π²Π°Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ, Π΄Π°Π»Π΅Π΅ ΡΡΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡΡ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊΠΎΠ΄.
ΠΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° β ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ β ΠΌΡΡΠΊΠΎΠΉ Ρ Π²Π°ΡΠ°ΡΡ, ΡΠ°ΡΠΊΠ°ΡΡ, Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ. Π£ Π½Π°Ρ, Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ², Π΅ΡΡΡ ΠΏΡΠΈΠ²ΡΡΠΊΠ° ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Π²ΡΡΡΠ½ΡΡ.
ΠΠΎΡΡΠΎΠΌΡ Π² MPSΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΎΠ½Π½ΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΎΠ².
Π ΡΠ΅ΠΌ ΡΠ΅ΡΡ? ΠΠΎΡ Ρ Π²Π°Ρ Π΅ΡΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ. Π’.Π΅. ΡΡΠΎ ΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠ°ΡΡΠ΅Ρ ΡΠ°ΡΠΏΠ°ΡΡΠΈΠ» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ, Ρ Π²Π°Ρ Π΅ΡΡΡ Π΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡ, Π²ΠΎ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΡΠ΅ΠΊΡΡΠ°.
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ·Π»Π° ΡΡΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π° Π΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ Π΅ΠΌΡ ΡΡΠ΅ΠΉΠΊΠ°. Π’Π΅ ΠΈΠ· Π²Π°Ρ, ΠΊΡΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ TeXΠΎΠΌ, Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ, ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΏΠΎΡ ΠΎΠΆΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ. Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅, Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΡΠ΅ΠΉΠΊΠ°, ΡΡΠ΅ΠΉΠΊΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ Π² Π΅ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΊΡΡΠΏΠ½ΡΠ΅ ΡΡΠ΅ΠΉΠΊΠΈ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
ΠΡΠΈ ΡΡΠΎΠΌ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π° ΡΡΠΈ ΡΡΠ΅ΠΉΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΠΈΡΠ΅ΡΠ΅ Π² ΡΡΠΈ ΡΡΠ΅ΠΉΠΊΠΈ, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π° Π½ΠΈΡ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΡΠ΅ΡΠ΅, ΡΠΎ ΡΡΠ°Π·Ρ ΠΆΠ΅, ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΡΡ Π΄Π΅ΡΠ΅Π²ΡΡΠΊΡ. ΠΡΠΈ ΡΡΠΎΠΌ Π½Π°ΡΠ° ΡΠ΅Π»Ρ, ΠΊΠ°ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² MPS, ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π²Ρ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΡΡΠ²ΡΡΠ²ΠΎΠ²Π°Π»ΠΈ, ΡΡΠΎ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Π½Π΅ Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ, Π° Ρ Π½Π°ΠΏΡΡΠΌΡΡ Ρ Π΄Π΅ΡΠ΅Π²ΡΡΠΊΠΎΠΉ. ΠΠ΄Π΅ΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π½ΠΎ ΡΠ΅ ΠΈΠ· Π²Π°Ρ, ΠΊΡΠΎ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ IDEA, Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΡΠ΅ ΡΠ΅ΠΊΡΡ Π² IDEA, Eclipse ΠΈΠ»ΠΈ Π΅ΡΠ΅ Π³Π΄Π΅-ΡΠΎ, Π²Ρ ΡΠΎΠΆΠ΅ Π½Π΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΡΠ΅ ΡΠ΅ΠΊΡΡ β Π²Ρ ΡΠ°ΠΉΠΏΠ°Π΅ΡΠ΅ ΡΡΠΎ-ΡΠΎ, ΡΡΠΎ ΠΏΠΎΠ³Π»ΠΎΡΠ°Π΅ΡΡΡ IDEA, ΠΈ ΠΎΠ½Π° ΡΡΠΎ Π²ΠΎ ΡΡΠΎ-ΡΠΎ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ. Π ΡΠ»ΡΡΠ°Π΅ Eclipse ΡΡΠΎ Π² Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ°, Π² ΡΠ»ΡΡΠ°Π΅ IDEA β ΡΡΠΎ Π΅ΡΠ΅ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ°.
Π£ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° Π΅ΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠΎΡΠΎΠ½Ρ, ΠΈ Π΅ΡΡΡ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠΎΡΠΎΠ½Ρ. ΠΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠΎΡΠΎΠ½Ρ ΠΏΠΎΠ½ΡΡΠ½Ρ. Π£ Π½Π°Ρ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ, Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ°, Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ, Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ², Π²ΡΠ΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎ, Π²ΡΠ΅ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ.
ΠΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠΎΡΠΎΠ½Π°, ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ°. Π ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, (???) ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΈΠ²ΡΠΊΠ°Π½ΠΈΠ΅β¦ ΠΏΠΎ Π½Π°ΡΠ΅ΠΌΡ ΠΎΠΏΡΡΡ, Π»ΡΠ΄ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠΈΠ½Π°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ MPSΠΎΠΌ, ΠΎΠ½ΠΈ ΠΏΡΠΈΠ²ΡΠΊΠ°ΡΡ ΠΊ ΡΡΠΈΠ»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²Π½ΡΡΡΠΈ MPSΠ°, ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π΄Π²ΡΡ Π½Π΅Π΄Π΅Π»Ρ. Π’.Π΅. Π² ΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΡΡΠΈΡ Π΄Π²ΡΡ Π½Π΅Π΄Π΅Π»Ρ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π²ΡΠ΄Π°Π²Π°ΡΡ ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΠ²ΡΠ·Ρ, ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΈΠΌ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ, Π½Π΅ΠΏΡΠΈΠ²ΡΡΠ½ΠΎ, ΡΠ΅ΠΌ-ΡΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅. Π§Π΅ΡΠ΅Π· Π΄Π²Π΅ Π½Π΅Π΄Π΅Π»ΠΈ ΠΎΠ½ΠΈ ΠΏΡΠΈΠ²ΡΠΊΠ°ΡΡ ΠΈ Π½Π°ΡΠΈΠ½Π°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΡΠΊΠΎΡΠΎΡΡΡΡ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ ΡΠ°Π½Π΅Π΅. Π― Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΡΠ΅ ΡΠΊΠ°ΡΠ°ΡΡ, ΠΈ Π½Π°ΡΠ½Π΅ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ, ΡΠΎ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π±ΠΎΠ»ΡΡΠΈΠΉ feedback, ΠΈ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ Π΅ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΡ ΠΎΠΆΠΈΠΌ Π½Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ.
ΠΠ΄Π΅Ρ ΡΠ°ΠΊΠ°Ρ. ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ·ΡΠΊΠΎΠ² Π²Ρ Π²ΡΠΏΠΈΡΡΠ²Π°Π΅ΡΠ΅ ΠΌΠ΅ΡΠ°-ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠ·ΡΠΊΠΎΠ², Π΅Π³ΠΎ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, Π·Π°Π΄Π°Π΅ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏΠΎΠ², ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ ΡΠ·ΡΠΊ, Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ, ΠΏΠ»ΡΡ MPS-ΡΠ΅ΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° ΡΡΠΎΠΌ ΡΠ·ΡΠΊΠ΅.
ΠΠ½ΡΡΡΠΈ MPSΠ°, Π²ΠΌΠ΅ΡΡΠ΅ Ρ MPSΠΎΠΌ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΡΠ΄ Π³ΠΎΡΠΎΠ²ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΏΠΈΡΠ΅ΠΌ Π² ΠΊΠΎΠ½ΡΠ΅-ΠΊΠΎΠ½ΡΠΎΠ² Π½Π° Java, Ρ.Π΅. ΠΌΡ Π²ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΠΌ Π² Π΄ΠΆΠ°Π²Ρ, ΡΠΎ Ρ Π½Π°Ρ ΡΡΠ΅ΠΊ ΡΠ·ΡΠΊΠΎΠ² ΠΊΠΎΡΠΎΡΡΠΉ Π΅ΡΡΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π² ΠΊΠΎΠ½ΡΠ΅-ΠΊΠΎΠ½ΡΠΎΠ² Π΄Π»Ρ Π΄ΠΆΠ°Π²Ρ.
ΠΠΌΠ΅ΡΡΠ΅ Ρ MPSΠΎΠΌ, Π²Π½ΡΡΡΠΈ Π½Π΅Π³ΠΎ, ΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ·ΡΠΊΠΎΠ²ΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡΠΌΠΈ, Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΠΌΠΈβ¦ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. Π Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ·ΡΠΊΠΎΠ² Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ XML, ΡΡΠΏΠΎ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ. Π’.Π΅. Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π²ΠΎΠ΄ΠΈΡΡ XML, ΠΈ ΡΡΠΎ ΡΠ°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ β Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ XML ΠΈΠ· ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΡ ΠΈ Π΅ΡΠ΅ Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ·ΡΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ·ΡΠΊΠΎΠ². MPS Π² ΠΏΠ»Π°Π½Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ΅ΡΡΠ½ΠΎ (??? 16:20)
ΠΠΌΠ΅ΡΡΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ β Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠ°ΠΊ-ΡΠΎ ΡΠ°ΠΊ β.
Π― ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π΅ ΡΠΎ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ΅, ΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ, ΠΏΡΠΈΠ³Π»Π°ΡΠ°Ρ Π½Π° ΡΡΠ΅Π½Π΄ Π² ΠΊΠΎΡΠΈΠ΄ΠΎΡΠ΅. Π’ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅, ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΠΎ Π²Π·ΡΡΡ ΠΈ Π·Π°DSLΠ»ΠΈΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠ·ΡΠΊΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ.
Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΡΡΠΎ Π²ΡΠ΅, ΡΡΠΎ Ρ Ρ ΠΎΡΠ΅Π» ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ, ΠΎΡΡΠ°Π»ΠΎΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΠΆΠ½ΡΡ Π²Π΅ΡΠ΅ΠΉ.
MSP ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ·ΡΠΊΠΎΠ²ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ, Ρ.Π΅. Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² Java ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΡ Π² Π½ΠΈΡ Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ DSLΠΈ.
ΠΠΎΡ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΠ°ΡΡΠΈΠ½ Π€Π°ΡΠ»Π΅Ρ ΡΠΎΠ·Π΄Π°Π» ΡΠ·ΡΠΊ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ²ΠΎΠ΅ΠΉ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΠΎΠΉ ΠΎΡΡΠ΅ΡΠ½ΠΎΡΡΠΈ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ MPSΠ° ΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ YouTrack, ΡΠ°ΠΊΠΎΠΉ Π±ΠΎΠ»ΡΡΠΎΠΉ Π±Π°Π³ΡΡΠ΅ΠΊΠ΅Ρ β Π±ΠΎΠ»ΡΡΠΎΠΉ, Π² ΡΠΌΡΡΠ»Π΅ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π° (ΡΠ³Π΅ΡΠ΅Π½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ). ΠΠΎ ΠΌΠΎΠΉ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΠΎΠΏΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΌΠ½Π΅, ΡΡΠΎ ΠΊΠΎΠ΄ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΠΌ, ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ°Π»ΠΎ. ΠΠΏΡΡΡ ΡΠ°ΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΠΌΡΡ, ΠΌΡ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠΎΠ΄ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΌ ΡΠ°Π±Π»ΠΈΡ. ΠΠΎΠ΄Π° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ°Π»ΠΎ, ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΡΠΎΠ²Π΅Π½Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ ΠΏΠΎΠ΄Π½ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΡΡΠΎΠΊΠΎ. ΠΠ»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ YouTrack Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ Π½Π°Π±ΠΎΡ ΡΠ·ΡΠΊΠΎΠ², ΡΠ°ΡΡΡ ΡΡΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΎΡΠΊΡΡΡΠ°, Π° ΡΠ°ΡΡΡ β Π·Π°ΠΊΡΡΡΠ°. ΠΡ ΠΈΡ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΡΠ΄Π°Π΅ΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΡΡΠΈΠ³Π»ΠΈ ΠΏΠΎΠΊΠ° ΠΏΡΠΎΠ΄Π°ΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Π°.
ΠΠΎΡ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°ΡΡΠΎΡΡΠ΅Π΅, ΠΆΠΈΠ²ΠΎΠ΅.
Π£ MPSΠ° Π΅ΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ. ΠΠ½ Β«Apache 2.0Β»-Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ, Π°Π±ΡΠΎΠ»ΡΠ½ΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ, Π΄Π°ΠΆΠ΅ Π΄Π»Ρ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
Π‘ΠΊΠ°ΡΠ°ΡΡ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π΄Π΅ΡΡ. Π’Π΅ΠΏΠ΅ΡΡ Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π²ΠΎΠΏΡΠΎΡΡ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π²Π°ΠΌ ΠΈΡ Π·Π°Π΄Π°ΡΡ.
(18:46)