Flow9 ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์˜คํ”ˆ ์†Œ์Šค

Area9 ํšŒ์‚ฌ ์—ด๋ฆผ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์†Œ์Šค ์ฝ”๋“œ Flow9, ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์„ฑ์— ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค. Flow9 ์–ธ์–ด์˜ ์ฝ”๋“œ๋Š” Linux, iOS, Android, Windows ๋ฐ macOS์šฉ ์‹คํ–‰ ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ HTML5/JavaScript(WebAssembly)์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” Java, D, Lisp, ML ๋ฐ C++์˜ ์†Œ์Šค ํ…์ŠคํŠธ๋กœ ๋ฒˆ์—ญ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ ์ฝ”๋“œ ์—ด๋ ค์žˆ๋‹ค GPLv2์— ๋”ฐ๋ผ ๋ผ์ด์„ผ์Šค๊ฐ€ ๋ถ€์—ฌ๋˜๊ณ  ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” MIT ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ๋ผ์ด์„ผ์Šค๊ฐ€ ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค.

์ด ์–ธ์–ด๋Š” 2010๋…„๋ถ€ํ„ฐ Adobe Flash์— ๋Œ€ํ•œ ๋ณดํŽธ์ ์ด๊ณ  ๋‹ค์ค‘ ํ”Œ๋žซํผ ๋Œ€์•ˆ์œผ๋กœ ๊ฐœ๋ฐœ๋˜์–ด ์™”์Šต๋‹ˆ๋‹ค. Flow9์€ ์›น๊ณผ ๋ฐ์Šคํฌํƒ‘, ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋‘์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ˜„๋Œ€์ ์ธ ๊ทธ๋ž˜ํ”ฝ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ”Œ๋žซํผ์œผ๋กœ ์ž๋ฆฌ์žก๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” ๋งŽ์€ ๋‚ด๋ถ€ Area9 ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ ์›๋ž˜๋Š” Flow๋ผ๊ณ  ๋ถˆ๋ ธ์ง€๋งŒ ์ฝ”๋“œ๋ฅผ ์—ด๊ธฐ ์ „์— ํ†ต๊ณ„ ๋ถ„์„๊ธฐ์™€์˜ ๊ฐ„์„ญ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฆ„์„ Flow9๋กœ ๋ฐ”๊พธ๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ๋ฆ„ ํŽ˜์ด์Šค๋ถ์—์„œ.

Flow9์€ C ์–ธ์–ด์™€ ์œ ์‚ฌํ•œ ์นœ์ˆ™ํ•œ ๊ตฌ๋ฌธ์„ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค(์ฐธ์กฐ: ๋น„๊ต Flow9 ๋ฐ JavaScript์˜ ์ฝ”๋“œ), ์Šคํƒ€์ผ์˜ ๊ธฐ๋Šฅ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋„๊ตฌ ํฌํ•จ ML ะธ ๊ฐ€๋Šฅ์„ฑ ํŠน์ • ๋ฌธ์ œ๋ฅผ ์ตœ๋Œ€ํ•œ ํšจ์œจ์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์ดˆ์ ์„ ๋งž์ถ˜ ๋„๋ฉ”์ธ๋ณ„ ์–ธ์–ด(Flow9์˜ ๊ฒฝ์šฐ ์ธํ„ฐํŽ˜์ด์Šค ๊ฐœ๋ฐœ) Flow9์€ ์—„๊ฒฉํ•œ ํƒ€์ดํ•‘์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์ง€๋งŒ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ž๋™ ์œ ํ˜• ๊ฐ์ง€์™€ ํ•จ๊ป˜ ๋™์  ํƒ€์ดํ•‘์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ. ๋‹คํ˜•์„ฑ(ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๊ฐ€ ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ), ํ•˜์œ„ ์œ ํ˜•, ๋ชจ๋“ˆ, ๋ฐฐ์—ด, ํ•ด์‹œ, ๋žŒ๋‹ค ํ‘œํ˜„์‹์„ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค.

๋ณ„๋„์˜ ํฌํŒ…์ด๋‚˜ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์ด ๋™์ผํ•œ ์ฝ”๋“œ๋ฅผ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์— ๋งž๊ฒŒ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ธŒ๋ผ์šฐ์ €, ํ„ฐ์น˜ ์Šคํฌ๋ฆฐ์ด ์žˆ๋Š” ๋ชจ๋ฐ”์ผ ์žฅ์น˜, ํ‚ค๋ณด๋“œ์™€ ๋งˆ์šฐ์Šค๊ฐ€ ์žˆ๋Š” ๋ฐ์Šคํฌํ†ฑ ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” Google Material Design ๊ฐœ๋…์— ๋”ฐ๋ผ ์„ค๊ณ„๋œ React ์Šคํƒ€์ผ์˜ ์ธํ„ฐํŽ˜์ด์Šค ์š”์†Œ๊ฐ€ ํฌํ•จ๋œ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์ง„ ๊ตฌ์„ฑ ์š”์†Œ ์ปฌ๋ ‰์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋””์ž์ธ์€ ํ”ฝ์…€ ์ˆ˜์ค€๊นŒ์ง€ ์ œ์–ด๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํƒ€์ผ์„ ์„ค์ •ํ•˜๋ ค๋ฉด ํ•˜๋‚˜๋Š” ์ˆ˜ ํ‘œ์ค€ CSS ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. C++๋กœ ์ปดํŒŒ์ผํ•  ๋•Œ Linux, macOS ๋ฐ Windows์—์„œ ๋ Œ๋”๋งํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ ๋œ OpenGL์ด ํฌํ•จ๋œ Qt ๊ธฐ๋ฐ˜ ๋ฐฑ์—”๋“œ, Java - JavaFX๋กœ ์ปดํŒŒ์ผ๋œ ๊ฒฝ์šฐ.

ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์ž‘์„ฑ๋œ ์ฝ”๋“œ์™€ ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ ์‰ฝ๊ฒŒ ๋นŒ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ธ์–ด๋Š” ๋งค์šฐ ๊ฐ„๊ฒฐํ•˜๋ฉฐ ํ‚ค์›Œ๋“œ๊ฐ€ 25๊ฐœ๋งŒ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ๋ฌธ๋ฒ• ์„ค๋ช…์€ ์ฃผ์„๊ณผ ํ•จ๊ป˜ 255์ค„์— ๋งž์Šต๋‹ˆ๋‹ค. Flow9์—์„œ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด HTML+CSS+JavaScript, C#, Swift ๋˜๋Š” Java๋ณด๋‹ค 2~4๋ฐฐ ์ ์€ ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Tic-Tac-Toe ํ…Œ์ŠคํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ ๊ฐ€์ด๋“œ React์˜ ๊ฒฝ์šฐ React/JavaScript/HTML/CSS์—์„œ 200์ค„์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ–ˆ์ง€๋งŒ, Flow9์˜ ๊ฒฝ์šฐ 83์ค„๋กœ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ iOS ๋ฐ Android์šฉ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ˜•ํƒœ๋กœ ์ปดํŒŒ์ผ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”Œ๋žซํผ์—๋Š” Flow9์œผ๋กœ ์ž‘์„ฑ๋˜๊ณ  ์ปดํŒŒ์ผ ์„œ๋ฒ„๋กœ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์š” flowc ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ๋ฆ„ ์ฐธ์กฐ ์ปดํŒŒ์ผ๋Ÿฌ(๋‹ค์Œ์œผ๋กœ ์ž‘์„ฑ๋จ) ํ—ฅ์Šค); gdb ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•˜๋Š” ๋””๋ฒ„๊ฑฐ; ๋ฉ”๋ชจ๋ฆฌ ๋ถ„์„๊ธฐ์™€ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ ๋””๋ฒ„๊ฑฐ๋ฅผ ๊ฐ–์ถ˜ ํ”„๋กœํŒŒ์ผ๋ง ์‹œ์Šคํ…œ; x86_64 ์‹œ์Šคํ…œ์šฉ JIT ์ปดํŒŒ์ผ๋Ÿฌ; ARM ๋ฐ ๊ธฐํƒ€ ํ”Œ๋žซํผ์šฉ ์ธํ„ฐํ”„๋ฆฌํ„ฐ; ์ฝ”๋“œ์—์„œ ์„ฑ๋Šฅ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์„ C++ ๋ฐ Java๋กœ ์„ ํƒ์ ์œผ๋กœ ์ปดํŒŒ์ผํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ Visual Code, Sublime Text, Kate ๋ฐ Emacs์™€์˜ ํ†ตํ•ฉ์„ ์œ„ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ; ํŒŒ์„œ ์ƒ์„ฑ๊ธฐ(PEG).

์ถœ์ฒ˜ : opennet.ru

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