1.7. ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ организация ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

    Π‘Π°ΠΌΡ‹ΠΉ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ касаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ достаточно Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π­Ρ‚ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ нСзависимыС части (ΠΌΠΎΠ΄ΡƒΠ»ΠΈ), ΠΈΡ… нСзависимоС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ трансляция.

    Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ

    Π›ΡŽΠ±Π°Ρ слоТная систСма Π½Π΅ обходится Π±Π΅Π· ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ, Π±Π΅Π· Π½Π΅Π΅ большая систСма прСвращаСтся Π² Π½Π΅Ρ‡Ρ‚ΠΎ Π°ΠΌΠΎΡ€Ρ„Π½ΠΎΠ΅, Π½Π΅ΠΎΠ±ΠΎΠ·Ρ€ΠΈΠΌΠΎΠ΅ ΠΈ слабо управляСмоС.

    ЛогичСская иСрархия ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ логичСских Π΅Π΄ΠΈΠ½ΠΈΡ† ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, классы, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. ЀизичСская иСрархия касаСтся физичСских Π΅Π΄ΠΈΠ½ΠΈΡ†, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ разбиваСтся тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: Ρ„Π°ΠΉΠ» (ΠΌΠΎΠ΄ΡƒΠ»ΡŒ), ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. ЕстСствСнно, Ρ‡Ρ‚ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ сущСствуСт взаимосвязь, Π½ΠΎ Π½Π΅ ТСсткая, синтаксичСская, Π° тСхнологичСская, соблюдаСмая программистом. Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… Π΅Π΄ΠΈΠ½ΠΈΡ† ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρ€ΠΈ уровня:

    • элСмСнтом самого Π½ΠΈΠΆΠ½Π΅Π³ΠΎ уровня являСтся функция (Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ – ΠΌΠ΅Ρ‚ΠΎΠ΄ класса). Π­Ρ‚ΠΎ автономная синтаксичСская Π΅Π΄ΠΈΠ½ΠΈΡ†Π° языка. Π’ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ структурного программирования (см. 3.5) ΠΏΠΎΠ΄ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ это: прСдставлСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π²ΠΈΠ΄Π΅ систСмы Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ;

    • нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ‰Π΅ΠΌ описаниСм ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΈΠΌΠΈ структур Π΄Π°Π½Π½Ρ‹Ρ…, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (эквивалСнт Π² ООП - класс). ВсС это – элСмСнты логичСской ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ. Π’ физичСском прСдставлСнии ΠΈΠΌ соотвСтствуСт ΠΌΠΎΠ΄ΡƒΠ»ΡŒ (Π² ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ…, Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… систСмах) ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ» исходного тСкста. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ программирования Π² Ρ‚ΠΎΠΌ ΠΈ состоит, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ, Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ частично ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. Но для этого ΠΈΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ описания интСрфСйсов взаимодСйствия (Π² Π‘ΠΈ – Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹);

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

    ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ созданиС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° Π‘ΠΈ Π² классичСской срСдС программирования рассматриваСтся Π² 5.4, Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ – Π² 11.1. Π§Ρ‚ΠΎ ΠΆΠ΅ касаСтся Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ‚ΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ систСм программирования оставлСна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡ… Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠΉ трансляции ΠΈ выполнСния Π²Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

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

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

    ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ - ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ Π½ΠΈΠΌΠΈ) с Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ языка Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ языкС для всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Ρ†Π΅Π»ΠΎΠΌ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ шага.

    Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡ - Π°Π½Π°Π»ΠΈΠ· ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° Π²Ρ…ΠΎΠ΄Π½ΠΎΠΌ языкС с ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ (ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ).

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

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

    • для выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанной Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΌ языкС послС Π΅Π΅ компиляции Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½ΠΎ ΡƒΠΆΠ΅ Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΌ языкС компилятора;

    • процСссор ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ любого ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° (Π° Π² ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌ смыслС ΠΈ вся программная срСда, создаваСмая ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой, являСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ машинного ΠΊΠΎΠ΄Π°);

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

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

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

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

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

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

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

    • программист ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°;

    • программист ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ размСрности ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² памяти;

    • ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π±Π΅Π· ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ срСды (ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ систСмы языка, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы), Ρ‚.Π΅. Π½Π° Β«Π³ΠΎΠ»ΠΎΠΉΒ» (standalone) машинС.

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

    Π§Ρ‚ΠΎ ΠΆΠ΅ касаСтся Π‘ΠΈ++, Ρ‚ΠΎ Ρ‚Π°ΠΌ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ частично Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‚ΡΡ, хотя ΠΎΠ½ Ρ‚ΠΎΠΆΠ΅ являСтся «чистым» компилятором, Π½ΠΎ Π½Π΅ обСспСчиваСт чистоту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

    Π€Π°Π·Ρ‹ трансляции ΠΈ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

    ВСхнология ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для языков ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ° (ΠΊ ΠΊΠ°ΠΊΠΎΠ²Ρ‹ΠΌ относится Π‘ΠΈ/Π‘ΠΈ++) ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ Π² Π½Π°Ρ‡Π°Π»Π΅ 60-Ρ… Π³ΠΎΠ΄ΠΎΠ² ΠΈ с Ρ‚Π΅Ρ… ΠΏΠΎΡ€ Π½Π΅ ΠΏΡ€Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Π»Π° сущСствСнных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π—Π°Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ влияниС Π½Π° способы использования стандартных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

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

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

    • Ρ„Π°ΠΉΠ»Ρ‹ исходного тСкста (с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ - cpp), содСрТащиС опрСдСлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²;

    • Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ (с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ - h), содСрТащиС объявлСния для ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² исходного тСкста;

    • ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ (с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ – obj), ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ нСзависимой трансляции Ρ„Π°ΠΉΠ»ΠΎΠ² исходного тСкста.

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

    рис. 17.1. ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° «классичСском» Π‘ΠΈ
    рис. 17.1. ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° «классичСском» Π‘ΠΈ

    ΠŸΡ€Π΅ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€

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

    C
    #define ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ строка_тСкста

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

    C
    #define SIZE 100
    
    int A[SIZE];
    
    for (i = 0; i < SIZE; i++) {...}

    Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ вмСсто ΠΈΠΌΠ΅Π½ΠΈ SIZE Π² тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ подставлСна строка, содСрТащая константу 100. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли нас Π½Π΅ устраиваСт Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива, Π½Π°ΠΌ достаточно ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ define ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΎΡ‚Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

    C
    #define ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€(ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹) строка*с*ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ

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

    C
    #define FOR(i, n) for(i = 0; i < n; i++)
    
    FOR(k, 20) A[k] = 0; // for(k = 0; k < 20; k++) A[k] = 0;
    
    FOR(j, m+2) {...}    // for(j = 0; j < m+2; j++) {...}

    Π’ Ρ‚Π°ΠΊΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° define прСдставляСт собой ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, Π° Π·Π°ΠΌΠ΅Π½Π° Π² тСкстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Π½Π° строку -макроподстановку.

    C
    #include <имя_Ρ„Π°ΠΉΠ»Π°>
    
    #include "имя_Ρ„Π°ΠΉΠ»Π°"

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

    C
    #include <stdio.h>

    Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ тСкст Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, содСрТащСго объявлСния Π²Π½Π΅ΡˆΠ½ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ стандартного Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°.

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

    C
    #ifndef AA // Код Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ AA
    
    #define AA 0 // ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ прСпроцСссора
    
    … // Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄
    
    #endif

    АналогичныС срСдства Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования носят Π½Π°Π·Π²Π°Π½ΠΈΠ΅ макропроцСссор, макросрСдства.

    Врансляция ΠΈ Π΅Π΅ Ρ„Π°Π·Ρ‹

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

    Π§Ρ‚ΠΎ касаСтся Π°Π½Π°Π»ΠΈΠ·Π°, Ρ‚ΠΎ ΠΎΠ½ происходит Π² Ρ‚Ρ€ΠΈ этапа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Ρ€Π΅ΠΌ основным ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌ любого языка программирования.

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

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

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

    Π€Π°Π·Π° синтСза зависит ΠΎΡ‚ способа трансляции. Π’ компиляторах ΠΎΠ½ состоит Π² Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°, Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°Ρ… – Π² нСпосрСдствСнном исполнСнии (ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ) ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ прСдставлСния.

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

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

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

    • ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ Π² своСй Ρ€Π°Π±ΠΎΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ языка (Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ), ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ пСрСводится Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ (Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅) прСдставлСниС;

    • Ссли ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ языка допускаСт внСшний доступ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Ρ‚ΠΎ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ создаСтся Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π°, содСрТащая Π΅Π³ΠΎ имя ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ адрСс Π² пространствС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ модуля;

    • ΠΏΡ€ΠΈ трансляции обращСния ΠΊ Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ языка объявлСниС, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΈΠ· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° позволяСт ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ для обращСния ΠΊ Π½Π΅ΠΌΡƒ. Но всС Ρ€Π°Π²Π½ΠΎ нСизвСстным остаСтся Π΅Π³ΠΎ адрСс. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ вмСсто адрСса транслятор оставляСт внСшнюю ссылку, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ исходноС (символичСскоС) имя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

    Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ - это Ρ„Π°ΠΉΠ» (Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»), содСрТащий Π½Π°Π±ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ собствСнный Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‚ΡΡ ΠΈΠ· Π½Π΅Π΅ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π² Π½ΠΈΡ… Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Ρ… Π²Π½Π΅ΡˆΠ½ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² процСссС ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

    Компоновка (Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ связСй) - это процСсс сборки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя:

    • объСдинСниС адрСсных пространств ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ (ΠΈ ΠΈΡ… содСрТимого – Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ прСдставлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹) Π² Π΅Π΄ΠΈΠ½ΠΎΠ΅ адрСсноС пространство ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° (ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ°);

    • «соСдинСниС» Π²Π½Π΅ΡˆΠ½ΠΈΡ… ссылок ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠΌ Ρ‚ΠΎΡ‡Π΅ΠΊ Π²Ρ…ΠΎΠ΄Π° (Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ связСй);

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

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

    ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ связывания. БтатичСскоС ΠΈ динамичСскоС связываниС

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

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

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

    • ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ языка;

    • ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ компилятора;

    • Π²ΠΎ врСмя трансляции;

    • ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ΅ (связывании);

    • Π²ΠΎ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹;

    • Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² Ρ‚ΠΎΠΌ числС:

    • ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ (ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ);

    • Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

    Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рассмотрим ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ пСрСчислим Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ связывания Π΅Π³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… свойств с элСмСнтами Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°:

    C
    int a, b; … a+b …
    1. Π’ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… int - ΠΊΠ°ΠΊ способ опрСдСлСния Ρ†Π΅Π»ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² машинном словС стандартной Π΄Π»ΠΈΠ½Ρ‹ (прСдставлСниС Ρ†Π΅Π»ΠΎΠ³ΠΎ со Π·Π½Π°ΠΊΠΎΠΌ, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄), связываСтся с Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠΎΠΉ прСдставлСния Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ языка. Π―Π·Ρ‹ΠΊ Π‘ΠΈ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π΅Π½ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π½Π΅ΠΌ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ прСдставлСния Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅.

    2. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π°Ρ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ int опрСдСляСтся ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ компилятора.

    3. Имя a ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π² конструкции Π²ΠΈΠ΄Π° #define a 0x11FF. Π’ этом случаС имя (псСвдо-пСрСмСнная) связываСтся со своим Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ„Π°Π·Π΅ трансляции - Π² прСпроцСссорС.

    4. Если пСрСмСнная опрСдСляСтся ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ способом Π² Π²ΠΈΠ΄Π΅ int a; Ρ‚ΠΎ связываниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π΅ΠΉ Ρ‚ΠΈΠΏΠΎΠΌ происходит Π²ΠΎ врСмя трансляции (Π½Π° Ρ„Π°Π·Π΅ сСмантичСского Π°Π½Π°Π»ΠΈΠ·Π°).

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

    • ΠΏΡ€ΠΈ трансляции пСрСмСнная привязываСтся ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ адрСсу Π² сСгмСнтС Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ модуля (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΅Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ фиксируСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Ρ‡Π°Π»Π° модуля)

    • ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ΅ (связывании) сСгмСнты Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ Π² ΠΎΠ±Ρ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» , ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ собой ΠΎΠ±Ρ€Π°Π· памяти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ Π½Π΅ΠΌ пСрСмСнная ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡƒΠΆΠ΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ адрСс ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

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

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

    1. Если пСрСмСнная опрСдСляСтся ΠΊΠ°ΠΊ автоматичСская (локальная Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠ°), Ρ‚ΠΎ ΠΎΠ½Π° размСщаСтся Π² стСкС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:
    • Π²ΠΎ врСмя трансляции опрСдСляСтся Π΅Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΡƒΡŽΡ‚ ΠΏΠΎΠ΄ Π½Π΅Π΅ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π² стСкС Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ…ΠΎΠ΄Π° Π² Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π±Π»ΠΎΠΊ). Π’ΠΎ Π΅ΡΡ‚ΡŒ Π² процСссС трансляции пСрСмСнная связываСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ адрСсом Π² стСкС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹;

    • связываниС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с Π΅Π΅ адрСсом Π² сСгмСнтС стСка осущСствляСтся ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ…ΠΎΠ΄Π° Π² Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π±Π»ΠΎΠΊ). Благодаря Ρ‚Π°ΠΊΠΎΠΌΡƒ способу связывания Π² рСкурсивной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сущСствуСт ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ «экзСмпляров» Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, сколько Ρ€Π°Π· функция Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ сама сСбя.

    1. Π’ΠΈΠΏ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ β€œ+” Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ a+b опрСдСляСтся ΠΏΡ€ΠΈ трансляции Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ². Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС гСнСрируСтся опСрация Ρ†Π΅Π»ΠΎΠ³ΠΎ слоТСния.

    2. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ связывания понятиС инициализация Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ связываниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… с ΠΈΡ… значСниями Π² процСссС трансляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (int a=10;) Π‘ этой Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ присваиваниС ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ связываниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

    Π‘ понятиСм связывания Π±Π»ΠΈΠ·ΠΊΠΎ ΡΠΎΡΠ΅Π΄ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ статичСский ΠΈ динамичСский. БтатичСским называСтся элСмСнт языка, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ опрСдСляСмый ΠΏΡ€ΠΈ трансляции (ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ΅). БоотвСтствСнно, динамичСский элСмСнт ΠΈΠ»ΠΈ Π΅Π³ΠΎ свойства ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Аналогичным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ статичСскоС ΠΈ динамичСскоС связываниС.

    Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ основныС свойства Π‘ΠΈ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния понятий «связываниС, статичСский, динамичСский»:

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

    • ΠΏΠΎΡ‡Ρ‚ΠΈ всС случаи динамичСского связывания Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ явно ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ (тСхнологичСской) ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ программистом.

    ИмСнно поэтому ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ динамичСского связывания ΠΌΠΎΠΆΠ½ΠΎ Β«ΠΏΠ΅Ρ€Π΅Ρ‡Π΅ΡΡ‚ΡŒ ΠΏΠΎ ΠΏΠ°Π»ΡŒΡ†Π°ΠΌΒ»:

    • динамичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ массивы (5.6);

    • динамичСскоС связываниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (9.3);

    • Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Π‘ΠΈ++ (12.4).