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

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ программирования: ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки

РассказываСт Аарон ΠšΡ€Π°ΡƒΡΒ 


Как ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ этого Ρ†ΠΈΠΊΠ»Π°, я Ρ…ΠΎΡ‡Ρƒ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ вашС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° всё Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ, Π½ΠΎ с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ Ρ€Π΅Π΄ΠΊΠΎ сталкиваСмся Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈ поэтому Π½Π΅ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° ΠΈΡ… ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ. Π’Π΅ΠΌΠ° сСгодняшнСй ΡΡ‚Π°Ρ‚ΡŒΠΈ β€” ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки.Β 

Π‘ΡƒΠ΄ΡƒΡ‡ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ, ΠΌΡ‹ часто сталкиваСмся с Ρ‚Π°ΠΊΠΈΠΌΠΈ понятиями, ΠΊΠ°ΠΊ компилятор ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, Π½ΠΎ я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π½Π΅ совсСм ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚. ΠœΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ, компиляция ΠΈ интСрпрСтация — это основы Ρ€Π°Π±ΠΎΡ‚Ρ‹ всСх языков программирования. Π”Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ Π½Π° самом Π΄Π΅Π»Π΅ устроСны эти понятия.

ВступлСниС

ΠœΡ‹ полагаСмся Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ инструмСнты, ΠΊΠ°ΠΊ компиляция ΠΈ интСрпрСтация, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ наш ΠΊΠΎΠ΄ Π² Ρ„ΠΎΡ€ΠΌΡƒ, ΠΏΠΎΠ½ΡΡ‚Π½ΡƒΡŽ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ. Код ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ исполнСн Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ, Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС послС ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ (ΠΏΡƒΡ‚Ρ‘ΠΌ компиляции) ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ построчно Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, которая Π΄Π΅Π»Π°Π΅Ρ‚ это вмСсто ОБ (ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€).

ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык β€” это Ρ‚Π°ΠΊΠΎΠΉ язык, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π±ΡƒΠ΄ΡƒΡ‡ΠΈ скомпилированной, содСрТит инструкции Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹; этот ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ нСпонятСн людям. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΆΠ΅ язык β€” это Ρ‚Π°ΠΊΠΎΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ инструкции Π½Π΅ ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ машиной, Π° ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ (которая ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ написана Π½Π° языкС Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹). Как Ρƒ компиляции, Ρ‚Π°ΠΊ ΠΈ Ρƒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Π΅ΡΡ‚ΡŒ свои ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ это ΠΌΡ‹ ΠΈ обсудим.

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

ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки

Π“Π»Π°Π²Π½ΠΎΠ΅ прСимущСство ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков β€” это ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ исполнСния. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС ΠΈ эффСктивнСС, Π½Π΅ΠΆΠ΅Π»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅, особСнно Ссли ΡƒΡ‡Π΅ΡΡ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… соврСмСнных скриптовых ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков.

НизкоуровнСвыС языки ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΒ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ставится Π²Ρ‹ΡˆΠ΅ кроссплатформСнности. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки Π΄Π°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС возмоТностСй Π² ΠΏΠ»Π°Π½Π΅ контроля Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ обСспСчСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ использованиСм процСссора. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков ΡΠ²Π»ΡΡŽΡ‚ΡΡΒ C, C++, Erlang, Haskell ΠΈ Π±ΠΎΠ»Π΅Π΅ соврСмСнныС языки, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊΒ Rust ΠΈΒ Go.

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

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ для исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ Π½ΡƒΠΆΠ΅Π½ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄; вмСсто этого ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ построчно исполнят ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹. Π Π°Π½ΡŒΡˆΠ΅Β ΠΏΡ€ΠΎΡ†Π΅ΡΡ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Π·Π°Π½ΠΈΠΌΠ°Π» ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½ΠΎ с ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΎΠΌ Ρ‚Π°ΠΊΠΈΡ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΠΊΠ°ΠΊ JIT-компиляция, Ρ€Π°Π·Ρ€Ρ‹Π² ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ ΠΈΒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ языками сокращаСтся. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков ΡΠ²Π»ΡΡŽΡ‚ΡΡ PHP, Perl, RubyΒ ΠΈΒ Python. Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стали ΠΏΡ€ΠΎΡ‰Π΅ благодаря ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языкам:

  • ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹;
  • РСфлСксия;
  • ДинамичСская типизация;
  • МСньший Ρ€Π°Π·ΠΌΠ΅Ρ€ исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ²:
  • ДинамичСскиС области видимости.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ нСдостатком ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языком являСтся ΠΈΡ… нСвысокая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ исполнСния. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, JIT-компиляция позволяСт ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ процСсс благодаря ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρƒ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ инструкции Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄.

Бонус: Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄-языки

Π‘Π°ΠΉΡ‚ΠΊΠΎΠ΄-языки β€” это Ρ‚Π°ΠΊΠΈΠ΅ языки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для исполнСния ΠΊΠΎΠ΄Π° ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ, Ρ‚Π°ΠΊ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ. Java ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΒ .NET β€” это Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄-языков. На самом Π΄Π΅Π»Π΅,Β Java Virtual Machine (JVM) β€” это Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ популярная Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина для ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎ Π½Π° Π½Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… языков. ΠšΡΡ‚Π°Ρ‚ΠΈ, Π½Π΅Π΄Π°Π²Π½ΠΎ стало извСстно, Ρ‡Ρ‚ΠΎ Π² Π½ΠΎΠ²ΠΎΠΉ вСрсии Java Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈ статичСская компиляция.

Π’ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄-языкС спСрва происходит компиляция ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ³ΠΎ языка Π² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄. Π‘Π°ΠΉΡ‚ΠΊΠΎΠ΄ β€” это Π½Π°Π±ΠΎΡ€ инструкций, созданный для эффСктивного исполнСния ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈ состоящий ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹Ρ… числовых ΠΊΠΎΠ΄ΠΎΠ², констант ΠΈ ссылок Π½Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π‘ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ пСрСдаётся Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ, которая Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ Ρ‚Π°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€.

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

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

МногиС языки Π² наши Π΄Π½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅, Ρ‚Π°ΠΊ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, сводя Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π½Π° Π½Π΅Ρ‚. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° исполнСния ΠΊΠΎΠ΄Π° Π΅ΡΡ‚ΡŒ прСимущСства ΠΈ нСдостатки.

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

Π‘Π°ΠΉΡ‚ΠΊΠΎΠ΄-языки, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΈΠ»ΡŒΠ½Ρ‹Π΅ стороны ΠΎΠ±ΠΎΠΈΡ… Π²ΠΈΠ΄ΠΎΠ² языков, ΠΈ Ρƒ Π½ΠΈΡ… это Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ получаСтся.

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈΒ Β«Programming Concepts: Compiled and Interpreted LanguagesΒ»

ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки программирования

Автор Π‘Π΅Ρ€Π³Π΅ΠΉ Π’ΠΈΠΌΠΎΡ„Π΅Π΅Π² На Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ 10 ΠΌΠΈΠ½ ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΎΠ² 5ΠΊ. ОбновлСно

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки?

Π‘ появлСниСм высокоуровнСвых языков сущСствСнно ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΠ»ΠΈΡΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ портирования ПО. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ: компиляторов ΠΈ трансляторов обСспСчиваСтся связь ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ систСмами ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… срСдств обСспСчиваСт Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ высокоуровнСвых языков от ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ вСрсии ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.

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

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ транслятор ПП-1 (ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΡŽΡ‰Π°Ρ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°) Π±Ρ‹Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° ΠΈ использована Π² 1954 Π³ΠΎΠ΄Ρƒ. Π£ΠΆΠ΅ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π³ΠΎΠ΄Ρƒ Π±Ρ‹Π»Π° создана ПП-2 с собствСнным Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠΌ, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ стандартных ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€.

Π’ 1957 Π³ΠΎΠ΄Ρƒ Π±Ρ‹Π» Π·Π°ΠΏΡƒΡ‰Π΅Π½ компилятор для Fortran ΠΈ послС этого высокоуровнСвыС языки стали Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ программистами. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ послСднСго являСтся Π³Ρ€ΡƒΠΏΠΏΠ° спСциалистов ΠΈΠ· IBM Π²ΠΎ Π³Π»Π°Π²Π΅ с Π”ΠΆΠΎΠ½ΠΎΠΌ Бэкусом.

Π”ΠΆΠΎΠ½ Бэкус – Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ Π³Ρ€ΡƒΠΏΠΏΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² IBM создатСлСй компилятора для FORTRAN

Π’ настоящСС врСмя Π² срСдС спСциалистов принята ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ классификация высокоуровнСвых языков ΠΏΠΎ способу выполнСния:

  • ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅. К этой ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ относятся языки C, C++, Object Pascal ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ для прСобразования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ инструкции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-компиляторы. На ΠΏΠ΅Ρ€Π²ΠΎΠΌ этапС исходный ΠΊΠΎΠ΄ пСрСводится Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΌ происходит ΠΈΡ… сборка Π² Π΅Π΄ΠΈΠ½Ρ‹ΠΉ исполняСмый Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²Ρ‰ΠΈΠΊΠ°.
  • Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅. Π”Π°Π½Π½ΡƒΡŽ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ языки Ρ‚ΠΈΠΏΠ° Forth, Basic ΠΈ ΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ считываСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ-ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈ выполняСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ шаг Π·Π° шагом.

Помимо пСрСчислСнных катСгорий высокоуровнСвых ΡΠ·Ρ‹ΠΊΠΎΠ²Β ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ ΠΈΠ½Ρ‹Π΅: ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π½Π° Π±Π°Π·Π΅ псСвдокода ΠΈ совмСщСнныС.

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

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

  1. ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки
  2. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки
  3. Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки программирования
  4. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΠΈ нСдостатки
  5. ΠžΠ±Π»Π°ΡΡ‚ΠΈ примСнСния
  6. Π’Π°ΠΊ ΠΊΠ°ΠΊΠΎΠΉ ΠΆΠ΅ язык ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?

ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки

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

БлуТСбная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-компилятор, ΠΎΠ±Ρ€Π°Π·Π½ΠΎ говоря, обСспСчиваСт ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ высокоуровнСвого языка Π½Π° Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  1. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ тСкст ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ трансформируСтся Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ состоит ΠΈΠ· понятных процСссору инструкций.
  2. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠΉΡΡ Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… записываСтся Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ идСнтифицируСтся ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой ΠΊΠ°ΠΊ исполняСмый.
  3. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, записанная Π² этом Ρ„Π°ΠΉΠ»Π΅ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, считываСтся ΠΈ выполняСтся Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΌ процСссором.
Алгоритм Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-компиляции исходного ΠΊΠΎΠ΄Π° Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ

ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄Π½Ρƒ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ:Β Π² случаС внСсСния ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² исходный ΠΊΠΎΠ΄ описанный процСсс повторяСтся. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° снова компилируСтся Π² Π½Π°Π±ΠΎΡ€ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… инструкций, происходит Π΅Π΅ запись Π² исполняСмый Ρ„Π°ΠΉΠ». Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ исправлСний оцСниваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ процСсса.

ΠŸΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ извСстных ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков программирования высокого уровня Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚:

  • Ada, Algol (Π΅Π³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ вСрсии Algol 60 ΠΈ 68, Π° Ρ‚Π°ΠΊΠΆΠ΅ SMALL).
  • BASIC ΠΈ PureBasic.
  • C ΠΈ Π΅Π³ΠΎ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ C++, Objective-C.
  • COBOL, Delphi ΠΈ Fortran.
  • Pascal ΠΈ Turbo Pascal.
  • Visual Basic Π² ΡˆΠ΅ΡΡ‚ΠΈ вСрсиях.
  • ML ΠΈ Standard ML.

ΠŸΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ языков, исходный ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ, этим Π½Π΅ ограничиваСтся. Бписок ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΌΠ΅Π½Π΅Π΅ популярными: Sather, Common Lisp, Swift, CLEO, LabVIEW, Ocaml, Haskell, Eiffel, Ubercode, Go, JOVIAL, Lush, Alice, Rust, Visual Foxpro ΠΈ Visual Prolog.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄

Помимо Π½Π°Π·Π²Π°Π½Π½Ρ‹Ρ… ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Ρ€ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ высокоуровнСвых языки программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄:

  1. Java (Scala, Kotlin, Groovy, Clojure, Jython).
  2. ВСхнология .NET (C#, Visual Basic, F#, Cobra).
  3. Erlang.

Помимо Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ-компиляторов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΡ… Ρ‚ΠΈΠΏ – транспайлСры (transpiler). Они ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° исходного ΠΊΠΎΠ΄Π°, написанного Π½Π° Emscripten , kPHP, Closure Compiler, coffeescript, Dart, Haxe, TypeScript ΠΈΠ»ΠΈ Coccinelle, Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ высокоуровнСвыС языки программирования Ρ‚ΠΈΠΏΠ° ActionScript , C++, Lua Π»ΠΈΠ±ΠΎ Python.

ВранспайлСры Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° старого исходного ΠΊΠΎΠ΄Π° Π½Π° Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹Π΅ вСрсии, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² совмСстимыС с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌΠΈ интСрфСйсами API. ΠŸΡ€ΠΈ этом происходит Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости.

Алгоритм Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-транспилятора

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

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки

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

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки программирования

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ошибки ΠΈ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π² исходный ΠΊΠΎΠ΄, Π² Ρ…ΠΎΠ΄Π΅ ΠΈΡ… исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ .

ΠŸΠΎΠ½Π°Ρ‡Π°Π»Ρƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² высокоуровнСвых языков программирования выглядСл Ρ‚Π°ΠΊ:

  1. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ логичСская строка исходного ΠΊΠΎΠ΄Π° прСобразуСтся Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄.
  2. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ процСссором ΠΈ сразу ΠΆΠ΅ исполняСтся.
  3. Если Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ†ΠΈΠΊΠ»Ρ‹, Ρ‚ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ количСство Ρ€Π°Π·.
Алгоритм Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° высокоуровнСвого языка Π½Π° этапС ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹:

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

Описанная схСма примСняСтся ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных языков программирования: Java, Python ΠΈ Ruby. Π’ послСднСм Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ исходный тСкст прСобразуСтся Π² Ρ„ΠΎΡ€ΠΌΡƒ абстрактной синтаксичСской Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ структуры. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Π½Π° этапС ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ (Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ) прСдставлСния ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ структуры Π΄Π°Π½Π½Ρ‹Ρ….

Π‘Ρ€Π΅Π΄ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… высокоуровнСвых языков наибольшСС распространСниС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

  • APL (J), BASIC, Forth, Lisp, Python, Excel, Logo Perl, Visual Basic for Applications ΠΈ PHP.
  • Π‘ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Ρ‹Π΅: JavaScript, Madness Script, VBScript, PostScript ΠΈ F-Script.
  • БистСмы Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ матСматичСских ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ: Mathematica, GNU Octave, TK Solver, Interactive Data Language (IDL) ΠΈ MATLAB.
  • Π“Ρ€ΡƒΠΏΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языков: Smalltalk Π² вСрсиях Dolphin ΠΈ Little, Π° Ρ‚Π°ΠΊΠΆΠ΅ VisualAge ΠΈ VisualWorks.

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

Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки программирования

ИспользованиС Π² качСствС ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ° классификации ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ процСссором позволяСт Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ. ΠœΠ΅ΠΆΠ΄Ρƒ компиляциСй ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ Ρ€Π°Π·Π½ΠΈΡ†Π° состоит Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ:

  • ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ исходный ΠΊΠΎΠ΄ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… инструкций, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСпосрСдствСнно Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ.
  • Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ обСспСчиваСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… сцСнариСв: гСнСрация Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° ΠΈ Π½Π° ΠΈΡ… основС Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… инструкций для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин, ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ прСдставлСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… языков.
Различия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ языками программирования

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

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· высокоуровнСвых языков Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° (ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ) ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ свойствами. Π­Ρ‚ΠΎ Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ относится ΠΈ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, написанных Π½Π° Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π΅. К достоинствам ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков относят:

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

Одним ΠΈΠ· основных нСдостатков ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков являСтся ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нСвысокая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния написанных Π½Π° Π½ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. По ΠΎΡ†Π΅Π½ΠΊΠ°ΠΌ спСциалистов прилоТСния Π½Π° Python ΠΈΠ»ΠΈ PHP ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… случаях Π½Π° Π΄Π²Π° порядка ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ ΠΈΡ… Π°Π½Π°Π»ΠΎΠ³ΠΈ Π½Π° C++.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΠΈ нСдостатки ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков

Π―Π·Ρ‹ΠΊΠΈ высокого уровня, относящиСся ΠΊ классу ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ…, наряду с Π±ΠΎΠ»ΡŒΡˆΠΎΠΉΒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ряд ΠΈΠ½Ρ‹Ρ… прСимущСств:

  • Π’ Ρ…ΠΎΠ΄Π΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ проводится ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ошибок ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠΉ. Π’ случаС выявлСния Ρ‚Π°ΠΊΠΎΠ²Ρ‹Ρ… появляСтся сообщСниС для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π΅ Π΄ΠΎ запуска.
  • ПослС компиляции сразу получаСтся Π½Π°Π±ΠΎΡ€ ΠΈΠ· ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… инструкций (ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΡΡ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ процСссора. Π­Ρ‚ΠΈΠΌ ΠΈ опрСдСляСтся высокая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π―Π·Ρ‹ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈΠΌΠ΅ΡŽΡ‚ ΠΈ ряд нСдостатков:

  • ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ тСстирования ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ скомпилированного прилоТСния. Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π·Π°Ρ‚Ρ€Π°Ρ‚ ΠΈ внимания со стороны программиста.
  • Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ скомпилированный для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Windows, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π½Π° Linux ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ОБ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ исполняСмый Ρ„Π°ΠΉΠ» с использованиСм ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ слуТСбного ПО.

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

ΠžΠ±Π»Π°ΡΡ‚ΠΈ примСнСния

По подсчСтам спСциалистов сущСствуСт порядка 10 тысяч языков программирования высокого уровня. Π§Π°ΡΡ‚ΡŒ ΠΈΠ· Π½ΠΈΡ… устарСли ΠΈ практичСски Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ. ΠΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΉ Π² сфСрС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ПО Π½Π° Π΄Π΅Π»Π΅ Π½Π΅ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ. РассматриваСмыС Π² ΠΎΠ±Π·ΠΎΡ€Π΅ высокоуровнСвыС языки находят ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… областях:

  • ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ³Ρ€ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм Windows ΠΈ Linux ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
  • Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅. Π’Π΅Π±-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, созданиС кроссплатформСнных ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ матСматичСскиС вычислСния.
Π‘Ρ„Π΅Ρ€Ρ‹ примСнСния языков программирования: классификация

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ языки программирования Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ C, C++, C#, Java ΠΈΠ»ΠΈ Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² любой ΠΈΠ· пСрСчислСнных сфСр. Π’Ρ‹Π±ΠΎΡ€ языка для написания Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ опрСдСляСтся срСдой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π’Π°ΠΊ ΠΊΠ°ΠΊΠΎΠΉ ΠΆΠ΅ язык ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?

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

  1. Для создания слоТных ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для матСматичСских вычислСний ΠΈ выполнСния логичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡƒΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки: Mathematica , MATLAB, JavaScript ΠΈΠ»ΠΈ PHP.
  2. Если трСбуСтся нСбольшая компактная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° с высокой ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки: Object Pascal, C ΠΈΠ»ΠΈ C++.
Π’Ρ‹Π±ΠΎΡ€ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ языка программирования

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

ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков программирования β€” C, C++, Rust, Go, Haskell, C#, Java, Python, Ruby, Javascript β€” Finematics

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Когда Π΄Π΅Π»ΠΎ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ компиляции ΠΈ выполнСния ΠΊΠΎΠ΄Π°, Π½Π΅ всС языки программирования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Один ΠΈΠ· распространСнных, хотя ΠΈ Π½Π΅ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… способов ΠΈΡ… различСния β€” Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΡ… Π½Π° 2 Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков.

Основной Ρ†Π΅Π»ΡŒΡŽ ΠΊΠ°ΠΊ компиляции, Ρ‚Π°ΠΊ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ являСтся ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ³ΠΎ исходного ΠΊΠΎΠ΄Π° Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ нСпосрСдствСнно ЦП, Π½ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΊΠΈ.

Одна ΠΈΠ· основных Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ сам язык программирования Π½Π΅ компилируСтся ΠΈ Π½Π΅ интСрпрСтируСтся, Π° рСализация языка программирования компилируСтся. На самом Π΄Π΅Π»Π΅ сущСствуСт мноТСство языков программирования, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… с использованиСм ΠΊΠ°ΠΊ компиляторов, Ρ‚Π°ΠΊ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ².

Java ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ‚Π°ΠΊΠΎΠ³ΠΎ языка, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ исходный ΠΊΠΎΠ΄ Java компилируСтся Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ прСдставлСниС, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ΠΎΠΌ, ΠΈ интСрпрСтируСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ Java, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Java (JVM). Π­Ρ‚ΠΎ стандартный процСсс, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΎ всСх популярных рСализациях Java.

ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки

ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык β€” это язык программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ рСализуСтся с использованиСм компиляторов, Π° Π½Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ². ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ β€” это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, написанныС Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ языкС программирования, Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ язык, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ компилятор вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° Π»Π΅Ρ‚Ρƒ, Π΄Π΅Π»Π°Π΅Ρ‚ всю свою Ρ€Π°Π±ΠΎΡ‚Ρƒ Π΄ΠΎ выполнСния.

Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ языка являСтся C++.

Π’ C++ исходный ΠΊΠΎΠ΄ компилируСтся Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. ΠŸΡ€ΠΎΡ†Π΅ΡΡ компиляции состоит ΠΈΠ· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, компиляции ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ, Π½ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся Π»ΠΈΠ±ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Π»ΠΈΠ±ΠΎ исполняСмый Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ нСпосрСдствСнно процСссором, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±Ρ‹Π»Π° скомпилирована.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ прСимущСством скомпилированных языков являСтся ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ исполняСмый Ρ„Π°ΠΉΠ», содСрТащий ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ нСпосрСдствСнно Π½Π° Ρ†Π΅Π»Π΅Π²ΠΎΠΉ машинС Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… дСйствий.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ нСдостатками ΡΠ²Π»ΡΡŽΡ‚ΡΡ плохая ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ приходится ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ЦП ΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ трСбуСтся для фактичСской компиляции.

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ популярных ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков ΡΠ²Π»ΡΡŽΡ‚ΡΡ C, Go, Haskell ΠΈΠ»ΠΈ Rust.

Π―Π·Ρ‹ΠΊΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π°

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

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

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

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ довольно слоТно Π½Π°ΠΉΡ‚ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ популярный язык Π² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΈΡ… мноТСство Π² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ΠΎΠΌ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Java, C#, Python ΠΈΠ»ΠΈ Ruby.

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

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ нСдостатками ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ низкая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ исходного ΠΊΠΎΠ΄Π°, Ссли исходный ΠΊΠΎΠ΄ Π±Π΅Π· обфускации отправляСтся ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ.

Золотая сСрСдина? ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ JIT

Пока Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π° языка, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅, ΠΈΠΌΠ΅ΡŽΡ‚ свои ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы.

Π§Ρ‚ΠΎ, Ссли я скаТу Π²Π°ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ всС Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ скорости ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ скомпилированного языка, Π½Π΅ ТСртвуя ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΈ Π±ΠΎΠ»Π΅Π΅ быстрым Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ компиляции? Π—Π²ΡƒΡ‡ΠΈΡ‚ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ? Π’ΠΎΡ‚ Ρ‚ΡƒΡ‚-Ρ‚ΠΎ ΠΈ вступаСт Π² ΠΈΠ³Ρ€Ρƒ JIT-компиляция.

JIT ΠΈΠ»ΠΈ своСврСмСнная компиляция прСдставляСт собой Π³ΠΈΠ±Ρ€ΠΈΠ΄ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ компиляции, Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π΅ΠΆΠ°ΡŽΡ‰Π΅ΠΉ компиляциСй, ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ. ВмСсто ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈΠ· Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ прСдставляСт собой Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄) JIT ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΡƒΠΆΠ΅ скомпилированный ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, поэтому Π΅ΠΌΡƒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΅Π³ΠΎ.

JIT-компиляция Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡƒΡ‚Π΅ΠΌ Π°Π½Π°Π»ΠΈΠ·Π° исполняСмого ΠΊΠΎΠ΄Π° (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°) ΠΈ принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ части ΠΊΠΎΠ΄Π° слСдуСт ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, исходя ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ часто этот Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° выполняСтся (ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ²). .

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

ПолноС объяснСниС процСсса JIT-компиляции Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ этого Π²ΠΈΠ΄Π΅ΠΎ, Π½ΠΎ я ΠΏΠΎΠ΄ΡƒΠΌΡ‹Π²Π°ΡŽ ΠΎ создании Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ, посвящСнного JIT-компиляции, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это ΠΎΡ‡Π΅Π½ΡŒ интСрСсный процСсс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ всС Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚.

НСкоторыС ΠΈΠ· языков, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ, β€” это Java, C#, Pypy (Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Π°Ρ рСализация Python) ΠΈ V8 (Π΄Π²ΠΈΠΆΠΎΠΊ Javascript).

РСзюмС

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ сравним нСсколько основных характСристик ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ…, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΈ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков.

Π‘ΠΊΠΎΠΌΡ‚ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ JIT-COPPILED
Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ исполнСния FAST SLOSE ΠžΠ±Ρ‹Ρ‡Π½ΠΎ FAST (DEPENDING INTERATION). Ρ…ΠΎΡ€ΠΎΡˆΠΎ
врСмя компиляции ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ быстро (Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄) быстро (Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄)

ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ.

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

Extra

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠΌ, Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ интСрСсный Ρ„Π°ΠΊΡ‚.

Когда Π΄Π΅Π»ΠΎ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ языков программирования с мноТСством Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ, Python являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΠΎΠ±Π΅Π΄ΠΈΡ‚Π΅Π»Π΅ΠΉ.

Π­Ρ‚ΠΎ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΉ список Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Python 9.0003

  • IronPython (Python, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π½Π° .NET)
  • Jython (Python, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС Java)
  • PyPy (Python с JIT-компилятором)

Если Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ вопросы ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языках ΠΈΠ»ΠΈ прСдлоТСния ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²ΠΈΠ΄Π΅ΠΎ, поТалуйста, ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π½ΠΈΠΆΠ΅.

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ скомпилированной ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ?

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ скомпилированной ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ?

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π±Ρ‹Π» Π·Π°Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ большС Π½Π΅ поддСрТиваСтся УнивСрситСтом Π˜Π½Π΄ΠΈΠ°Π½Ρ‹. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ здСсь ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅Ρ‚ΠΎΡ‡Π½ΠΎΠΉ, Π° ссылки ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ нСдоступны ΠΈΠ»ΠΈ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½Ρ‹.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ написано Π½Π° языкС высокого уровня, Ρ‚Π°ΠΊΠΎΠΌ ΠΊΠ°ΠΊ C, Perl ΠΈΠ»ΠΈ Java. Π’Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ язык позволяСт людям ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ, поэтому ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ языки ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΈΡŽ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ. Однако, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ числа, Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ с ΠΎΠ΄Π½ΠΈΠΌ это ΠΊΠ°ΠΊ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ с ΠΊΠ΅ΠΌ-Ρ‚ΠΎ, с ΠΊΠ΅ΠΌ Π²Ρ‹ Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ языкС. Π’Ρ‹ Π½ΡƒΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊ для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ общСния, ΠΈ Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ компиляторы Π΄Π΅Π»Π°ΡŽΡ‚.

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

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

ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ Π½Π΅ говорят Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π° языки, скомпилированная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ‚ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½Π° Π±Ρ‹Π»Π° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для. НапримСр, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, написанная для HP-UX ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Mac OS ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Болярис. НСсмотря Π½Π° этот нСдостаток, скомпилированныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ быстрСС, Ρ‡Π΅ΠΌ Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€. Π’Π°ΠΊΠΆΠ΅, часто ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Π½Π° Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ языков, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ скомпилированныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ C, Fortran ΠΈ ΠšΠžΠ‘ΠžΠ›.

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ исходный ΠΊΠΎΠ΄ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ этого Ρ‚ΠΈΠΏΠ° (часто Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ сцСнарии) трСбуСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Π·Π°Ρ‚Π΅ΠΌ выполняСт ΠΈΡ…. НСкоторыС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Unix ( sh , csh , ksh ΠΈ Ρ‚. Π΄.), Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Ρ‚ΡƒΡ‚ ΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Perl, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ вСсь сцСнарий, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… инструкций машинного языка. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ скрипта Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π΅Π½. Π›ΡŽΠ±ΠΎΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ с установлСнный ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ нСдостаток, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ, Ссли ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ нСдоступСн. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ скомпилированныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ Π»Π΅Π³Ρ‡Π΅ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅ΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ JavaScript ΠΈ Python.

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