ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹

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

Β§40. БистСмноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС
Β§41. БистСмы программирования

Врансляторы

Β§42. Π˜Π½ΡΡ‚Π°Π»Π»ΡΡ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

Β§41. БистСмы программирования

Врансляторы

Основа любой систСмы программирования β€” транслятор.

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ кодыВранслятор β€” это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ тСксты ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, написанных Π½Π° языкС высокого уровня.

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° трансляторов: ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ компиляторы.

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

Достоинства ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ²:

β€’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ пСрСносимы (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² любой систСмС, Π³Π΄Π΅ установлСна ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€);
β€’ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Π•ΡΡ‚ΡŒ ΠΈ сущСствСнныС нСдостатки.

β€’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ, Ссли Π½Π΅ установлСн ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€;
β€’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ (Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΈΠ· 100 шагов каТдая строчка 100 Ρ€Π°Π· «разбираСтся» ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ);
β€’ Π² Ρ‚Π΅Ρ… частях ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ Π²ΠΎ врСмя ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ синтаксичСскиС ошибки.

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

Достоинства компиляторов:

β€’ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ транслятор;
β€’ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΡƒΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π° Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹, ΠΎΠ½Π° выполняСтся Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ использовании ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°.

НСдостатки Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ:

1 МногиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ для ОБ Windows, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ Π² Linux с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Wine (www.winehq.org).

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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сначала обрабатываСтся компилятором, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ строит псСвдокод, Π° ΠΏΠΎΡ‚ΠΎΠΌ этот псСвдокод выполняСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ,

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

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹Π‘Π°ΠΉΡ‚-ΠΊΠΎΠ΄ β€” это Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ псСвдокода, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 1 Π±Π°ΠΉΡ‚, Π° Π΄Π°Π»Π΅Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Π΅Ρ‘ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ (ΠΈΠ»ΠΈ ΠΈΡ… адрСса). Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ вСрсии ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков Perl, РНР, Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ для ускорСния выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ страница ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ кодыБостав систСмы программирования

CΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΡƒΡ€ΠΎΠΊΠ°
ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Врансляторы. Для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с языка программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹, понятныС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ – трансляторы

Для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с языка программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹, понятныС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ – трансляторы. Врансляторы Π±Ρ‹Π²Π°ΡŽΡ‚ Π΄Π²ΡƒΡ… Π²ΠΈΠ΄ΠΎΠ²: ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ компиляторы.

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

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

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

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

Π’ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… систСмах программирования ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ°Π½Ρ‹ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ компиляции ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ. Π’ процСссС ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΠΎ шагам, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ компиляторы

Врансляция ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ β€” ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, прСдставлСнной Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· языков программирования, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ языкС ΠΈ, Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌ смыслС, Ρ€Π°Π²Π½ΠΎΡΠΈΠ»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π²ΠΎΠΉ.

Π―Π·Ρ‹ΠΊ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ прСдставлСна входная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, называСтся исходным языком, Π° сама ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° β€” исходным ΠΊΠΎΠ΄ΠΎΠΌ.

Π’Ρ€Π°Π½ΡΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ дСлятся Π½Π° Π΄Π²Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ: ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ компиляторы.

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ нСбольшой Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ, лишь доТдавшись, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°.

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

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих способов прСобразования ΠΈΠΌΠ΅Π΅Ρ‚ свои достоинства ΠΈ нСдостатки.

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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанныС Π½Π° языках, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ присутствия Π² памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ осущСствляСт Ρ‚Ρ€Π°Π½ΡΠ»ΡΡ†ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Ρ…ΠΎΠ΄Π΅ Π΅Π΅ выполнСния.

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

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

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π° для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ эффСктивности

Вранслятор устроСн Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Β«Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒΒ» Π½ΠΈ Π²ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π½ΠΈ Π½Π°Π·Π°Π΄, Π½Π° ΡƒΠΆΠ΅ сгСнСрированный ΠΊΠΎΠ΄. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π»ΠΈΠ±ΠΎ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ, Π»ΠΈΠ±ΠΎ ΠΏΠ»ΠΎΡ…ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ, Π»ΠΈΠ±ΠΎ Ρ‚ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ вмСстС.

Π’ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π΅ с этим приходится ΠΌΠΈΡ€ΠΈΡ‚ΡŒΡΡ, Π½ΠΎ Π² компиляторС прСдусмотрСно ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ срСдство Π»ΠΈΠΊΠ²ΠΈΠ΄Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠΉ нСэффСктивности.

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

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

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ слоТных вычислСний ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ сущСствСнно ΡƒΠ΄Π»ΠΈΠ½ΡΡ‚ΡŒ процСсс компиляции. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… компиляторах выбираСтся компромиссный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚: ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ удСляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΌ частям ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (Ρ‚Π°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊ Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ интСнсивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ Β«ΠΎΡ‚ΡˆΠ»ΠΈΡ„ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚Β» ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² этих частях ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ врСмя Π΅Π΅ выполнСния Π±Π΅Π· Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π·Π°Ρ‚Ρ€Π°Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° IDE. ΠžΡ‚Π»Π°Π΄ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, компилятор ΠΈ/ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, срСдства Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ сборки ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ. Иногда Ρ‚Π°ΠΊΠΆΠ΅ содСрТит срСдства для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с систСмами управлСния вСрсиями ΠΈ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ инструмСнты для упрощСния конструирования графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

МногиС соврСмСнныС срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ классов, инспСктор ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов β€” для использования ΠΏΡ€ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ПО. Π₯отя ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… языков β€” Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Eclipse ΠΈΠ»ΠΈ Microsoft Visual Studio, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прСдназначаСтся для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ языка программирования β€” ΠΊΠ°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Visual Basic.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² производится с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, шаг Π·Π° шагом Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½ΠΎΠ²ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚ΠΈ ΠΊ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ, ΠΏΡƒΡ‚ΠΈ ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ, ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠΏΡ†ΠΈΠΈ компилятора, ассСмблСра ΠΈ Π»ΠΈΠ½ΠΊΠ΅Ρ€Π°.

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

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

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

ЛСкция 8.

ΠžΡΠ½ΠΎΠ²Ρ‹ языка Object Pascal/Delphi

Π’ настоящСм курсС Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ основы языка программирования Object Pascal, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π² срСдС программирования Delphi Ρ„ΠΈΡ€ΠΌΡ‹ Borland International.

ОписаниС структуры ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π›ΡŽΠ±Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π² Delphi состоит ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Ρ„Π°ΠΉΠ» с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ dpr) ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ (Ρ„Π°ΠΉΠ»Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ pas). ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² описываСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ Object Pascal.

Π€Π°ΠΉΠ» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° прСдставляСт собой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π½Π° языкС Object Pascal ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΡƒΡŽ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ компилятором. Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° автоматичСски создаСтся Delphi ΠΈ содСрТит лишь нСсколько строк. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΡ…, запуститС Delphi ΠΈ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠΎ ΠΎΠΏΡ†ΠΈΠΈ Project | View Source Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ мСню. Delphi ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ ΠΎΠΊΠ½ΠΎ ΠΊΠΎΠ΄Π° с Π·Π°ΠΊΠ»Π°Π΄ΠΊΠΎΠΉ Project1, содСрТащСС Ρ‚Π°ΠΊΠΎΠΉ тСкст:

program Project1;

Uses

Unit1 in ‘Unit1.pas’ ;

Begin

Π—Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ слова ΠΈΠ³Ρ€Π°ΡŽΡ‚ Π²Π°ΠΆΠ½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Π² Object Pascal, придавая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π² Ρ†Π΅Π»ΠΎΠΌ свойство тСкста, написанного Π½Π° ΠΏΠΎΡ‡Ρ‚ΠΈ СстСствСнном английском языкС. КаТдоС Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ слово (Π° ΠΈΡ… Π² Object Pascal нСсколько дСсятков) нСсСт Π² сСбС условноС сообщСниС для компилятора, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρ‡ΠΈΡ‚Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΈ ΠΌΡ‹: слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ ΠΈ свСрху Π²Π½ΠΈΠ·.

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

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π΅Ρ‡ΡŒ зашла ΠΎ коммСнтариях, Π·Π°ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ Π² Object Pascal Π² качСствС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»Π΅ΠΉ коммСнтария ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠ°Ρ€Ρ‹ символов (*, *) ΠΈ //. Π‘ΠΊΠΎΠ±ΠΊΠΈ (*. *) Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Π° символы // ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ компилятору, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ располагаСтся Π·Π° Π½ΠΈΠΌΠΈ ΠΈ продолТаСтся Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ строки:

(*Π­Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ*)

//ВсС символы Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° этой строки ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π‘Π»ΠΎΠ²ΠΎ Program со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π·Π° Π½ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π—Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ слСдуСт Ρ€Π°Π·Π΄Π΅Π» описаний, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ программист (ΠΈΠ»ΠΈ Delphi) описываСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ элСмСнты ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏΡ‹, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΎΠ± элСмСнтах ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅). Π—Π΄Π΅ΡΡŒ ΠΆΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ прСдлоТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ начинаСтся Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ словом uses (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ) программист сообщаСт компилятору ΠΎ Ρ‚Π΅Ρ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (модулях), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΡ‹Π΅ составныС части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ…. Π‘Ρ‚Ρ€ΠΎΠΊΠΈ:

Forms, Unit1 in ‘Unitl.pas’ ;

ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Initialize ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Application. ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² эту строку, компилятор создаст ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ заставит процСссор ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанного для нас Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ Delphi. ПослС выполнСния этого Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° (программисты говорят: послС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹) ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ процСссором ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ CreateForm ΠΈ Ρ‚. Π΄.

ОписаниС структуры модуля

// БСкция интСрфСйсных объявлСний

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

Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠΎ Π·Π°ΠΊΠ»Π°Π΄ΠΊΠ΅ Unit1 ΠΎΠΊΠ½Π° ΠΊΠΎΠ΄Π°, ΠΈ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΎΠΉ тСкст:

Windows, Messages, SysUtils, Classes, Graphics, Controls,

Forms, Dialogs, StdCtrls, Buttons, ExtCtrls;

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Врансляторы ΠΈ ΠΈΡ… Π²ΠΈΠ΄Ρ‹

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

Π’ настоящСС врСмя трансляторы Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π½Π° Ρ‚Ρ€ΠΈ основныС Π³Ρ€ΡƒΠΏΠΏΡ‹: ассСмблСры, компиляторы ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹.

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

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

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

ΠœΠ°ΠΊΡ€ΠΎΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΈ с языками высокого уровня. Они ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности Ρ‚Π°ΠΊΠΈΡ… языков ΠΊΠ°ΠΊ PL/1, C, C++. ОсобСнно ΡˆΠΈΡ€ΠΎΠΊΠΎ макропроцСссоры ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² C ΠΈ C++, позволяя ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ написаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ΠœΠ°ΠΊΡ€ΠΎΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Ρ‹ ΠΏΠΎΠ²Ρ‹ΡˆΠ°ΡŽΡ‚ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ программирования Π±Π΅Π· измСнСния синтаксиса ΠΈ сСмантики языка.

Π›ΡŽΠ±ΠΎΠΉ транслятор выполняСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ основныС Π·Π°Π΄Π°Ρ‡ΠΈ:

Β­- Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π² частности опрСдСляСт, содСрТит Π»ΠΈ ΠΎΠ½Π° синтаксичСскиС ошибки;

— Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ (Π΅Π΅ часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ) Π½Π° языкС ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄;

— распрСдСляСт ΠΏΠ°ΠΌΡΡ‚ΡŒ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ВранскомпилируСмыС языки: ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄-Π²-ΠΊΠΎΠ΄

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹
Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: Ward Cunningham

Вранспиляция β€” это конвСртация ΠΊΠΎΠ΄Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ языка Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ транспилСра (транскомпилятора) ΠΎΠ΄ΠΈΠ½ язык программирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния ΠΌΠΎΠΆΠ½ΠΎ пСрСнСсти Π½Π° любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ язык программирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния.

Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ язык, транспилСры ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π±Γ³Π»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°, Π½Π΅ пСрСписывая вСсь ΠΊΠΎΠ΄ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. НапримСр, ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈΠ· Python 2 Π² Python 3, ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ пСрСносС софта ΠΎΡ‚ старого API Π² Π½ΠΎΠ²Ρ‹ΠΉ.

Π’Π΅Ρ€ΠΌΠΈΠ½Ρ‹ «транспилСр» ΠΈ «транскомпилятор» часто взаимозамСняСмы, Π½ΠΎ всС ΠΆΠ΅ считаСтся, Ρ‡Ρ‚ΠΎ различия Π΅ΡΡ‚ΡŒ. НапримСр, для прСобразования ΠΊΠΎΠ΄Π° C++ Π² C потрСбуСтся транспилСр, Π° для ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ Python-Ruby β€” транскомпилятор. Babel для JavaScript β€” это транспилСр, Π° TypeScript β€” транскомпилирумый язык.

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

ВранспилированиС Π²ΠΎ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π΅

ΠšΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΡ β€” ваТная Ρ‡Π°ΡΡ‚ΡŒ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ: ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΠΈΡ‡ΠΈ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ… ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, Π±Ρ‹Π»ΠΈ созданы языки с ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ возмоТностями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π°Π½ΡΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² совмСстимыС с Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌΠΈ языки.

Π—Π° Π±ΡƒΠΉΠ½Ρ‹ΠΉ расцвСт транс-языков для JavaScript Ρ‚Π°ΠΊΠΆΠ΅ нСсут ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ свой ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ JavaScript. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ свой Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ JavaScript, ΠΈ ΠΊ ΠΏΠΎΠ»Π½ΠΎΠΌΡƒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΡŽ спСцификации ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ°ΡŽΡ‚ΡΡ с Ρ€Π°Π·Π½ΠΎΠΉ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ.

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹

Sass, Less ΠΈ Stylus ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ созданиС CSS-ΠΊΠΎΠ΄Π°. Π’Π°ΠΊ Sass ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π³ΠΈΠ±ΠΊΠΈΠΌ синтаксисом, Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ (@if, each), ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΎΠΉ (ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ числа, строки ΠΈ Ρ†Π²Π΅Ρ‚Π°), Π·Π° счСт Ρ‡Π΅Π³ΠΎ всС богатство ΠΊΠΎΠ΄Π° транспилируСтся ruby-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ CSS.

Less (Leaner Style Sheets) выглядит Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ CSS, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ дополнСния: ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, миксины, арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (ΠΊΠ°ΠΊ Ρƒ Sass) ΠΈ Ρ‚.Π΄.

Stylus написан Π½Π° Node.js ΠΈ отличаСтся ΠΎΡ‚ Sass ΠΈ Less Π±ΠΎΠ»Π΅Π΅ чистым синтаксисом. Но фактичСски эти Ρ‚Ρ€ΠΈ языка ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π°, поэтому Π½Π΅ ΠΎΡˆΠΈΠ±Π΅Ρ‚Π΅ΡΡŒ, Ссли Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ любой ΠΈΠ· Π½ΠΈΡ….

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹

Π‘ΠΊΠ°ΠΆΠ΅ΠΌ Β«Hello, World!Β» Π½Π° CoffeeScript β€” Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‰Π΅:

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

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹

TypeScript β€” ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎΠ΄ JavaScript, скриптовый язык с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ статичной Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ классов, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ JS, избавляя ΠΎΡ‚ нСобходимости ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ всСх Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², входящих Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

БущСствуСт ΠΌΠ½Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ JavaScript β€” это язык с Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ изъянами. Π˜Π½Π°Ρ‡Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ транс-языков, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π°Π΄ исправлСниСм Π΅Π³ΠΎ нСдостатков. Помимо Π²Ρ‹ΡˆΠ΅Π½Π°Π·Π²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ Π³ΠΈΠ±ΠΊΠΈΠΉ язык Π²Π΅Π±-программирования Dart, компилятор ΠΈΠ· JavaScript Π² JavaScript Closure Compiler ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π° страницС «Бписок языков, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² JSΒ».

ΠšΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π² Π‘

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹

Π’ 2006 Π³. появился ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Vala, состоящий ΠΈΠ· Π΄Π²ΡƒΡ… языков: Vala ΠΈ Genie, Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… самый ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π° Π‘, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, компилируСтся Π² исполняСмый Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ.

Бинтаксис Vala ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° C#, Π½ΠΎ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ для Π»ΡƒΡ‡ΡˆΠ΅ΠΉ совмСстимости с систСмами GObject, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Genie ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ с Python. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ язык сСйчас Π±ΠΎΠ»Π΅Π΅ распространСн, Ρ‡Π΅ΠΌ Genie, поэтому рассмотрим Π΅Π³ΠΎ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Ρ‚Π°ΠΊΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅? МногиС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ прилоТСния ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для GNOME Π½Π° высокоуровнСвых языках, Π½ΠΎ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ ΠΈΠ»ΠΈ Π½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ C# ΠΈΠ»ΠΈ Java. Vala позволяСт быстро ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ слоТный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, поддСрТивая стандартныС C API ΠΈ ABI ΠΏΡ€ΠΈ Π½ΠΈΠ·ΠΊΠΈΡ… трСбованиях ΠΊ памяти.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ C# ΠΈ Java нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ GObject ΠΈΠ· C ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков, ΠΈ нСльзя ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΡ… Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ GNOME. Valac, транскомпилятор Vala, создаСт Ρ„Π°ΠΉΠ»Ρ‹ C ΠΈΠ· исходных Ρ„Π°ΠΉΠ»ΠΎΠ² Vala Ρ‚Π°ΠΊ, словно Π²Ρ‹ написали свою Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ нСпосрСдствСнно Π½Π° C. ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Vala ΠΈΠ· прилоТСния C Π½Π΅ отличаСтся ΠΎΡ‚ использования любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° основС GObject.

Π§ΠΈΡ‚Π°Π΅ΠΌ ΠΈ записываСм Ρ„Π°ΠΉΠ» Π½Π° Vala:

Π‘ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΊΠΎΠ΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ Π½Π° сайтС.

ΠžΡ‚ Flash Π΄ΠΎ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΠΈ

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСводящая языки программирования Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹

Haxe создавался ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с Vala, Π½ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для транспилирования Π²ΠΎ Flash, JavaScript ΠΈ Neko. Π‘ Ρ‚Π°ΠΊΠΈΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ скиллов язык Π±Ρ‹Π» ΠΎΠ±Ρ€Π΅Ρ‡Π΅Π½ Π½Π° Π²Ρ‹ΠΌΠΈΡ€Π°Π½ΠΈΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ΠΆΠΈΠ», Π½ΠΎ ΠΈ Π·Π°Π²ΠΎΠ΅Π²Π°Π» Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ.

Π‘Π΅ΠΊΡ€Π΅Ρ‚ успСха Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΠΈ. Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Haxe разросся Π΄ΠΎ ΠΌΠΎΡ‰Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° инструмСнтов, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Ρ‚Ρ€Π°Π½ΡΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ Π½Π° Ρ€Π°Π·Π½Ρ‹Π΅ языки ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ JavaScript, C++, C#, Java, JVM, Python, Lua, PHP ΠΈ Flash.

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

Β«Hello WorldΒ» Π½Π° Haxe:

Π’ JavaScript эти строчки ΠΊΠΎΠ΄Π° Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π‘Γ³Π»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Haxe ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² классы ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ ООП-языком, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ Java, ActionScript 3 ΠΈ C#. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Haxe разрабатывался с ΡƒΠΏΠΎΡ€ΠΎΠΌ Π½Π° ΠΏΡ€Π°Π³ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒ синтаксиса.

И ΠΎ транспилСрах

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

БущСствуСт ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство Π΄Ρ€ΡƒΠ³ΠΈΡ… языков, поэтому для своСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ самый подходящий. Но ситуации, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° конвСртация ΠΊΠΎΠ΄-Π²-ΠΊΠΎΠ΄ β€” Π½Π΅ такая ΡƒΠΆ Ρ€Π΅Π΄ΠΊΠΎΡΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ транспиляции C++ Π² C, PHP Π² C++ ΠΈ Β«Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ Π² JavaScriptΒ» ΡΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ довольно часто.

Β«ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΒ» с ΠΎΠ΄Π½ΠΎΠ³ΠΎ языка Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ β€” Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ идСя, Π½ΠΎ лишь Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π· рисков. Π’Π°ΠΊ, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ с COBOL Π½Π° Java давался тяТСло, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Java Π΄ΠΎ вСрсии JDK 1.4 Π½Π΅ Π±Ρ‹Π»ΠΎ memory-mapped files. А упомянутыС Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ C2Rust ΠΈ Corrode Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π΄Π°ΡŽΡ‚ Π½Π΅ ΠΈΠ΄ΠΈΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ°ΠΊ unsafe ΠΈ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ «сырыми» указатСлями.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

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

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