Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ компилятор?

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

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

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ компилятор?

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ 0 ΠΈ 1? Π’ процСссор ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ элСктричСскиС сигналы. Π‘ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ сигнал обозначаСтся Ρ†ΠΈΡ„Ρ€ΠΎΠΉ 1, Π° слабый β€” 0. Набор Ρ‚Π°ΠΊΠΈΡ… Ρ†ΠΈΡ„Ρ€ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ. ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ Π΅Π΅ распознаСт ΠΈ выполняСт.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² выглядСли ΠΊΠ°ΠΊ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Π΅ Π½Π°Π±ΠΎΡ€Ρ‹ 0 ΠΈ 1. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹ пользовались Π³ΠΈΠ±ΠΊΠΈΠΌΠΈ ΠΊΠ°Ρ€Ρ‚ΠΎΠ½Π½Ρ‹ΠΌΠΈ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ β€” ΠΏΠ΅Ρ€Ρ„ΠΎΠΊΠ°Ρ€Ρ‚Π°ΠΌΠΈ. Π¦ΠΈΡ„Ρ€Ρ‹ Π½Π° ΠΏΠ΅Ρ€Ρ„ΠΎΠΊΠ°Ρ€Ρ‚Π΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Π»ΠΈΡΡŒ ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎ, Π² нСсколько строк. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ 1, программист Π΄Π΅Π»Π°Π» отвСрстиС Π² ΠΊΠ°Ρ€Ρ‚Π΅. ΠœΠ΅ΡΡ‚Π° Π±Π΅Π· отвСрстия ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π»ΠΈ 0.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ считывал ΠΏΠ΅Ρ€Ρ„ΠΎΠΊΠ°Ρ€Ρ‚Ρƒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ устройством ΠΈ выполнял Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ. Для ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ составляли сотни ΠΏΠ΅Ρ€Ρ„ΠΎΠΊΠ°Ρ€Ρ‚.

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ компилятор?

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ называСтся компиляциСй. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄. Она Π½Π΅ запускаСт Π΅Π³ΠΎ Π½Π° исполнСниС. Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠ½ β€œΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈβ€ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π±Π΅Π· запуска) транслируСтся Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Π­Ρ‚ΠΎ слоТный процСсс, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ сначала тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ разбираСтся Π½Π° части ΠΈ анализируСтся, Π° Π·Π°Ρ‚Π΅ΠΌ гСнСрируСтся ΠΊΠΎΠ΄, понятный процСссору.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ этапы компиляции Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ вычислСния ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€Π° ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°:

ПослС запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ компилятору Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Π½Π΅ΠΉ записаны. Π‘Π½Π°Ρ‡Π°Π»Π° компилятор раздСляСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° слова ΠΈ Π·Π½Π°ΠΊΠΈ β€” Ρ‚ΠΎΠΊΠ΅Π½Ρ‹, ΠΈ записываСт ΠΈΡ… Π² список. Π’Π°ΠΊΠΎΠΉ процСсс называСтся лСксичСским Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ. Π•Π³ΠΎ главная Π·Π°Π΄Π°Ρ‡Π° β€” ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ Π² спискС связаны с Ρ‚ΠΎΠΊΠ΅Π½-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° строится ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ структура β€” логичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π΄Π΅Ρ€Π΅Π²ΠΎ Ρ€Π°Π·Π±ΠΎΡ€Π°.

Π’Π°ΠΊ опСрация P = 2*(a + b) Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π° Π² логичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΈ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π΅Ρ€Π΅Π²ΠΎ снизу Π²Π²Π΅Ρ€Ρ… ΠΈ составляСт список ΠΊΠΎΠΌΠ°Π½Π΄:

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π΅Ρ‰Π΅ Ρ€Π°Π· провСряСт ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ошибки ΠΈ стараСтся ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΊΠΎΠ΄. ΠŸΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ этого этапа, компилятор ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² Π½Π°Π±ΠΎΡ€ 0 ΠΈ 1. Наборы Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ смоТСт ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ процСссор.

На Ρ‡Π΅ΠΌ написан компилятор?

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

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

КакиС Π±Ρ‹Π²Π°ΡŽΡ‚ компиляторы?

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

Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ соврСмСнныС процСссоры ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° устройством, поэтому ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ процСссора Π±ΡƒΠ΄Π΅Ρ‚ понятСн, Π° для Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π½Π΅Ρ‚. Π­Ρ‚ΠΎ касаСтся ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм: ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° Windows, Π½ΠΎ Π½Π΅ запустится Π½Π° Linux ΠΈΠ»ΠΈ MacOS. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π΅ΠΌ компилятором, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π½ΡƒΠΆΠ½Ρ‹ΠΌ процСссором ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой.

Если ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах, Ρ‚ΠΎ Π½ΡƒΠΆΠ΅Π½ кросс-компилятор β€” компилятор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. НапримСр, GNU Compiler Collection(сокращСнно GCC) ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ C++, Objective-C, Java, Π€ΠΎΡ€Ρ‚Ρ€Π°Π½, Ada, Go ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ процСссоров.

ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ программисты Π΄Π°ΠΆΠ΅ Π½Π΅ Π·Π½Π°ΡŽΡ‚ ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ компилятора Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. Они ΠΏΠΈΡˆΡƒΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ встроСн компилятор, Π° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈ Π½Π΅ ΠΎΠ΄ΠΈΠ½. Π’ этом случаС, Π²Ρ‹Π±ΠΎΡ€ компилятора Π΄Π΅Π»Π°Π΅Ρ‚ срСда, Π° Π½Π΅ программист. НапримСр, MS Visual Studio ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ компиляторы для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм Windows, Linux, Android. Выбирая Ρ‚ΠΈΠΏ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Visual Studio опрСдСляСт процСссор ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, ΠΈ послС этого Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ подходящий компилятор.

КакиС ошибки ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ компилятор?

Когда компилятор Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΎΠ½ провСряСт, соотвСтствуСт Π»ΠΈ запись ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° стандартам языка. Если Π½Π°ΠΉΠ΄Π΅Π½ΠΎ нСсоотвСтствиС, Ρ‚ΠΎ компилятор Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΎΠ± этом ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π² Π²ΠΈΠ΄Π΅ ошибки. Когда вся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Π°, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²ΠΈΠ΄ΠΈΡ‚ список ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄Π΅, ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡ… ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ. Пока программист Π½Π΅ исправит ошибки, компилятор Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ этапу β€” Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ машинного ΠΊΠΎΠ΄Π° для процСссора. Π§Π°Ρ‰Π΅ всСго компилятор ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ:

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

Π’Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ β€” ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊ ΠΌΠ΅ΠΆΠ΄Ρƒ программистом ΠΈ процСссором. Он ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, опрСдСляСт ряд ошибок Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ. Выбирая, Π³Π΄Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ для процСссоров ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π½Ρ‹ΠΌ, ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ компилятор. Π§Π΅ΠΌ Ρ‚ΠΎΡ‡Π½Π΅Π΅ компилятор ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Ρ‚Π΅ΠΌ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Π΅Π΅ ΠΈ быстрСС Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Для этого слСдуйтС простым рСкомСндациям:

ЧастыС вопросы

Π§Π΅ΠΌ компилятор отличаСтся ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°?

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

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

ΠΠ°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΠΌ. Н. Π­. Π‘Π°ΡƒΠΌΠ°Π½Π°
Bauman National Library

ΠŸΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ инструмСнты

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€

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

Π’ΠΈΠ΄Ρ‹ компиляторов

Π’ΠΈΠ΄Ρ‹ компиляции

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° компилятора

ΠŸΡ€ΠΎΡ†Π΅ΡΡ компиляции состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… этапов:

Π’ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… рСализациях компиляторов эти этапы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ ΠΈΠ»ΠΈ, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, совмСщСны Π² Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅.

ГСнСрация ΠΊΠΎΠ΄Π°

ГСнСрация машинного ΠΊΠΎΠ΄Π°

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

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

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

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

ГСнСрация Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°

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

ДинамичСская компиляция

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

ДСкомпиляция

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

РаздСльная компиляция

РаздСльная компиляция (Π°Π½Π³Π». separate compilation ) β€” трансляция частСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ объСдинСниСм ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ Π² Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

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

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

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹Π΅ Ρ„Π°ΠΊΡ‚Ρ‹

На Π·Π°Ρ€Π΅ развития ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² ΠΏΠ΅Ρ€Π²Ρ‹Π΅ компиляторы (трансляторы) Π½Π°Π·Ρ‹Π²Π°Π»ΠΈ Β«ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈΒ» [6] (Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ считался Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Π° Β«ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Β» Π±Ρ‹Π»Π° способна ΠΈΠ· чСловСчСского тСкста ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π­Π’Πœ).

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

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅)

ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ β€” ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Π½ΡΠ»ΡΡ†ΠΈΡŽ машинной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ языка Π½Π° машинно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. [3]

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

Π’ΠΈΠ΄Ρ‹ компиляторов [2]

Π’ΠΈΠ΄Ρ‹ компиляции [2]

ΠžΡΠ½ΠΎΠ²Ρ‹

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

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

Π’Π°ΠΊΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ компиляторы, пСрСводящиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с языка высокого уровня Π½Π° язык ассСмблСра.

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

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° компилятора

ΠŸΡ€ΠΎΡ†Π΅ΡΡ компиляции состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… этапов:

Π’ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… рСализациях компиляторов эти этапы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½Ρ‹ ΠΈΠ»ΠΈ совмСщСны Π² Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅.

Врансляция ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ°

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

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹Π΅ Ρ„Π°ΠΊΡ‚Ρ‹

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

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

ПолСзноС

Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ «ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅)» Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… словарях:

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ β€” ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ: Π’ ВикисловарС Π΅ΡΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡ «компиляция» ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ (Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°) (Π»Π°Ρ‚. … ВикипСдия

Условная компиляция β€” Π’ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅, прСпроцСссор это ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π°Ρ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° Π²Ρ…ΠΎΠ΄Π΅, ΠΈ Π²Ρ‹Π΄Π°ΡŽΡ‰Π°Ρ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для Π²Ρ…ΠΎΠ΄Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ компилятор. О Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ прСпроцСссора говорят, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ находятся в… … ВикипСдия

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ β€” Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ опираСтся Π½Π° Π½Π΅Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹Π΅ источники. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… источников Π½Π΅ соотвСтствуСт Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΡŽ провСряСмости прСдставлСнной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ ссылки Π½Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π·Π½Π°Ρ‡ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‚Π΅ΠΌΡ‹ ΡΡ‚Π°Ρ‚ΡŒΠΈ. Π‘Ρ‚Π°Ρ‚ΡŒΡŽ моТно… … ВикипСдия

JIT-компиляция β€” Just in time compilation (JIT, компиляция Β«Π½Π° Π»Π΅Ρ‚ΡƒΒ»), dynamic translation (динамичСская компиляция) тСхнология увСличСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… систСм, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄, ΠΏΡƒΡ‚Ρ‘ΠΌ компиляции Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄Π° Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ код… … ВикипСдия

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ языков программирования β€” Π­Ρ‚Ρƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ слСдуСт Π²ΠΈΠΊΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΎΡ„ΠΎΡ€ΠΌΠΈΡ‚Π΅ Π΅Ρ‘ согласно ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ оформлСния статСй. УсловныС обозначСния … ВикипСдия

ΠŸΠ°ΠΉΡ‚ΠΎΠ½ β€” Python Класс языка: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ, ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ, аспСктно ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π’ΠΈΠΏ исполнСния: интСрпрСтация Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄Π°, компиляция Π² MSIL, компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ Java Появился Π²: 1990 Π³ … ВикипСдия

Π“ΠžΠ‘Π’ 19781-90: ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ систСм ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅. Π’Π΅Ρ€ΠΌΠΈΠ½Ρ‹ ΠΈ опрСдСлСния β€” ВСрминология Π“ΠžΠ‘Π’ 19781 90: ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ систСм ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅. Π’Π΅Ρ€ΠΌΠΈΠ½Ρ‹ ΠΈ опрСдСлСния ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π» Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°: 9. ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Non relocatable program ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° машинном языкС, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ зависит ΠΎΡ‚ СС… … Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ-справочник Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² Π½ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎ-тСхничСской Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ

Паскаль (язык) β€” Pascal Π‘Π΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ°: ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ Π’ΠΈΠΏ исполнСния: компилятор Появился Π²: 1970 Π³. Автор(Ρ‹): Никлаус Π’ΠΈΡ€Ρ‚ Паскаль (Π°Π½Π³Π». Pascal) высокоуровнСвый язык программирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния. Один ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ извСстных языков программирования, ΡˆΠΈΡ€ΠΎΠΊΠΎβ€¦ … ВикипСдия

Паскаль (язык программирования) β€” Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ ΠΈΠ»ΠΈ Ρ€Π°Π·Π΄Π΅Π» нуТдаСтся Π² ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. Π’ ПаскалС Π½Π΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ООП ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… Π½ΠΎΠ²ΠΎΠΌΠΎΠ΄Π½Ρ‹Ρ… вСяний. ОписаниС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΡΡ‚Π°Ρ‚ΡŒΡΡ… ΠΎ соотвСт … ВикипСдия

D (язык программирования) β€” Π£ этого Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния, см. D. D Π‘Π΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ°: ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ΅Π½Π½Ρ‹ΠΉ: ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅, ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π’ΠΈΠΏ исполнСния: компилятор Появился Π²: 1999 Автор(Ρ‹) … ВикипСдия

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ компиляция Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ?

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

Π Π°Π±ΠΎΡ‡ΠΈΠΉ Ρ†ΠΈΠΊΠ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

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

Когда ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π΅ инструкции Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ процСссора, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ поэтапно выполняСт инструкции, Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. Как ΠΈΠ· выраТСния Β« a = 3; Β» ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ инструкции, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ процСссор ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ?

ΠœΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ компиляции. БущСствуСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ прилоТСния, извСстныС ΠΊΠ°ΠΊ компиляторы. Они ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ написали. Π—Π°Ρ‚Π΅ΠΌ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°ΡŽΡ‚ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ строят ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ для процСссора. Часто Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

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

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ компиляторы Π±Ρ‹Π»ΠΈ написаны нСпосрСдствСнно Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ с использованиСм ассСмблСров. Но Ρ†Π΅Π»ΡŒ компилятора ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Π°: пСрСвСсти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² исполняСмый ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ процСссора.

НС всС языки программирования ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ это Π² своСй ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ. НапримСр, Java прСдназначался для запуска Π² Β« ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ Β» срСдС, Π° Python всСгда Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ компиляции являСтся интСрпрСтация. Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ компиляторы ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹? Основная Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ компилятором ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π±Π΅Ρ€Π΅Ρ‚ всю ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π΅Π΅ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ процСссор.

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ β€” это исполняСмый Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ поэтапно Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚, сразу выполняя Π΅Π΅ инструкции.

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ выполняСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ поэтапно ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ собствСнного исполняСмого Ρ„Π°ΠΉΠ»Π°. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π΅ пСрСдаСтся процСссору, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ сам являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, построСнным Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ врСмя.

Π­Ρ‚ΠΎ Π»ΠΎΠΌΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ Π²Ρ‹ΡˆΠ΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ новая Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

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

ΠŸΡ€ΠΈΡ€ΠΎΠ΄Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Они просто Π±Π΅Ρ€ΡƒΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство строк ΠΊΠΎΠ΄Π° Π·Π° Ρ€Π°Π· ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π΅Π³ΠΎ.

НСкоторыС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ, Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ смысл Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°. Π­Ρ‚ΠΎ своСго Ρ€ΠΎΠ΄Π° псСвдо ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€.

Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ быстрСС обрабатываСтся, ΠΈ Π΅Π³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ для исполнитСля ( части ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, которая исполняСт ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ считываСт Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄, Π° Π½Π΅ ΠΊΠΎΠ΄ источника.

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

Π—Π° ΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ²

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

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

ОсновноС прСимущСство ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ β€” Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ. МоТно Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° любом процСссорС ΠΈΠ»ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π±Ρ‹Π» скомпилирован. Написанный ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ. Π’ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ смыслС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ, Ρ‡Π΅ΠΌ компиляторы.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΠΏΡ€ΠΎΡ‰Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ элСмСнты, ΠΊΠ°ΠΊ сборщики мусора, Π° Π½Π΅ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ язык.

Π”Ρ€ΡƒΠ³ΠΈΠΌ прСимущСством ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΡ… ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ для Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ.

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

Π‘Π°ΠΌΡ‹ΠΌ большим нСдостатком ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² являСтся ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ. Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ выполняСтся Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠ², Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΉ, Ρ‡Ρ‚ΠΎ это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ замСдлСнию Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… real-time ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΈΠ³Ρ€Ρ‹ с высоким Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ симуляциСй. НСкоторыС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ содСрТат ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ just-in-time компиляторами ( JIT ). Они ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π΅ исполнСниСм. Π­Ρ‚ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, вынСсСнныС Π·Π° Ρ€Π°ΠΌΠΊΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°. Но ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ процСссоры становятся всС Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹ΠΌΠΈ, данная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° становится ΠΌΠ΅Π½Π΅Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ.

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

Для мСня Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния, скомпилировано Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, Ссли ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ эффСктивно.

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚Π΅ ΠΌΠ½Π΅, Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Π»ΠΈ: ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ? Бпасибо Π·Π° ΡƒΠ΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ врСмя!

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ваши ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΏΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ‚Π΅ΠΌΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ. ΠœΡ‹ ΠΊΡ€Π°ΠΉΠ½Π΅ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π½Ρ‹ Π²Π°ΠΌ Π·Π° ваши ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Π΄ΠΈΠ·Π»Π°ΠΉΠΊΠΈ, подписки, ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠΈ, Π»Π°ΠΉΠΊΠΈ!

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, оставляйтС свои ΠΎΡ‚Π·Ρ‹Π²Ρ‹ ΠΏΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ‚Π΅ΠΌΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ. Π—Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Π΄ΠΈΠ·Π»Π°ΠΉΠΊΠΈ, подписки, ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠΈ, Π»Π°ΠΉΠΊΠΈ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ Π²Π°ΠΌ спасибо!

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

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

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