ДинамичСскиС языки программирования: Magic lies here — Statically vs Dynamically Typed Languages | by Mayank Bhatnagar | AndroidPub

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠŸΠΎΡ‡Π΅ΠΌΡƒ динамичСскиС языки программирования ΡΠΎΠ·Π΄Π°ΡŽΡ‚ трудности ΠΏΡ€ΠΈ сопровоТдСнии Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов ΠΊΠΎΠ΄Π°

Π•Π²Π³Π΅Π½ΠΈΠΉ Π‘Ρ€ΠΈΠΊΠΌΠ°Π½ β€” Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Play Framework для LinkedIn сказал Π² Π²ΠΈΠ΄Π΅ΠΎ-ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, записанной Π½Π° JaxConf 2013, Ρ‡Ρ‚ΠΎ большиС ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Π΅ Π±Π°Π·Ρ‹ Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ, Ссли ΠΎΠ½ΠΈ написаны Π½Π° динамичСских языках.

На ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Q&A сайтов Π±Ρ‹Π» Π·Π°Π΄Π°Π½ этот вопрос, ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° Π½Π΅Π³ΠΎ Π΄Π°Π» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π­Ρ€ΠΈΠΊ Π›ΠΈΠΏΠΏΠ΅Ρ€Ρ‚.

Π˜Ρ‚Π°ΠΊ, Π΅Π³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚.

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: я Π½Π΅ смотрСл ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΡŽ.

Π― Ρ€Π°Π±ΠΎΡ‚Π°Π» Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚Π°Ρ… ΠΏΠΎ JavaScript (ΠΎΡ‡Π΅Π½ΡŒ динамичСский язык), C # (Π² основном статичСский язык), ΠΈ Visual Basic (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠ°ΠΊ статичСский, Ρ‚Π°ΠΊ ΠΈ динамичСский), Ρƒ мСня Π΅ΡΡ‚ΡŒ нСсколько мыслСй ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡƒ вопросу.

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

Π•ΡΡ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΏΠΎΡ‡Π΅ΠΌΡƒ усилия, Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ большой ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ Π² динамичСском языкС нСсколько большС, Ρ‡Π΅ΠΌ Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ усилия Π½Π° статичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языках. Π― Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ….

НСмного забСгаю Π²ΠΏΠ΅Ρ€Π΅Π΄. ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ ΠΏΠΎΠ΄ «динамичСским» языком: ΠΏΠΎΠ΄ «динамичСским» языком я имСю Π² Π²ΠΈΠ΄Ρƒ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ΅ «статичСскому» языку.

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

ДинамичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык

Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ статичСского Π½Π΅ ΠΎΠ±Π»Π΅Π³Ρ‡Π΅Π½ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ. ЗначСния Π΄Π°Π½Π½Ρ‹Ρ…, хранящихся Π² любом ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ мСстС, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠœΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ привСсти различия ΠΌΠ΅ΠΆΠ΄Ρƒ динамичСской ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ видимости ΠΈ лСксичСски ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ языками, Π½ΠΎ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡ‚Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΡ‚ Ρ†Π΅Π»Π΅ΠΉ Π΄Π°Π½Π½ΠΎΠ³ΠΎ обсуТдСния. ДинамичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ с динамичСской ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ видимости ΠΈ статичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ лСксичСски ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½, ΠΎΠ΄Π½Π°ΠΊΠΎ часто присутствуСт взаимосвязь ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ.

Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ условия вопроса, Π΄Π°Π²Π°ΠΉΡ‚Π΅ прямо ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… Π±Π°Π·Π°Ρ…. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ΅ ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Π΅ Π±Π°Π·Ρ‹, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅ характСристики.

ВсС эти характСристики ΡΠΎΠ·Π΄Π°ΡŽΡ‚ прСпятствия Π½Π° ΠΏΡƒΡ‚ΠΈ ΠΊ пониманию ΠΊΠΎΠ΄Π°, ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΡΠΎΠ·Π΄Π°ΡŽΡ‚ прСпятствия для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ измСнСния ΠΊΠΎΠ΄Π°. ΠšΠΎΡ€ΠΎΡ‡Π΅ говоря: врСмя = дСньги ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ измСнСния Π² массивном ΠΊΠΎΠ΄Π΅ Π΄ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠ·-Π·Π° Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π° этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

Π’Π°ΠΊΠΆΠ΅ Π±ΡŽΠ΄ΠΆΠ΅Ρ‚ ΠΊΠΎΠ½Π΅Ρ‡Π΅Π½, ΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ, сколько ΠΌΠΎΠΆΠ΅ΠΌ, с рСсурсами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅Π΅ΠΌ. Π›ΡŽΠ΄ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‚ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Π΅ Π±Π°Π·Ρ‹ стрСмятся ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ принятия ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ для смягчСния этих прСпятствий. НСкоторыС способы для прСодолСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ:

  • ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ: ΠΊΠΎΠ΄ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‡Π΅Ρ‚ΠΊΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ. Π›ΠΎΠ³ΠΈΠΊΠ° ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΈ понятна Π±Π΅Π· Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ подробности Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.
  • Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ: Π² модулях ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Ρ‹ различия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΡ… «внСшнСй» ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΈΡ… Β«Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈΒ» дСталями Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ послСдниС ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Ρ‹ Π±Π΅Π· ΡƒΡ‰Π΅Ρ€Π±Π° для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Ρ†Π΅Π»ΠΎΠΌ.
  • ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС: ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΎΠ½Π° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Ρ‚Π°ΠΊ всСгда. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ использован Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’Π°ΠΊΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΊΠ°ΠΊ созданиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈΠ»ΠΈ созданиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса, ΠΈΠ»ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ привСтствуСтся содСрТимоС, состоящСС ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΌ использованиСм ΠΊΠΎΠ΄Π°. И всС это для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹.
  • Аннотации: Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ описываСт допустимыС значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.
  • АвтоматичСскоС ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ошибок: ΠΊΠΎΠΌΠ°Π½Π΄Π΅, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°Π΄ большой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ приспособлСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сразу ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ расскаТСт ΠΎ Π½Π΅ΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Π±Ρ‹Π»Π° Ρ€Π΅ΡˆΠ΅Π½Π° быстро. Π’Π°ΠΊΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΊΠ°ΠΊ написаниС Π½Π°Π±ΠΎΡ€Π° тСстов, использованиС статичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² эту ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ.

БтатичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык являСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ послСднСго. Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ прямо Π² самом компиляторС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ошибки связанныС с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ компилятор сообщит ΠΎΠ± этом. Π―Π²Π½ΠΎ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² мСстах объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π±Ρ‹Π»ΠΈ примСчания, нСсущиС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π² этих ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, Π² динамичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языках Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΌΠ½ΡƒΡŽ ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ, которая выполняСтся компилятором «бСсплатно», Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ написания Π½Π°Π±ΠΎΡ€Π° тСстов. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свои ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ Ρ‡Π΅Ρ‚ΠΊΡƒΡŽ систСму, ΠΈ Ссли Π½ΠΎΠ²Ρ‹ΠΉ Ρ‡Π»Π΅Π½ вашСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ случайно Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ Π΅Π΅, Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ я Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π» ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚: Π΅ΡΡ‚ΡŒ сильная взаимосвязь ΠΌΠ΅ΠΆΠ΄Ρƒ динамичСской Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒΡŽ языка ΠΈ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΎΠΉ возмоТностСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ расходы Π½Π° содСрТаниС, ΠΈ этот ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ β€” ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ большой ΠΊΠΎΠ΄ Π² динамичСском языкС. И такая ΠΆΠ΅ взаимосвязь Π΅ΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ статичСской Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ΠΌ срСдств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π»Π΅Π³Ρ‡Π΅.

Π”Π°Π²Π°ΠΉΡ‚Π΅ возьмСм JavaScript Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. (Π― Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… вСрсиях JScript Π² Microsoft с 1996 ΠΏΠΎ 2001 Π³ΠΎΠ΄) Ρ†Π΅Π»ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»Π°ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ обСзьяна Ρ‚Π°Π½Ρ†Π΅Π²Π°Π»Π°, ΠΏΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ Π½Π° Π½Π΅Π΅ курсором. Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ состояли ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ строки. ΠœΡ‹ рассматривали дСсятистрочныС скрипты, ΠΈ Π±Ρ‹Π»ΠΎ довольно Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ, скрипты ΠΈΠ· сотни строк ΡƒΠΆΠ΅ ΡΡ‡ΠΈΡ‚Π°Π»ΠΈΡΡŒ большими, Π° скрипты ΠΈΠ· тысячи строк Π±Ρ‹Π»ΠΈ нСслыханно ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌΠΈ.

Π―Π·Ρ‹ΠΊ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для программирования ΠΎΠ±ΡŠΠ΅ΠΌΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, ΠΈ наши Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, Π±Ρ‹Π»ΠΈ основаны Π½Π° этом ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
JavaScript Π±Ρ‹Π» ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΅Π»ΠΈΠΊΠΈ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΌΠΎΠ³ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ всС это Π½Π° ΠΎΠ΄Π½ΠΎΠΉ страницС, Ρ‚Π°ΠΊ ΠΆΠ΅ JavaScript Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ динамичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½, Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Π² Π½Π΅ΠΌ присутствуСт ΠΌΠ°Π»ΠΎ срСдств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ большиС ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Π΅ Π±Π°Π·Ρ‹:

  • НСт ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ систСмы, Π½Π΅Ρ‚ классов, интСрфСйсов, ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ пространств ΠΈΠΌΡ‘Π½. Π­Ρ‚ΠΈ элСмСнты Π΅ΡΡ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΠ³Π°Ρ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΌΠ½Ρ‹Π΅ ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Π΅ Π±Π°Π·Ρ‹.
  • БистСма наслСдования, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ наслСдованиС ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² Ρ€Π°Π·Π²ΠΈΡ‚Ρ‹ довольно слабо. И Π½Π΅ понятно, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠ΅ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ (Π²Ρ€ΠΎΠ΄Π΅: ΠΊΠ°ΠΏΠΈΡ‚Π°Π½ Π²ΠΈΠ΄ ΠΏΠΈΡ€Π°Ρ‚Π°, ΠΏΠΈΡ€Π°Ρ‚ Π²ΠΈΠ΄ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π²ΠΈΠ΄ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ там…) Π² out-of-the-box JavaScript.
  • НСт инкапсуляции: ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ свойство ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΏΠΎ ТСланию ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.
  • Π’Π°ΠΌ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ способа, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ памяти: любая пСрСмСнная ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ любоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Но это Π½Π΅ просто нСдостаток Ρ‚Π΅Ρ… самых возмоТностСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π•ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ Ρ‚Ρ€ΡƒΠ΄Π½Ρ‹ΠΌ.
  • БистСма управлСния ошибок Π² JavaScript Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° с ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ скрипт выполняСтся Π½Π° Π²Π΅Π±-страницС, ΠΈ Ρ‡Ρ‚ΠΎ Ρ†Π΅Π½Π° ошибки Π½Π΅Π²Π΅Π»ΠΈΠΊΠ°, ΠΈ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ нСточности скорСС всСго Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ способСн ΠΈΡ… ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ Π±Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎ ошибок Π½ΠΈ Π±Ρ‹Π»ΠΎ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° попытаСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΡΡ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°. Π­Ρ‚ΠΎ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ, для Π΄Π°Π½Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ языка, Π½ΠΎ ΠΎΠ½Π°, бСзусловно, Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов ΠΊΠΎΠ΄Π° Π² Ρ€Π°Π·Ρ‹ слоТнСС, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ написания тСстов. Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΈΡΠΊΠ°Ρ‚ΡŒ ошибки Π² Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅, Ρ‡Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡ… выявят.
  • Код ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ сам сСбя Π½Π° основС Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Eval ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ добавлСния Π½ΠΎΠ²Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² сцСнариСв Π² DOM динамичСски. Π›ΡŽΠ±Ρ‹Π΅ инструмСнты статичСского Π°Π½Π°Π»ΠΈΠ·Π° Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π°ΠΆΠ΅ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ сдСлаСт с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ!
  • И Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Ясно, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Ρ‚ΡŒ всС эти прСпятствия ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² JavaScript. Π’ настоящСС врСмя сущСствуСт ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ JavaScript состоящих ΠΈΠ· ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² строк. Но большиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‚ эти слоТныС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ инструмСнты ΠΈ Ρƒ Π½ΠΈΡ… присутствуСт строгая дисциплина, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π²Π°Ρ‚ΡŒ прСпятствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ JavaScript бросаСт Π½Π° вашСм ΠΏΡƒΡ‚ΠΈ:

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

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

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

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ Β«Why do dynamic languages make it difficult to maintain large codebases?Β»

Π―Π·Ρ‹ΠΊ динамичСского программирования — frwiki.wiki

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ обсуТдаСтся класс языков программирования. Для ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ Π² сокращСнии Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, см. ДинамичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

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

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ динамичСских языков ΠΈ динамичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ , ΠΈ динамичСский язык Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ являСтся динамичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ, хотя Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ динамичСских языков Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ.

РСзюмС

  • 1 ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ ΠΈ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ опрСдСлСния
  • 2 РасполоТСниС
    • 2.1 ДинамичСскоС вычислСниС выраТСния
      • 2.1.1 Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка
    • 2.2 ИзмСнСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²ΠΎ врСмя выполнСния
    • 2.3 Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅
      • 2.3.1 ЛСксичСскиС замыкания
      • 2.3.2 ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅
    • 2.4 ΠžΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅
    • 2.5 ΠœΠ°ΠΊΡ€ΠΎΡΡ‹
  • 3 динамичСских языка
  • 4 ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΈ ссылки
  • 5 Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅
    • 5.1 БвязанныС ΡΡ‚Π°Ρ‚ΡŒΠΈ
    • 5.2 Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ ссылки

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ ΠΈ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ опрСдСлСния

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

Π˜ΠΌΠΏΠ»Π°Π½Ρ‚Π°Ρ†ΠΈΡ

Π•ΡΡ‚ΡŒ нСсколько ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ², тСсно связанных с ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠ΅ΠΉ динамичСского программирования. Ни ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ являСтся Π²Π°ΠΆΠ½Ρ‹ΠΌ для классификации языка ΠΊΠ°ΠΊ динамичСского, Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… доступны Π½Π° самых Ρ€Π°Π·Π½Ρ‹Ρ… этих языках.

ДинамичСская ΠΎΡ†Π΅Π½ΠΊΠ° выраТСния

Π’ языкС программирования Lisp появился Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Eval, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΉ ΠΎΡ†Π΅Π½ΠΊΡƒ выраТСния. Π’ этом языкС Eval — это Ρ‚Π΅Ρ€ΠΌΠΈΠ½, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² язык Lisp ΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΉ ΠΎΡ†Π΅Π½ΠΊΡƒ инструкций, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π°ΠΊΡ‚ выполнСния инструкций, прСдставлСнных структурами Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌΠΈ S-выраТСниями . Π’ соврСмСнном смыслС eval ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ выполнСния всСх Π²ΠΈΠ΄ΠΎΠ² инструкций, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ исходный ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

ΠžΡ†Π΅Π½ΠΊΠ° исходного ΠΊΠΎΠ΄Π° Π½ΠΎΠ²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… языках, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Lisp, проводят Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ исходного ΠΊΠΎΠ΄Π° ΠΈ Π΅Π³ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ Ρ„ΠΎΡ€ΠΌΡƒ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ Π² дСйствиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½. Π­Ρ‚ΠΈ языки часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ «  ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ языками Β Β», ΠΊΠΎΠ³Π΄Π° стандартным срСдством выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ являСтся eval.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка

Но Π­Ρ€ΠΈΠΊ ΠœΠ΅ΠΉΠ΅Ρ€ ΠΈ ΠŸΠΈΡ‚Π΅Ρ€ Π”Ρ€Π΅ΠΉΡ‚ΠΎΠ½ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ любой язык, способный Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ исполняСмый ΠΊΠΎΠ΄ Π²ΠΎ врСмя выполнСния, ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ, Π΄Π°ΠΆΠ΅ Ссли этот ΠΊΠΎΠ΄ находится Π² Ρ„ΠΎΡ€ΠΌΠ΅ раздСляСмых Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π² машинном ΠΊΠΎΠ΄Π΅. Они ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка Π²ΠΎΠΏΠ»ΠΎΡ‰Π°ΡŽΡ‚ истинный смысл динамичСского программирования ΠΈ Ρ‡Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² качСствС Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π°ΠΌΠ΅Π½Ρ‹ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ истинных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка. «

ИзмСнСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²ΠΎ врСмя выполнСния

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

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… языков ΠΈ происходят ΠΎΡ‚ Лиспа .

ЛСксичСскиС замыкания

ЛСксичСскоС Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… понятий Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. Он позволяСт Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΠΉ контСкст, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½Π° Π±Ρ‹Π»Π° создана. ΠŸΡ€ΠΎΡΡ‚Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ являСтся созданиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для сканирования тСкста слова:

function new_scanner (word)
  temp_function = function (input)
    scan_for_text (input, word)
  end function
  return temp_function
end function

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ внутрСнняя функция Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ хранится Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ temp_function. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ new_scannerΠ²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠ½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° word, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈ Π΅Π³ΠΎ установкС.

ЛСксичСскиС замыкания — ΠΎΠ΄Π½Π° ΠΈΠ· Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования, ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ языки ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, эту ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования.

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅

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

ΠžΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

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

ΠœΠ°ΠΊΡ€ΠΎΡΡ‹

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство динамичСских языков обСспСчиваСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, которая ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ самоанализ ΠΈ ΠΎΡ†Π΅Π½ΠΊΡƒ ΠΊΠΎΠ΄Π° Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ макросом . Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ программистов сСгодня Π·Π½Π°ΠΊΠΎΠΌΡ‹ с макросами C ΠΈΠ»ΠΈ C ++, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ статичСской Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ.

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

ДинамичСскиС языки

  • APL
  • Befunge
  • C # (β‰₯4. 0)
  • ChucK
  • Π₯ΠΎΠ»ΠΎΠ΄Π½Ρ‹ΠΉ синтСз
  • Π—Π°Π²ΠΈΡ‚ΠΎΠΊ
  • дБАБ (Π΄Π‘Π›)
  • ECMAScript
    • ActionScript
    • DMDScript
    • E4X
    • Javascript
    • JScript
  • Π­ΠΉΡ„Π΅Π»Π΅Π²Π°
  • Erlang
  • Π§Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ
  • Groovy
  • XTalk | HyperCard / HyperTalk ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅
    • HyperCard / HyperTalk
    • Π Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΡ / Вранскрипт
    • SuperCard / SuperTalk
  • Ио
  • Лисп
    • Common Lisp
    • Clojure
    • Π”ΠΈΠ»Π°Π½
    • Emacs Lisp
    • Π›ΠΎΠ³ΠΎΡ‚ΠΈΠΏ
    • Lisp_Machine_Lisp
    • Π‘Ρ…Π΅ΠΌΠ°
  • Lua
  • БистСма Мод
  • ΠžΠ±Π΅Ρ€ΠΎΠ½
  • ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Π°Ρ ΠœΠΎΠ΄ΡƒΠ»Π°-2
  • ЦСль-C
  • Perl
  • PHP
  • Π‘ΠΊΠ»Π°Π΄Π½ΠΎΠΉ
  • ПОП-11
  • Поплог
  • Π©ΡƒΠΊΠ°
  • ΠŸΡ€ΠΎΠ»ΠΎΠ³
  • Python
  • REALbasic
  • REBOL
  • Π ΡƒΠ±ΠΈΠ½
  • Π¦Π°Ρ€Π°ΠΏΠ°Ρ‚ΡŒ
  • Болтовня
    • Бистро
    • БСбя
    • Π¨ΠΈΡ„Π΅Ρ€
    • Писк
    • StrongTalk
  • Π‘Π½ΠΎΠ±ΠΎΠ»
  • Π‘ΡƒΠΏΠ΅Ρ€ΠΊΠΎΠ»Π»Π°ΠΉΠ΄Π΅Ρ€
  • Tcl
    • XOTcl
  • ΠœΠ°ΠΊΡ€ΠΎΡΠ·Ρ‹ΠΊ TeX
  • VBScript
  • Visual Basic 9 ΠΈΠ»ΠΈ 10
  • Visual FoxPro
  • Windows PowerShell
  • xHarbour

АссСмблСрС, Ρ‚ΠΎ C, Ρ‚ΠΎ C ++, Ρ€Π°Π½Π½ΠΈΠ΅ вСрсии Java ΠΈ Fortran Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ динамичСскими языками программирования.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΈ ссылки

  1. ↑ [PDF] Π­Ρ€ΠΈΠΊ ΠœΠ΅ΠΉΠ΅Ρ€ ΠΈ ΠŸΠΈΡ‚Π΅Ρ€ Π”Ρ€Π΅ΠΉΡ‚ΠΎΠ½, «  БтатичСский Π½Π°Π±ΠΎΡ€ тСкста Ρ‚Π°ΠΌ, Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, динамичСский Π½Π°Π±ΠΎΡ€ тСкста, ΠΊΠΎΠ³Π΄Π° это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ: ΠΊΠΎΠ½Π΅Ρ† Ρ…ΠΎΠ»ΠΎΠ΄Π½ΠΎΠΉ Π²ΠΎΠΉΠ½Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ языками программирования Β Β», Microsoft Corporation,
  2. ↑ Π‘ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΡ… использования P.330 ΠΈΠ· Larry Wall Β«s Programming Perl ( ISBN Β 0-596-00027-8 )
  • (fr) Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ частично ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ взята ΠΈΠ· ΡΡ‚Π°Ρ‚ΡŒΠΈ Π² Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ Π½Π° английском языкС ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ «  язык динамичСского программирования Β Β» ( см. список Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² ) .

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

Π‘Ρ‚Π°Ρ‚ΡŒΠΈ ΠΏΠΎ Π’Π΅ΠΌΠ΅

  • Π―Π·Ρ‹ΠΊ сцСнария

Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ ссылки

  • (ru) Β« ДинамичСскиС языки» — Π³ΠΎΡ‚ΠΎΠ²Π½ΠΎΡΡ‚ΡŒ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ испытаниям, ΠΏΠΎ замыслу, Дэвид ΠΡˆΠ΅Ρ€, Π΄ΠΎΠΊΡ‚ΠΎΡ€ философии; ActiveState, 27 июля 2004 Π³.

<img src=»//fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1×1″ alt=»» title=»»>

ДинамичСскиС языки — Javatpoint

Π’ области программирования ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½ΠΈΠΉ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π³ΠΎΠ΄ вводится мноТСство языков программирования. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· программисты вводят Π½ΠΎΠ²Ρ‹ΠΉ язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, возникшиС с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ. НСкоторыС ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ всС языки программирования ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ стандартноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΈ язык программирования. Но ΠΏΠΎΡ‡Π΅ΠΌΡƒ программисты ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π³ΠΎΠ΄ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹?

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

ΠžΠ±Ρ‰Π΅ΠΏΡ€ΠΈΠ½ΡΡ‚ΠΎΠ³ΠΎ опрСдСлСния динамичСских языков Π½Π΅ сущСствуСт. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ любой язык программирования, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π²ΠΎ врСмя выполнСния, являСтся динамичСским языком. ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ Π²ΠΎ врСмя выполнСния β€” это Π½Π΅ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²ΠΎ врСмя Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π»ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ язык Π±Ρ‹Π» высокоуровнСвым, динамичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΈ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. НаиболСС вострСбованными динамичСскими языками ΡΠ²Π»ΡΡŽΡ‚ΡΡ Python, Perl ΠΈ Ruby.

ДинамичСскиС языки ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ программистам ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄Π°ΠΆΠ΅ структуру Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π­Ρ‚ΠΎ извСстно ΠΊΠ°ΠΊ модификация Π²ΠΎ врСмя выполнСния. Π―Π·Ρ‹ΠΊ высокого уровня β€” это Π½Π΅ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ язык с Π±ΠΎΠ»Π΅Π΅ высоким ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ абстракции. C являСтся языком высокого уровня, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции. Python ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ динамичСскиС языки ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Π΅ ΠΎΡ‚ динамичСских языков, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, Π±ΠΎΠ»Π΅Π΅ абстрактныС встроСнныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ списки ΠΈ словари, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ нСстатичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ синтаксиса для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ читаСмости ΠΊΠΎΠ΄Π° ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ сниТСния Π΅Π³ΠΎ многословности. ДинамичСскиС языки Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ исходя ΠΈΠ· прСдполоТСния ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² для простого создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ДинамичСскиС языки часто ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Π° Π½Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ исходный ΠΊΠΎΠ΄ читаСтся Π²ΠΎ врСмя выполнСния ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ β€” ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, которая ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ исходный ΠΊΠΎΠ΄ Π² Ρ†Π΅Π»Π΅Π²ΠΎΠ΅ прСдставлСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ выполняСт ΠΈ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚. Π­Ρ‚ΠΎΡ‚ процСсс ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ компиляции, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ компилятор Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ исходный ΠΊΠΎΠ΄, Π° язык, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ, считаСтся языком с динамичСской ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ² происходит Π²ΠΎ врСмя выполнСния (Π²ΠΎ врСмя выполнСния), Π° Π½Π΅ Π²ΠΎ врСмя компиляции, ΠΊΠ°ΠΊ это происходит с статичСская типизация. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ² состоит ΠΈΠ· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ ограничСния Ρ‚ΠΈΠΏΠΎΠ², ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ нСсовмСстимых Ρ‚ΠΈΠΏΠΎΠ². Если язык Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Ρ‹Π» извСстСн Π²ΠΎ врСмя компиляции, Ρ‚ΠΎ говорят, Ρ‡Ρ‚ΠΎ язык ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ.

НСкоторыС ΠΈΠ· самых популярных языков динамичСского программирования:

  • JavaScript
  • ΠŸΠΈΡ‚ΠΎΠ½
  • Π ΡƒΠ±ΠΈΠ½
  • PHP
  • Π›ΡƒΠ°
  • Perl ΠΈ Ρ‚. Π΄.

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

ИспользованиС динамичСских языков:

  • Π˜ΡΠΊΡƒΡΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚.
  • Наука ΠΈ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅
  • Анализ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ статистика
  • Биология
  • ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°
  • Π’Π΅Π±-прилоТСния
  • Π˜Π³Ρ€Ρ‹


ДинамичСский язык программирования β€” Academic Kids

From Academic Kids

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

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

ДинамичСскиС языки ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° адрСса Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ищутся Π²ΠΎ врСмя выполнСния, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² адрСса Π²ΠΎ врСмя компиляции. Π­Ρ‚ΠΎ позволяСт ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ символы, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ Π½Π° Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, позволяя ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ опрСдСлСния. МногиС динамичСскиС языки Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ поиск Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, позволяя ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ «статичСскиС» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ классы.

Однако это Π²Π²ΠΎΠ΄ΠΈΡ‚ поиск Π²ΠΎ врСмя выполнСния, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ поиска символа, Π° Π·Π°Ρ‚Π΅ΠΌ указатСля Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ динамичСскиС языки часто Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ нСдинамичСскиС, Ρ‡Ρ‚ΠΎ являСтся Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ Β«ΠΏΠΎΡ†Π΅Π»ΡƒΠ΅ΠΌ смСрти» Π² 19 Π²Π΅ΠΊΠ΅.90-Π΅. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ эту Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ Π΄ΠΎ нуля, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, язык программирования Objective-C использовал ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ кэш ΠΈ нСбольшой Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° Π½Π° ассСмблСрС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ эти Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Π΄ΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π‘Ρ‚Π΅ΠΏΠ΅Π½ΡŒ динамичности зависит ΠΎΡ‚ языка. Objective-C Π±Ρ‹Π» основан Π½Π° компиляторС GNU / GCC ΠΈ допускал Π΄ΠΈΠ½Π°ΠΌΠΈΠ·ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ нСсвязанным ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ) ΠΏΡƒΡ‚Π΅ΠΌ пСрСзаписи ΠΊΠΎΠ΄Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *