Нова Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° програмскиот јазик Nim 0.20

сС ΠΎΠ΄Ρ€ΠΆΠ° издавањС Π½Π° систСмски програмски јазик Ним 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 сС:

  • β€žΠΠ΅β€œ сСга Π΅ сСкогаш ΡƒΠ½Π°Ρ€Π΅Π½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, Ρ‚.Π΅. ΠΈΠ·Ρ€Π°Π·ΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠΎ β€žΡ‚Π²Ρ€Π΄Π°ΠΌ (Π½Π΅ Π°)β€œ сСга Π½Π΅ сС Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΈ ΠΈ само β€žΡ‚Π²Ρ€Π΄Π°ΠΌ Π½Π΅ Π°β€œ Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ;
  • ОвозмоТСни сС строги ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π·Π° ΠΊΠΎΠ½Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° Ρ†Π΅Π»ΠΈ ΠΈ Ρ€Π΅Π°Π»Π½ΠΈ Π±Ρ€ΠΎΠ΅Π²ΠΈ Π²ΠΎ Ρ„Π°Π·Π°Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΡ˜Π°, Ρ‚.Π΅. ΠΈΠ·Ρ€Π°Π·ΠΎΡ‚ "const b = uint16(-1)" сСга ќС Ρ€Π΅Π·ΡƒΠ»Ρ‚ΠΈΡ€Π° со Π³Ρ€Π΅ΡˆΠΊΠ°, бидСјќи -1 Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π° Π²ΠΎ Π½Π΅ΠΏΠΎΡ‚ΠΏΠΈΡˆΠ°Π½ Ρ†Π΅Π» Π±Ρ€ΠΎΡ˜;
  • ОбСзбСдСно Π΅ ΠΎΡ‚ΠΏΠ°ΠΊΡƒΠ²Π°ΡšΠ΅ Π½Π° Ρ‚ΠΎΡ€ΠΊΠΈ Π·Π° константи ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° јамка.
    На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сСга ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° користитС Π·Π°Π΄Π°Ρ‡ΠΈ ΠΊΠ°ΠΊΠΎ 'const (d, e) = (7, "eight")" ΠΈ "for (x, y) Π²ΠΎ f";

  • ОбСзбСдСна стандардна ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° Ρ…Π°ΡˆΠΎΠ²ΠΈ ΠΈ Ρ‚Π°Π±Π΅Π»ΠΈ. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ β€žvar s: HashSet[int]β€œ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ вСднаш Π΄Π° ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚Π΅ β€žs.incl(5)β€œ, ΡˆΡ‚ΠΎ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π³Ρ€Π΅ΡˆΠΊΠ°;
  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π·Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈ со ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΡ‚ β€žΡΠ»ΡƒΡ‡Π°Ρ˜β€œ ΠΈ индСксот Π½Π° Π½ΠΈΠ·Π°Ρ‚Π° Π½Π°Π΄Π²ΠΎΡ€ ΠΎΠ΄ Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅;
  • Π—Π°Π±Ρ€Π°Π½Π΅Ρ‚ΠΎ Π΅ ΠΌΠ΅Π½ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π΄ΠΎΠ»ΠΆΠΈΠ½Π°Ρ‚Π° Π½Π° Ρ‚Π°Π±Π΅Π»Π°Ρ‚Π° Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ.

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€