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์—์„œ ์ œ์•ˆ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • "Not"์€ ์ด์ œ ํ•ญ์ƒ ๋‹จํ•ญ ์—ฐ์‚ฐ์ž์ž…๋‹ˆ๋‹ค. ์ด์ œ "assert(not a)"์™€ ๊ฐ™์€ ํ‘œํ˜„์€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ "assert not a"๋งŒ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ์ •์ˆ˜ ๋ฐ ์‹ค์ˆ˜ ๋ณ€ํ™˜์— ๋Œ€ํ•œ ์—„๊ฒฉํ•œ ๊ฒ€์‚ฌ๋ฅผ ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. -16์„ ๋ถ€ํ˜ธ ์—†๋Š” ์ •์ˆ˜ ์œ ํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— "const b = uint1(-1)" ํ‘œํ˜„์‹์€ ์ด์ œ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
  • ์ƒ์ˆ˜ ๋ฐ ๋ฃจํ”„ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ํŠœํ”Œ ์••์ถ• ํ•ด์ œ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด์ œ 'const (d, e) = (7, "eight")" ๋ฐ "for (x, y) in f"์™€ ๊ฐ™์€ ํ• ๋‹น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ•ด์‹œ ๋ฐ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ์ดˆ๊ธฐํ™”๋ฅผ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "var s: HashSet[int]"๋ฅผ ์„ ์–ธํ•œ ํ›„ ์ด์ „์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋˜ "s.incl(5)"์„ ์ฆ‰์‹œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • "case" ์—ฐ์‚ฐ์ž ๋ฐ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ๋ฐฐ์—ด ์ธ๋ฑ์Šค์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์˜ค๋ฅ˜ ์ •๋ณด๊ฐ€ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐ˜๋ณต ์ค‘์— ํ…Œ์ด๋ธ” ๊ธธ์ด๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ๊ธˆ์ง€๋ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€