Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ транслятор ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π²Π° способа трансляции ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚

ΠŸΡ€ΠΎΡ†Π΅ΡΡ трансляции

ΠšΡƒΠ²ΡˆΠΈΠ½ΠΎΠ² Π”.Π .

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ опрСдСлСния

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ source code –– Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ тСкста, написанный Π½Π° исходном языкС для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ транслятора, β€œΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°β€ ΠΊΠ°ΠΊ тСкст.

Если для компилятора ΠΏΠΎΠΌΠΈΠΌΠΎ собствСнно Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ языка ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ способ оформлСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΈΠ½Ρ‹Π΅ особСнности ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ срСды (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ОБ), Ρ‚ΠΎ говорят ΠΎ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅. Если цСлСвая ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π½Π΅ совпадаСт (Π½Π΅ являСтся надмноТСством) ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°ΠΏΡƒΡ‰Π΅Π½ сам компилятор, Ρ‚ΠΎ процСсс Ρ‚Π°ΠΊΠΎΠΉ компиляции называСтся кросс-компиляциСй (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° GNU/Linux компилируСтся ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ Π½Π° Windows).

АссСмблСр assembler β€” транслятор, исходным языком ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся стандартизованная тСкстовая Ρ„ΠΎΡ€ΠΌΠ° машинного ΠΊΠΎΠ΄Π° (удобная для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° β€” ассСмблСрный ΠΊΠΎΠ΄ assembly ), Π° Ρ†Π΅Π»Π΅Π²Ρ‹ΠΌ языком β€” ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. АссСмблСр ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΎΠΌ компилятора, Π½ΠΎ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ β€œΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€β€ примСняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ трансляторам с исходных языков высокого уровня.

ДизассСмблСр disassembler β€” транслятор, исходным языком ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Π° Ρ†Π΅Π»Π΅Π²Ρ‹ΠΌ языком β€” ассСмблСрный ΠΊΠΎΠ΄. ДизассСмблСры, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π½Π° Π²Ρ…ΠΎΠ΄ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² машинном ΠΊΠΎΠ΄Π΅.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» object –– Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ компилятора Π² случаС использования ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ°. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, содСрТит ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ object code ).

β€œObject code” Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ пСрСвСсти ΠΊΠ°ΠΊ β€œΡ†Π΅Π»Π΅Π²ΠΎΠΉ код”, ΠΈ ΠΎΠ½ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ являСтся Ρ†Π΅Π»Π΅Π²Ρ‹ΠΌ для компилятора. Однако Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρƒ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния раздСлСния β€œΡ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ языка” Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΈΠ»ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° этом языкС ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ (см. Π½ΠΈΠΆΠ΅) β€” β€œΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°β€.

ΠœΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ machine code –– язык, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ процСссор (β€œΠΌΠ°ΡˆΠΈΠ½Π°β€).

Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹ΠΉ Ρ„Π°ΠΉΠ» executable –– оформлСнная Π² Π²ΠΈΠ΄Π΅ Ρ„Π°ΠΉΠ»Π° стандартного Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° (для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ ОБ) ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π² машинном ΠΊΠΎΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π° исполнСниС. Π’ ОБ Windows исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ ΠΏΠΎΠΌΠ΅Ρ‡Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ exe.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ module β€” ΠΌΠ½ΠΎΠ³ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ΅ слово. Π’ зависимости ΠΎΡ‚ контСкста примСнСния Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ толкования:

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

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

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ definition β€” ΠΏΠΎΠ»Π½ΠΎΠ΅ описаниС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ сущности (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΈΠΏΠ°) Π½Π° языкС программирования.

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ опрСдСлСния one definition rule, ODR Π² C++:

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‰Π°Ρ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ODR ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ скомпилирована Π±Π΅Π· ошибок, Π½ΠΎ привСсти ΠΊ ошибкам ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‰Π°Ρ Π²Ρ‚ΠΎΡ€ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ODR ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ошибкам компиляции.

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ послаблСния ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ опрСдСлСния, Π½ΠΎ ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ опрСдСлСния ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ. Π‘ΠΌ. ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ здСсь.

Π’ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° entry point –– адрСс Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ (исполняСмом Ρ„Π°ΠΉΠ»Π΅ ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅), с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. АдрСс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ символичСскоС имя, записанноС Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ модуля. Часто это имя просто совпадаСт с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² исходном ΠΊΠΎΠ΄Π΅. Π’ C ΠΈ C++ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° стандартная Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° для исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² β€” функция main.

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

Вранслятор

Врансля́тор β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠ»ΠΈ тСхничСскоС срСдство, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅Π΅ Ρ‚Ρ€Π°Π½ΡΠ»ΡΡ†ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. [1] [2]

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

Вранслятор ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ выполняСт Ρ‚Π°ΠΊΠΆΠ΅ диагностику ошибок, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ словари ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², Π²Ρ‹Π΄Π°Ρ‘Ρ‚ для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ тСксты ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Ρ‚. Π΄. [1]

Π―Π·Ρ‹ΠΊ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ прСдставлСна входная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, называСтся исходным языком, Π° сама ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° β€” исходным ΠΊΠΎΠ΄ΠΎΠΌ. Π’Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ язык называСтся Ρ†Π΅Π»Π΅Π²Ρ‹ΠΌ языком ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС понятиС трансляции относится Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ языкам программирования, Π½ΠΎ ΠΈ ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ языкам β€” ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΌ (Π²Ρ€ΠΎΠ΄Π΅ языков Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ Ρ‚ΠΈΠΏΠ° HTML), Ρ‚Π°ΠΊ ΠΈ СстСствСнным (русскому, английскому ΠΈ Ρ‚. ΠΏ.). [3] [4]

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

Π’ΠΈΠ΄Ρ‹ трансляторов

Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ЦСль трансляции β€” ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ тСкст с ΠΎΠ΄Π½ΠΎΠ³ΠΎ языка Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ понятСн адрСсату тСкста. Π’ случаС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ-трансляторов, адрСсатом являСтся тСхничСскоС устройство (процСссор) ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€.

Π―Π·Ρ‹ΠΊ процСссоров (ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄) ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π² качСствС машинного язык высокого уровня (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, iAPX-432 [5] ), Π½ΠΎ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ· ΠΏΡ€Π°Π²ΠΈΠ»Π° Π² силу слоТности ΠΈ Π΄ΠΎΡ€ΠΎΠ³ΠΎΠ²ΠΈΠ·Π½Ρ‹. Вранслятор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹ΠΉ ΠΈ исполняСмый нСпосрСдствСнно процСссором, называСтся компилятором. [6]

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

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

Π’ случаС, Ссли исходный язык являСтся языком ассСмблСра (Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ языком, Π±Π»ΠΈΠ·ΠΊΠΈΠΌ ΠΊ ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎΠΌΡƒ языку), Ρ‚ΠΎ компилятор Ρ‚Π°ΠΊΠΎΠ³ΠΎ языка называСтся ассСмблСром.

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ β€” ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° исполняСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π²ΠΎΠΎΠ±Ρ‰Π΅ Π±Π΅Π· трансляции. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΌΠ°ΡˆΠΈΠ½Ρƒ, Ρ†ΠΈΠΊΠ» Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ-исполнСния ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ Π½Π° языках высокого уровня, Π° Π½Π΅ с ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ. Π’Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ создаёт Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΡƒΡŽ язык. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ называСтся чистой ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ. [6] Чистая интСрпрСтация примСняСтся ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ для языков с простой структурой (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΠŸΠ› ΠΈΠ»ΠΈ Лисп). Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² скриптах Π² UNIX ΠΈΠ»ΠΈ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… (.bat) Π² MS-DOS Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ чистой ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ.

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

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ компромиссныС ΠΌΠ΅ΠΆΠ΄Ρƒ компиляциСй ΠΈ чистой ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ языков программирования, ΠΊΠΎΠ³Π΄Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΏΠ΅Ρ€Π΅Π΄ исполнСниСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ транслируСт Π΅Ρ‘ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ язык (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ p-ΠΊΠΎΠ΄), Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ для ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎΠ± ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π΅ со встроСнным транслятором). Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ называСтся смСшанной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. [6] ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ смСшанной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ языка ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Perl. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ сочСтаСт ΠΊΠ°ΠΊ достоинства компилятора ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° (бо́льшая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ исполнСния ΠΈ удобство использования), Ρ‚Π°ΠΊ ΠΈ нСдостатки (для трансляции ΠΈ хранСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΌ языкС Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ рСсурсы; для исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Ρ†Π΅Π»Π΅Π²ΠΎΠΉ машинС Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ прСдставлСн ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€). Π’Π°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² случаС компилятора, смСшанная рСализация Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ исполнСниСм исходный ΠΊΠΎΠ΄ Π½Π΅ содСрТал ошибок (лСксичСских, синтаксичСских ΠΈ сСмантичСских).

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

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

БмСшСниС понятий трансляции ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ

Врансляция ΠΈ интСрпрСтация β€” Ρ€Π°Π·Π½Ρ‹Π΅ процСссы: трансляция занимаСтся ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с ΠΎΠ΄Π½ΠΎΠ³ΠΎ языка Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Π° интСрпрСтация ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° исполнСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Однако, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ†Π΅Π»ΡŒΡŽ трансляции ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ являСтся ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ, Ρ‚ΠΎ эти процСссы ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ вмСстС. НапримСр, языки программирования часто Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Β«ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅Β» ΠΈΠ»ΠΈ Β«ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅Β», Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€Π΅ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΏΡ€ΠΈ использовании языка компиляция ΠΈΠ»ΠΈ интСрпрСтация. ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ практичСски всС языки программирования Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ поколСния, Π²Ρ€ΠΎΠ΄Π΅ ассСмблСра, Π‘ΠΈ ΠΈΠ»ΠΈ ΠœΠΎΠ΄ΡƒΠ»Ρ‹-2, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ, Π° Π±ΠΎΠ»Π΅Π΅ высокоуровнСвыС языки, Π²Ρ€ΠΎΠ΄Π΅ Python ΠΈΠ»ΠΈ SQL, β€” ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ.

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

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

МоТно привСсти ряд Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… сСрий Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… машин Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ ΠΈΠ»ΠΈ сильно зависСла ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ структуры ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Π°ΠΊ, сСрия GE/Honeywell Multics ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°Π»Π°ΡΡŒ Π½Π° сСмантичСской ΠΌΠΎΠ΄Π΅Π»ΠΈ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, написанных Π½Π° языкС ΠŸΠ›/1. Π’ Burroughs (Π°Π½Π³Π».) B5500, B6700 … B7800 ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠΌ послуТила модСль ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ этапа выполнСния, написанной Π½Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΌ языкС Алгол. …

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

Π―Π·Ρ‹ΠΊ Ада ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ послуТило ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€Π° Π΅Π³ΠΎ Π² качСствС основного языка программирования для i432.

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

Вранслятор

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

Вранслятор ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ выполняСт Ρ‚Π°ΠΊΠΆΠ΅ диагностику ошибок, Ρ„ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ словари ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², Π²Ρ‹Π΄Π°Ρ‘Ρ‚ для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ тСксты ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Ρ‚. Π΄.

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

Π―Π·Ρ‹ΠΊ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ прСдставлСна входная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, называСтся исходным языком, Π° сама ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° β€” исходным ΠΊΠΎΠ΄ΠΎΠΌ. Π’Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ язык называСтся Ρ†Π΅Π»Π΅Π²Ρ‹ΠΌ языком ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

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

Π’ΠΈΠ΄Ρ‹ трансляторов

Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ЦСль трансляции β€” ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ тСкст с ΠΎΠ΄Π½ΠΎΠ³ΠΎ языка Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ понятСн адрСсату тСкста. Π’ случаС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ-трансляторов, адрСсатом являСтся тСхничСскоС устройство (процСссор) ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€.

Π―Π·Ρ‹ΠΊ процСссоров (ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄) ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π² качСствС машинного язык высокого уровня (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, iAPX-432

Π¨Π°Π±Π»ΠΎΠ½:Начало Ρ†ΠΈΡ‚Π°Ρ‚Ρ‹ МоТно привСсти ряд Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… сСрий Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… машин Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ ΠΈΠ»ΠΈ сильно зависСла ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ структуры ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Π°ΠΊ, сСрия GE/Honeywell Multics ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°Π»Π°ΡΡŒ Π½Π° сСмантичСской ΠΌΠΎΠ΄Π΅Π»ΠΈ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, написанных Π½Π° языкС ΠŸΠ›/1. Π’ Π¨Π°Π±Π»ΠΎΠ½:НС ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½ΠΎ B5500, B6700 … B7800 ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠΌ послуТила модСль ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ этапа выполнСния, написанной Π½Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΌ языкС Алгол. …

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

Π―Π·Ρ‹ΠΊ Ада ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ послуТило ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€Π° Π΅Π³ΠΎ Π² качСствС основного языка программирования для i432. Π¨Π°Π±Π»ΠΎΠ½:ΠšΠΎΠ½Π΅Ρ† Ρ†ΠΈΡ‚Π°Ρ‚Ρ‹ ), Π½ΠΎ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ· ΠΏΡ€Π°Π²ΠΈΠ»Π° Π² силу слоТности ΠΈ Π΄ΠΎΡ€ΠΎΠ³ΠΎΠ²ΠΈΠ·Π½Ρ‹. Вранслятор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹ΠΉ ΠΈ исполняСмый нСпосрСдствСнно процСссором, называСтся компилятором.

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

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

Π’ случаС, Ссли исходный язык являСтся языком ассСмблСра (Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ языком, Π±Π»ΠΈΠ·ΠΊΠΈΠΌ ΠΊ ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎΠΌΡƒ языку), Ρ‚ΠΎ компилятор Ρ‚Π°ΠΊΠΎΠ³ΠΎ языка называСтся ассСмблСром.

ΠŸΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ β€” ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° исполняСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π²ΠΎΠΎΠ±Ρ‰Π΅ Π±Π΅Π· трансляции. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΌΠ°ΡˆΠΈΠ½Ρƒ, Ρ†ΠΈΠΊΠ» Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ-исполнСния ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ Π½Π° языках высокого уровня, Π° Π½Π΅ с ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ. Π’Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ создаёт Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΡƒΡŽ язык. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ называСтся чистой ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ. Чистая интСрпрСтация примСняСтся ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ для языков с простой структурой (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΠŸΠ› ΠΈΠ»ΠΈ Лисп). Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² скриптах Π² UNIX ΠΈΠ»ΠΈ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… (.bat) Π² MS-DOS Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ чистой ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ.

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

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ компромиссныС ΠΌΠ΅ΠΆΠ΄Ρƒ компиляциСй ΠΈ чистой ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ языков программирования, ΠΊΠΎΠ³Π΄Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΏΠ΅Ρ€Π΅Π΄ исполнСниСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ транслируСт Π΅Ρ‘ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ язык (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ p-ΠΊΠΎΠ΄), Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ для ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎΠ± ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π΅ со встроСнным транслятором). Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ называСтся смСшанной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ смСшанной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ языка ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Perl. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ сочСтаСт ΠΊΠ°ΠΊ достоинства компилятора ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° (бо́льшая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ исполнСния ΠΈ удобство использования), Ρ‚Π°ΠΊ ΠΈ нСдостатки (для трансляции ΠΈ хранСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΌ языкС Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ рСсурсы; для исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Ρ†Π΅Π»Π΅Π²ΠΎΠΉ машинС Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ прСдставлСн ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€). Π’Π°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² случаС компилятора, смСшанная рСализация Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ исполнСниСм исходный ΠΊΠΎΠ΄ Π½Π΅ содСрТал ошибок (лСксичСских, синтаксичСских ΠΈ сСмантичСских).

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

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

БмСшСниС понятий трансляции ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ

Врансляция ΠΈ интСрпрСтация β€” Ρ€Π°Π·Π½Ρ‹Π΅ процСссы: трансляция занимаСтся ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с ΠΎΠ΄Π½ΠΎΠ³ΠΎ языка Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Π° интСрпрСтация ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° исполнСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Однако, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ†Π΅Π»ΡŒΡŽ трансляции ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ являСтся ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ, Ρ‚ΠΎ эти процСссы ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ вмСстС. НапримСр, языки программирования часто Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Β«ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅Β» ΠΈΠ»ΠΈ Β«ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅Β», Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€Π΅ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΏΡ€ΠΈ использовании языка компиляция ΠΈΠ»ΠΈ интСрпрСтация. ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ практичСски всС языки программирования Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ поколСния, Π²Ρ€ΠΎΠ΄Π΅ ассСмблСра, Π‘ΠΈ ΠΈΠ»ΠΈ ΠœΠΎΠ΄ΡƒΠ»Ρ‹-2, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ, Π° Π±ΠΎΠ»Π΅Π΅ высокоуровнСвыС языки, Π²Ρ€ΠΎΠ΄Π΅ Python ΠΈΠ»ΠΈ SQL, β€” ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ.

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

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

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

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ трансляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

Вранслятор – это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ Π²Ρ…ΠΎΠ΄Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° исходном (Π²Ρ…ΠΎΠ΄Π½ΠΎΠΌ) языкС Π² ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΡƒΡŽ Π΅ΠΉ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ (Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΌ) языкС.

Π’ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ транслятора, ΠΊΠ°ΠΊ ΠΈ Π² Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅, участвуСт Ρ‚Ρ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, сам транслятор – ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Он Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав БПО, прСдставляСт собой Π½Π°Π±ΠΎΡ€ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ выполняСтся ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ОБ.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, исходными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ для транслятора являСтся тСкст Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, это Ρ„Π°ΠΉΠ», содСрТащий тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠΉ синтаксичСским ΠΈ сСмантичСским трСбованиям Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ языка.

Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ транслятора являСтся тСкст Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, которая строится ΠΏΠΎ синтаксичСским ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΌ языкС транслятора.

Π’Π°ΠΆΠ½Ρ‹ΠΌ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ транслятора являСтся ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Π²Ρ…ΠΎΠ΄Π΅ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅. ΠΠ°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ этого трСбования Π΄Π΅Π»Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ транслятора бСсполСзной.

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ транслятор выступаСт ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊ: ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ прСдлоТСния Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ языка Π² эквивалСнтныС ΠΈΠΌ прСдлоТСния Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ языка. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, само слово «транслятор» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΒ».

ΠšΡ€ΠΎΠΌΠ΅ понятия «транслятор» ΡˆΠΈΡ€ΠΎΠΊΠΎ примСняСтся Π±Π»ΠΈΠ·ΠΊΠΎΠ΅ понятиС «компилятор».

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ – это транслятор, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΡƒΡŽ Π΅ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° языкС ассСмблСра. ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ компилятора ΠΎΡ‚ транслятора состоит Π² Ρ‚ΠΎΠΌ, Π΅Π³ΠΎ входная (Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ) ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ написана Π½Π° языкС ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ»ΠΈ Π½Π° ассСмблСрС. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ транслятора ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ написан Π½Π° любом языкС.

Всякий компилятор являСтся транслятором, Π½ΠΎ Π½Π΅ всякий транслятор являСтся компилятором.

Π‘Π»ΠΎΠ²ΠΎ «компилятор» соотвСтствуСт английскому Β«ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚Π΅Π»ΡŒΒ», Β«ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΒ». Выданная компилятором ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ нСпосрСдствСнно Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ привязана ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ области памяти с ΠΊΠΎΠ΄Π°ΠΌΠΈ ΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ – самый распространСнный Π²ΠΈΠ΄ трансляторов. Если трансляторы ΠΈ компиляторы Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΠΏΠΎΡ…ΠΎΠΆΠΈ, Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΎΡ‚ Π½ΠΈΡ… понятиС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°.

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ – это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая воспринимаСт Π²Ρ…ΠΎΠ΄Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° исходном языкС ΠΈ выполняСт Π΅Π΅.

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

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

На этапС синтСза ΠΈΠ· Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ прСдставлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², получаСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°.

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ транслятор ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π²Π° способа трансляции ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ транслятор ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π²Π° способа трансляции ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ транслятор ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π²Π° способа трансляции ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ транслятор ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π²Π° способа трансляции ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ транслятор ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π²Π° способа трансляции ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚

Рис.3.2. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

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

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ‚Π΅ΠΎΡ€ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… языков выполняСт Π΄Π²Π΅ основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

1) ΠΎΠ½ являСтся распознаватСлСм для языка исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ символов Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ языка, провСряСт Π΅Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ языку ΠΈ выявляСт ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ эта Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° построСна;

2) ΠΎΠ½ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. На Π²Ρ‹Ρ…ΠΎΠ΄Π΅ создаСтся Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ языка ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ. РаспознаватСлСм сгСнСрированной Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ систСма.

ΠšΡ€Π°Ρ‚ΠΊΠΎ прСдставим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ основных Ρ„Π°Π· компиляции:

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

БинтаксичСский Ρ€Π°Π·Π±ΠΎΡ€ βˆ’ это основная Ρ‡Π°ΡΡ‚ΡŒ компилятора Π½Π° этапС Π°Π½Π°Π»ΠΈΠ·Π°. Π—Π΄Π΅ΡΡŒ Π² тСкстС исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ синтаксичСскиС конструкции. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, провСряСтся синтаксичСская ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

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

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° βˆ’ Π½Π° этой Ρ„Π°Π·Π΅ компилятор выполняСт ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ дСйствия, нСпосрСдствСнно связанныС с синтСзом тСкста Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: идСнтификация элСмСнтов языка, распрСдСлСниС памяти ΠΈ Ρ‚.ΠΏ. Π­Ρ‚Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π΅Ρ‰Ρ‘ Π½Π΅ Π²Π΅Π΄Ρ‘Ρ‚ ΠΊ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ΠΈΡŽ тСкста Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΌ языкС.

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

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

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

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

ΠžΠ΄Π½ΠΎΠΏΡ€ΠΎΡ…ΠΎΠ΄Π½Ρ‹Π΅ компиляторы βˆ’ Ρ€Π΅Π΄ΠΊΠΎΡΡ‚ΡŒ, ΠΎΠ½ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΡ‡Π΅Π½ΡŒ простых языков. Π Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ компиляторы Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΡ‚ Π΄Π²ΡƒΡ… Π΄ΠΎ пяти ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΎΠ² ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΡ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ. НапримСр, Ρ‚Ρ€Π΅Ρ…ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π½Ρ‹ΠΉ компилятор Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ:

βˆ’ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ βˆ’ лСксичСский Π°Π½Π°Π»ΠΈΠ·;

βˆ’ Π²Ρ‚ΠΎΡ€ΠΎΠΉ βˆ’ синтаксичСский Ρ€Π°Π·Π±ΠΎΡ€ ΠΈ сСмантичСский Π°Π½Π°Π»ΠΈΠ·;

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

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

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