Π ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π²Π΅ΡΡΠΈΡ 3.0 Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ½ΠΈΡ Π΅Π·ΠΈΠΊ Nim ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎ Π½ΠΎΠ² ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ ΡΠΎΡΠΌΠ°Ρ NIF (Nim Intermediate Format). Π Π½ΠΎΠ²ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΡΠ΅ΡΠ΅Π½ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°ΡΠΈ, ΡΡΠ΅Π΄ ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»Π½Π°ΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ ΠΈ ΠΎΠΏΡΠΎΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅. ΠΠ°ΡΠ°ΡΠ° Π½Π° ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ Π½Π° Nim 3.0 Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°.
Π‘ΠΏΠΎΡΠ΅Π΄ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° NIF, ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π° Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΡΠΌΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄Π° ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ½ΠΎ Π΄ΡΡΠ²ΠΎ (AST), ΡΠ°Π·Π΄Π΅Π»ΡΠΉΠΊΠΈ ΠΈΠΌΠ΅ΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π·Π° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΠΈΠΌΠ΅Π½Π°. Π’ΠΎΠ²Π° ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π³ΡΠ²ΠΊΠ°Π²ΠΎΡΡ ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ ΠΊΠ»ΡΡΠΎΠ²ΠΈ Π΄ΡΠΌΠΈ ΠΈ ΡΠ»Π΅ΡΠ½ΡΠ²Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΡΠ° Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°.
ΠΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΡΡ Nim 3.0 ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π΅ΡΠ°ΠΏΠ°:
- Nifler β ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Π½Π° Nim Π² NIF, ΠΊΠ°ΡΠΎ ΡΠ΅ Π²Π·Π΅ΠΌΠ°Ρ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
- Nimony β ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅Π½ Π°Π½Π°Π»ΠΈΠ·, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΌΠ°ΠΊΡΠΎΡΠΈ.
- Hexer β ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΊΠΎΠ΄Π°, Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ° ΠΈΠ½Π»Π°ΠΉΠ½ΠΈΠ½Π³ Π½Π° ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΈ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° (ARC/ORC).
- NIFC β Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π·Π° C/C++ Ρ ΠΎΠ³Π»Π΅Π΄ Π½Π° ΠΎΡΠΎΠ±Π΅Π½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ΅Π»Π΅Π²Π°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°.
ΠΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π²ΠΊΠ»ΡΡΠ²Π°Ρ:
- ΠΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅, ΠΊΠΎΠ΅ΡΠΎ ΡΡΠΊΠΎΡΡΠ²Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° ΠΏΡΠΈ ΡΠ°ΡΡΠΈΡΠ½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π°.
- ΠΡΠΊΠ°Π· ΠΎΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠ±ΡΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΈ ΠΈ ΡΠΈΠΏΠΎΠ²Π΅.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠΈΠΊΠ»ΠΈΡΠ½ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅.
- ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ Π·Π° Π΄ΠΆΠ΅Π½Π΅ΡΠΈΡΠΈΡΠ΅ Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ.
- ΠΠΎΡΠ΅ΠΊΡΠΈΡ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π·ΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ, ΠΊΠ°ΡΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π΅Π½ ΠΏΠΎΠ²ΠΈΠΊ Π½Π° Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠΈ.
Π ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΠΎΠ΄ΡΠ΅ΡΡΠ°Π²Π°, ΡΠ΅ NIF Π·Π°ΠΏΠ°Π·Π²Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΏΠΎΠ·ΠΈΡΠΈΠΈΡΠ΅ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ Π² ΠΊΠΎΠ΄Π° (Π½ΠΎΠΌΠ΅ΡΠ° Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈ), ΠΊΠΎΠ΅ΡΠΎ ΡΠ»Π΅ΡΠ½ΡΠ²Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΡΠ° Ρ IDE.
ΠΠ·ΠΈΠΊΡΡ Nim Π΅ Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° Π·Π°Π΄Π°ΡΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΠ°ΡΠΈΡΠ½Π° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΠΈ Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ Ρ ΠΎΠ³Π»Π΅Π΄ Π½Π° Π΅Π·ΠΈΡΠΈ ΠΊΠ°ΡΠΎ Python, Ada ΠΈ Modula. ΠΠ·Ρ
ΠΎΠ΄Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π½Π° Nim ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ° Π²ΡΠ² Π²ΠΈΠ΄ Π½Π° C, C++, Objective-C ΠΈΠ»ΠΈ JavaScript. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡΡ C/C++ ΠΊΠΎΠ΄ ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ° Π² ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π½Π°Π»ΠΈΡΠ΅Π½ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ (clang, gcc, icc, Visual C++), ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΠΎΡΡΠΈΠ³Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ, Π±Π»ΠΈΠ·ΠΊΠ° Π΄ΠΎ C, Π°ΠΊΠΎ Π½Π΅ ΡΠ΅ Π²Π·Π΅ΠΌΠ°Ρ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΡΠ°Π·Ρ
ΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° garbage collector. ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° Python, Π² Nim Π·Π° ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΎΡΡΡΡΠΏΠΈ. ΠΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΌΠ΅ΡΠ°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ Π΅Π·ΠΈΡΠΈ (DSL). ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΏΠΎΠ΄ MIT Π»ΠΈΡΠ΅Π½Π·.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
