МоТно Π»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой язык программирования: ПишСм свой язык программирования Π±Π΅Π· ΠΌΠ°ΠΌ, ΠΏΠ°ΠΏ ΠΈ Π±ΠΈΠ·ΠΎΠ½ΠΎΠ². Π§Π°ΡΡ‚ΡŒ 0: тСория / Π₯Π°Π±Ρ€

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

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ свой язык программирования – Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π² 2023 Π³ΠΎΠ΄Ρƒ

Автор Π‘Π΅Ρ€Π³Π΅ΠΉ Π’ΠΈΠΌΠΎΡ„Π΅Π΅Π² На Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ 10 ΠΌΠΈΠ½ ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΎΠ² 2.6ΠΊ.
ОбновлСно

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ свой язык программирования – Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π² 2023 Π³ΠΎΠ΄Ρƒ. Если вас Π½Π΅ устраиваСт стандартный Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Python ΠΈΠ»ΠΈ Java, всСгда ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свою Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. Π›ΠΈΠ±ΠΎ ΠΆΠ΅ ΠΏΠΎΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π΄ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ β€” ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄ΡƒΠΌΠ°Ρ‚ΡŒΡΡ Π½Π°Π΄ созданиСм своСго языка программирования. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ удастся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π΅Ρ‡Ρ‚ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΈ ΠΏΡ€ΠΎΡΠ»Π°Π²ΠΈΡ‚ΡŒΡΡ Π½Π° вСсь ΠΌΠΈΡ€. Π”Π΅Π»ΠΎ это нСпростоС, Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅.

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

  1. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ шаги, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свой язык ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ
  2. Π’Ρ‹Π±ΠΎΡ€ языка – Π½Π° Ρ‡Π΅ΠΌ ΠΈ ΠΎ Ρ‡Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ
  3. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΈΠ»ΠΈ транспилятор β€” Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ
  4. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ – ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° синтаксиса ΠΈ лСксичСского ядра
  5. ЛСксСр ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с синтаксисом
  6. Из Ρ‡Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ язык программирования
  7. НуТно Π»ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ для собствСнного языка программирования
  8. Π‘Ρ‚ΠΎΠΈΡ‚ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стороннСС ПО, Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ компиляторы
  9. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ
  10. Π’Ρ‹Π±ΠΎΡ€ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ β€” динамичСская ΠΈΠ»ΠΈ статичСская
  11. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ особСнности: самый простой ΠΈ самый слоТный Π² написании язык

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ шаги, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свой язык ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ

Π§Ρ‚ΠΎΠ±Ρ‹ просто ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ ΡΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ написания языка программирования, возьмСм Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Β«ΠΌΠΎΠ»ΠΎΠ΄Π΅ΠΆΠ½Ρ‹ΠΉ слСнг». Как ΠΎΠ½ появился?

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΠΎΠΉΠΌΡƒΡ‚ Ρ„Ρ€Π°Π·Ρƒ Β«ΠΏΠΎΠΉΠ΄Π΅ΠΌ Ρ‡ΠΈΠ»ΠΈΡ‚ΡŒΒ», хотя Π½ΠΈ Π² русском, Π½ΠΈ Π² английском Π΅Π΅ Π½Π΅ сущСствуСт. Π—Π½Π°Ρ‡ΠΈΡ‚, это Π½ΠΎΠ²ΠΎΠ΅ слово. ΠžΠΊΡƒΠ½Π΅ΠΌΡΡ Π² Π΄Π΅Π±Ρ€ΠΈ лингвистики. Π—Π΄Π΅ΡΡŒ выяснится, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ английскоС слово Β«ChillΒ», Ρ‡Ρ‚ΠΎ Π² прямом ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π΅ ΠΎΠ½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«ΠΏΡ€ΠΎΡ…Π»Π°Π΄Π°Β». Англоязычный Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρƒ этого слова Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ смысл β€” Π±Π΅Π·Π·Π°Π±ΠΎΡ‚Π½Ρ‹ΠΉ расслаблСнный ΠΎΡ‚Π΄Ρ‹Ρ… Π² приятной обстановкС. А Π² русском появилось Β«Ρ‡ΠΈΠ»ΠΈΡ‚ΡŒΒ», Π΅Π³ΠΎ смысл Ρ‚ΠΎΠΆΠ΅ понятСн ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ. Π’Π°ΠΊΠΈΡ… словСчСк Π½Π΅ΠΌΠ°Π»ΠΎ, ΠΈ появился Π½ΠΎΠ²Ρ‹ΠΉ язык.

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

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

Π’Ρ‹Π±ΠΎΡ€ языка – Π½Π° Ρ‡Π΅ΠΌ ΠΈ ΠΎ Ρ‡Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой язык программирования Π½Π° Π±Π°Π·Π΅ практичСски любого языка. НавСрноС, ΠΏΡ€ΠΎΡ‰Π΅ всСго Π΄Π΅Π»Π°Ρ‚ΡŒ это Π·Π½Π°Ρ‚ΠΎΠΊΠ°ΠΌ высокоуровнСвых Python, Java ΠΈΠ»ΠΈ Π‘++. Однако ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с быстродСйствиСм, особСнно Π²ΠΎ врСмя компиляции. Машина Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ для этого инструмСнты исходника. Если вопрос ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… рСсурсов стоит ΠΎΡ‡Π΅Π½ΡŒ остро, Ρ‚ΠΎ придСтся ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ ассСмблСр.

АссСмблСр Ρ…ΠΎΡ€ΠΎΡˆ Π² ΠΏΠ»Π°Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° Π½Π΅ΠΌ ΠΊΠΎΠ΄ понравится Π½Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ

Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Π½Π΅ стоит сильно ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎ этому ΠΏΠΎΠ²ΠΎΠ΄Ρƒ, Ρ€Π°Π·Π½ΠΈΡ†Π° Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ. Если Π²Ρ‹ Π½Π΅ ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚Π΅ΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ высоконагруТСнныС систСмы. Π’Π°ΠΊ, ядро Windows NT, основа Windows 2000/XP/Vista/7/8, созданы Π½Π° Π‘ΠΈ ΠΈ Π‘++. Π“ΠΎΡ€Π°Π·Π΄ΠΎ Π²Π°ΠΆΠ½Π΅Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ самого процСсса. Π’Π°ΠΆΠ½Π΅Π΅ всСго ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ, ΠΎΠ±Ρ‰Π΅Π΅ Π²ΠΈΠ΄Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ ЯП. Π—Π΄Π΅ΡΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ вопросы:

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

Π—Π°Ρ€Π°Π½Π΅Π΅ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, поэтому ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ развития Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Π½ΠΎΠ²Ρ‹Π΅ слоТности ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈ. Но ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ. Π˜Π½Π°Ρ‡Π΅Β Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π·Π°ΠΉΠ΄Π΅Ρ‚ Π² Ρ‚ΡƒΠΏΠΈΠΊ.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΈΠ»ΠΈ транспилятор β€” Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой собствСнный язык программирования, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ со стратСгиСй Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Π§Ρ‚ΠΎΠ±Ρ‹ написанныС Π² срСдС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ процСссором, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² стандартный Π½Π°Π±ΠΎΡ€ Π½ΡƒΠ»Π΅ΠΉ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π΅ΠΊ. Π—Π° эту Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ компилятор. Π›ΠΎΠ³ΠΈΠΊΠ° здСсь ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ такая:

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

Π’ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ происходит ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ языка, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Python ΠΈΠ»ΠΈ Java, ΠΈ дальнСйшая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° вСдСтся ΡƒΠΆΠ΅ ΠΈΡ… компилятором. Π­Ρ‚ΠΎΡ‚ процСсс называСтся транспиляция.

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

ΠŸΡ€ΠΎΡΡ‚Π°Ρ схСма позволяСт ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ компилятором ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ

Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ компиляциСй ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ, просто ΠΎΠΏΠΈΡ€Π°ΡΡΡŒ Π½Π° свои прСдпочтСния. Π’Π°ΠΊ, Pascal, C, C++, Swift ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ языками, Π° Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ популярныС Java, JavaScript, Python, Ruby – ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ – ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° синтаксиса ΠΈ лСксичСского ядра

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ синтаксиса ΠΎΡ‡Π΅Π½ΡŒ сильно влияСт Π½Π° ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Π²ΠΈΠ΄ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°. Π’ Python для Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° экран Hello world потрСбуСтся Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ print(β€˜Hello, world!’). Π’ Java это ΡƒΠΆΠ΅ смотрится ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ.

Hello, world Π½Π° языкС Java Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π΄Π»ΠΈΠ½Π½Π΅Π΅, Ρ‡Π΅ΠΌ Π½Π° Python

Π’ Π‘++ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выглядит ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΈΠ½Π°Ρ‡Π΅, ΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ понятнСС для нСспСциалиста.

Β 

Π‘++ ΠΈΠΌΠ΅Π΅Ρ‚ свои прСимущСства, Π½ΠΎ ΠΊ Π½ΠΈΠΌ Π½Π΅ относится простота понимания ΠΊΠΎΠ΄Π°

Π’ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ваш язык программирования Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π΅Ρ‡Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ β€˜Hello, world!’ ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ «всС Ρ‡Ρ‚ΠΎ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…, выводится Π½Π° экран. Никто Π½Π΅ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ творчСством.

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

ЛСксСр ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с синтаксисом

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

ЀактичСски ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ числу ΠΈΠ»ΠΈ символу лСксСр Π΄Π°Π΅Ρ‚ своС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, лСксСмы. Волько послС этого Π² Π΄Π΅Π»ΠΎ вступаСт парсСр ΠΈ распознаСт, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹, ΠΊΠ°ΠΊΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Ρ‹, Π΅ΡΡ‚ΡŒ Π»ΠΈ условныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Из Ρ‡Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ язык программирования

Π•Ρ‰Π΅ Π½Π° стадии Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈΒ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈΒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΒ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒΒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π½ΠΎΠ²ΠΎΠ³ΠΎ языка. Они ΠΊΠ°ΡΠ°ΡŽΡ‚ΡΡ Π²Ρ‹Π±ΠΎΡ€Π° Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ΅ примСнСния стороннСго ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ.

ВсС Π½Π΅ Ρ‚Π°ΠΊ слоТно, ΠΊΠ°ΠΊ каТСтся Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд

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

НуТно Π»ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ для собствСнного языка программирования

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

ИмСнно Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ языки программирования доступными для примСнСния

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

Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π°. МоТно Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ язык Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΡƒΠΆΠ΅ извСстной ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅, ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. Π­Ρ‚ΠΎ вСсьма популярный шаг, благодаря ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π½ΠΎΠ²Ρ‹ΠΉ язык ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ стимул для развития. Π’ этом ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ кроСтся ΠΎΠ΄ΠΈΠ½ ΠΈΠ· сСкрСтов популярности Java. ВсС языки, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π½Π° Π±Π°Π·Π΅ Java Virtual Machine, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ Π΅Ρ‘ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ.

Π‘Ρ‚ΠΎΠΈΡ‚ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стороннСС ПО, Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ компиляторы

БущСствуСт ряд ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ собствСнного языка программирования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, это Flex, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ лСксичСских Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ². Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ поддСрТиваСмая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Bison, которая структурируСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ„Π°ΠΉΠ» синтаксичСскими ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ написанной Π½Π° языкС Π‘ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

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

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния сам ΠΏΠΎ сСбС нСпростой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

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

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ

БущСствуСт нСсколько ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΌΠΈ рСсурсами. Если для вас Π½Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ просто Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π½Π° это Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅. Достаточно Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ объСм ячССк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опСрационная систСма сама очистит послС закрытия прилоТСния.

МоТно ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ статичСскоС распрСдСлСниС памяти, Π½ΠΎ Π² этом случаС Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈ рСкурсивном Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π§ΡƒΡ‚ΡŒ большС рСсурсов ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ «сборка мусора». Π’ этом случаС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Ρ…Ρ€Π°Π½ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, которая трСбуСтся Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚. Когда Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Π½Π΅ΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚, ΠΈΠ΄Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π° ОсвобоТдСниС памяти. По Ρ‚Π°ΠΊΠΎΠΌΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Lisp ΠΈ JavaScript.

Π’Ρ‹Π±ΠΎΡ€ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ β€” динамичСская ΠΈΠ»ΠΈ статичСская

Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ соврСмСнных языков программирования Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с динамичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Π’ΠΎ Π΅ΡΡ‚ΡŒ связываСтся с Ρ‚ΠΈΠΏΠΎΠΌ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ присвоСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ значСния. Π§Π°ΡΡ‚ΡŒ ПО ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ. Π’ этом случаС Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Он Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π² Python, PHP, JavaScript. Π’Ρ‚ΠΎΡ€ΠΎΠΉ β€” Java, Π‘ΠΈ, Π‘++.

ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΎ динамичСской ΠΈ статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ

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

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ особСнности: самый простой ΠΈ самый слоТный Π² написании язык

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

ΠœΠ΅ΡΡ‚ΠΎ, ΠΊΡƒΠ΄Π° Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ программист

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅, придСтся ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚ΡŒ массу усилий. И говоря ΠΎΡ‚ΠΊΡ€ΠΎΠ²Π΅Π½Π½ΠΎ, ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ сСйчас ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ Π½Π΅ ΠΏΠΎΠ΄ силу. Достаточно Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Microsoft Π΄ΠΎΠ»Π³ΠΈΠ΅ Π³ΠΎΠ΄Ρ‹ примСняла написанный Π΅Ρ‰Π΅ Π² 1973 Π³ΠΎΠ΄Ρƒ язык Π‘ΠΈ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ история ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π·Π½Π°Π΅Ρ‚ Π½Π΅ΠΌΠ°Π»ΠΎ Π²Ρ‹Π΄Π°ΡŽΡ‰ΠΈΡ…ΡΡ личностСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ практичСски Π² ΠΎΠ΄ΠΈΠ½ΠΎΡ‡ΠΊΡƒ создавали ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹. Но Π² послСдниС дСсятилСтия Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ПО стала Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ слоТной, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅ практичСски Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Никто Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ язык, Ссли Ρƒ Π½Π΅Π³ΠΎ Π½Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

11 шагов ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ пСрспСктивы

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассказываСтся:Β Β 

  1. Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ языки программирования
  2. 11 шагов создания своСго языка программирования с нуля
  3. Книги ΠΏΡ€ΠΎ созданиС языка программирования с нуля
  4. РСально Π»ΠΈ Π² ΠΎΠ΄ΠΈΠ½ΠΎΡ‡ΠΊΡƒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ язык программирования
  5. Онлайн-курсы ΠΏΠΎ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ ΠΈ созданию языков программирования
  6. ΠŸΡ€ΠΎΠΉΠ΄ΠΈ тСст ΠΈ ΡƒΠ·Π½Π°ΠΉ, какая сфСра Ρ‚Π΅Π±Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚:
    Π°ΠΉΡ‚ΠΈ, Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΈΠ»ΠΈ ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³.

    БСсплатно ΠΎΡ‚ Geekbrains


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

Π”Π°Π²Π°ΠΉΡ‚Π΅ вмСстС Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ, Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Π»ΠΈ Π² ΠΎΠ΄ΠΈΠ½ΠΎΡ‡ΠΊΡƒ с нуля ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой язык программирования Π΄Π°ΠΆΠ΅ Π½Π° Π±Π°Π·Π΅ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ дСйствия придСтся ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ самоС Π³Π»Π°Π²Π½ΠΎΠ΅ – сколько ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π·Π°ΠΉΠΌΠ΅Ρ‚ вСсь этот процСсс. Π₯отя Π²Ρ‹, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, ΠΈ Ρ‚Π°ΠΊ ΡƒΠΆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π·Π° полчаса Π²Ρ‚ΠΎΡ€ΠΎΠΉ Python Π½Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ, Π½ΠΎ Π΄Π°Π²Π°ΠΉΡ‚Π΅ всС Ρ€Π°Π²Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ.

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ языки программирования

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡƒΠΆΠ΅ сотни Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языков программирования, ΠΈ ΠΈΡ… количСство Π½Π΅ΡƒΠΊΠ»ΠΎΠ½Π½ΠΎ растСт. Они становятся популярными, ΡˆΠΈΡ€ΠΎΠΊΠΎ вострСбованными. ΠžΡ‚ Ρ‡Π΅Π³ΠΎ это зависит? Π’ΡƒΡ‚ Π²Π»ΠΈΡΡŽΡ‚ самыС Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„Π°ΠΊΡ‚ΠΎΡ€Ρ‹, Π½Π΅ всСгда постоянныС, ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ΡΡ с Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

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

ВрСбования ΠΊ созданию языков программирования постСпСнно мСнялись ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ стали ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ ΠΏΠΎΠΌΠΎΡ‰Π½Π΅Π΅, Π±ΠΎΠ»Π΅Π΅ простыС ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π² использовании. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Fortran придумывался большС для вСдСния матСматичСских вычислСний, Basic ΠΈ Pascal Π±Ρ‹Π»ΠΈ Β«Π·Π°Ρ‚ΠΎΡ‡Π΅Π½Ρ‹Β» ΠΏΠΎΠ΄ ΡƒΡ‡Π΅Π±Π½Ρ‹Π΅ Ρ†Π΅Π»ΠΈ ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°Π»ΠΈΡΡŒ Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ изучСния, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ (Π²Ρ€ΠΎΠ΄Π΅ Π‘ΠΈ) Π±Ρ‹Π»ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΈ своСй ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ²Π΅Ρ€ΡˆΠ°Π»ΠΈΡΡŒ Π½Π΅ΠΊΠΈΠ΅ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Π΅ достиТСния, Ρ‚ΡƒΡ‚ ΠΆΠ΅ появлялась ΠΊΡƒΡ‡Π° Π½ΠΎΠ²Ρ‹Ρ… языков. НапримСр, языки C++, Objective C, Java Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ Π² 1980-1990-Π΅ Π³ΠΎΠ΄Ρ‹ Π½Π° Ρ„ΠΎΠ½Π΅ открытия ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования. Π‘ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Ρ‹Π΅ языки (Π²Ρ€ΠΎΠ΄Π΅ PHP, JavaScript, Python) стали Π±ΡƒΡ€Π½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² связи с появившСйся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ Π² создании Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π”Π° ΠΈ сСйчас Ρ‚ΠΎΠΆΠ΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ языки, ΠΎΠ½ΠΈ быстро ΠΏΠΈΡˆΡƒΡ‚ΡΡ, ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π½ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ просто молниСносно (ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ β€” Go, Swift, Rust).

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ языки программирования

РазумССтся, соврСмСнныС Π½ΠΎΠ²Ρ‹Π΅ языки программирования – это Π½Π΅ просто Β«ΠΌΠΎΠ΄Π½ΠΎΠ΅Β» вСяниС. Часто Π² Π½ΠΈΡ… Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ конкрСтная Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° трСбуСтся Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΈΡ… особых Π·Π°Π΄Π°Ρ‡. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, для автоматичСской ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ логичСских суТдСний создавался Prolog. А Erlang принят ΠΊΠ°ΠΊ стандарт Π² сфСрС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ПО для сСтСвых ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΉ.

11 шагов создания своСго языка программирования с нуля

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

Π¨Π°Π³ 1. ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с устройством ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

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

Π¨Π°Π³ 2. Π Π°Π·Π±Π΅Ρ€ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ….

Π’Π°ΠΌ придСтся ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ с Ρ‚Π°ΠΊΠΈΠΌΠΈ понятиями, ΠΊΠ°ΠΊ парсСры, лСксСры, компиляторы, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹, синтаксичСскиС Π΄Π΅Ρ€Π΅Π²ΡŒΡ ΠΈ Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ всСго ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ. Если Π²Ρ‹ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΎ Ρ‡Π΅ΠΌ ΠΈΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ, Ρ‚ΠΎ ΠΊΠ°ΠΊ смоТСтС Π²ΠΎΠΎΠ±Ρ‰Π΅ этим Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ, ΡΠΎΠ²Π΅Ρ‚ΠΎΠ²Π°Ρ‚ΡŒΡΡ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ, ΠΈΡΠΊΠ°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ свСдСния Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅? Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ любого языка программирования начинаСтся со знания Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.

Π¨Π°Π³ 3. ΠžΠ±ΠΎΠ·Π½Π°Ρ‡ΡŒΡ‚Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ языка.

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

Π¨Π°Π³ 4. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ с основными ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ.

Π’ΠΎΡ‚ вопросы, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ слСдуСт Π΄Π°Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚:

  • Π—Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ? ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ машина сразу Π΅Π³ΠΎ Β«ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Β» ΠΈ исполняСт. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ построчно. Π§Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ – Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π²Π°ΠΌ, рассмотритС ΠΎΠ±Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния удобства, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, защищСнности ΠΈ Ρ‚. ΠΏ.
  • Π—Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ? ΠŸΡ€ΠΈ статичСской ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ сам ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π° для динамичСской Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ систСму, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΡƒΡŽ Ρ‚ΠΈΠΏΡ‹.
  • Для памяти Π±ΡƒΠ΄Π΅Ρ‚ прСдусмотрСно Ρ€ΡƒΡ‡Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ автоматичСская очистка?
  • ΠšΠ°ΠΊΡƒΡŽ модСль Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ: ООП, логичСскоС, структурноС ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅? Или Π²Ρ‹ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ Π½Π΅Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅, Ρ‡Π΅Π³ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅ Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π»ΠΎ?
  • Π‘ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ ваш язык ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ?
  • ΠŸΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ Π»ΠΈ Π² языкС Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΈΠ»ΠΈ всё Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π·Π° счСт Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ?
  • Каким Π±ΡƒΠ΄Π΅Ρ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠ΅ построСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹?

ΠŸΡ€ΠΎΠ΄ΡƒΠΌΠ°Π² всС эти ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, Π²Ρ‹ сформируСтС ΠΎΠ±Ρ‰ΠΈΠΉ Π²ΠΈΠ΄ Π½ΠΎΠ²ΠΎΠ³ΠΎ языка. Π’ процСссС Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ ΠΈ ΠΈΠ½Ρ‹Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ вопросы, с Π½ΠΈΠΌΠΈ Ρ‚ΠΎΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ.

Π¨Π°Π³ 5. ΠŸΡ€ΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ синтаксис.

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

Π¨Π°Π³ 6. ΠŸΡ€ΠΈΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅.

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

Π’ΠΎΠΏ-30 самых вострСбованных ΠΈ высокооплачиваСмых профСссий 2023

ΠŸΠΎΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ситуации Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅ Ρ‚Ρ€ΡƒΠ΄Π°

ΠŸΠΎΠ΄Π±ΠΎΡ€ΠΊΠ° 50+ рСсурсов ΠΎΠ± IT-сфСрС

Волько Π»ΡƒΡ‡ΡˆΠΈΠ΅ Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Ρ‹, ΠΊΠ°Π½Π°Π»Ρ‹ Youtube, подкасты, Ρ„ΠΎΡ€ΡƒΠΌΡ‹ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΎ IT

ВОП 50+ сСрвисов ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΡ‚ Geekbrains

БСзопасныС ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² наши Π΄Π½ΠΈ

pdf 3,7mb

doc 1,7mb


Π£ΠΆΠ΅ скачали 20451

Π¨Π°Π³ 7. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ с языком написания языка.

ΠŸΠΎΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹Π΅ Π½Π° высоких тСхнологиях Π³ΠΈΠΊΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ для этого ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ ΠΈΠ»ΠΈ язык ассСмблСра. Но Π² соврСмСнных рСалиях Π΅ΡΡ‚ΡŒ смысл Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ созданиСм языков программирования Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языках Pascal, C, C++, C#, Swift (для ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°) ΠΈ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языках Java, JavaScript, Python, Ruby (для написания ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°). Π­Ρ‚ΠΎ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π΄Π°Π΅Ρ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Π―Π·Ρ‹ΠΊ написания языка программирования

Π¨Π°Π³ 8. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ лСксСр ΠΈ парсСр.

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

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

Π¨Π°Π³ 9. Π‘Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠΉΡ‚Π΅ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ.

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

Π¨Π°Π³ 10. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π³Ρ€ΠΎΠΌΠ°Π΄Π½ΠΎΠ΅ количСство тСкстов.

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


Волько до 20.04


Π‘ΠΊΠ°Ρ‡Π°ΠΉ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ тСстов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ свои самыС ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½Ρ‹Π΅ скиллы

Бписок Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²:

ВСст Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ΅Ρ‚Π΅Π½Ρ†ΠΈΠΉ

Π§Π΅ΠΊ-лист «Как ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΎΠ±ΠΌΠ°Π½Π° ΠΏΡ€ΠΈ трудоустройствС»

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ΠΏΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ ΠΈΠ· выгорания

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ», ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ e-mail:

ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ Ρ€ΠΎΠ±ΠΎΡ‚,
ΡƒΠΊΠ°Π·Π°Π² Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°:


Π£ΠΆΠ΅ скачали 7503

Π¨Π°Π³ 11. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ язык ΠΌΠΈΡ€Ρƒ.

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

Книги ΠΏΡ€ΠΎ созданиС языка программирования с нуля

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

НапримСр, Ρ€Π°Π±ΠΎΡ‚Π° А. Π’. Π₯ΠΎΡ…Π»ΠΎΠ²Π° ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ «Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ язык программирования ΠΈ транслятор». Книга Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ, Π½ΠΎ Ρ‚ΡƒΡ‚ всё ΠΆΠ΅ большС ΠΏΡ€ΠΎ транслятор. ΠŸΡ€ΠΎΡ†Π΅ΡΡΠ°ΠΌ Π²Ρ‹Π±ΠΎΡ€Π° Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ внимания Π½Π΅ ΡƒΠ΄Π΅Π»Π΅Π½ΠΎ, Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ, Π±Ρ‹Π»ΠΎ Π±Ρ‹ интСрСсно ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Ρ…ΠΎΠ΄ΠΎΠΌ мыслСй Π°Π²Ρ‚ΠΎΡ€Π°. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π² скором Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΠ½ ΠΎΠ± этом Π΅Ρ‰Π΅ расскаТСт.

Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠ± иностранных Π°Π²Ρ‚ΠΎΡ€Π°Ρ…, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ привСсти Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Β«ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ языков программирования» ΠΎΡ‚ Π ΠΎΠ±Π΅Ρ€Ρ‚Π° БСбСсты. Книга, бСзусловно, Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ, Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ. Но ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅, содСрТаниС здСсь Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ соотвСтствуСт названию, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ Π½Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΏΡ€ΠΎ созданиС языков программирования.

Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ задумался ΠΎ создании языка программирования, Π΅ΡΡ‚ΡŒ нСплохая ΠΊΠ½ΠΈΠ³Π° «ВСорСтичСскиС основы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ языков программирования». Авторы – отСчСствСнныС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ М. М. Π“Π°Π²Ρ€ΠΈΠΊΠΎΠ², А. Н. Π˜Π²Π°Π½Ρ‡Π΅Π½ΠΊΠΎ, Π”. Π’. Π“Ρ€ΠΈΠ½Ρ‡Π΅Π½ΠΊΠΎΠ². Но ΠΈ здСсь слСдуСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠ½ΠΈΠ³Π° большС Π½Π΅ ΠΏΡ€ΠΎ Β«Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒΒ», Π° ΠΏΡ€ΠΎ Β«Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽΒ».

Она состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π³Π»Π°Π²: «Бпособы задания Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… языков», Β«ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° ΠΈ Π΅Ρ‘ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊ синтаксичСскому Π°Π½Π°Π»ΠΈΠ·ΡƒΒ», Β«ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сканСров», Β«ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ КБ-языков ΠΈ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ языков программирования». Как ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΠΎ названиям, Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ раскрываСт процСсс создания компиляторов.

Π Π°Π±ΠΎΡ‚Ρ‹ интСрСсныС, ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅, Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Π²Π°ΠΆΠ½Ρ‹Π΅ Ρ‚Π΅ΠΌΡ‹, Π½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ процСсс проСктирования языков Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Π² Π½ΠΈΡ… Π½Π΅ описываСтся.

А Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Π»ΠΈ Π² ΠΎΠ΄ΠΈΠ½ΠΎΡ‡ΠΊΡƒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ язык программирования?

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

ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅, Ρ‡Π΅ΠΌ ΠΏΠΎΡ‚ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ, ΠΈ ΡƒΠΆ Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ – Π² ΠΎΠ΄ΠΈΠ½ΠΎΡ‡ΠΊΡƒ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, нСслучайно Π² Microsoft Π΄ΠΎΠ»Π³ΠΈΠ΅ Π³ΠΎΠ΄Ρ‹ Π±Ρ‹Π» Π² Ρ…ΠΎΠ΄Ρƒ язык Π‘ΠΈ, созданный Π΅Ρ‰Π΅ Π² Π΄Π°Π»Π΅ΠΊΠΎΠΌ 1973 Π³ΠΎΠ΄Ρƒ. Π”Π°, бСзусловно, ΠΌΠΎΠΆΠ½ΠΎ привСсти ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ людСй, ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Π²ΡˆΠΈΡ… ΡˆΠ΅Π΄Π΅Π²Ρ€Ρ‹. Но процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ПО Π·Π° послСдниС дСсятки Π»Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ услоТнился, ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΠΎΠ΄Π²ΠΈΠ³ΠΈ ΡƒΠΆΠ΅ вряд Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹. Π―Π·Ρ‹ΠΊ Π±Π΅Π· ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ станСт.

Онлайн-курсы ΠΏΠΎ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ ΠΈ созданию языков программирования

Π’ создании качСствСнных ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ†Π΅Π»Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ профСссионалов-энтузиастов. ΠŸΡ€ΠΈ нСобходимости Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ ΠΈΡ… Π½Π° GitHub. Π‘Ρ‚Π°Π² Ρ‡Π»Π΅Π½ΠΎΠΌ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄, Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ практичСскоС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ своим знаниям, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅Ρ‚Π΅ сСбя Π² Π΄Π΅Π»Π΅.

Онлайн-курсы ΠΏΠΎ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ ΠΈ созданию языков программирования

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

Π§Π΅ΠΌ Ρ…ΠΎΡ€ΠΎΡˆ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ процСсс обучСния? Π’Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½ΠΈΠΊΡƒΠ΄Π° Π΅Ρ…Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ΄Ρ‚ΠΈ. На качСствС Π·Π½Π°Π½ΠΈΠΉ это Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ отраТаСтся, Π³Π»Π°Π²Π½ΠΎΠ΅ – самодисциплина ΠΈ Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎΠ΅ распрСдСлСниС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, здСсь Π²Ρ‹ сами Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅, ΠΊΡ‚ΠΎ станСт вашим ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»Π΅ΠΌ. Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ – поТалуйста. Π•ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ общСния с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»ΡΠΌΠΈ курса. По сути – это Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΎΡ„Π»Π°ΠΉΠ½.

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

И Ссли Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ ΠΎΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ, Π²Π°ΠΌ понадобится всё вашС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡Π΅Π½Π½ΠΎΡΡ‚ΡŒ. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΠΉΡ‚Π΅ нСпонятныС ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, Π½Π΅ ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ с ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»Π΅ΠΌ.

Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ количСство курсов ΠΈ мастСр-классов собрано Π½Π° ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΠΎΡ€Ρ‚Π°Π»Π΅ GeekBrains. Π•ΡΡ‚ΡŒ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ стаТировки послС обучСния.


ΠŸΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π±Π»ΠΎΠ³Π° — Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€
ΠΏΡ€ΠΎΠ΄Π°ΠΆ


Π Π΅ΠΉΡ‚ΠΈΠ½Π³:
2


( голосов
4 )


ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ

Как ΠΌΠ½Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ язык программирования?

Как ΠΌΠ½Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ язык программирования?

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚

Π’Π΅Π±-сайт tomassetti. me измСнился: Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ strumenta.com. Π’Ρ‹ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ всС новости Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ качСствС, Π½ΠΎ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠΈ.

    НазваниС этой ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ вопрос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я снова ΠΈ снова ΡΠ»Ρ‹ΡˆΡƒ Π½Π° Ρ„ΠΎΡ€ΡƒΠΌΠ°Ρ… ΠΈΠ»ΠΈ Π² элСктронных ΠΏΠΈΡΡŒΠΌΠ°Ρ….

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

    Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ собираСмся ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° Π½Π΅Π³ΠΎ. Π”Π°, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊΠΎΠ² процСсс создания вашСго собствСнного ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ языка с компилятором для Π½Π΅Π³ΠΎ, Π° Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚.

    ΠžΠ±Π·ΠΎΡ€

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

    1) Π―Π·Ρ‹ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ спроСктирован : ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ языка Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌ ΠΈ синтаксиса языка
    2) Π”ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ создан компилятор
    3) Π”ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ стандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ
    4) Π”ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ прСдоставлСны Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ инструмСнты, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΈ систСмы сборки

    Π”Π°Π²Π°ΠΉΡ‚Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрим, Ρ‡Ρ‚ΠΎ Π²Π»Π΅Ρ‡Π΅Ρ‚ Π·Π° собой ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ².

    Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° языка программирования

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

    Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ языка программирования ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π΄Π²Π΅ Ρ„Π°Π·Ρ‹:

    1. Π€Π°Π·Π° ΠΎΠ±Ρ‰Π΅ΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρ‹
    2. Π€Π°Π·Π° уточнСния

    На ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ„Π°Π·Π΅ ΠΌΡ‹ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅ΠΌ Π½Π° основныС вопросы ΠΎ нашСм языкС.

    • ΠšΠ°ΠΊΡƒΡŽ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡƒ выполнСния ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ? Π‘ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ ΠΎΠ½ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ? Или, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π½Π° основС Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ² состояний ΠΈΠ»ΠΈ бизнСс-ΠΏΡ€Π°Π²ΠΈΠ»?
    • Нам Π½ΡƒΠΆΠ½Π° статичСская ΠΈΠ»ΠΈ динамичСская типизация?
    • Для ΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ этот язык? Π‘ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… сцСнариСв ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… систСм?
    • Π§Ρ‚ΠΎ для нас Π²Π°ΠΆΠ½Π΅Π΅ всСго: ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ? Π§ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ?
    • Π₯ΠΎΡ‚ΠΈΠΌ Π»ΠΈ ΠΌΡ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ язык программирования? Π‘ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ ΠΎΠ½ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² C ΠΈΠ»ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ простым Π² освоСнии для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΠΏΡ€ΠΈΡˆΠ΅Π» ΠΈΠ· Python?
    • Π₯ΠΎΡ‚ΠΈΠΌ Π»ΠΈ ΠΌΡ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ (JVM, CLR)?
    • КакиС возмоТности мСтапрограммирования ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ, Ссли Ρ‚Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ? ΠœΠ°ΠΊΡ€ΠΎΡΡ‹? Π¨Π°Π±Π»ΠΎΠ½Ρ‹? ΠžΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅?

    На Π²Ρ‚ΠΎΡ€ΠΎΠΌ этапС ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ язык ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Π΅Π³ΠΎ использования. ΠœΡ‹ столкнСмся с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, с Π²Π΅Ρ‰Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ Π½Π° нашСм языкС, ΠΈ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π΅Π³ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ. Π’Ρ‚ΠΎΡ€ΠΎΠΉ этап ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Ρ‚Π°ΠΊΠΈΠΌ Π³Π»Π°ΠΌΡƒΡ€Π½Ρ‹ΠΌ, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ, Π½ΠΎ это этап, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ наш язык, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ΠΌ для использования Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, поэтому ΠΌΡ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΅Π³ΠΎ Π½Π΅Π΄ΠΎΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ.

    Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ компилятора

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

    Но ΠΊΠ°ΠΊ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ компилятор?

    Как ΠΈ всС слоТноС, ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ это пошагово:

    1. Π‘Ρ‚Ρ€ΠΎΠΈΠΌ парсСр : парсСр β€” это Ρ‡Π°ΡΡ‚ΡŒ нашСго компилятора, которая Π±Π΅Ρ€Π΅Ρ‚ тСкст Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠ½ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‚. Он распознаСт выраТСния, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, классы ΠΈ создаСт Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… для ΠΈΡ… прСдставлСния. ΠžΡΡ‚Π°Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ парсСра Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с этими структурами Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π½Π΅ с исходным тСкстом
    2. (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ) ΠœΡ‹ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ Π΄Π΅Ρ€Π΅Π²ΠΎ Ρ€Π°Π·Π±ΠΎΡ€Π° Π² абстрактноС синтаксичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ . ΠžΠ±Ρ‹Ρ‡Π½ΠΎ структуры Π΄Π°Π½Π½Ρ‹Ρ…, создаваСмыС синтаксичСским Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ, ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ содСрТат мноТСство Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ критичСскими для нашСго компилятора. Из-Π·Π° этого ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ часто ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ структуры Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‡ΡƒΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ высокого уровня
    3. Π Π°Π·Ρ€Π΅ΡˆΠ°Π΅ΠΌ символы . Π’ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ пишСм Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ a + 1 . Наш компилятор Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Π½Π° Ρ‡Ρ‚ΠΎ ссылаСтся ΠΈ . Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅? Π­Ρ‚ΠΎ пСрСмСнная? Π­Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°? ΠœΡ‹ ΠΈΠ·ΡƒΡ‡Π°Π΅ΠΌ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ
    4. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Π΄Π΅Ρ€Π΅Π²ΠΎ . Нам Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π½Π΅ допустил Π»ΠΈ программист ошибок. Он пытаСтся ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Ρ†Π΅Π»ΠΎΠ΅ число? Или доступ ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ полю? Нам Π½ΡƒΠΆΠ½ΠΎ произвСсти ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…
    5. Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ . На этом этапС ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠ΄ Π²ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ машина ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ для ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹
    6. (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ) ВыполняСм Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΡƒ . Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, созданный для Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, с ΠΊΠΎΠ΄ΠΎΠΌ статичСских Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ исполняСмый Ρ„Π°ΠΉΠ» 9.0037

    ВсСгда Π»ΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ компилятор? НСт. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ срСдствами для выполнСния ΠΊΠΎΠ΄Π°:

    • ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€: ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ β€” это, ΠΏΠΎ сущСству, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая выполняСт шаги 1-4 компилятора, Π° Π·Π°Ρ‚Π΅ΠΌ нСпосрСдствСнно выполняСт Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² абстрактном синтаксичСском Π΄Π΅Ρ€Π΅Π²Π΅.
    • ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ транспилятор: транспилятор Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² ΡˆΠ°Π³Π°Ρ… 1-4, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ языкС, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρƒ нас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ компилятор (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, C++ ΠΈΠ»ΠΈ Java)

    Π­Ρ‚ΠΈ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π²ΠΏΠΎΠ»Π½Π΅ допустимы, ΠΈ часто ΠΈΠΌΠ΅Π΅Ρ‚ смысл Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ…, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ усилия ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ мСньшС.

    ΠœΡ‹ написали ΡΡ‚Π°Ρ‚ΡŒΡŽ, ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‰ΡƒΡŽ, ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ транспилятор. ВзглянитС Π½Π° Π½Π΅Π³ΠΎ, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ практичСский ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΊΠΎΠ΄ΠΎΠΌ.

    Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ объясняСм Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ компилятором ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ.

    Бтандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для вашСго языка программирования

    Π›ΡŽΠ±ΠΎΠΉ язык программирования Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Π»Π°Ρ‚ΡŒ нСсколько Π²Π΅Ρ‰Π΅ΠΉ:

    • ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ Π½Π° экранС
    • Доступ ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС
    • ИспользованиС сСтСвых ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ
    • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ графичСских интСрфСйсов

    Π­Ρ‚ΠΎ основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для взаимодСйствия с ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ систСмой. Π‘Π΅Π· Π½ΠΈΡ… язык практичСски бСсполСзСн. Как ΠΌΡ‹ прСдоставляСм эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ? Π‘ΠΎΠ·Π΄Π°Π² ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ»ΠΈ классов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…, написанных Π½Π° нашСм языкС программирования, Π½ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ написаны Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌ языкС. НапримСр, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ языки ΠΈΠΌΠ΅ΡŽΡ‚ стандартныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, хотя Π±Ρ‹ частично написанныС Π½Π° C.

    Бтандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС. НапримСр, классы для прСдставлСния основных ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ списки ΠΈ ΠΊΠ°Ρ€Ρ‚Ρ‹, ΠΈΠ»ΠΈ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ распространСнных Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ JSON ΠΈΠ»ΠΈ XML. Часто ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ строк ΠΈ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

    Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, написаниС стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π­Ρ‚ΠΎ Π½Π΅ Π³Π»Π°ΠΌΡƒΡ€Π½ΠΎ, ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ Ρ‚Π°ΠΊ интСрСсно, ΠΊΠ°ΠΊ написаниС компилятора, Π½ΠΎ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ являСтся Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ, Π΄Π΅Π»Π°ΡŽΡ‰ΠΈΠΌ язык программирования ТизнСспособным.

    Π•ΡΡ‚ΡŒ способы ΠΎΠ±ΠΎΠΉΡ‚ΠΈ это Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅. Один ΠΈΠ· Π½ΠΈΡ… β€” Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ язык Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ языка. НапримСр, всС языки, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π½Π° JVM, ΠΌΠΎΠ³ΡƒΡ‚ просто ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Java.

    Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ инструмСнты для Π½ΠΎΠ²ΠΎΠ³ΠΎ языка программирования

    Π§Ρ‚ΠΎΠ±Ρ‹ язык ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, Π½Π°ΠΌ часто приходится ΠΏΠΈΡΠ°Ρ‚ΡŒ нСсколько Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… инструмСнтов.

    НаиболСС ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ являСтся Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ с подсвСткой синтаксиса, встроСнной ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ ошибок ΠΈ Π°Π²Ρ‚ΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π² настоящСС врСмя Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ любого Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.

    Но сСгодня Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΠ·Π±Π°Π»ΠΎΠ²Π°Π½Ρ‹ ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ всСвозмоТных Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… инструмСнтов. НапримСр, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ для устранСния нСприятной ошибки. Или систСма сборки, похоТая Π½Π° maven ΠΈΠ»ΠΈ gradle, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ спросят ΠΏΠΎΠ·ΠΆΠ΅.

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

    РСзюмС

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

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

    И, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Π²Ρ‹ смоТСтС ΠΏΠΎΡ…Π²Π°ΡΡ‚Π°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅Π΄ своими ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ.

    Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ создании языка, взглянитС Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ созданныС Π½Π°ΠΌΠΈ рСсурсы: ΡƒΠ·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ языки.

    Вас Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½Π°ΡˆΠΈΡ… статСй:

    • 68 РСсурсы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ языки программирования
    • ПолноС руководство ΠΏΠΎ (внСшним) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ языкам

    Β 

    ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ

    ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ языковом Π΄ΠΈΠ·Π°ΠΉΠ½Π΅

    Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ язык программирования

    Π’Ρ‹ устали ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ языков программирования, Π½Π΅ зная, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚? Π₯ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ происходит Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ свой ΠΊΠΎΠ΄?

    Ну, Ρ‚Ρ‹ Π½Π΅ ΠΎΠ΄ΠΈΠ½ Ρ‚Π°ΠΊΠΎΠΉ. И Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΎΠ± этом всС, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² эту ΡΡ‚Π°Ρ‚ΡŒΡŽ.

    Как оказалось, Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡ‡Π΅Π½ΡŒ Π±Π»ΠΈΠ·ΠΊΠ° ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ:

    • Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ язык программирования, ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ.
    • Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ компилятор.
    • Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ язык программирования.

    Π’ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ счСтС, я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΡƒΠ½ΠΊΡ‚ — это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ интСрСсуСт ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½ΠΎΠ³ΠΎ студСнта, Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΌΡ‹. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ ΠΏΠΎΠ²Π΅Π·Π»ΠΎ, Ρ‡Ρ‚ΠΎ всС это ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ понятия!

    Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ язык программирования

    Начну с Π·Π°Π±Π°Π²Π½ΠΎΠ³ΠΎ вопроса. По Π΄Π°Π½Π½Ρ‹ΠΌ Google, Π² ΠΌΠΈΡ€Π΅ насчитываСтся ΠΎΠΊΠΎΠ»ΠΎ 26 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Как Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, сколько ΠΈΠ· Π½ΠΈΡ… Π·Π½Π°ΡŽΡ‚, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ язык программирования?

    Π‘ΡŒΡŽΡΡŒ ΠΎΠ± Π·Π°ΠΊΠ»Π°Π΄, ΠΈΡ… ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ. На самом Π΄Π΅Π»Π΅, я Π½Π΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠ» ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ этому ΠΏΠΎΠ²ΠΎΠ΄Ρƒ, ΠΊΠΎΠ³Π΄Π° Π±Ρ‹Π» студСнтом ΠΊΠΎΠ»Π»Π΅Π΄ΠΆΠ°.

    ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ настоящими ΡƒΡ‡Π΅Π½Ρ‹ΠΌΠΈ-ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‰ΠΈΠΊΠ°ΠΌΠΈ , ΠΈ Π΄Π°ΠΆΠ΅ срСди послСднСй Π³Ρ€ΡƒΠΏΠΏΡ‹ лишь Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… ΠΈΠ·ΡƒΡ‡Π°Π»ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ языки ΠΈ компиляторы.

    ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹ люди ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½Ρ‹Π΅: компилируСтся Π»ΠΈ? ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚? Π₯ΠΎΡ€ΠΎΡˆΠΎ, Ρ‚ΠΎΠ³Π΄Π° Π½Π°ΠΆΠΈΠΌΠ°ΠΉ.

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

    А вСдь это Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΠΌΡƒ ΡƒΡ‡ΠΈΡ‚! Π—Π΄Π΅ΡΡŒ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… шагов ΠΈ возмоТностСй ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ:

    • Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния высокого уровня,
    • Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ…,
    • Π¨Π°Π±Π»ΠΎΠ½Ρ‹ программирования,

    , всС ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…, нСсомнСнно, Π±ΡƒΠ΄ΡƒΡ‚ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ Π² ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. И ΡƒΡ‡Π΅Π½Ρ‹ΠΉ-ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‰ΠΈΠΊ. И ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€-программист.

    Π¨Π°Π³ΠΈ ΠΏΠΎ созданию языка программирования

    Π‘ ΠΎΡ‡Π΅Π½ΡŒ высокой Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния созданиС Π½ΠΎΠ²ΠΎΠ³ΠΎ языка программирования Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Ρ‚Ρ€ΠΈ основных этапа.

    • ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ.
    • Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ интСрфСйсный компилятор для исходного ΠΊΠΎΠ΄Π°.
    • Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π°.

    Π˜Ρ‚Π°ΠΊ, Π²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ с Ρ€ΡƒΡ‡ΠΊΠΈ ΠΈ листа Π±ΡƒΠΌΠ°Π³ΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ опрСдСляСтС Π“Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΡƒ вашСго языка. Если Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ°, Ρ‚ΠΎ просто ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎΠ± этом ΠΊΠ°ΠΊ ΠΎ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ΅ чСловСчСского языка (ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ мою ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΎΠ± этом).

    НапримСр, Π½Π° чСловСчСском языкС ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ: Β«ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ состоит ΠΈΠ· артикля, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ Π³Π»Π°Π³ΠΎΠ»Π°Β». Π—Π°Ρ‚Π΅ΠΌ СстСствСнная Π΄Π²ΡƒΡΠΌΡ‹ΡΠ»Π΅Π½Π½ΠΎΡΡ‚ΡŒ языка, Π² основном данная Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΈ чСловСчСской ΠΏΡ€ΠΈΡ€ΠΎΠ΄ΠΎΠΉ, отбрасываСт это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ.

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

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

    Front-End Compiler β€” это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая Π±Π΅Ρ€Π΅Ρ‚ исходный ΠΊΠΎΠ΄ ΠΈ создаСт ΡΡ‚Ρ€Π°Π½Π½ΡƒΡŽ структуру Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом Π΄Π°Π»Π΅Π΅ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅.

    НаконСц, Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° β€” это Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, которая Π±Π΅Ρ€Π΅Ρ‚ всС, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ создано внСшним интСрфСйсом, ΠΈ создаСт ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ.

    ΠŸΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅. Это… ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ? Π˜Ρ‚Π°ΠΊ, всС Π΄Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±Π΅Ρ€Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ ΠΈ создаСт Π½ΠΎΠ²Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ 9.0072 (Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ)?

    Π”Π°. Но Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ машина ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ, часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Target Machine Code . Π‘Ρ‚Ρ€ΠΎΠ³ΠΎ говоря, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ассСмблСрный ΠΊΠΎΠ΄, ΠΎΡ‚Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ ассСмблСру, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ вмСстС с Π»ΠΈΠ½ΠΊΠ΅Ρ€ΠΎΠΌ/Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠΌ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ½ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ Π²Π°ΠΌ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄.

    Однако ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΎΠΎΠ±Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ люди ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΡˆΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· это Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΡ‡Π΅Π½ΡŒ часто Π½ΠΎΠ²Ρ‹Π΅ языки программирования просто пСрСводятся Π½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ языки программирования, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠΆΠ΅ сущСствуСт компилятор.

    НапримСр, ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ языка Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ваш компилятор вмСсто создания машинного ΠΊΠΎΠ΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ C, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ пСрСдаСтся компилятору C. Π­Ρ‚ΠΎ стандартный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΈ ΠΎΠ½ Π½Π΅ ΠΎΡ‚Π½ΠΈΠΌΠ΅Ρ‚ Ρƒ вас Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π±Π°Π²Π½ΠΎΠΉ части написания компилятора: Π²Π°ΠΌ всС Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΅Π³ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ.

    Но Ρ‚ΠΎΠ³Π΄Π° Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ компилятор? Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим.

    Π¨Π°Π³ΠΈ ΠΏΠΎ созданию компилятора для языка программирования

    Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠ³ΠΎ компилятора для слоТного языка программирования β€” адская Π·Π°Π΄Π°Ρ‡Π°. НуТна большая ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… спСциалистов.

    НапримСр, для компилятора FORTRAN 1 ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ ΠΎΠΊΠΎΠ»ΠΎ 3 Π»Π΅Ρ‚. Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ для Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… вычислСний, язык FORTRAN ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈΠ³Ρ€Ρ‹ Π² этой области ΠΈ Π΄ΠΎ сих ΠΏΠΎΡ€ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. Они ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π»ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стСпСни ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ.

    НСсмотря Π½Π° ΠΏΡƒΠ³Π°ΡŽΡ‰ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, Ρƒ компиляторов всСго 5 основных частСй:

    1. ЛСксичСский Π°Π½Π°Π»ΠΈΠ· . РаспознавайтС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова языка, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, константы ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ°.
    2. Π Π°Π·Π±ΠΎΡ€ . ΠŸΠΎΡ‚ΠΎΠΊ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² «понятСн» Π² Ρ‚ΠΎΠΌ смыслС, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€ΠΎΠΉ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π² Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ структурС Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ для описания значСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС исходного ΠΊΠΎΠ΄Π°.
    3. БСмантичСский Π°Π½Π°Π»ΠΈΠ· . ВСроятно, самый нСясный ΠΈΠ· всСх шагов. Π’ основном Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ нСсоотвСтствий Π² Β«Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈΒ» исходного ΠΊΠΎΠ΄Π° (Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² синтаксисС). ЖСсткий.
    4. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ . НСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, насколько Ρ…ΠΎΡ€ΠΎΡˆ исходный ΠΊΠΎΠ΄ Π΄ΠΎ компиляции, Π΅ΡΡ‚ΡŒ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ Π½Π° Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠ΅ ΡƒΡ€ΠΎΠ²Π½ΠΈ кодирования (Π΄ΠΎ машинного ΠΊΠΎΠ΄Π°) ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ. Π’Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ оптимизация памяти ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ оптимизация энСргопотрСблСния. И, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, оптимизация Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния.
    5. ГСнСрация ΠΊΠΎΠ΄Π° . ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Π°Ρ вСрсия исходного ΠΊΠΎΠ΄Π°, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, прСобразуСтся Π² исполняСмый ΠΊΠΎΠ΄.

    НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ эти ΠΏΡΡ‚ΡŒ шагов ΠΏΠΎ созданию компилятора Π½Π΅ измСнились Π·Π° нСсколько дСсятилСтий, ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ врСмя, Π·Π°Ρ‚Ρ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ…, сильно измСнились.

    ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ компилятор для FORTRAN создавался с 1954 ΠΏΠΎ 1957 Π³ΠΎΠ΄. Π’ Ρ‚ΠΎ врСмя всС шаги, ΠΊΡ€ΠΎΠΌΠ΅ сСмантичСского Π°Π½Π°Π»ΠΈΠ·Π°, Π±Ρ‹Π»ΠΈ ΠΎΡ‡Π΅Π½ΡŒ слоТными, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΡƒΡˆΠ»ΠΎ 3 Π³ΠΎΠ΄Π°.

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

    БСгодня ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ компилятор, Π² основном сосрСдоточСны Π½Π° шагС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ стало Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ Π²Π°ΠΆΠ½Ρ‹ΠΌ, особСнно учитывая большой прогрСсс Π² области Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ обСспСчСния. Π¨Π°Π³ΠΈ сСмантичСского Π°Π½Π°Π»ΠΈΠ·Π° Ρ‚Π°ΠΊΠΆΠ΅ достаточно слоТны, хотя ΠΈ Π½Π΅ Ρ‚Π°ΠΊ сильно, ΠΊΠ°ΠΊ оптимизация.

    Рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ шаг.

    ЛСксичСский Π°Π½Π°Π»ΠΈΠ·

    Π­Ρ‚ΠΎΡ‚ шаг начинаСтся нСпосрСдствСнно с Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ.

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

     ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°: [Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅";"]*
    Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅: присваиваниС
    присваиваниС : Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ "=" опСрация
    опСрация: пСрСмСнная ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ пСрСмСнная
    ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€: "+" | "-" | "*" | "/"
    пСрСмСнная: "1" | "2" | "3" | "4" | "5"
               | "6" | "7" | "8" | "9" | "0"
    Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: "L" | "О" 

    Π­Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΎ ΠΎΠ½ ΠΏΠΎΠ»Π΅Π·Π΅Π½ для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΡƒ ΠΊΠ°ΠΊ:

    ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° состоит ΠΈΠ· нуля ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ , Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ слСдуСт Ρ‚ΠΎΡ‡ΠΊΠ° с запятой (Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ «ноль ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅Β» Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ находится Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½ΠΈΡ…). Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠŸΡ€ΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ΠΌ . НазначСниС выполняСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ , Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт Π·Π½Π°ΠΊ Π Π°Π²Π½ΠΎ , Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ . ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ выполняСтся ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ , Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ слСдуСт ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ , Π·Π°Ρ‚Π΅ΠΌ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ символом ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²: Β«+Β», Β«-Β», Β«*Β», Β«/Β» (символы Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚ΠΎΠΊΠ΅Π½Π°ΠΌΠΈ). ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ символом ΠΈΠ· дСсяти Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² (Π΄Π΅ΡΡΡ‚ΡŒ Ρ†ΠΈΡ„Ρ€). Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ символ Β«LΒ», Π»ΠΈΠ±ΠΎ символ Β«OΒ».

    Если Π²Ρ‹ сСйчас ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ΡΡŒ всСго Π½Π° ΠΎΠ΄Π½Ρƒ ΠΌΠΈΠ½ΡƒΡ‚Ρƒ ΠΈ ​​подумаСтС, Ρ‚ΠΎ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой Π³Π»ΡƒΠΏΠΎΠΉ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ слоТСний, Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠΉ, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя малСнькими Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами (ΠΎΡ‚ 0 Π΄ΠΎ 9).Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹). ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пустой, Π° Ссли это Π½Π΅ Ρ‚Π°ΠΊ, Ρ‚ΠΎ элСмСнты Π² Π½Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой. Π”Π°, ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π»ΠΈΠ±ΠΎ Β«LΒ», Π»ΠΈΠ±ΠΎ Β«OΒ».

    Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ «исходный ΠΊΠΎΠ΄Β» ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ

    .

     О = 2 + 3;
    Π› = 5*2;
    … 

    Он Ρ‚ΡƒΠΏΠΎΠΉ ΠΈ с Π½ΠΈΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ сдСлаСшь. Но я ΠΌΠΎΠ³Ρƒ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ шаг лСксичСского Π°Π½Π°Π»ΠΈΠ·Π°! Π’Π°Ρˆ лСксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ просматриваСт исходный ΠΊΠΎΠ΄ ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ вмСстС с Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠΎΠΌ Π² соотвСтствии с Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΎΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ лСксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° для 2-Ρ… строк Π²Ρ‹ΡˆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚:

     "О" - Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
    "2" - Π²Π°Ρ€
    "+" - ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€
    "3" - Π²Π°Ρ€
    "Π›" - Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
    "5" - Π²Π°Ρ€
    "*" - ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€
    "2" - Π²Π°Ρ€ 

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

    Π Π°Π·Π±ΠΎΡ€

    ΠŸΠ°Ρ€ΡΠ΅Ρ€ Π²ΠΎΠ·ΡŒΠΌΠ΅Ρ‚ список Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² (Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ шага) ΠΈ создаст Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡƒΡŽ структуру, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΡƒΡŽ для описания «значСния» исходного ΠΊΠΎΠ΄Π°. Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ (Π³Π»ΡƒΠΏΡ‹Π΅ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ) Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

    Π‘ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Ρ€Π΅Π²ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. ΠŸΡ€ΠΎΡΡ‚ΠΎΠ³ΠΎ знания Π»ΠΈΡΡ‚ΡŒΠ΅Π² Π΄Π΅Ρ€Π΅Π²Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ достаточно для ΠΎΠ±Ρ‰Π΅ΠΉ Ρ†Π΅Π»ΠΈ компиляции исходного ΠΊΠΎΠ΄Π°. Π’ любом случаС, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ парсСр ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ хранят Π² памяти фактичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ.

    БСмантичСский Π°Π½Π°Π»ΠΈΠ·

    Если Π²Ρ‹ строитС язык со статичСскими Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ нюансами, Ρ‚ΠΎ Π½Π° этом шагС Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ глупостСй. Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ являСтся программистом!

    Π­Ρ‚ΠΎΡ‚ шаг ΠΎΡ‡Π΅Π½ΡŒ слоТСн, особСнно Ссли Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ привязкС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° Π½Π° Python.

     ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ foo(foo):
        Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ„Ρƒ + Ρ„Ρƒ
    Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = 5
    print(foo(val)) # >> 10
    Π·Π°Ρ‰ΠΈΡ‚Π° foo2 (foo2):
        Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ foo + foo2
    Ρ„Ρƒ = Π²Π°Π»
    print(foo2(7)) # >> 12 

    Π­Ρ‚ΠΎ явно Π½Π΅Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΊΠΎΠ΄ . Но Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим Π½Π° это Π±ΠΎΠ»Π΅Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

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

    БвязываниС

    β€” это присвоСниС ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ значСния (5, 7 ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ всСго Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ) ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ ( foo , val , foo2 ) Π² соотвСтствии с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ. БСмантичСский Π°Π½Π°Π»ΠΈΠ· Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ссли Π²Ρ‹ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π°ΠΏΡƒΡ‚Π°Π»ΠΈ.

    ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ

    Π­Ρ‚ΠΎΡ‚ шаг Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ тСкста послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ Π±Ρ‹Π» написан ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ.

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

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

    Π’ этой Ρ‚Π΅ΠΌΠ΅ слСдуСт особо ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… .

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

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

    ПослСдний шаг, Π½Π΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ CodeGen, Π² настоящСС врСмя Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ автоматизируСтся. На самом Π΄Π΅Π»Π΅, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΈΠ· Π΄Π΅Ρ€Π΅Π²Π° синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ любой ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ язык являСтся своСго Ρ€ΠΎΠ΄Π° Ρ€Π΅ΡˆΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.

    Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ потрСбности ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½Π½ΠΎΠ²Π°Ρ†ΠΈΠΈ Π² вашСм компиляторС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ заставят вас ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ собствСнный Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π°. Π§Π°Ρ‰Π΅ всСго Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚Π΅ Π΄Π΅Ρ€Π΅Π²ΠΎ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° Π»ΠΈΠ±ΠΎ Π² ΠΊΠΎΠ΄ ассСмблСра, Π»ΠΈΠ±ΠΎ Π² ΠΊΠΎΠ΄ C, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ компилятора C.

    Π§Ρ‚ΠΎ дальшС

    Когда Π²Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚Π΅ внСшний компилятор ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π°, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅. На GitHub сущСствуСт Π·Π°Π±Π°Π²Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎ созданию компилятора для Lisp Π½Π° всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… языках (см. ссылки Π²Π½ΠΈΠ·Ρƒ).

    По ΠΌΠΎΠ΅ΠΌΡƒ мнСнию, ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ языков ΠΈ компиляторов стоит ΠΏΠΎΡ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΌΡƒ ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‰ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ программисты часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚: языков программирования.

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

    Как ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π² Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ΅, практичСская Ρ‡Π°ΡΡ‚ΡŒ Ρ‚ΠΎΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ пСрвостСпСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ….