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

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C написан Π½Π° C

Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, Π½ΠΎ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π½Π°Π΅Ρ‚, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ компилятор ΠΊΠ°ΠΊ Π±Ρ‹Π» сдСлан? :-0

На Ρ‡Π΅ΠΌ написан компилятор си. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан компилятор си. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си

Re: ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C написан Π½Π° C

> Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, Π½ΠΎ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π½Π°Π΅Ρ‚, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ компилятор ΠΊΠ°ΠΊ Π±Ρ‹Π» сдСлан? :-0

ИздСваСшься, Ρ‡Ρ‚ΠΎ-Π»ΠΈ? На ассСмблСрС, СстСствСнно.

Re: ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C написан Π½Π° C

Π²ΠΎΡ‚ ΠΌΡ‹ сСйчас свой язык Π΄Π΅Π»Π°Π΅ΠΌ kernfach:) спСрва пишСм Π½Π° Π‘ΠΈ ΠΏΡ€ΠΎΡΡ‚Π΅Π½ΡŒΠΊΠΈΠΉ транслятор kernfach->C. А Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ компилятор Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° самом kernfach.

Re: ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C написан Π½Π° C

ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ компиляторы ассСмблСра Π±Ρ‹Π»ΠΈ написаны ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Π½ΡƒΠ»ΠΉ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ† (ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄).

На Ρ‡Π΅ΠΌ написан компилятор си. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан компилятор си. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си

Re: ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C написан Π½Π° C

dilmah, это ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, послС бутстрапа компилятор считаСтся ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎ-нСзависимым.

На Ρ‡Π΅ΠΌ написан компилятор си. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан компилятор си. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си

Re: ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C написан Π½Π° C

Π’ΠΈ Ρ‚Π°ΠΊΠΈ считаСтС, Ρ‡Ρ‚ΠΎ ассСмблСр ΠΈΠΌΠ΅Π΅Ρ‚ сущСствСнныС отличия ΠΎΡ‚ машинного языка, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ записи Ρ‚Π΅Ρ… ΠΆΠ΅ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… πŸ™‚

На Ρ‡Π΅ΠΌ написан компилятор си. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан компилятор си. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си

Re: ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C написан Π½Π° C

На Ρ‡Π΅ΠΌ написан компилятор си. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан компилятор си. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си

Re: ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C написан Π½Π° C

На Ρ‡Π΅ΠΌ написан компилятор си. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан компилятор си. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си

Re: ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C написан Π½Π° C

Или ΠΌΠΎΠΆΠ½ΠΎ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ языкС Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ компилятор для компиляции комплятора C написанного Π½Π° Π‘. И Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π½Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ возмоТности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½Ρ‹ для компиляции компилятора. Или Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π‘, ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π° Π½Π΅ΠΌ компилятор, ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСкст компилятора, ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ компилятора.

На Ρ‡Π΅ΠΌ написан компилятор си. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан компилятор си. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си

Re: ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C написан Π½Π° C

> Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ самый ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ компилятор C написанный Π½Π° C Π±Ρ‹Π» скомпилирован Ρ€ΡƒΠΊΠ°ΠΌΠΈ

Π΄Π° ΡƒΠΆ, Π² компилСростроСнии с ΠΊΡ€ΠΈΠ²Ρ‹ΠΌΠΈ Ρ€ΡƒΠΊΠ°ΠΌΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅Ρ‡Π΅Π³ΠΎ:)

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

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

На Ρ‡Π΅ΠΌ написан компилятор си. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан компилятор си. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си

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

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

ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ β€” самая ваТная Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Он ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, выполняСт ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ слСдит Π·Π° Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ всСх ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… устройств. Но процСссор ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ β€” Π½Π°Π±ΠΎΡ€ 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 опрСдСляСт процСссор ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, ΠΈ послС этого Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ подходящий компилятор.

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

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

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

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

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

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

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

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

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

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ компилятор C ΠΎΡ‚ ДСнниса Π ΠΈΡ‚Ρ‡ΠΈ β€” Π½Π° Github

На Ρ‡Π΅ΠΌ написан компилятор си. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан компилятор си. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си
ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ DEC с носитСлСм DECtape

На Github Π²Ρ‹Π»ΠΎΠΆΠΈΠ»ΠΈ last1120c ΠΈ prestruct-c β€” Ρ€Π°Π½Π½ΠΈΠ΅ вСрсии самого ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ компилятора Π‘ Π² истории. Код написан самим ДСннисом Π ΠΈΡ‚Ρ‡ΠΈ Π² 1972-1973 Π³Π³.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹ нСсколько Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ Π½Π° старой ΠΌΠ°Π³Π½ΠΈΡ‚Π½ΠΎΠΉ Π»Π΅Π½Ρ‚Π΅ DECtape, вставлСнной Π² Π°Π½Ρ‚ΠΈΠΊΠ²Π°Ρ€Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ VAX производства ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ DEC.

ДСннис Π ΠΈΡ‚Ρ‡ΠΈ извСстСн ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ языка программирования C ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы UNIX, Ρ‡Π΅ΠΌ внёс Π½Π΅ΠΎΡ†Π΅Π½ΠΈΠΌΡ‹ΠΉ Π²ΠΊΠ»Π°Π΄ Π² Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ Π½Π°ΡƒΠΊΠΈ ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ. К соТалСнию, Π²Π΅Π»ΠΈΡ‡ΠΈΠ΅ заслуг Π ΠΈΡ‚Ρ‡ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ чСловСчСством Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· нас осознало Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Π΅Π³ΠΎ смСрти Π² 2011 Π³ΠΎΠ΄Ρƒ.

Как написал сам Π°Π²Ρ‚ΠΎΡ€ Π² истории создания языка C, ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ стали 1972-1973 Π³ΠΎΠ΄Ρ‹: ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΡ‘Π» ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ бСстипового языки B ΠΊ слабо Ρ‚ΠΈΠΏΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ C, с ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π½ΠΎΠΉ стадиСй NB. Ни ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… языков Π½Π΅ сохранился Π΄ΠΎ Π½Π°ΡˆΠΈΡ… Π΄Π½Π΅ΠΉ.

Π Π°Π½Π½ΠΈΠ΅ вСрсии ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ компилятора C ΡƒΠ΄Π°Π»ΠΎΡΡŒ с Ρ‚Ρ€ΡƒΠ΄ΠΎΠΌ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² самого сСбя, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°Π½Π½ΠΈΠ΅ эмуляторы Unix для PDP-11. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, сам компилятор сСгодня ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π΅Π½ ΠΊ использованию, ΠΎΠ½ прСдставляСт ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ.

ΠšΡ€ΠΎΠΌΠ΅ ΠΊΠ°Ρ‚ΡƒΡˆΠΊΠΈ с ΠΊΠΎΠ΄ΠΎΠΌ last1120c, Π½Π°ΠΉΠ΄Π΅Π½Π° Π»Π΅Π½Ρ‚Π° с ΠΊΠΎΠ΄ΠΎΠΌ prestruct-c, это ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ копия компилятора Π΄ΠΎ внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² структуры. Π Π°Π½Π½ΠΈΠΉ компилятор Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΎ структурах, строка struct Π½ΠΈΠ³Π΄Π΅ Π½Π΅ появляСтся. Π’ вСрсии last1120c структуры появились, Π½ΠΎ синтаксис сильно отличаСтся ΠΎΡ‚ соврСмСнного C ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΡ‚ K&R I (ранняя вСрсия C). Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, это ΠΎΡ‡Π΅Π½ΡŒ Π΄Ρ€Π΅Π²Π½ΠΈΠΉ Ρ€Π΅Π»ΠΈΠΊΡ‚.

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

Как я писал компилятор Π‘++. ΠŸΠ΅Ρ€Π΅ΡΠΊΠ°Π· спустя 15 Π»Π΅Ρ‚

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

На Ρ‡Π΅ΠΌ написан компилятор си. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан компилятор си. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан компилятор си

Π‘ Ρ‡Π΅Π³ΠΎ всС Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΎΡΡŒ

Π’ Π΄Π°Π»Π΅ΠΊΠΎΠΌ 2001-ΠΎΠΌ Π³ΠΎΠ΄Ρƒ, ΠΊΠΎΠ³Π΄Π° ΠΌΠ½Π΅ ΠΊΡƒΠΏΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Duron 800mhz/128mb ram/40gb hdd, я ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ взялся Π·Π° ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ программирования. Π₯отя Π½Π΅Ρ‚, сначала мСня постоянно ΠΌΡƒΡ‡ΠΈΠ» вопрос, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Red Hat Linux, FreeBSD ΠΈΠ»ΠΈ Windows 98/Me? ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠΌ Π² этом бСсконСчном ΠΌΠΈΡ€Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ для мСня слуТил ΠΆΡƒΡ€Π½Π°Π» Π₯Π°ΠΊΠ΅Ρ€.
Π‘Ρ‚Π°Ρ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΎΠΉ, стСбный ΠΆΡƒΡ€Π½Π°Π». К слову, с Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΡΡ‚ΠΈΠ»ΡŒ излоТСния Π² этом ΠΈΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ помСнялся.

Виндузятники, Π»Π°ΠΌΠ΅Ρ€Ρ‹, трояны, элита, Π»ΠΈΠ½ΡƒΡ… β€” Π²ΠΎΡ‚ это всС сносило ΠΊΡ€Ρ‹ΡˆΡƒ. РСально Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ
поскорСй ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ этот вСсь стСк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ Ρ‚Π°ΠΌ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π»ΠΈ ΠΈ Ρ…Π°ΠΊΠ½ΡƒΡ‚ΡŒ ΠŸΠ΅Π½Ρ‚Π°Π³ΠΎΠ½ (Π±Π΅Π· ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°).
ВнутрСнняя Π±ΠΎΡ€ΡŒΠ±Π° Π·Π° Ρ‚ΠΎ, ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ Π»ΠΈ Линуксоидом ΠΈΠ»ΠΈ рубится Π² ΠΈΠ³Ρ€Ρ‹ Π½Π° Π²ΠΈΠ½Π΄Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»Π°ΡΡŒ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π² Π΄ΠΎΠΌ Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Π»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚. ΠœΠΎΠ΄Π΅ΠΌΠ½Ρ‹ΠΉ, скрСТСчащий 56kb/s ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π½ΠΈΠΌΠ°Π» Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ Π½Π° врСмя ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΈ ΠΊΠ°Ρ‡Π°Π» mp3-пСсню Π² Ρ€Π°ΠΉΠΎΠ½Π΅ получаса. ΠŸΡ€ΠΈ Ρ†Π΅Π½Π΅ порядка 0.1$/mb, ΠΎΠ΄Π½Π° пСсня вытягивала Π½Π° 40-50 Ρ†Π΅Π½Ρ‚ΠΎΠ². Π­Ρ‚ΠΎ Π΄Π½Π΅ΠΌ.

А Π²ΠΎΡ‚ Π½ΠΎΡ‡ΡŒΡŽ, Π±Ρ‹Π»ΠΈ совсСм Π΄Ρ€ΡƒΠ³ΠΈΠ΅ расцСнки. МоТно Π±Ρ‹Π»ΠΎ с 23.00 Π΄ΠΎ 6.00 Π·Π°Π»ΠΈΠΏΠ°Ρ‚ΡŒ Π²ΠΎ всС сайты Π½Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ изобраТСния Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅! ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ всС Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ· сСти Π·Π° Π½ΠΎΡ‡ΡŒ, ΠΊΠ°Ρ‡Π°Π»ΠΎΡΡŒ Π½Π° Π²ΠΈΠ½Ρ‚, ΠΈ Π΄Π°Π»Π΅Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Ρ‹Π²Π°Π»ΠΎΡΡŒ ΡƒΠΆΠ΅ Π΄Π½Π΅ΠΌ.
Π’ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ дСнь, ΠΊΠΎΠ³Π΄Π° ΠΌΠ½Π΅ Π΄ΠΎΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Π»ΠΈ ΠΈ настроили ΡΠ΅Ρ‚ΡŒ, Π°Π΄ΠΌΠΈΠ½ ΠΏΠ΅Ρ€Π΅Π΄ΠΎ ΠΌΠ½ΠΎΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Π» IE 5 ΠΈ ЯндСкс. И быстро рСтировался. Думая, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² сСти, я Π½Π°Π±Ρ€Π°Π» Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ «сайт для программистов». На Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ссылкой Π² Π²Ρ‹Π΄Π°Ρ‡Π΅ Π²Ρ‹ΠΏΠ°Π» совсСм Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠΈΠΉΡΡ rsdn.ru. И Π½Π° Π½Π΅ΠΌ я стал Π·Π°Π²ΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя, испытывая чувство нСудовлСтворСнности, ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠ°Π»ΠΎ Ρ‡Ρ‚ΠΎ понимаю. На Ρ‚ΠΎ врСмя Ρ„Π»Π°Π³ΠΌΠ°Π½ΠΎΠΌ ΠΈ самым популярным языком Π½Π° Ρ„ΠΎΡ€ΡƒΠΌΠ΅ (Π΄Π° ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅) Π±Ρ‹Π» Π‘++. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Ρ‹Π·ΠΎΠ² Π±Ρ‹Π» Π±Ρ€ΠΎΡˆΠ΅Π½, ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΎΡΡ‚Π°Π²Π°Π»ΠΎΡΡŒ, ΠΊΠ°ΠΊ Π΄ΠΎΠ³ΠΎΠ½ΡΡ‚ΡŒ Π±ΠΎΡ€ΠΎΠ΄Π°Ρ‚Ρ‹Ρ… дядСк Π² ΠΈΡ… знаниях ΠΏΠΎ Π‘++.
А Π΅Ρ‰Π΅ Π±Ρ‹Π» Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ интСрСсный сайт Π½Π° Ρ‚ΠΎ врСмя β€” firststeps.ru. Π― Π΄ΠΎ сих ΠΏΠΎΡ€ ΡΡ‡ΠΈΡ‚Π°ΡŽ ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ΄Π°Ρ‡ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌ. МалСнькими порциями (шагами), с нСбольшими ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ всС ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΎΡΡŒ!

Но вСрнСмся ΠΊ Ρ‚Π΅ΠΌΠ΅ поста. Осилив ΠšΠ½ΡƒΡ‚Π°, Π½Π°Π΄ΠΎ Π±Ρ‹Π»ΠΎ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ дальшС. ΠŸΠΎΠΏΡƒΡ‚Π½ΠΎ я сходил Π½Π° курсы Turbo Pascal, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π» ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½Π° ΠΈ Π ΠΈΡ‚Ρ‡ΠΈ, Π° Π·Π° Π½ΠΈΠΌΠΈ Π‘++ Π·Π° 21 дСнь. Из Π‘ ΠΈ Π‘++, ΠΌΠ½Π΅ Π±Ρ‹Π»ΠΎ Π½Π΅ всС понятно, я просто Π±Ρ€Π°Π» ΠΈ пСрСписывал тСксты ΠΈΠ· ΠΊΠ½ΠΈΠ³. Π—Π°Π³ΡƒΠ³Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π±Ρ‹Π»ΠΎ Π½Π΅ Ρƒ ΠΊΠΎΠ³ΠΎ, Π½ΠΎ Π·Π°Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π±Ρ‹Π»ΠΎ Π²Π°Π³ΠΎΠ½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡˆΠΊΠΎΠ»Ρƒ я забросил ΠΈ ΠΏΠ΅Ρ€Π΅ΡˆΠ΅Π» Π² Π²Π΅Ρ‡Π΅Ρ€Π½ΡŽΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ практичСски Π½Π΅ Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ, ΠΈΠ»ΠΈ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Π½Π° 3-4 ΡƒΡ€ΠΎΠΊΠ° Π² нСдСлю.
Π’ ΠΈΡ‚ΠΎΠ³Π΅ с ΡƒΡ‚Ρ€Π° Π΄ΠΎ Π½ΠΎΡ‡ΠΈ, я Ρ„Π°Π½Π°Ρ‚ΠΈΡ‡Π½ΠΎ развивался, познавая всС Π½ΠΎΠ²Ρ‹Π΅ ΠΈ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚Π΅ΠΌΡ‹. Мог Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€, ΠΌΠΎΠ³ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ простоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° WinApi. На Delphi 6 Ρ‚ΠΎΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΎΡΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π°ΡˆΠ»Π΅ΠΏΠ°Ρ‚ΡŒ. Π’ ΠΈΡ‚ΠΎΠ³Π΅, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² Π΄ΠΈΠΏΠ»ΠΎΠΌ ΠΎ срСднСм ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ, я ΡƒΠΆΠ΅ Π±Ρ‹Π» ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ 3-4 курса унивСрситСта, ΠΈ разумССтся Π½Π° ΠΊΠ°ΠΊΡƒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ΄Ρ‚ΠΈ учится вопроса Π½Π΅ стояло.

ΠŸΠΎΡΡ‚ΡƒΠΏΠΈΠ² Π½Π° ΠΊΠ°Ρ„Π΅Π΄Ρ€Ρƒ ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… систСм ΠΈ сСтСй, я ΡƒΠΆΠ΅ свободно писал Π½Π° Π‘ ΠΈ Π‘++ Π·Π°Π΄Π°Ρ‡ΠΈ любого уровня слоТности унивСрситСта. Π₯отя, зайдя Π½Π° Ρ‚ΠΎΡ‚ ΠΆΠ΅ rsdn.ru, ΠΏΠΎΠ½ΠΈΠΌΠ°Π», ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Π΅Ρ‰Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈ насколько Π±Ρ‹Π²Π°Π»Ρ‹Π΅ Ρ„ΠΎΡ€ΡƒΠΌΡ‡Π°Π½Π΅ ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π΅Π½Π½Π΅ΠΉ мСня Π² ΠΏΠ»ΡŽΡΠ°Ρ…. Π­Ρ‚ΠΎ Π·Π°Π΄Π΅Π²Π°Π»ΠΎ, Π½Π΅ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ вмСстС с Ρ‚Π΅ΠΌ ΠΆΠ³ΡƒΡ‡Π΅Π΅ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π·Π½Π°Ρ‚ΡŒ всС, ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ мСня ΠΊ ΠΊΠ½ΠΈΠ³Π΅ Β«ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈΒ» β€” А.Ахо, Π Π°Π²ΠΈ Π‘Π΅Ρ‚ΠΈ. Π’ ΠΏΡ€ΠΎΡΡ‚ΠΎΠ½Π°Ρ€ΠΎΠ΄ΡŒΠ΅ ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΎΠΉ Π”Ρ€Π°ΠΊΠΎΠ½Π°. Π’ΠΎΡ‚ Ρ‚ΡƒΡ‚ ΠΈ Π½Π°Ρ‡Π°Π»ΠΎΡΡŒ самоС интСрСсноС. ΠŸΠ΅Ρ€Π΅Π΄ этой ΠΊΠ½ΠΈΠ³ΠΎΠΉ, Π±Ρ‹Π» ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½ Π“Π΅Ρ€Π±Π΅Ρ€Ρ‚ Π¨ΠΈΠ»Π΄Ρ‚, ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Π‘++, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ раскрывал ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ Ρ‚Π΅ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅, сТатиС Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ самоС интСрСсноС β€” написаниС собствСнного парсСра.

Начав скрупулСзно ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ ΠΊΠ½ΠΈΠ³Ρƒ Π΄Ρ€Π°ΠΊΠΎΠ½Π°, двигаясь ΠΎΡ‚ лСксичСского Π°Π½Π°Π»ΠΈΠ·Π°, Π·Π°Ρ‚Π΅ΠΌ ΠΊ синтаксичСскому ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ† ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ сСмантики ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠΎ ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎ ΡΡƒΠ΄ΡŒΠ±ΠΎΠ½ΠΎΡΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свой компилятор Π‘++.
β€” А ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ ΠΈ Π½Π΅Ρ‚, спросил сСбя?
β€” А Π΄Π°Π²Π°ΠΉ, ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»Π° Ρ‚Π° Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠΎΠ·Π³Π°, которая с возрастом становится всС скСптичнСй ΠΊΠΎ всСму
Π½ΠΎΠ²ΠΎΠΌΡƒ. И Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° компилятора Π½Π°Ρ‡Π°Π»Π°ΡΡŒ.

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°

ΠœΠΎΠ΄Π΅ΠΌΠ½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠ½Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π»ΠΈ, Π² силу смСны Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ Π½Π° Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅, поэтому для ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π° Π±Ρ‹Π» скачан стандарт ISO C++ Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠΈ 1998 Π³ΠΎΠ΄Π°. Π£ΠΆΠ΅ полюбившимся ΠΈ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΌ инструмСнтом стала Visual C++ 6.0.
И ΠΏΠΎ сути Π·Π°Π΄Π°Ρ‡Π° свСлась ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ написано Π² стандартС Π‘++. ΠŸΠΎΠ΄ΡΠΏΠΎΡ€ΡŒΠ΅ΠΌ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ компилятора Π±Ρ‹Π»Π° ΠΊΠ½ΠΈΠ³Π° Π΄Ρ€Π°ΠΊΠΎΠ½Π°. А ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, Π±Ρ‹Π» парсСр-ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ Π¨ΠΈΠ»Π΄Ρ‚Π°. ВсС части ΠΏΠ°Π·Π»Π° ΡΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π°Ρ‡Π°Π»Π°ΡΡŒ.

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

ЛСксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€

БинтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€

nrcpp/Parser.cpp
Π—Π°Π΄Π°Ρ‡Π° синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° β€” ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ расстановки лСксСм, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ Π½Π° этапы лСксичСского Π°Π½Π°Π»ΠΈΠ·Π°.
Π—Π° основу синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Π±Ρ‹Π»ΠΈ взяты ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅ ΠΏΡ€ΠΎΡΡ‚Π΅Π½ΡŒΠΊΠΈΠΉ парсСр ΠΈΠ· Π¨ΠΈΠ»Π΄Ρ‚Π°, ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π΅Π½Π½Ρ‹ΠΉ Π΄ΠΎ уровня синтаксиса Π‘++, с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ пСрСполнСния стСка. Если ΠΌΡ‹ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ напишСм:

Π’ΠΎ ΠΌΠΎΠΉ рСкурсивный Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΡΡŠΠ΅ΡΡ‚ стэк, ΠΈ выдаст, Ρ‡Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ слишком слоТноС.
Π£ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ читатСля, ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ вопрос. А Π·Π°Ρ‡Π΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚ΡŒ вСлосипСд, вСдь Π±Ρ‹Π» ΠΆΠ΅ yacc ΠΈ lex. Π”Π°, Π±Ρ‹Π». Но Π½Π° Ρ‚ΠΎΠΌ этапС, хотСлся вСлосипСд с ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ Π½Π°Π΄ ΠΊΠΎΠ΄ΠΎΠΌ. РазумССтся Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ½ уступал сгСнСрированному этими ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌΠΈ ΠΊΠΎΠ΄Ρƒ. Но Π½Π΅ Π² этом Π±Ρ‹Π»Π° Ρ†Π΅Π»ΡŒ β€” тСхничСскоС ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎ. ЦСль Π±Ρ‹Π»Π° β€” ΠΏΠΎΠ½ΡΡ‚ΡŒ всС.

Π‘Π΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ°

Π—Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ соотвСствСнно Π³Π»Π°Π²Ρ‹ с 3-Π΅ΠΉ ΠΏΠΎ 14-ΡƒΡŽ стандарта ISO C++ 98. Π­Ρ‚Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ слоТная Ρ‡Π°ΡΡ‚ΡŒ, ΠΈ я ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ >90% Π‘++ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π½Π΅ Π·Π½Π°Π΅Ρ‚ всСх ΠΏΡ€Π°Π²ΠΈΠ» описанных Π² этих Ρ€Π°Π·Π΄Π΅Π»Π°Ρ…. НапримСр:
Π—Π½Π°Π»ΠΈ Π»ΠΈ Π²Ρ‹, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ Π΄Π²Π°ΠΆΠ΄Ρ‹, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π•ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ конструкции для ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ:

А это ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ-Ρ‡Π»Π΅Π½ класса X:

Π­Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡˆΠ»ΠΎ Π² Π³ΠΎΠ»ΠΎΠ²Ρƒ. Π‘Ρ‚ΠΎΠΈΡ‚ Π»ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ тСстировании ΠΊΠΎΠ΄Π° ΠΈΠ· стандарта Π² Visual C++ 6, я Π½Π΅ Ρ€Π΅Π΄ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π» Internal Compiler Error.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° сСмантики языка заняла Ρƒ мСня 1.5 Π³ΠΎΠ΄Π°, ΠΈΠ»ΠΈ ΠΏΠΎΠ»Ρ‚ΠΎΡ€Π° курса ΡƒΠ½ΠΈΠ²Π΅Ρ€Π°. Π—Π° это врСмя мСня Ρ‡ΡƒΡ‚ΡŒ Π½Π΅ Π²Ρ‹Π³Π½Π°Π»ΠΈ, ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°ΠΌ ΠΊΡ€ΠΎΠΌΠ΅ программирования, Π·Π° ΡΡ‡Π°ΡΡ‚ΡŒΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π»Π°ΡΡŒ Ρ‚Ρ€ΠΎΠΉΠΊΠ° (Π½Ρƒ, ΠΎΠΊ Ρ‡Π΅Ρ‚Π²Π΅Ρ€ΠΊΠ°), Π° компилятор Ρ‚Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ разрабатывался ΠΈ обрастал Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΠΎΠΌ.

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π°

Π§Π΅Π³ΠΎ Π½Π΅Ρ‚ Π² nrcpp?

Π—Π°Ρ‡Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ свой вСлосипСд?

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

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

Как компилятор ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ написан Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ языкС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚?

ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Π» нСсколько ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… вопросов Π½ΠΎ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ нашСл ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π°. Как компилятор Π‘ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ написан Π½Π° Π‘ΠΈ, вСдь ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сам компилятор Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. И Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ трансляция Π² ассСмблСр ΠΏΠΎ сути Ρ€Π°Π²Π½Π° компиляции? (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ассСмблСра Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄)

1 ΠΎΡ‚Π²Π΅Ρ‚ 1

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ си написан Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсии компилятора. Но ΠΊΠΎΠ³Π΄Π° Ρ‚ΠΎ Π΄Π°Π²Π½ΠΎ-Π΄Π°Π²Π½ΠΎ сущСствовал ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° компилятор си Π±Ρ‹Π» написан Π½Π° Ρ‡Π΅ΠΌ Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌ. Π― ΠΊ соТалСнию, Π½Π΅ знаю этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°.

Π‘ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ происходило. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, go Π±Ρ‹Π» Π²Π½Π°Ρ‡Π°Π»Π΅ написан Π½Π° си, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΊΠΎΠ΄ Ρ‚Π°ΠΊ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» максимально ΠΏΠΎΡ…ΠΎΠΆ Π½Π° go ΠΊΠΎΠ΄ (https://go-review.googlesource.com/c/go/+/5652).

Но ΠΊΠ°ΠΊ появился самый ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ компилятор Ρ‚ΠΎΠ³Π΄Π°? Π•ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ ΡΡ‚Π°Ρ‚ΡŒΡ https://jameshfisher.com/2018/01/11/bootstrapping-a-c-compiler/ которая описываСт, ΠΊΠ°ΠΊ поэтапно ΠΌΠΎΠΆΠ½ΠΎ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

Π’ΠΎ Π΅ΡΡ‚ΡŒ, Π²Π½Π°Ρ‡Π°Π»Π΅ всС ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Ρ€ΡƒΡ‡ΠΊΠ°ΠΌΠΈ Π² памяти, Π² Π½ΠΎΠ»ΠΈΠΊΠ°Ρ… ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ…, ΠΏΠΎΡ‚ΠΎΠΌ постСпСнно Π½Π°Ρ€Π°Ρ‰ΠΈΠ²Π°ΡŽΡ‚ΡΡ инструмСнты ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², Ρ‚Π°ΠΊΠΈΠΌΠΈ итСрациями ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΉΡ‚ΠΈ Π΄ΠΎ соврСмСнного ΠΌΠΈΡ€Π°. Π’ΠΎΡ‚ люди ΠΏΠΈΡˆΡƒΡ‚ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ си компилятор https://github.com/rdtscp/c-bootstrap

И Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ трансляция Π² ассСмблСр ΠΏΠΎ сути Ρ€Π°Π²Π½Π° компиляции

Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ компилятор ассСмблСра, Ρ‚ΠΎ Π΄Π°. ΠŸΠΎΡ‡Π΅ΠΌΡƒ «ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€»? ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ассСмблСры Π±Ρ‹Π²Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅. Π’ΠΎΡ‚ ΠΆΠ΅ FLAT assembler ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ разувСсистым синтаксисом, Ρ‡Ρ‚ΠΎ я Π±Ρ‹ побоялся Π΅Π³ΠΎ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ компилятор «ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ для Π·Π°ΠΌΠ΅Π½Ρ‹ Π½Π° Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄».

Π”Π°, процСсс, ΠΊΠΎΠ³Π΄Π° компилятор ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ сам сСбя называСтся bootstrapping. ΠΈ это Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΊ html.

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

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

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