ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ ruby on rails
ΠΡΠ΅ΡΠ΅Π΄Π½Π°Ρ Β«Π΄ΡΡΠΊΠ° Π² Π·Π°Π±ΠΎΡΠ΅Β» ΠΌΡΠΉΠ½ΡΡΡΠΈΠΌΠ° β ΠΊΠ°ΠΊ Π½ΠΈ ΡΡΡΠ°Π½Π½ΠΎ, Microsoft. Π¨Π°ΡΠΊΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΊΠ°ΠΊ-Π±Ρ-Π»ΠΈΠ΄Π΅ΡΠ° β ΡΠΎΠ»ΡΠΊΠΎ ΠΈ ΡΡΠΏΠ΅Π²Π°ΠΉ ΠΊΡΡΡΠΈΡΡΡΡ, ΠΈ ΠΠΆΠ°Π²Ρ Π½Π°Π΄ΠΎ ΠΏΠ΅ΡΠ΅Π΄ΠΆΠ°Π²ΠΈΡΡ, ΠΈ Ρ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡΡΠΈΠΌΠΈ Π³ΠΎΠ»ΠΎΠ²Ρ ΡΠΊΡΠΈΠΏΡΠ°ΠΌΠΈ ΡΠΎΠ²Π»Π°Π΄Π°ΡΡ, ΠΈ ΠΡΠ³Π»Ρ Π½Π°ΡΡΡΡΠ°ΡΡ, ΠΈ ΠΠΈΠ½Π΄ΠΎΠ² ΠΏΠΎΠ±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠΎΠ΄Π°ΡΡ β ΠΏΠΎΠ½Π΅Π²ΠΎΠ»Π΅ Π²ΡΠ½ΡΠΆΠ΄Π°Π΅Ρ ΠΊ ΠΈΠ½Π½ΠΎΠ²Π°ΡΠΈΠΎΠ½Π½ΠΎΡΡΠΈ ΠΈ Π½ΠΎΡ-ΠΏΠΎ-Π²Π΅ΡΡΡ. ΠΡΡΡΠ΄Π° β ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ Π²ΠΎ Π²ΡΠΎΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ C# Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ Π΄Π΅Π»Π΅Π³Π°ΡΠΎΠ² (ΠΎΠ½ΠΈ ΠΆΠ΅ β ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅-ΡΡΠ½ΠΊΡΠΈΠΈ) ΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΡΡΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ; ΠΎΡΡΡΠ΄Π° ΠΆΠ΅ β ΠΏΠΎΠ΄ΡΡΠ·ΡΠΊ LINQ, Π²Π²ΠΎΠ΄ΡΡΠΈΠΉ Π² C# 3.0 Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΡΡ Π½ΠΎΡΠ°ΡΠΈΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ SQL.
ΠΠΎ Π²Π°ΠΆΠ½Π΅Π΅ Π΄Π°ΠΆΠ΅ Π½Π΅ ΡΡΠΎ, Π° ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½Π°Ρ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΠ·ΡΡΠ½ΠΎΡΡΡ .NetβΠ° ΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΠΎΠΎΡΡΡΠ΅ΠΌΡΠ΅ ΠΈ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΡΠ΅ΠΌΡΠ΅ ΠΏΠΎΠΏΡΡΠΊΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ·ΡΠΊΠΈ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠΎΡΡΠΎΠ²ΡΠΊΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π½ΠΎΠ²ΡΠ΅, Π½Π΅Π²ΠΈΠ΄Π°Π½Π½ΡΠ΅, ΡΠΎΠ·Π΄Π°ΡΡ. ΠΡΡΠ΅ΠΊΡ ΡΠΈΠΌΠ±ΠΈΠΎΠ·Π° Π½ΠΎΠ²ΠΎ-ΡΡΠ°ΡΡΡ ΡΠ·ΡΠΊΠΎΠ²ΡΡ ΠΈΠ΄Π΅ΠΉ ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΏΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΏΠΎΠ½ΡΡΠ΅Π½: Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π²ΡΠ³ΠΎΠ΄Π° Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄Π°ΡΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ ΠΈ Β«ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΡΡΒ» ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠ·ΡΠΊΠ°; Π΄Π»Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ Π±ΠΎΠ³Π°ΡΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ .NetβΠ° (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΠ·ΡΠΊΠΎΠ² Ρ ΠΏΡΠΈΠ²ΠΊΡΡΠΎΠΌ Β«Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡΠ½ΠΎΡΡΠΈΒ», Π·Π°ΡΠ°ΡΡΡΡ ΡΡΡΠ°Π΄Π°ΡΡΠΈΡ ΠΎΡ ΠΎΡΡΡΡΡΡΠ²ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π΄Π»Ρ ΠΈΠ½Π΄ΡΡΡΡΠΈΠ°Π»ΡΠ½ΡΡ Π·Π°Π΄Π°Ρ) ΠΈ β ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π³ΠΎΡΠΎΠ²ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ [ΠΡΠ΅ ΡΡΠΈ Π²ΡΠΊΠ»Π°Π΄ΠΊΠΈ Π² Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΈ ΠΊ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Java. ΠΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π±ΡΠ»Π° Β«ΠΎΠ΄Π½ΠΎΡΠ·ΡΡΠ½ΠΎΠΉΒ», Π½ΠΎ ΡΠ΅ΠΉΡΠ°Ρ (Π½Π΅ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ β Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Β«Π³ΠΎΠ½ΠΊΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΒ» Ρ Microsoft) Sun ΡΠ΄Π΅Π»ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² Π½Π° ΡΠ²ΠΎΠ΅ΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅].
ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ΅Π»Π΅ΠΉ .NetβΠ° Π±ΡΠ»ΠΎ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π½Π° ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ , Π° Π·Π½Π°ΡΠΈΡ, ΠΌΠ½ΠΎΠ³ΠΎΡΠ·ΡΡΠ½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ Π½Π° ΡΡΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Ρ, ΠΈ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ°ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΎΡΡΠ°Π²ΠΈΡΡ Π½Π° C#, Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΠ°ΡΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Π½ΠΈΠ±ΡΠ΄Ρ Haskell.Net ΠΈΠ»ΠΈ F# (ML-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠ·ΡΠΊ), Π° ΡΠ°Π·Π½ΡΠ΅ Π±ΡΡΡΡΡΠ΅ ΡΠ΅ΡΡΡ ΠΈ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ, ΡΡΠ΅Π±ΡΡΡΠΈΠ΅ Β«Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΈ Π³ΡΡΠ·Π½ΠΎΠ³ΠΎΒ» ΠΊΠΎΠ΄Π°, ΡΠ΅ΡΠ°ΡΡ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, Π½Π° IronPython.
ΠΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ ΡΠ΅ΠΌ Π΄Π°Π»ΡΡΠ΅ ΠΎΡΡΡΠΎΠΈΡ ΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ·ΡΠΊ ΠΎΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΡ , ΡΠ΅ΠΌ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ Π΅Π³ΠΎ Π±Π΅ΡΡΠΎΠ²Π½Π°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. ΠΡΡΡΠ΄Π° β Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π²ΠΎΠ»ΡΡΠΈΠΎΠ½Π½ΡΠ΅ (Π΄Π»Ρ ΠΌΡΠΉΠ½ΡΡΡΠΈΠΌΠ°) ΠΈΠ΄Π΅ΠΈ ΡΠΊΡΠ΅ΡΠΈΠ²Π°ΡΡ Ρ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΡΡ ΠΈ ΠΏΡΠΈΠ²ΡΡΠ½ΡΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ ΠΏΠ»Π°ΡΡΠΎΡΠΌ Java/.Net. Π’Π°ΠΊΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΡΠΆΠ΅ Π½Π΅ΠΌΠ°Π»ΠΎ: ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, Π΄Π»Ρ .NetβΠ° β ΠΏΠΈΡΠΎΠ½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠΉ Boo ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΡΠΉ Nemerle, ΡΠΎΠ²ΠΌΠ΅ΡΠ°ΡΡΠΈΠΉ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΉ ΠΠ-ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ ΡΠΈΠΏΠΎΠ² Π² Π΄ΡΡ Π΅ ML ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ Π²ΡΠΎΠ΄Π΅ LispβΠΎΠ²ΡΡ [ΠΠ· Π½Π΅-LispβΠΎΠ±ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² Nemerle, ΠΊΠ°ΠΆΠ΅ΡΡΡ, Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ]; Π΄Π»Ρ Java β ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ Π³ΠΈΠ±ΡΠΈΠ΄ Scala ΠΈ Ruby-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ Groovy [ΠΡΠΎ Π½Π΅ ΡΡΠΈΡΠ°Ρ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ², ΡΠ²Π»ΡΡΡΠΈΡ ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ-Π½Π°Π΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°ΠΌΠΈ C# ΠΈ Java (C-omega, Pizza/PJ) ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π΄Π»Ρ ΠΎΠ±ΠΊΠ°ΡΠΊΠΈ ΠΈΠ΄Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ Π²ΠΎΠΉΠ΄ΡΡ (ΠΈΠ»ΠΈ Π½Π΅ Π²ΠΎΠΉΠ΄ΡΡ) Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ·ΡΠΊ].
Π ΡΠΈΡΠΎΠΊΠΎΠΉ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎΡΡΠΈ ΡΠ°ΠΊΠΈΡ ΡΠ·ΡΠΊΠΎΠ² Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΡΠ°Π½ΠΎ, Π½ΠΎ ΠΊΠΎΠ΅-ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠ± ΠΈΡ ΡΡΠ΄ΡΠ±Π΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ.
Π―Π·ΡΠΊΠΈ ΡΠΎΠ΄Π° Boo ΠΈ Groovy, ΡΡΠΈ Π°Π²ΡΠΎΡΡ ΡΡΠΎΡΡ Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΡΡ Β«ΡΠΊΡΠΈΠΏΡΠΎΠ²ΡΡ Β» (Π² ΡΠΌΡΡΠ»Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ Π±ΠΎΠ³Π°ΡΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° Β«ΡΠ΅Π½Π΅ΡΠ΅ΠΊΒ»), Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΡ Β«ΡΠΊΡΠΈΠΏΡΠΎΠ² Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡΒ» ΠΊΠ°ΠΊ ΡΠ°Π· ΠΈ ΠΌΠ΅ΡΡΡ. ΠΡ ΡΠΎΠ»Ρ β Π±ΡΡΡ Β«ΠΊΠ»Π΅Π΅ΠΌΒ» ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ Β«ΡΡΠ»ΠΎΠ²Π½ΠΎ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΡ Β» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ (ΡΠ΅ΡΡΠΎΠ² Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π½Π° Β«ΡΠ΅ΡΡΠ΅Π·Π½ΡΡ Β» ΡΠ·ΡΠΊΠ°Ρ ) ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ Β«Π³ΠΈΠ±ΠΊΠΈΡ Β» ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ². Π ΡΡΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΈΡ Π±ΡΠ΄ΡΡΠ΅Π΅ Π²ΠΈΠ΄ΠΈΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±Π΅Π·ΠΎΠ±Π»Π°ΡΠ½ΡΠΌ, ΠΊΠ°ΠΊ ΠΈ Π±ΡΠ΄ΡΡΠ΅Π΅ Β«ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Β» IronPython/Jython, JRuby/RubyCLR.
Nemerle ΠΈ Scala β ΡΡΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠ»Π΅Π½ΠΊΠΎΡ, Β«ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·ΠΌ Π² ΠΌΠΈΠ½ΠΈΠ°ΡΡΡΠ΅Β». Π‘ ΠΈΡ Β«ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠΌΠΈΒ» ΠΈΠ΄Π΅ΡΠΌΠΈ ΡΠ²ΡΠ·Π°Π½Ρ ΡΠ΅ ΠΆΠ΅ Π½Π°Π΄Π΅ΠΆΠ΄Ρ ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΡΠΎ Π½Π΅ΠΊΠΎΠ³Π΄Π° Π±ΡΠ»ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½Ρ Π΄Π»Ρ Haskell, Lisp, Smalltalk β Β«Π²ΡΠΎΠ΄Π΅ ΠΈ ΠΊΡΡΡΠΎ, Π½ΠΎ Π±ΠΎΠ»ΡΠ½ΠΎ Ρ ΠΈΡΡΠΎΒ». ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ ΠΈ ΡΡΠ΄ΡΠ±Π° Β«Π±ΠΎΠ»ΡΠ½ΠΎ Ρ ΠΈΡΡΡΡ Β» ΡΠ·ΡΠΊΠΎΠ² ΡΠ»ΠΎΠΆΠΈΡΡΡ ΠΏΠΎΡ ΠΎΠΆΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈ ΠΎΠ½ΠΈ ΡΡΠ°Π½ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΠΈΠ΄Π΅ΠΉ Π΄Π»Ρ C#/Java ΠΈ ΠΏΡΠΈΠ±Π΅ΠΆΠΈΡΠ΅ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΡ Β«ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡΠΈΡ Β». ΠΠΏΡΠΎΡΠ΅ΠΌ, ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΡ ΡΡΠΎΠ³ΠΎ Β«ΠΌΠΈΠ½ΠΈ-ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·ΠΌΠ°Β» Π΄ΠΎ ΠΌΡΠΉΠ½ΡΡΡΠΈΠΌΠ° Π½Π΅ ΡΠ°ΠΊ ΡΠΆ Π²Π΅Π»ΠΈΠΊΠΎ, Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ ΠΌΠ΅Π½ΡΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΠ°Π·Π½ΠΎΡΠ·ΡΠΊΠΎΠ²ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ; ΡΠ°ΠΊ ΡΡΠΎ Β«ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅Β» ΡΠ·ΡΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΆΠ΄Π°ΡΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΡΠ»ΠΈΠ²Π°Ρ ΡΡΠ΄ΡΠ±Π°. ΠΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠΆΠ΅Π»Π°ΡΡ ΠΈΠΌ ΡΠ΄Π°ΡΠΈ.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ HaskellΠ‘Π°ΠΉΠΌΠΎΠ½ ΠΠ΅ΠΉΡΠΎΠ½ ΠΠΆΠΎΠ½Ρ (Simon Peyton Jones), ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Haskell, Π°ΡΡ ΠΈΡΠ΅ΠΊΡΠΎΡ Glas-gow Haskell Compiler (GHC); ΠΠ΅ΠΉΠ» ΠΠΈΠ±Π±Π°ΡΠ΄ (Cale Gibbard), ΠΏΠΎΠΏΡΠ»ΡΡΠΈΠ·Π°ΡΠΎΡ Haskell, Π°Π²ΡΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ².
Π ΡΠ΅Π»ΡΡ ΠΈ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π°Ρ
ΠΠΈΠ±Π±Π°ΡΠ΄: Haskell Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ» ΠΈ ΠΎΡΡΠ°Π΅ΡΡΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΡΠ·ΡΠΊΠΎΠΌ. ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΡΠ΄Π΅Π½ΡΠΎΠ² ΠΈ ΡΡΠ΅Π½ΡΡ Π΄ΡΠΌΠ°ΡΡ ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΡ ΡΠ·ΡΠΊΠ° ΠΈ Π½ΠΎΠ²ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ , Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ Π½Π°ΡΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ. Π’Π°ΠΊ ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π±ΡΡΡΡΠΎ, ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ°ΠΊ ΠΆΠ΅ ΡΠ»ΠΎΠΆΠ½Ρ ΠΈ ΠΊΡΠ°ΡΠΈΠ²Ρ, ΠΊΠ°ΠΊ ΡΠ°ΠΌ ΡΠ·ΡΠΊ.
ΠΠΆΠΎΠ½Ρ: Π‘ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ, ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ Haskell ΠΈΠ΄Π΅Ρ ΠΏΡΡΠ΅ΠΌ Π²ΠΎΠΏΠ»ΠΎΡΠ΅Π½ΠΈΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π² ΡΠ°Π·Π½ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°Ρ .
ΠΠ½ΠΎΠ³Π΄Π° ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ Ρ Π°ΡΠΊΠ΅Π»ΠΈΡΡΠΎΠ² ΡΠ°Π΄ΠΈΡΡΡ ΠΈ ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΡΡΠΈ Π°Π½Π°ΡΡ ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π² Π΅Π΄ΠΈΠ½ΡΠ΅ ΡΡΡΠΎΠΉΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ. Π‘Π΅ΠΉΡΠ°Ρ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Π½Π°Π΄ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ β Haskell Prime, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Β«ΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° Haskell PrimeΒ» Π²ΠΌΠ΅ΡΡΠΎ "ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ GHC 6.8.
ΠΠΈΠ±Π±Π°ΡΠ΄: ΠΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΠ²ΡΠ΅ ΠΌΠ΅ΡΡΠ° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ° [Haskell β98] ΠΈ ΠΈΠ·ΡΡΠ°Π΅ΠΌ, ΠΊΠ°ΠΊ Π»ΡΠ΄ΠΈ ΠΆΠΈΠ»ΠΈ Ρ Π½ΠΈΠΌΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ.
ΠΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠΈ
ΠΠΈΠ±Π±Π°ΡΠ΄: ΠΠ΄ΠΈΠ½ ΠΈΠ· Π³Π»Π°Π²Π½ΡΡ ΡΠ°ΠΊΡΠΎΡΠΎΠ², ΠΌΠ΅ΡΠ°ΡΡΠΈΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΠΈ Haskell, β ΠΈΠ½Π΅ΡΡΠΈΡ. Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠΆΠ΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»ΠΎΡΡ Π»Π΅Ρ Π΄Π²Π°Π΄ΡΠ°ΡΡ-ΡΡΠΈΠ΄ΡΠ°ΡΡ, ΡΡΠΎΠ±Ρ Π·Π°Π²ΠΎΠ΅Π²Π°ΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ. Haskell ΡΡΠ°ΡΡΠ΅ Java β ΠΏΠΎΡΠ΅ΠΌΡ ΠΆΠ΅ ΠΎΠ½ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ Π½Π΅ Π΄ΠΎΠ±ΠΈΠ»ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ ΡΡΠΏΠ΅Ρ ΠΎΠ² Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠΈ? ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Haskell β Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ Β«ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠΉΒ», ΡΠ΅ΠΌ Java/C++ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Python ΠΈ Ruby. ΠΠ»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ², Π·Π½Π°ΡΡΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, β ΡΡΠΎ Π²ΡΠΎΠ΄Π΅ ΠΊΠ°ΠΊ ΡΡΠΈΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Π·Π°Π½ΠΎΠ²ΠΎ. ΠΡΡΠ³Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π° β Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π₯Π°ΡΠΊΠ΅Π»Π»Ρ ΠΎΡΠ΅Π½Ρ Π½Π΅ Ρ Π²Π°ΡΠ°Π»ΠΎ Π²ΡΡΠΊΠΈΡ ΡΡΡΠΊ, Π½ΡΠΆΠ½ΡΡ Π΄Π»Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΏΡΠΎΡΠ΅ΠΌ, ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠΈΠ»ΡΠ½ΠΎ Π²ΠΎΠ·ΡΠΎΡΠ»ΠΎ. ΠΡΠ΅ ΠΎΠ΄Π½Π° ΠΏΡΠΈΡΠΈΠ½Π° β Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½Π°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ², Π½ΠΎ Π² ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ ΡΡΠΎ ΡΠΊΠΎΡΠ΅Π΅ ΠΌΠΈΡ.
ΠΠΆΠΎΠ½Ρ: Π§Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π»ΡΠ΄ΠΈ Π±ΡΠ΄ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°ΡΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°, ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Ρ Π±ΡΠ΄ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠ·ΡΠΊΠΈ. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Ρ ΠΎΡΡ ΠΈΡΡΠΎΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΡ β Π² Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π΅, ΡΠ°ΠΊΠΈΠ΅ ΡΠ·ΡΠΊΠΈ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π²ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΡΠΌΠΈ.
ΠΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ Π½Π°ΡΠΎΠ΄ΡΠΠΆΠΎΠ½Ρ: ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅! ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ Π½Π°ΡΠ½Π΅ΡΠ΅ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ, Π²Π°ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ.
ΠΠΈΠ±Π±Π°ΡΠ΄: ΠΠ°ΡΠΈΠ½Π°ΡΡΠ΅ΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Ρ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠΎΠ²Π΅ΡΡΡ ΠΎΡΠ²ΠΎΠΈΡΡΡΡ ΡΠΎ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ β ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠΈΠΊΠ»ΠΎΠ² ΠΈΠ· ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², ΠΊΠ°ΠΊΠΈΠΌ Π±Ρ ΠΏΡΠ³Π°ΡΡΠΈΠΌ Π½ΠΈ ΠΊΠ°Π·Π°Π»ΡΡ Haskell ΠΏΠΎΠ½Π°ΡΠ°Π»Ρ, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π΅ ΡΠ°ΠΊ ΡΠΆ Π²ΡΠ΅ ΡΡΡΠ°ΡΠ½ΠΎ β ΡΡΠΎΠΈΡ Π²Π·ΡΡΡ ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ. ΠΠ½ΠΎ ΡΠΎΠ³ΠΎ ΡΡΠΎΠΈΡ.
ΠΠ΅ΡΠ΅Π΄ΠΎΠ²Π°Π» ΠΠΌΠΈΡΡΠΈΠΉ ΠΠ½ΡΠΎΠ½ΡΠΊ
...Π Π΄ΡΡΠ³ΠΈΠ΅ΠΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π² Π½Π°Π±ΠΈΡΠ°ΡΡΠΈΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ Π³ΠΈΠ±ΡΠΈΠ΄Ρ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π³ΠΎΡΠΏΠΎΠ΄ΡΡΠ²ΠΎ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ. ΠΠ°ΠΊ Π±Ρ Π½ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΠ»ΠΎΡΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΠΈ ΠΊΠΎΠ΄Ρ Π² ΡΠ΅Π»ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Π±Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½ΠΈ ΠΏΠΎΡΠ²Π»ΡΠ»ΠΈΡΡ, ΡΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΠΌΠΈΠΊΡΠΎΡΡΠΎΠ²Π½Π΅ ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠ΅ΠΌ ΠΆΠ΅ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΠΉ ΠΈ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΏΡΠΈΠ²ΡΡΠ½ΡΠ΅ ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ ΡΠ°ΠΊ ΠΏΡΠΎΡΡΠΎ ΡΠ²ΠΎΠ΅Π³ΠΎ Π½Π΅ ΡΡΡΡΠΏΡΡ.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠΊΡΡΡΠ΅ΠΌΠ°Π»ΡΠ½ΡΠ΅ Β«ΠΏΠΎΡΡΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΡΡΡΠΊΠΈΠ΅Β» ΡΠΈΡΡΠ΅ΠΌΡ; ΡΠ°ΠΌΠ°Ρ ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ ΠΈ ΡΡΠΏΠ΅ΡΠ½Π°Ρ ΠΈΠ· Π½ΠΈΡ , ΠΏΠΎΠΆΠ°Π»ΡΠΉ, Erlang. Π―Π·ΡΠΊ/ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° (ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠ΅ ΡΡΠ°Π·Ρ ΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ), ΡΠΎΠ·Π΄Π°Π½Π½Π°Ρ ΡΡΡΠΎΠ²ΡΠΌΠΈ ΡΠ²Π΅Π΄ΡΠΊΠΈΠΌΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΠΌΠΈ ΠΈΠ· ΡΠΈΡΠΌΡ Ericsson Π΄Π»Ρ Π½ΡΠΆΠ΄ ΡΠ΅Π»Π΅ΠΊΠΎΠΌΠ°, β Erlang Π½Π΅ ΡΠΎ ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ±ΠΈΠ²Π°Π΅ΡΡΡ Π² ΠΌΡΠΉΠ½ΡΡΡΠΈΠΌ, Π½ΠΎ Π² ΡΠ²ΠΎΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ (Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΡΠ΅ΡΡΠ΅Π·Π½ΡΠΌΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ ΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ) ΡΡΠ²ΡΡΠ²ΡΠ΅Ρ ΡΠ΅Π±Ρ Π²Π΅ΡΡΠΌΠ° ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎ. ΠΠΎΠΎΠ±ΡΠ΅, Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π² ΡΠ΅Π»Π΅ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΡ ΠΈ ΡΠΌΠ΅ΠΆΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΡΠ°ΡΠΈΠ²ΠΎΠΉ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΠΌΠΎΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ β ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π½Π°Π±ΠΈΡΠ°ΡΡΠ΅Π΅ Π²Π΅Ρ. ΠΠΎΠΌΠΈΠΌΠΎ Erlang, Π½Π° ΠΏΠΎΡ ΠΎΠΆΠΈΡ ΠΏΠΎΠ·ΠΈΡΠΈΡΡ ΡΡΠΎΡΡ Oz/Mozart ΠΈ Ρ-ΠΏΡΠ»Ρ-Ρ-ΠΆΠ°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠ·ΡΠΊ Corn (ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠΆΠ΄Π΅Π½Π½ΡΠΉ Π² ΡΠ΅Π»Π΅ΠΊΠΎΠΌΠ΅, Π½Π° ΡΠ΅ΠΉ ΡΠ°Π· β ΠΏΠΎΠ»ΡΡΠΊΠΎΠΌ).
ΠΡΠ΅Π΄ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π»ΠΎΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠΏΡΡΠΎΠΊ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΡΡΡ ΠΊ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, ΠΎΡΡΠ°Π²Π°ΡΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π³ΠΎΡΠΏΠΎΠ΄ΡΡΠ²Π° Β«ΠΈΡΡΠΈΠ½Π½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉΒ», β ΠΎΡ ML-ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΉ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΡΡΠΈ OCaml Π΄ΠΎ ΠΎΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΌΠΊΠ° Smalltalk/Self β io, ΠΏΡΠ΅ΠΏΠΎΠ΄Π½ΠΎΡΠΈΠΌΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΠ·ΡΠΊ Π»Π΅Π³ΠΊΠΈΠΉ ΠΈ ΡΡΡΠΎΠΉΠ½ΡΠΉ, ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ Π΄Π»Ρ Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΡ. ΠΠ° ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ·ΡΠΊΠΈ LispβΠΎΠ²ΠΎΠΉ ΡΠ΅ΠΌΡΠΈ (Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΠ°ΠΌ Common Lisp), Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΠΈΡΠ»ΠΈΡΡ ΠΊ Β«ΠΏΠΎΡΡΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΡΡΡΠΊΠΈΠΌΒ» ΠΏΠΎ Π±ΠΎΠ³Π°ΡΡΡΠ²Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ ΠΈ ΡΡΡΠ΅ΠΌΠ»Π΅Π½ΠΈΡ ΠΊ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎΡΡΠΈ.
ΠΡΠ΅ΡΠ΅Π΄Π½Π°Ρ Π²ΠΎΠ»Π½Π° ΡΡΠΌΠΈΡ ΠΈ Π²ΠΎΠΊΡΡΠ³ Β«Π½ΠΎΠ²ΠΎΠ³ΠΎ Π²Π΅Π±Π°Β» ΡΠΎΠΆΠ΅ Π½Π΅ ΠΎΡΡΠ°Π»Π°ΡΡ Π½Π΅Π·Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠΉ β Π·Π΄Π΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ, ΠΊΠ°ΠΊ Hop ΠΎΡ ΡΡΠ°Π½ΡΡΠ·ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΡΠΈΡΡΡΠ° INRIA (ΡΠΎΠ΄ΠΈΠ½Ρ OCaml) ΠΈ Links (ΠΈΠΌ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ Phil Wadler, Π½Π΅ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΡΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΠΎΡ Haskell), ΡΠ΅Π»Ρ ΠΊΠΎΡΠΎΡΡΡ β ΡΠ²Π΅ΡΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ·ΡΠΊΡ ΡΠ²Π΅ΡΡ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π±Ρ Β«ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π»ΡΡΒ» Π² ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ HTML, JavaScript, SQL ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ [Π ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ ΡΠΌΡΡΠ»Π΅ ASP.Net ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Java-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΡΠ΅ΠΌ ΠΆΠ΅, ΠΈΠΌΠΈΡΠΈΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° ΠΎΠ΄Π½ΠΎΡΠΎΠ΄Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ²ΡΡ ΡΡΠ΅Π΄Ρ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ haXe, Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠΌ ΠΈ JavaScript-ΠΎΠ±ΡΠ°Π·Π½ΡΠΌ Π±Π°Π·ΠΎΠ²ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ].