πŸ”΄ ΠšΡ€Π°ΡΠ½Π°Ρ Π΄ΠΎΡ€ΠΎΠΆΠΊΠ°

πŸ”΄ ΠšΡ€Π°ΡΠ½Π°Ρ Π΄ΠΎΡ€ΠΎΠΆΠΊΠ° #

Если Π²Ρ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ этот Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” Π·Π½Π°Ρ‡ΠΈΡ‚, Π²Π°ΠΌ прСдстоит Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° C++ компилятор своСго языка программирования с Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ LLVM IR ΠΈ компиляциСй Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ LLVM

  • ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ исходный ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ создаёт исполняСмый Ρ„Π°ΠΉΠ»
  • Π’Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ компилятор Π½Π° C++ с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ инфраструктуры LLVM
  • ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ исполняСмый Ρ„Π°ΠΉΠ» с ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ

Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΏΠΎΠ΄ процСссоры с Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ AMD64 (x86-64) для ОБ GNU/Linux. ДопускаСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ компиляции.

НиТС описаны ΠΎΠ±Ρ‰ΠΈΠ΅ трСбования ΠΊ этому Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρƒ.

ВСрсия ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ для LLVM #

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ LLVM, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, LLVM 22
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ LLVM Kaleidoscope ΠΊΠ°ΠΊ основной ΠΏΡ€ΠΈΠΌΠ΅Ρ€: https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/LangImpl07.html

Π•ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΎΡ‚ прСподаватСля:

  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ·ΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° гСнСрация ΠΊΠΎΠ΄Π° для LLVM: https://sourcecraft.dev/sshambir-public/pstigercpp
  • Π‘Ρ‚Π°Ρ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ (2017-2018) с ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ, Π½ΠΎ пСрСуслоТнённым ΠΊΠΎΠ΄ΠΎΠΌ: https://github.com/sergey-shambir/pythonishc

Π’Π°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Π²Π°ΠΉΡ‚Π΅ вопросы ИИ-модСлям. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, доступных Ρ‡Π΅Ρ€Π΅Π· Ρ‡Π°Ρ‚:

Π€Π°Π·Ρ‹ компиляции #

Начиная со 2-ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°Π·Ρ‹ компиляции:

ЀазаБпособ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ
ЛСксичСский анализРукописный Ρ€Π°Π·Π±ΠΎΡ€ Ρ‚ΠΎΠΊΠ΅Π½Π° Π·Π° Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠΌ ΠΏΠΎ запросу парсСра
БинтаксичСский анализРСкурсивный спуск с построСниСм AST ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
БСмантичСский Π°Π½Π°Π»ΠΈΠ·ΠžΠ±Ρ…ΠΎΠ΄Ρ‹ AST с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ шаблона Visitor для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ ΠΈ заполнСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² AST
ГСнСрация LLVM IRΠžΠ±Ρ…ΠΎΠ΄ AST с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ шаблона Visitor для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ списка инструкций
ГСнСрация машинного кодаЗапуск ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° LLVM для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ исполняСмого Ρ„Π°ΠΉΠ»Π° с ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ

ВрСбования ΠΊ языку программирования #

НиТС пСрСчислСн список эпиков ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ языка с трСмя ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ:

  1. ΠžΡ†Π΅Π½ΠΊΠ° 3 ΠΈ Π²Ρ‹ΡˆΠ΅ β€” функция ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π° Π½Π° ΠΎΡ†Π΅Π½ΠΊΡƒ 3 ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ сдСлана Π²ΠΎ 2-ΠΉ Π»ΠΈΠ±ΠΎ Π² 3-ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ
  2. ΠžΡ†Π΅Π½ΠΊΠ° 4 ΠΈ Π²Ρ‹ΡˆΠ΅ β€” функция ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π° Π½Π° ΠΎΡ†Π΅Π½ΠΊΡƒ 4 ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ сдСлана Π² 4-ΠΉ Π»ΠΈΠ±ΠΎ Π² 5-ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ
  3. ΠžΡ†Π΅Π½ΠΊΠ° 5 β€” функция ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π° Π½Π° ΠΎΡ†Π΅Π½ΠΊΡƒ 5 ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ сдСлана Π² 6-ΠΉ ΠΈΠ»ΠΈ 7-ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ

Π­ΠΏΠΈΠΊ β„–1. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ (ΠΎΡ†Π΅Π½ΠΊΠ° 3 ΠΈ Π²Ρ‹ΡˆΠ΅) #

Π’Ρ‹ Π΄Π΅Π»ΠΈΡ‚Π΅ этот эпик Π½Π° Π΄Π²Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ (2-я ΠΈ 3-я ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ). Бпособ дСлСния Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ сами.

1. Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ трСбования #

Π―Π·Ρ‹ΠΊ программирования Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΈ статичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄Π½Ρƒ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π°

  • Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ главная функция, ΠΊΠ°ΠΊ Π² C/C++
  • Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ основной Π±Π»ΠΎΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠ°ΠΊ Π² Pascal

2. Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… #

Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для своСго языка Ρ‚Ρ€ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹:

  1. Π¦Π΅Π»Ρ‹Π΅ числа, числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΈ строки
  2. Π¦Π΅Π»Ρ‹Π΅ числа, символы ΠΈ строки
  3. Π¦Π΅Π»Ρ‹Π΅ числа, Π±ΡƒΠ»Π΅Π² Ρ‚ΠΈΠΏ ΠΈ строки
  4. Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹, Π±ΡƒΠ»Π΅Π² Ρ‚ΠΈΠΏ ΠΈ строки
  5. Π¦Π΅Π»Ρ‹Π΅ числа со Π·Π½Π°ΠΊΠΎΠΌ, Ρ†Π΅Π»Ρ‹Π΅ числа Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΠΈ строки

Π£Ρ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ строковый ΠΈ Π±ΡƒΠ»Π΅Π² Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… потрСбуСтся Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ лишь Π² 3-ΠΌ эпикС.

3. Π’Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ #

  • Π•ΡΡ‚ΡŒ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ всСх Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…
  • Π•ΡΡ‚ΡŒ срСдства для Π²Ρ‹Π²ΠΎΠ΄Π° Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² всСх Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…
  • МоТно Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ выполняСтся ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ

4. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ числами #

Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ числовыС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ….

  • Π•ΡΡ‚ΡŒ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ числами
  • ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ скобки для измСнСния ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°
  • ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ поддСрТиваСтся Π°ΡΡΠΎΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ

5. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ #

  • МоТно ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅
  • МоТно ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ
  • Описана сСмантика ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, присваиваний ΠΈ областСй видимости

ДопускаСтся Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π° Π΄Π²Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ:

  • измСняСмыС (mutable) β€” это ΠΈ Π΅ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅
  • нСизмСняСмыС (immutable) β€” ΠΈΡ… допускаСтся Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ константами

Π­ΠΏΠΈΠΊ β„–2. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния (ΠΎΡ†Π΅Π½ΠΊΠ° 4 ΠΈ Π²Ρ‹ΡˆΠ΅) #

1. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ #

  • Π•ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΈ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
  • Для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ доступна инструкция return
  • Π‘Π΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ описана β€” Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ значСния

2. ВСтвлСния #

  • Π•ΡΡ‚ΡŒ вСтвлСния, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ if..then..else
  • Π‘Π΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ° Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠΉ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ описана

3. Π¦ΠΈΠΊΠ»Ρ‹ #

  • Π•ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ while
  • Π‘Π΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ° Ρ†ΠΈΠΊΠ»ΠΎΠ² Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ описана

Π­ΠΏΠΈΠΊ β„–3. ЛогичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ строки (ΠΎΡ†Π΅Π½ΠΊΠ° 5) #

1. ЛогичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ #

  • Π•ΡΡ‚ΡŒ логичСскиС Β«ΠΈΒ», Β«ΠΈΠ»ΠΈΒ», Β«Π½Π΅Β»
  • ЛогичСскиС Β«ΠΈΒ», Β«ΠΈΠ»ΠΈΒ» Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΏΠΎ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ схСмС (short-circuit evaluation)
  • Если Π΅ΡΡ‚ΡŒ Π±ΡƒΠ»Π΅Π² Ρ‚ΠΈΠΏ, Ρ‚ΠΎ логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Π½ΠΈΠΌ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с цСлочислСнным Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ….
  • Если Π΅ΡΡ‚ΡŒ Π±ΡƒΠ»Π΅Π² Ρ‚ΠΈΠΏ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΈ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ для Π½Π΅Π³ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, true / false)

2. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ строками #

Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ строковый Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ….

  • Π•ΡΡ‚ΡŒ срСдства для ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ, Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈ измСрСния Π΄Π»ΠΈΠ½Ρ‹ строк
  • Π•ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ доступа ΠΊ элСмСнту строки Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки: text[index]
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ строк
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Unicode, Π° строки ΠΊΠΎΠ΄ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² UTF-8 Π»ΠΈΠ±ΠΎ UTF-16