Нова вСрсия Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Nim 0.20

сС ΡΡŠΡΡ‚ΠΎΡ вСрсия Π½Π° систСмния Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Nim 0.20.0. Π•Π·ΠΈΠΊΡŠΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° статично писанС ΠΈ Π΅ създадСн с ΠΎΠ³Π»Π΅Π΄ Π½Π° Pascal, C++, Python ΠΈ Lisp. Π˜Π·Ρ…ΠΎΠ΄Π½ΠΈΡΡ‚ ΠΊΠΎΠ΄ Π½Π° Nim сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° Π² C, C++ ΠΈΠ»ΠΈ JavaScript прСдставянС. ВпослСдствиС получСният C/C++ ΠΊΠΎΠ΄ сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° Π² изпълним Ρ„Π°ΠΉΠ», ΠΊΠ°Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° всСки Π½Π°Π»ΠΈΡ‡Π΅Π½ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ (clang, gcc, icc, Visual C++), ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° постигнСтС производитСлност, Π±Π»ΠΈΠ·ΠΊΠ° Π΄ΠΎ C, Π°ΠΊΠΎ Π½Π΅ Π²Π·Π΅ΠΌΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° боклукчия. Подобно Π½Π° Python, Nim ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ‚ΡΡ‚ΡŠΠΏΠΈ ΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ сС инструмСнти Π·Π° ΠΌΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π·Π° създаванС Π½Π° спСцифични Π·Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½ Π΅Π·ΠΈΡ†ΠΈ (DSL). Код Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° прСдоставСни ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·Π° Π½Π° MIT.

Π˜Π·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Nim 0.20 ΠΌΠΎΠΆΠ΅ Π΄Π° сС Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°Ρ‚ΠΎ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ Π·Π° ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ стабилно ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ 1.0, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ няколко Π½Π°Ρ€ΡƒΡˆΠ°Π²Π°Ρ‰ΠΈ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚Ρ‚Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡŠΡ€Π²ΠΈΡ стабилСн ΠΊΠ»ΠΎΠ½, ΠΊΠΎΠΉΡ‚ΠΎ Π°Π½Π³Π°ΠΆΠΈΡ€Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π΅Π·ΠΈΠΊΠ°. ВСрсия 1.0 сС Ρ€Π΅ΠΊΠ»Π°ΠΌΠΈΡ€Π° ΠΊΠ°Ρ‚ΠΎ стабилна, Π΄ΡŠΠ»Π³ΠΎΡΡ€ΠΎΡ‡Π½Π° вСрсия Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°, която Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°Π½ΠΎ Ρ‰Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΠΎΠ±Ρ€Π°Ρ‚Π½Π° ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ Π² стабилизираната част Π½Π° Π΅Π·ΠΈΠΊΠ°. ΠžΡ‚Π΄Π΅Π»Π½ΠΎ Π² ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° Ρ‰Π΅ бъдС Π½Π°Π»ΠΈΡ‡Π΅Π½ ΠΈ СкспСримСнталСн Ρ€Π΅ΠΆΠΈΠΌ, Π² ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ сС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚ Π½ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π½Π°Ρ€ΡƒΡˆΠ°Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½Π°Ρ‚Π° ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚.

ΠžΡ‚ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ Π² Nim 0.20, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ΄Ρ‡Π΅Ρ€Ρ‚Π°Π΅ΠΌ:

  • β€žΠΠ΅β€œ сСга Π²ΠΈΠ½Π°Π³ΠΈ Π΅ ΡƒΠ½Π°Ρ€Π΅Π½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, Ρ‚.Π΅. ΠΈΠ·Ρ€Π°Π·ΠΈ ΠΊΠ°Ρ‚ΠΎ "assert(not a)" Π²Π΅Ρ‡Π΅ са Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΠΈ ΠΈ Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ само "assert not a";
  • Активирани са Ρ‚Π²ΡŠΡ€Π΄ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π·Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π½Π° Ρ†Π΅Π»ΠΈ числа ΠΈ Ρ€Π΅Π°Π»Π½ΠΈ числа ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅, Ρ‚.Π΅. ΠΈΠ·Ρ€Π°Π·ΡŠΡ‚ "const b = uint16(-1)" сСга Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π³Ρ€Π΅ΡˆΠΊΠ°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ -1 Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° Π² Ρ‚ΠΈΠΏ цяло число Π±Π΅Π· Π·Π½Π°ΠΊ;
  • ΠžΡΠΈΠ³ΡƒΡ€Π΅Π½ΠΎ Π΅ Ρ€Π°Π·ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ Π·Π° константи ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° Ρ†ΠΈΠΊΡŠΠ».
    НапримСр, Π²Π΅Ρ‡Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ присвоявания ΠΊΠ°Ρ‚ΠΎ 'const (d, e) = (7, "осСм")' ΠΈ "Π·Π° (x, y) Π² f";

  • ΠžΡΠΈΠ³ΡƒΡ€Π΅Π½Π° инициализация ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ…Π΅ΡˆΠΎΠ²Π΅ ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ. НапримСр, слСд Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° "var s: HashSet[int]" ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ "s.incl(5)", ΠΊΠΎΠ΅Ρ‚ΠΎ водСшС Π΄ΠΎ Π³Ρ€Π΅ΡˆΠΊΠ°;
  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° "case" ΠΈ индСкса Π½Π° масива извън Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅;
  • Π—Π°Π±Ρ€Π°Π½Π΅Π½ΠΎ Π΅ Π΄Π° сС промСня Π΄ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π° Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° итСрация.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€