Π ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°Ρ Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅. ΠΡΠΊΠ°Ρ Π΄Π° ΡΡΠ·Π΄Π°ΠΌ, ΠΏΠΎ ΠΌΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅, Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉ-ΠΏΡΠΎΡΡΠΈΡ, Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π΅Π½ ΠΈ ΡΠ΄ΠΎΠ±Π΅Π½ Π΅Π·ΠΈΠΊ.
Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΠΈΡΠΊΠ°ΠΌ Π΄Π° ΠΏΠΎΠ΄ΡΠ΅ΡΡΠ°Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ Π΅ΡΠ°ΠΏΠΈ ΠΎΡ ΠΌΠΎΡΡΠ° ΡΠ°Π±ΠΎΡΠ° ΠΈ ΠΊΠ°ΡΠΎ Π½Π°ΡΠ°Π»ΠΎ Π΄Π° ΠΎΠΏΠΈΡΠ° ΡΡΠ·Π΄Π°Π΄Π΅Π½Π°ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π½Π° Π΅Π·ΠΈΠΊΠ° ΠΈ ΠΏΡΡΠ²Π°ΡΠ° ΠΌΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, Π²ΡΡΡ
Ρ ΠΊΠΎΡΡΠΎ ΡΠ°Π±ΠΎΡΡ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ°.
ΠΠΎΠ·Π²ΠΎΠ»Π΅ΡΠ΅ ΠΌΠΈ Π΄Π° ΠΊΠ°ΠΆΠ° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ, ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Ρ
ΡΠ΅Π»ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π° Free Pascal, Π·Π°ΡΠΎΡΠΎ... ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ Π²ΡΡΡ
Ρ Π½Π΅Π³ΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΈ Π·Π° ΠΎΠ³ΡΠΎΠΌΠ΅Π½ Π±ΡΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ, Π° ΡΠ°ΠΌΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ ΠΏΡΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π΄Π²ΠΎΠΈΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ (ΡΡΠ±ΠΈΡΠ°ΠΌ Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ O2 ΡΠ»Π°Π³).
ΠΠ·ΠΈΠΊΠΎΠ²Π° ΡΡΠ΅Π΄Π° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅
ΠΡΠ΅Π΄ΠΈ Π²ΡΠΈΡΠΊΠΎ ΡΠΈ ΡΡΡΡΠ²Π° Π΄Π° ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° Π²ΠΈΡΡΡΠ°Π»Π½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π°, ΠΊΠΎΡΡΠΎ ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° Π½Π°ΠΏΠΈΡΠ°, Π·Π° Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌ Π±ΡΠ΄Π΅ΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΌΠΎΡ Π΅Π·ΠΈΠΊ. Π Π΅ΡΠΈΡ Π΄Π° Π²Π½Π΅Π΄ΡΡ ΡΡΠ΅ΠΊΠΎΠ²Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°, ΠΌΠΎΠΆΠ΅ Π±ΠΈ, Π·Π°ΡΠΎΡΠΎ ΡΠΎΠ²Π° Π±Π΅ΡΠ΅ Π½Π°ΠΉ-Π»Π΅ΡΠ½ΠΈΡΡ Π½Π°ΡΠΈΠ½. ΠΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡ Π½ΠΈΡΠΎ Π΅Π΄Π½Π° Π½ΠΎΡΠΌΠ°Π»Π½Π° ΡΡΠ°ΡΠΈΡ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π° Π½Π°ΠΏΡΠ°Π²Ρ ΡΠΎΠ²Π° Π½Π° ΡΡΡΠΊΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Ρ Ρ Π°Π½Π³Π»ΠΎΠ΅Π·ΠΈΡΠ½ΠΈΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π», ΡΠ΅Π΄Π½Π°Ρ Π΄Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°ΠΌ ΠΈ Π½Π°ΠΏΠΈΡΠ° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΡ ΡΠΈ Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Ρ ΠΌΠΎΠΈΡΠ΅ βΠ½Π°ΠΏΡΠ΅Π΄Π½Π°Π»ΠΈβ ΠΈΠ΄Π΅ΠΈ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎ ΡΠΎΠ·ΠΈ Π²ΡΠΏΡΠΎΡ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΡΠ΅ΠΊΠ°
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ Π² Π³ΠΎΡΠ½Π°ΡΠ° ΡΠ°ΡΡ Π½Π° VM Π΅ ΡΡΠ΅ΠΊΡΡ. Π ΠΌΠΎΡΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±ΠΎΡΠΈ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅. ΠΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΠ²Π° Π΅ ΠΏΡΠΎΡΡ ΠΌΠ°ΡΠΈΠ² ΠΎΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π·Π° ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π½Π° Π²ΡΡΡ
Π° Π½Π° ΡΡΠ΅ΠΊΠ°.
ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°, ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° ΠΌΠ°ΡΠΈΠ² ΠΎΡ 256 Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ°. ΠΠΊΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΡΠ΅ ΠΈΠ·Π±ΡΡΠ°Ρ Π² ΡΡΠ΅ΠΊΠ°, Π½Π΅Π³ΠΎΠ²ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π° ΡΡΡ ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ 256 Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ°. Π‘ΡΠΎΡΠ²Π΅ΡΠ½ΠΎ, ΠΏΡΠΈ ΠΏΡΠ΅ΠΌΠ°Ρ
Π²Π°Π½Π΅ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ ΠΎΡ ΡΡΠ΅ΠΊΠ°, Π½Π΅Π³ΠΎΠ²ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ΅ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°.
VM ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΡΠ΅ΠΊΠ°:
- ΠΡΠ½ΠΎΠ²Π΅Π½ ΡΡΠ΅ΠΊ.
- Π‘ΡΠ΅ΠΊ Π·Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΡΠΊΠΈ Π·Π° Π²ΡΡΡΠ°Π½Π΅.
- Π‘ΡΠ΅ΠΊ Π·Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° Π±ΠΎΠΊΠ»ΡΠΊ.
- ΠΠΏΠΈΡΠ°ΠΉΡΠ΅/ΡΠ»ΠΎΠ²Π΅ΡΠ΅/Π½Π°ΠΊΡΠ°Ρ Π±Π»ΠΎΠΊΠΈΡΠ°ΠΉΡΠ΅ ΡΡΠ΅ΠΊΠ° Π½Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠ°.
ΠΠΎΠ½ΡΡΠ°Π½ΡΠΈ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ
Π’ΠΎΠ·ΠΈ Π΅ ΠΏΡΠΎΡΡ. ΠΠΎΠ½ΡΡΠ°Π½ΡΠΈΡΠ΅ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ Π² ΠΎΡΠ΄Π΅Π»Π΅Π½ ΠΌΠ°Π»ΡΠΊ ΠΊΠΎΠ΄ ΠΈ ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΈ Π² Π±ΡΠ΄Π΅ΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅Π· ΡΡΠ°ΡΠΈΡΠ½ΠΈ Π°Π΄ΡΠ΅ΡΠΈ. ΠΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ ΡΠ° ΠΌΠ°ΡΠΈΠ² ΠΎΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΡΠ°Π·ΠΌΠ΅Ρ, Π΄ΠΎΡΡΡΠΏΡΡ Π΄ΠΎ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΠΊΠ»Π΅ΡΠΊΠΈ ΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡ - Ρ.Π΅. ΡΡΠ°ΡΠΈΡΠ΅Π½ Π°Π΄ΡΠ΅Ρ. ΠΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·Π±ΡΡΠ°Π½ΠΈ Π² Π³ΠΎΡΠ½Π°ΡΠ° ΡΠ°ΡΡ Π½Π° ΡΡΠ΅ΠΊΠ° ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΠ΅Π½ΠΈ ΠΎΡ ΡΠ°ΠΌ. ΠΡΡΡΠ½ΠΎΡΡ, Π·Π°ΡΠΎΡΠΎ ΠΠΎΠΊΠ°ΡΠΎ Π½Π°ΡΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΏΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΊΡΠΌ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π²ΡΠ² VM ΠΏΠ°ΠΌΠ΅ΡΡΠ°, Π΅Π·ΠΈΠΊΡΡ Π΅ Π΄ΠΎΠΌΠΈΠ½ΠΈΡΠ°Π½ ΠΎΡ ΡΠ°Π±ΠΎΡΠ° Ρ Π½Π΅ΡΠ²Π½ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ.
Π‘ΡΠ±ΠΈΡΠ°Ρ Π½Π° Π±ΠΎΠΊΠ»ΡΠΊ
Π ΠΌΠΎΡΡΠ° Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° Π΅ ΠΏΠΎΠ»ΡΠ°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ. Π’Π΅Π·ΠΈ. ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ ΡΠ°ΠΌ ΡΠ΅ΡΠ°Π²Π° ΠΊΠΎΠ³Π° Π΄Π° ΡΠ΅ ΠΎΠ±Π°Π΄ΠΈ Π½Π° ΡΡΠ±ΠΈΡΠ°ΡΠ° Π½Π° ΠΎΡΠΏΠ°Π΄ΡΡΠΈ. ΠΠ΅ ΡΠ°Π±ΠΎΡΠΈ Ρ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ Π±ΡΠΎΡΡ Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, ΠΊΠ°ΠΊΡΠΎ Π² Python, Perl, Ruby, Lua ΠΈ Π΄Ρ. Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ° ΡΠ΅ ΡΡΠ΅Π· ΠΌΠ°ΡΠΊΠ΅ΡΠ½Π° ΡΠΈΡΡΠ΅ΠΌΠ°. Π’Π΅Π·ΠΈ. ΠΊΠΎΠ³Π°ΡΠΎ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Π° Π²ΡΠ΅ΠΌΠ΅Π½Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ, ΡΠΊΠ°Π·Π°ΡΠ΅Π» ΠΊΡΠΌ ΡΠ°Π·ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡ ΡΠ΅ Π΄ΠΎΠ±Π°Π²Ρ ΠΊΡΠΌ ΡΡΠ΅ΠΊΠ° Π½Π° ΡΡΠ±ΠΈΡΠ°ΡΠ° Π½Π° ΠΎΡΠΏΠ°Π΄ΡΡΠΈ. Π Π±ΡΠ΄Π΅ΡΠ΅ ΠΊΠΎΠ»Π΅ΠΊΡΠΎΡΡΡ Π±ΡΡΠ·ΠΎ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· Π²Π΅ΡΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈΡ ΡΠΏΠΈΡΡΠΊ Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ.
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅ try/catch/finally
ΠΠ°ΠΊΡΠΎ Π²ΡΠ² Π²ΡΠ΅ΠΊΠΈ ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π΅Π½ Π΅Π·ΠΈΠΊ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΅ Π²Π°ΠΆΠ΅Π½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ. Π―Π΄ΡΠΎΡΠΎ Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π° Π΅ ΠΎΠ±Π²ΠΈΡΠΎ Π² Π±Π»ΠΎΠΊ try..catch, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΡΡΠ½Π΅ ΠΊΡΠΌ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄Π° ΡΠ»Π΅Π΄ ΡΠ»Π°Π²ΡΠ½Π΅ Π½Π° ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π· Π½Π°ΡΠΈΡΠΊΠ°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π½Π΅Π³ΠΎ Π² ΡΡΠ΅ΠΊΠ°. Π ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΎΡ ΠΊΠΎΠ΄ try/catch/finally, ΠΊΠ°ΡΠΎ ΠΏΠΎΡΠΎΡΠΈΡΠ΅ Π²Ρ ΠΎΠ΄Π½ΠΈ ΡΠΎΡΠΊΠΈ ΠΏΡΠΈ catch (ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡ Π½Π° ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ) ΠΈ finally/end (ΠΊΡΠ°Ρ Π½Π° Π±Π»ΠΎΠΊΠ°).
ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡ
ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅ Π½Π° Π½ΠΈΠ²ΠΎ VM. Π’ΠΎΠΉ Π΅ Π»Π΅ΡΠ΅Π½ ΠΈ ΡΠ΄ΠΎΠ±Π΅Π½ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅. Π Π°Π±ΠΎΡΠΈ Π±Π΅Π· ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΏΡΠ΅ΠΊΡΡΠ²Π°Π½Π΅, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΊΠΎΠ΄ΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π² Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π½ΠΈΡΠΊΠΈ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΡΠΈ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ.
ΠΡΠ½ΡΠ½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π·Π° Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ
ΠΠ΅Π· ΡΠΎΠ²Π° Π½ΡΠΌΠ° ΠΊΠ°ΠΊ. VM ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° Π² Π΄ΡΡΠ³ΠΈ Π΅Π·ΠΈΡΠΈ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠ°ΡΡ ΠΎΡ ΠΊΠΎΠ΄Π° Π² Mash ΠΈ ΡΠ°ΡΡ ΠΎΡ ΠΊΠΎΠ΄Π° Π½Π° ΡΠΎΠ΄Π½ΠΈΡΠ΅ Π΅Π·ΠΈΡΠΈ, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ Π΄Π° Π³ΠΈ ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ Π² Π΅Π΄Π½ΠΎ.
ΠΡΠ΅Π²ΠΎΠ΄Π°Ρ ΠΎΡ Mash Π΅Π·ΠΈΠΊ Π½Π° Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ ΠΊΡΠΌ Π±Π°ΠΉΡ ΠΊΠΎΠ΄ Π·Π° Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ
ΠΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ Π΅Π·ΠΈΠΊ
ΠΠ° Π΄Π° Π½Π°ΠΏΠΈΡΠ° Π±ΡΡΠ·ΠΎ ΠΏΡΠ΅Π²ΠΎΠ΄Π°Ρ ΠΎΡ ΡΠ»ΠΎΠΆΠ΅Π½ Π΅Π·ΠΈΠΊ Π²ΡΠ² VM ΠΊΠΎΠ΄, ΠΏΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΈΡ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ Π΅Π·ΠΈΠΊ. Π Π΅Π·ΡΠ»ΡΠ°ΡΡΡ Π±Π΅ΡΠ΅ ΡΠΆΠ°ΡΠ½ΠΎ Π·ΡΠ΅Π»ΠΈΡΠ΅ ΠΊΠ°ΡΠΎ Π°ΡΠ΅ΠΌΠ±Π»Π΅Ρ, ΠΊΠΎΠ΅ΡΠΎ Π½ΡΠΌΠ° ΠΎΡΠΎΠ±Π΅Π½ ΡΠΌΠΈΡΡΠ» Π΄Π° ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΡΡΠΊ. Π©Π΅ ΠΊΠ°ΠΆΠ° ΡΠ°ΠΌΠΎ, ΡΠ΅ Π½Π° ΡΠΎΠ²Π° Π½ΠΈΠ²ΠΎ ΡΡΠ°Π½ΡΠ»Π°ΡΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π° ΡΠ΅Ρ Π½ΠΈΡΠ΅ ΡΡΠ°ΡΠΈΡΠ½ΠΈ Π°Π΄ΡΠ΅ΡΠΈ ΠΈ Π°Π΄ΡΠ΅ΡΠΈΡΠ΅ Π½Π° Π²Ρ ΠΎΠ΄Π½ΠΈΡΠ΅ ΡΠΎΡΠΊΠΈ.
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π° ΠΏΡΠ΅Π²ΠΎΠ΄Π°ΡΠ°
ΠΠ΅ ΠΈΠ·Π±ΡΠ°Ρ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠ°ΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π·Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΡΠ΅Π²ΠΎΠ΄Π°ΡΡΡ Π½Π΅ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΎ Π΄ΡΡΠ²ΠΎ, ΠΊΠ°ΠΊΡΠΎ ΠΏΡΠ°Π²ΡΡ Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΏΡΠ΅Π²ΠΎΠ΄Π°ΡΠΈ. Π’ΠΎΠΉ Π³Π»Π΅Π΄Π° ΠΊΡΠΌ Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ°. Π’Π΅Π·ΠΈ. Π°ΠΊΠΎ ΡΠ°ΡΡΡΠ° ΠΎΡ ΠΊΠΎΠ΄Π°, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°, ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°ΡΠΎ βwhile <ΡΡΠ»ΠΎΠ²ΠΈΠ΅>:β, ΡΠΎΠ³Π°Π²Π° Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΠ΅ ΡΠΎΠ²Π° Π΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π½Π° ΡΠΈΠΊΡΠ» while ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½Π° ΠΊΠ°ΡΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π½Π° ΡΠΈΠΊΡΠ» while. ΠΠ΅ΡΠΎ ΠΊΠ°ΡΠΎ ΡΠ»ΠΎΠΆΠ½Π° ΠΊΡΡΠΈΡ.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΎΠ²Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π²ΠΎΠ΄Π°ΡΡΡ Π½Π΅ ΡΠ΅ ΠΎΠΊΠ°Π·Π° ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΠ·. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π»Π΅ΠΊΠΎΡΠ°ΡΠ° Π½Π° Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅ Π΅ ΡΠ²Π΅Π»ΠΈΡΠΈΠ»Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ. ΠΠΎΠ±Π°Π²ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΡΡΡΡΠΊΡΡΡΠΈ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΊΠ°ΡΠ΅ΡΠΎ ΠΌΠΈ ΠΈΠ·ΡΡΠΈΠ½Π°. ΠΡΠ»Π½Π°ΡΠ° OOP ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π±Π΅ΡΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½Π° Π·Π° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ ΡΠ΅Π΄ΠΌΠΈΡΠ°.
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΊΠΎΠ΄Π°
Π’ΡΠΊ, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠΈ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ (ΠΈ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΎ, Π½ΠΎ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ, ΡΠΎΠΌ ΡΠ΅ ΡΡΠΈΠ³Π½Π΅ Π΄ΠΎ Π½Π΅Π³ΠΎ). ΠΠΎΡΠ΅Π³Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΡΡ Π·Π½Π°Π΅ ΡΠ°ΠΌΠΎ ΠΊΠ°ΠΊ Π΄Π° ΠΎΡΡΠ΅ΠΆΠ΅ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΠΊΠΎΠ΄, ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ ΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½ΠΈΡ ΠΎΡ Π°ΡΠ΅ΠΌΠ±Π»ΠΈΡΠ°. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ Ρ Π΅Π΄Π½Π° ΠΈ ΡΡΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΡΡ Ρ Π΅Π΄Π½Π°. Π’ΠΎΠ²Π° Π΅ Π²ΡΠΈΡΠΊΠΎ.
ΠΠ°Ρ Π΅Π·ΠΈΠΊ
ΠΡΠ½ΠΎΠ²Π½ΠΎ ΠΏΠΎΠ½ΡΡΠΈΠ΅ Π·Π° Π΅Π·ΠΈΠΊ
ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΈΠ΄Π΅Ρ Π±Π΅ΡΠ΅ Π΄Π° ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉ-ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈΡΡ ΠΈ ΠΏΡΠΎΡΡ Π΅Π·ΠΈΠΊ. ΠΠΈΡΠ»Ρ, ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° ΡΠ΅ ΡΠΏΡΠ°Π²Ρ Ρ Π³ΡΡΠΌ ΠΈ ΡΡΡΡΡΠΊ ΡΡΡ Π·Π°Π΄Π°ΡΠ°ΡΠ° ΡΠΈ.
ΠΠΎΠ΄ΠΎΠ²ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅, ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΡΠΈΡΠΊΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π² Π΅Π·ΠΈΠΊΠ° ΡΠ΅ ΠΎΡΠ²Π°ΡΡΡ Ρ Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΠ΅. : ΠΈ ΡΠ΅ Π·Π°ΡΠ²Π°ΡΡΡ ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΊΡΠ°ΠΉ.
ΠΡΠΎΡΠ΅Π΄ΡΡΠΈΡΠ΅ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ ΡΠ΅ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°Ρ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ ΠΊΠ°ΡΠΎ proc ΠΈ func. ΠΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅ ΡΠ° ΠΈΠ·Π±ΡΠΎΠ΅Π½ΠΈ Π² ΡΠΊΠΎΠ±ΠΈ. ΠΡΠΈΡΠΊΠΎ Π΅ ΠΊΠ°ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π΄ΡΡΠ³ΠΈ Π΅Π·ΠΈΡΠΈ.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ Π²ΡΡΡΠ°Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΡΡΠ½Π΅ΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΠΎΡΠΈΠ²ΠΊΠ° Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΈΠ·Π»Π΅Π·Π΅ΡΠ΅ ΠΎΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°ΡΠ°/ΡΡΠ½ΠΊΡΠΈΡΡΠ° (Π°ΠΊΠΎ Π΅ ΠΈΠ·Π²ΡΠ½ ΡΠΈΠΊΠ»ΠΈΡΠ΅).
ΠΡΠΈΠΌΠ΅ΡΠ΅Π½ ΠΊΠΎΠ΄:
...
func summ(a, b):
return a + b
end
proc main():
println(summ(inputln(), inputln()))
end
ΠΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½ΠΈ
- Π¦ΠΈΠΊΠ»ΠΈ: for..end, while..end, until..end
- Π£ΡΠ»ΠΎΠ²ΠΈΡ: if.[else..]end, switch..[case..end..][else..]end
- ΠΠ΅ΡΠΎΠ΄ΠΈ: proc <ΠΈΠΌΠ΅>():... ΠΊΡΠ°ΠΉ, func <ΠΈΠΌΠ΅>():... ΠΊΡΠ°ΠΉ
- ΠΡΠΈΠΊΠ΅Ρ & goto: <ΠΈΠΌΠ΅>:, ΡΠΊΠΎΠΊ <ΠΈΠΌΠ΅>
- Enum ΠΈΠ·Π±ΡΠΎΡΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΈ ΠΌΠ°ΡΠΈΠ²ΠΈ.
ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ
ΠΡΠ΅Π²ΠΎΠ΄Π°ΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΈΠ»ΠΈ Π°ΠΊΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ Π½Π°ΠΏΠΈΡΠ΅ var ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π³ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°.
ΠΡΠΈΠΌΠ΅ΡΠΈ Π·Π° ΠΊΠΎΠ΄ΠΎΠ²Π΅:
a ?= 10
b ?= a + 20
var a = 10, b = a + 20
ΠΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠ΅ Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ.
ΠΠΠ
Π, ΡΡΠΈΠ³Π½Π°Ρ ΠΌΠ΅ Π΄ΠΎ Π½Π°ΠΉ-Π²ΠΊΡΡΠ½Π°ΡΠ° ΡΠ΅ΠΌΠ°. Mash ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π²ΡΠΈΡΠΊΠΈ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠΈ Π·Π° ΠΎΠ±Π΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅. Π’Π΅Π·ΠΈ. ΠΊΠ»Π°ΡΠΎΠ²Π΅, Π½Π°ΡΠ»Π΅Π΄ΡΡΠ²ΠΎ, ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΡΠΌ (Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅Π½), Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ½ΡΡΠΎΡΠΏΠ΅ΠΊΡΠΈΡ (ΠΏΡΠ»Π½Π°).
ΠΠ΅Π· ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΡΠΌ, ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ Π΅ ΠΏΡΠΎΡΡΠΎ Π΄Π° Π΄Π°Π΄Π΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π·Π° ΠΊΠΎΠ΄.
ΠΡΠΎΡΡ ΠΊΠ»Π°Ρ ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ Π½Π΅Π³ΠΎ:
uses <bf>
uses <crt>
class MyClass:
var a, b
proc Create, Free
func Summ
end
proc MyClass::Create(a, b):
$a = new(a)
$b = new(b)
end
proc MyClass::Free():
Free($a, $b)
$rem()
end
func MyClass::Summ():
return $a + $b
end
proc main():
x ?= new MyClass(10, 20)
println(x->Summ())
x->Free()
end
Π©Π΅ ΠΈΠ·Π²Π΅Π΄Π΅: 30.
ΠΠ°ΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΡΠΌ:
uses <bf>
uses <crt>
class MyClass:
var a, b
proc Create, Free
func Summ
end
proc MyClass::Create(a, b):
$a = new(a)
$b = new(b)
end
proc MyClass::Free():
Free($a, $b)
$rem()
end
func MyClass::Summ():
return $a + $b
end
class MyNewClass(MyClass):
func Summ
end
func MyNewClass::Summ():
return ($a + $b) * 2
end
proc main():
x ?= new MyNewClass(10, 20)
println(x->Summ())
x->Free()
end
Π©Π΅ ΠΈΠ·Π²Π΅Π΄Π΅: 60.
ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΠΊΠ°ΠΆΠ΅ΡΠ΅ Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈΡ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΡΠΌ? ΠΠ°, ΡΠΎΠ²Π° Π΅ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅!:
uses <bf>
uses <crt>
class MyClass:
var a, b
proc Create, Free
func Summ
end
proc MyClass::Create(a, b):
$a = new(a)
$b = new(b)
end
proc MyClass::Free():
Free($a, $b)
$rem()
end
func MyClass::Summ():
return $a + $b
end
class MyNewClass(MyClass):
func Summ
end
func MyNewClass::Summ():
return ($a + $b) * 2
end
proc main():
x ?= new MyClass(10, 20)
x->Summ ?= MyNewClass::Summ
println(x->Summ())
x->Free()
end
Π©Π΅ ΠΈΠ·Π²Π΅Π΄Π΅: 60.
Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° ΠΎΡΠ΄Π΅Π»ΠΈΠΌ ΠΌΠ°Π»ΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅, Π·Π° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΡΠΎΡΡΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅:
uses <bf>
uses <crt>
class MyClass:
var a, b
end
proc main():
x ?= new MyClass
println(BoolToStr(x->type == MyClass))
x->rem()
println(BoolToStr(typeof(3.14) == typeReal))
end
Π©Π΅ ΠΈΠ·Π²Π΅Π΄Π΅: Π²ΡΡΠ½ΠΎ, Π²ΡΡΠ½ΠΎ.
ΠΡΠ½ΠΎΡΠ½ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈΡΠ΅ Π·Π° ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π°Π½Π΅ ΠΈ ΠΈΠ·ΡΠΈΡΠ½ΠΈΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡΡ ?= ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° ΠΊΠ°ΡΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π» ΠΊΡΠΌ ΡΡΠΎΠΉΠ½ΠΎΡΡ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡΡ = ΠΏΡΠΎΠΌΠ΅Π½Ρ ΡΡΠΎΠΉΠ½ΠΎΡΡ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π» ΠΎΡ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°.
Π ΡΠ΅Π³Π° ΠΌΠ°Π»ΠΊΠΎ Π·Π° ΠΈΠ·ΡΠΈΡΠ½ΠΈΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ. ΠΠΎΠ±Π°Π²ΠΈΡ
Π³ΠΈ ΠΊΡΠΌ Π΅Π·ΠΈΠΊΠ°, Π·Π° Π΄Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ.
@<ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°> β Π²Π·Π΅ΠΌΠ° ΡΠ²Π΅Π½ ΡΠΊΠ°Π·Π°ΡΠ΅Π» ΠΊΡΠΌ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°.
?<ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°> β ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° ΡΡΠ΅Π· ΡΠΊΠ°Π·Π°ΡΠ΅Π».
@= β ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° ΡΡΠ΅Π· ΡΠ²Π΅Π½ ΡΠΊΠ°Π·Π°ΡΠ΅Π» ΠΊΡΠΌ Π½Π΅Ρ.
ΠΡΠΈΠΌΠ΅ΡΠ΅Π½ ΠΊΠΎΠ΄:
uses <bf>
uses <crt>
proc main():
var a = 10, b
b ?= @a
PrintLn(b)
b ?= ?b
PrintLn(b)
b++
PrintLn(a)
InputLn()
end
Π©Π΅ ΠΈΠ·Π²Π΅Π΄Π΅: Π½ΡΠΊΠ°ΠΊΠ²ΠΎ ΡΠΈΡΠ»ΠΎ, 10, 11.
ΠΠΏΠΈΡΠ°ΠΉΡΠ΅.[catch..][finally..]end
ΠΡΠΈΠΌΠ΅ΡΠ΅Π½ ΠΊΠΎΠ΄:
uses <bf>
uses <crt>
proc main():
println("Start")
try:
println("Trying to do something...")
a ?= 10 / 0
catch:
println(getError())
finally:
println("Finally")
end
println("End")
inputln()
end
ΠΠ»Π°Π½ΠΎΠ²Π΅ Π·Π° Π±ΡΠ΄Π΅ΡΠ΅ΡΠΎ
ΠΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°ΠΌ Π΄Π° Π³Π»Π΅Π΄Π°ΠΌ ΠΈ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌ GraalVM & Truffle. ΠΠΎΡΡΠ° ΡΡΠ΅Π΄Π° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½ΡΠΌΠ° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π΅ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½Π° ΡΠ°ΠΌΠΎ Π½Π° Python. ΠΠ°Π΄ΡΠ²Π°ΠΌ ΡΠ΅, ΡΠ΅ ΡΠ΅ ΠΌΠΎΠ³Π° Π΄Π° Π²Π½Π΅Π΄ΡΡ JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ, Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° GraalVM ΠΈΠ»ΠΈ LLVM.
Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅
ΠΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΌΠΈ Π΄Π° ΡΠΈ ΠΈΠ³ΡΠ°Π΅ΡΠ΅ Ρ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ ΠΈ Π΄Π° ΡΠ»Π΅Π΄Π²Π°ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ Π²ΠΈ, ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡ
ΡΠ΅ Π΄ΠΎ ΠΊΡΠ°Ρ, Π°ΠΊΠΎ ΡΡΠ΅ Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com