Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим компилятор!Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 58

Автор Π”ΠΆΠ΅ΠΊ ΠšΡ€Π΅Π½ΡˆΠΎΡƒ

procedure Factor;

begin

LoadConstant(GetNumber);

end;

end.

{–}

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, этот ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ LoadConstant, которая фактичСски выполняСт Π²Ρ‹Π²ΠΎΠ΄ ассСмблСрного ΠΊΠΎΠ΄Π°. ΠœΠΎΠ΄ΡƒΠ»ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ CodeGen. Π­Ρ‚ΠΎΡ‚ шаг прСдставляСт послСднСС Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² нашСй Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ с Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… Π³Π»Π°Π²: ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ машино-зависимого ΠΊΠΎΠ΄Π° Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. Если я Π΄ΠΎΠΉΠ΄Ρƒ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°, Π²Π½Π΅ CodeGen Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ строчки ΠΊΠΎΠ΄Π°, которая ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»Π° Π±Ρ‹ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π°Ρ†Π΅Π»Π΅Π½Ρ‹ Π½Π° процСссор 68000. И это Ρ‚ΠΎ мСсто, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ моя Ρ†Π΅Π»ΡŒ достиТима.

Для Ρ‚Π΅Ρ… ΠΈΠ· вас, ΠΊΡ‚ΠΎ ΠΆΠ΅Π»Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ я использовал Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ 80x86 (ΠΈΠ»ΠΈ Π»ΡŽΠ±ΡƒΡŽ Π΄Ρ€ΡƒΠ³ΡƒΡŽ) вмСсто 68000, Π²ΠΎΡ‚ ΠΌΠΎΠΉ ΠΎΡ‚Π²Π΅Ρ‚: просто Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ CodeGen Π½Π° подходящий для вашСго ЦПУ.

Пока наш Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ. Π’ΠΎΡ‚ этот ΠΌΠΎΠ΄ΡƒΠ»ΡŒ:

{–}

unit CodeGen;

{–}

interface

uses Output;

procedure LoadConstant(n: string);

{–}

implementation

{–}

{ Load the Primary Register with a Constant }

procedure LoadConstant(n: string);

begin

EmitLn('MOVE #' + n + ',D0' );

end;

end.

{–}

Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ этот ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ:

{–}

program Main;

uses WinCRT, Input, Output, Errors, Scanner, Parser;

begin

Factor;

end.

{–}

Π’ΠΎΡ‚ ΠΎΠ½, сгСнСрированный ΠΊΠΎΠ΄, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΈ надСялись.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, я надСюсь, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ прСимущСства ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ нашСго Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π΄Π»ΠΈΠ½ΠΎΠΉ всСго ΠΏΡΡ‚ΡŒ строк. Π­Ρ‚ΠΎ всС, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ссли ΠΌΡ‹ Π½Π΅ Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ большС. И ΠΏΠΎΠΊΠ° всС эти ΠΌΠΎΠ΄ΡƒΠ»ΠΈ сидят здСсь Ρ‚Π΅Ρ€ΠΏΠ΅Π»ΠΈΠ²ΠΎ оТидая ΠΊΠΎΠ³Π΄Π° смогут ΠΏΠΎΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Π½Π°ΠΌ. НашС прСимущСство Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ простой ΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΊΠΎΠ΄, Π½ΠΎ ΠΌΠΎΡ‰Π½Ρ‹Ρ… союзников. Π§Ρ‚ΠΎ остаСтся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π΄ΠΎ уровня возмоТностСй Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… Π³Π»Π°Π². ΠœΡ‹ сдСлаСм это Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅, Π½ΠΎ ΠΏΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ я Π·Π°ΠΊΠΎΠ½Ρ‡Ρƒ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠΌ синтаксичСский Π°Π½Π°Π»ΠΈΠ· показатСля Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒ сСбя, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ ΠΊΠ°ΠΊ. ΠšΠΎΠ½Π΅Ρ‡Π½Π°Ρ вСрсия CodeGen Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ LoadVariable:

{–}

unit CodeGen;

{–}

interface

uses Output;

procedure LoadConstant(n: string);

procedure LoadVariable(Name: string);

{–}

implementation

{–}

{ Load the Primary Register with a Constant }

procedure LoadConstant(n: string);

begin

EmitLn('MOVE #' + n + ',D0' );

end;

{–}

{ Load a Variable to the Primary Register }

procedure LoadVariable(Name: string);

begin

EmitLn('MOVE ' + Name + '(PC),D0');

end;

end.

{–}

Π‘Π°ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Parser Π½Π΅ измСняСтся, Π½ΠΎ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Factor:

{–}

{ Parse and Translate a Factor }

procedure Factor;

begin

if IsDigit(Look) then

LoadConstant(GetNumber)

else if IsAlpha(Look)then

LoadVariable(GetName)

else

Error('Unrecognized character ' + Look);

end;

{–}

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

Бсылки

Crenshaw, J.W., Β«Object-Oriented Design of Assemblers and Compilers,Β» Proc. Software Development '91 Conference, Miller Freeman, San Francisco, CA, February 1991, pp. 143-155.

Crenshaw, J.W., Β«A Perfect Marriage,Β» Computer Language, Volume 8, #6, June 1991, pp. 44-55.

Crenshaw, J.W., Β«Syntax-Driven Object-Oriented Design,Β» Proc. 1991 Embedded Systems Conference, Miller Freeman, San Francisco, CA, September 1991, pp. 45-60.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

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

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

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΠ΅ вСрсии Borland Turbo Pascal ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈ ΡΡŠΠ΅ΡΡ‚ΡŒ свой кусок ΠΏΠΈΡ€ΠΎΠ³Π°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΈΡ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΌΡ‹ всС Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ малСнькиС ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ наши основныС ΠΈ тСстовыС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ малСнькими ΠΈ простыми. Но, ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ написанный, ΠΊΠΎΠ΄ Π² модулях Паскаля Π±ΡƒΠ΄Π΅Ρ‚ всСгда Ρ‚Π°ΠΌ для нашСго использования ΠΈ Π΅Π³ΠΎ связываниС Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎ ΠΈ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ.

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊ настоящСму Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· вас ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΡŽΡ‚ Π½Π° C ΠΈΠ»ΠΈ C++, я знаю, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π΅Ρ‚Π΅: Borland с ΠΈΡ… Turbo Pascal ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ Π½Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Π»ΠΈ понятиС Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. И, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²Ρ‹ ΠΏΡ€Π°Π²Ρ‹. Но Ссли Π²Ρ‹ Π½Π΅ использовали TP Π² послСднСС врСмя ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° Π»ΠΈΠ±ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ насколько Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½Ρ‹ΠΉ вСсь этот процСсс. Π”Π°ΠΆΠ΅ Π² C ΠΈΠ»ΠΈ C++ Π²Ρ‹ всС Π΅Ρ‰Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ make Ρ„Π°ΠΉΠ», ΠΈΠ»ΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, ΠΈΠ»ΠΈ сообщая компилятору ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Β«externΒ» ΠΈΠ»ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π’ TP Π²Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄Π°ΠΆΠ΅ Π΄Π΅Π»Π°Ρ‚ΡŒ этого. Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΠ΅Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΆΠ΅Π»Π°Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈ всС ΠΈΡ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ автоматичСски становятся доступны.

Π£ мСня Π½Π΅Ρ‚ намСрСния Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ здСсь Π΄Π΅Π±Π°Ρ‚Π°ΠΌΠΈ Π½Π° Ρ‚Π΅ΠΌΡƒ Π²ΠΎΠΉΠ½ языков, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ я Π½Π΅ Π±ΡƒΠ΄Ρƒ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Ρ‚ΡŒ эту Ρ‚Π΅ΠΌΡƒ Π² дальнСйшСм. Π”Π°ΠΆΠ΅ я большС Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Pascal Π² своСй Ρ€Π°Π±ΠΎΡ‚Π΅... я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ C Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΈ Π‘++ для своих статСй Π² Embedded Systems Programming ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΆΡƒΡ€Π½Π°Π»Π°Ρ…. ΠŸΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΌΠ½Π΅, ΠΊΠΎΠ³Π΄Π° я намСрСвался Π²ΠΎΠ·Ρ€ΠΎΠ΄ΠΈΡ‚ΡŒ эту ΡΠ΅Ρ€ΠΈΡŽ, я Π΄ΡƒΠΌΠ°Π» Π΄ΠΎΠ»Π³ΠΎ ΠΈ интСнсивно ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΈ языка ΠΈ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ систСмы Π½Π° Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ всС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π² эти Π΄Π½ΠΈ, C/C++ ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ PC ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² я понял, Ρ‡Ρ‚ΠΎ это Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ большС бСспорядка, Ρ‡Π΅ΠΌ сам ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π². И Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², Pascal всС Π΅Ρ‰Π΅ остаСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… языков для обучСния, Π½Π΅ говоря ΠΎ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. НаконСц, TP всС Π΅Ρ‰Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° скорости свСта, Π³ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС Ρ‡Π΅ΠΌ ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ C/C++ компиляторы. А ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ Borland, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π² TP Π½ΠΎ Π½Π΅ Π² ΠΈΡ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°Ρ… C++ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ². ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС, Ρ‡Π΅ΠΌ Microsoft-совмСстимыС ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΈ, Borland-овский ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ ΠΎΡ‚Π±Π΅Ρ€Π΅Ρ‚ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ элСмСнты Π΄Π°Π½Π½Ρ‹Ρ… Π΄Π°ΠΆΠ΅ Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ вырСзания ΠΈΡ… ΠΈΠ· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ссли ΠΎΠ½ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹. Один ΠΈΠ· Ρ€Π΅Π΄ΠΊΠΈΡ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² нашСй ΠΆΠΈΠ·Π½ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ΄Ρ‚ΠΈ Π½Π° компромисс ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠ»Π½ΠΎΡ‚ΠΎΠΉ ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ. Когда ΠΌΡ‹ пишСм ΠΌΠΎΠ΄ΡƒΠ»ΡŒ TP ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΠΊΠ°ΠΊ Π½Π°ΠΌ нравится, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π»ΡŽΠ±Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ элСмСнты Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΊΠ°ΠΊ ΠΌΡ‹ Π΄ΡƒΠΌΠ°Π΅ΠΌ, ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΌ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ, ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Π΅, Ρ‡Ρ‚ΠΎ это Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ раздутия ΠΊΠΎΠ΄Π° Π² ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

Π“Π»Π°Π²Π½ΠΎΠ΅ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ TP ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ всС прСимущСства ΠΈ удобства написания ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ…, Π½Π° Π²ΠΈΠ΄ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Ρ… тСстовых ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π±Π΅Π· нСобходимости постоянно ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ. ΠžΠ΄Π½Π°ΠΆΠ΄Ρ‹ написанныС, ΠΌΠΎΠ΄ΡƒΠ»ΠΈ TP сидят Ρ‚Π°ΠΌ, Ρ‚ΠΈΡ…ΠΎΠ½ΡŒΠΊΠΎ оТидая возмоТности Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ свой Π΄ΠΎΠ»Π³ ΠΈ Π΄Π°Ρ‚ΡŒ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ, ΠΊΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.