๐Ÿ› ๏ธBackend/โšกPython

[Python] 3๊ฐ• - ํŒŒ์ด์ฌ์˜ ์ดํ•ด

junbin2 2025. 4. 11. 14:15

1. ํŒŒ์ด์ฌ์˜ ๊ฐœ์š”

(1) ํŒŒ์ด์ฌ์˜ ํƒ„์ƒ ๋ฐฐ๊ฒฝ

๋„ค๋œ๋ž€๋“œ ๊ณผํ•™์ž "ํžˆ๋„ ํŒ๋กœ์‰ผ" ์ด 1991๋…„ ๊ฐœ๋ฐœํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋‹ค.

[1] ํžˆ๋„ ํŒ๋กœ์‰ผ

- ๋„ค๋œ๋ž€๋“œ ์•”์Šคํ…Œ๋ฅด๋‹ด ๋Œ€ํ•™์—์„œ ์ˆ˜ํ•™๊ณผ ์ปดํ“จํ„ฐ ์ „๊ณต

- ์ข‹์•„ํ•˜๋Š” ์ฝ”๋ฏธ๋”” "Monty Python's Flying Circus"๋ฅผ ํ†ตํ•ด "Python" ์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ง“๊ฒŒ ๋จ.

- "Python" ์€ ํžˆ๋„ ํŒ๋กœ์‰ผ์ด ํฌ๋ฆฌ์Šค๋งˆ์Šค์— ์—ฐ๊ตฌ์‹ค์ด 7์ผ๊ฐ„ ์ž ๊ฒจ ํ• ์ผ์ด ์—†์–ด ๋งŒ๋“ค๊ฒŒ ๋œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋‹ค.

- ์„ธ๋ถ€์ ์ธ ์ด์œ ๋กœ๋Š”, ํžˆ๋„ ํŒ๋กœ์‰ผ์€ ๋ถ„์‚ฐ ์šด์˜์ฒด์ œ '์•„๋ฉ”๋ฐ”(Amoeba)'์˜ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์šฉ ์‰˜ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๋ คํ–ˆ์Œ.

- ์—ฐ๊ตฌ์‹ค์ด ํฌ๋ฆฌ์Šค๋งˆ์Šค๋กœ 7์ผ๊ฐ„ ํ์‡„๋˜์ž ๋‚จ๋Š” ์‹œ๊ฐ„์— ํ‰์†Œ ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ๋˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค.

- ๊ทธ๊ฒƒ์ด ํŒŒ์ด์ฌ ์ด๋ฉฐ, ํŒŒ์ด์ฌ์€ ์‰˜ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋กœ ์ฒ˜์Œ ๊ฐœ๋ฐœ์ด ๋˜์—ˆ๋‹ค.

 

(2) ํŒŒ์ด์ฌ์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

[1] ๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„ ์ง€์›

- ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ์ ˆ์ฐจ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋‹ค์–‘ํ•œ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์ง€์›ํ•จ.

[2] ๋‹ค๋ชฉ์  ํ™œ์šฉ์ด ๊ฐ€๋Šฅ

- ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ, ์›น ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ, ์‚ฌ๋ฌผ ์ธํ„ฐ๋„ท ๋ถ„์•ผ, ๊ต์œก์ ์ธ ๋ชฉ์ ์œผ๋กœ ํ™œ์šฉ์ด ๋˜๊ณ  ์žˆ์Œ.

 

(3) ํŒŒ์ด์ฌ์˜ ๋ฐœ์ „ ๊ณผ์ •

[1] 1991๋…„

- ABC์˜ ํ›„์† ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์‹œ์ž‘

[2] 1999๋…„

- DARPA ์กฐ์ง์— ์ „ ์„ธ๊ณ„์ ์œผ๋กœ ๋ˆ„๊ตฌ๋‚˜ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ๋งŒ๋“คํ…Œ๋‹ˆ ์ง€์›ํ•ด ๋‹ฌ๋ผ๊ณ  ์ œ์•ˆ์„ ํ•จ.

[3] 2000๋…„

- ํŒŒ์ด์ฌ 2.0 ์ถœ์‹œ - ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ํ†ตํ•œ ๊ฐœ๋ฐœ ์ฒด๊ณ„ ์‹œ์ž‘

* ๊ธฐ์กด์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋“ค์€ ๊ธฐ์—…๋“ค์ด ์›ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐœ๋ฐœ์ด ๋จ. ํ•˜์ง€๋งŒ, ํŒŒ์ด์ฌ์€ ๋ˆ„๊ตฌ๋‚˜ ๊ฐœ๋ฐœ์„ ํ•˜๊ณ  ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด๋ผ๋Š” ์ทจ์ง€์˜€์Œ.

[4] 2008๋…„

- ํŒŒ์ด์ฌ 3.0 ์ถœ์‹œ - ๋น„ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ๊ฐ–๋Š” ๋ฉ”์ด์ € ์—…๋ฐ์ดํŠธ ( ๋งˆ์ด๋„ˆ ์—…๋ฐ์ดํŠธ์—์„  ํ˜ธํ™˜์ด ๊ฐ€๋Šฅํ•จ. )

- ์‰ฝ๊ฒŒ๋งํ•ด, ํŒŒ์ด์ฌ 2.0์€ 3.0์—์„œ ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅ ์ฆ‰, ํ˜ธํ™˜์„ฑ์„ ๊ฐ€์ง€์ง€ ์•Š๋Š”๋‹ค. ( ์ธํ„ฐํ”„๋ฆฌํ„ฐ์—์„œ ์˜ค๋ฅ˜๋ฅผ ๋‚ด๋ฑ‰์Œ. )

* ํ˜„์žฌ ํŒŒ์ด์ฌ 3.x ๋ฒ„์ „ ์‚ฌ์šฉ ์ค‘์œผ๋กœ 2030๋…„๊นŒ์ง€ ์œ ์ง€๊ฐ€ ๋  ์˜ˆ์ •์ž„.

 

(4) ํŒŒ์ด์ฌ์˜ ์ธ๊ธฐ

- ๊ธฐ์กด์˜ ์ƒ์œ„๊ถŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋“ค๊ณผ ์–ด๊นจ๋ฅผ ๋‚˜๋ž€ํžˆ ํ–ˆ์ง€๋งŒ, 1์œ„๋Š” ํ•ด๋ณธ์ ์ด ์—†์Œ.

- 2022๋…„๋„ ๋ง์— ๋งŒ๋“ค์–ด์ง„ ํ†ต๊ณ„์ž๋ฃŒ์— ๋”ฐ๋ฅด๋ฉด, 2022๋…„๋„์— ์ฒ˜์Œ์œผ๋กœ ํŒŒ์ด์ฌ์ด 1์œ„๋ฅผ ์ฐจ์ง€ํ•จ.

- 2025๋…„ ํ˜„์žฌ์—๋„ 1์œ„๋ฅผ ์ฐจ์ง€ํ•˜๊ณ ์žˆ๋Š” ์ธ๊ธฐ ๋งŽ์€ ์–ธ์–ด์ด๋‹ค. ( C , Java , C# , C++ ๋“ฑ ๋‹ค์–‘ํ•œ ์ธ๊ธฐ ์–ธ์–ด๋“ค์„ ์ด๊น€ )

- ํŒŒ์ด์ฌ ์–ธ์–ด๋Š” ์ธ์Šคํƒ€๊ทธ๋žจ, ๋„ทํ”Œ๋ฆญ์Šค, ์•„๋งˆ์กด ๋“ฑ์—์„œ ์‚ฌ์šฉ ์ค‘์ด๋‹ค.

- ์‹ฌ์ง€์–ด ๊ตฌ๊ธ€์—์„œ ๋งŒ๋“ค์–ด์ง„ ์†Œํ”„ํŠธ์›จ์–ด 50% ์ด์ƒ์ด ํŒŒ์ด์ฌ์„ ์‚ฌ์šฉ ์ค‘์ด๋‹ค.

์ถœ์ฒ˜ : https://www.tiobe.com/tiobe-index/

 

(5) ํŒŒ์ด์ฌ์˜ ์ธ๊ธฐ ์ด์œ 

- Pythonic : ํŒŒ์ด์ฌ์„ ์ด์šฉ์ž๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ๋‹จ์–ด๋กœ, "ํŒŒ์ด์ฌ ๋‹ค์›Œ" ๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

- ํŠน์ • ์กฐ์ง์— ๊ท€์†๋˜์ง€ ์•Š๋Š” ์–ธ์–ด ๊ณต๋™์ฒด๊ฐ€ ๋งŒ๋“ค์–ด ๋‚˜๊ฐ€๋Š” ์–ธ์–ด์ด๊ธฐ์— ๋…๋ฆฝ์ ์ž„.

- ์šด์˜์ฒด์ œ๋ฅผ ๊ฐ€๋ฆฌ์ง€ ์•Š๊ณ , ๋ชจ๋“  ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•ด ํŠน์ • ํ”Œ๋žซํผ์— ์ข…์†์ ์ด์ง€ ์•Š๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

- ๋ชจ๋“ ๊ฒŒ ์˜คํ”ˆ์†Œ์Šค์ด๋ฉฐ, ์‹ฌ์ง€์–ด ํŒŒ์ด์ฌ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋Š” ๋ชจ๋“  ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ๊ณต๊ฐœ๊ฐ€ ๋˜์–ด์žˆ์Œ.

* ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ๋‹ค์šด๋ฐ›์•„์„œ ์ง์ ‘ ์žฌ์ •์˜ ํ•  ์ˆ˜๋„ ์žˆ์Œ.

- ๋‹ค๋ฅธ์–ธ์–ด์— ๋น„ํ•ด ์‚ฌ๋žŒ์ด ์“ฐ๋Š” ์ž์—ฐ์–ด์™€ ๊ต‰์žฅํžˆ ์œ ์‚ฌํ•˜๊ธฐ์— ์ง๊ด€์ ์ž„.

- ์—ฌ๋Ÿฌ ํ”„๋ ˆ์ž„์›Œํฌ๋ž‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์–ด, ๊ฐ€์ ธ๋‹ค๊ฐ€ ๋ฐ”๋กœ ๊ฐœ๋ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์‹ ์†์„ฑ์ด ์žˆ์Œ.

- ์ด๋Ÿฌํ•œ ์ด์œ ๋“ค์ด "Pythonic" ์ฆ‰, ํŒŒ์ด์ฌ ๋‹ต๋‹ค๋Š” ์˜๋ฏธ๋ฅผ ๋‚ดํฌํ•˜๊ณ  ์žˆ๋‹ค.

[1] ์˜คํ”ˆ์†Œ์Šค

- ํŒŒ์ด์ฌ ๊ด€๋ จ ๊ฐœ์„ ์„ ์œ„ํ•œ ์ œ์•ˆ(PEP)

- ๋งŽ์€ ๊ฐœ๋ฐœ์ž์˜ ์˜๊ฒฌ์„ ์ˆ˜์šฉํ•˜๊ณ  ํ† ๋ก ํ•˜๋ฉฐ ๋ฐœ์ „ํ•œ ์–ธ์–ด

- ์ƒˆ๋กœ์šด ํŒŒ์ด์ฌ์˜ ๊ธฐ๋Šฅ, ํŒŒ์ด์ฌ ํ”„๋กœ์„ธ์Šค, ํ™˜๊ฒฝ์— ๋Œ€ํ•ด ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์„ค๊ณ„ ๋ฌธ์„œ๋‚˜ ์ •๋ณด๋ฅผ ์ œ๊ณต

- ํŒŒ์ด์ฌ ๊ธฐ๋Šฅ์˜ ๊ฐ„๊ฒฐํ•œ ๊ธฐ์ˆ ์  ์‚ฌ์–‘๊ณผ ๊ธฐ๋Šฅ์„ ์œ„ํ•œ ๊ทผ๊ฑฐ๋“ค์„ ์ œ๊ณต

- ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์˜๊ฒฌ์„ ์ˆ˜์ง‘, ํ•ฉ์˜ ๋„์ถœ, ๋ฐ˜๋Œ€์˜๊ฒฌ ์ •์ทจ

- PEP 8(์Šคํƒ€์ผ ๊ฐ€์ด๋“œ) ๋Œ€ํ‘œ์ 

[2] ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”„๋ ˆ์ž„์›Œํฌ

- ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋‹ค๋ฅธ ์–ธ์–ด๋ณด๋‹ค ๋”์šฑ ๋งŽ์ด ์ง€์›์„ ํ•จ.

* ๋‹จ์ ์€, ๋„ˆ๋ฌด ๋งŽ์•„์„œ ๋ญ˜ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์ข‹์„์ง€ ๊ฐ๋„์•ˆ์˜จ๋‹ค๋Š” ์ ..?

 

(6) ํŒŒ์ด์ฌ์˜ ๋‹จ์ 

- ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด์ด๋‹ค ๋ณด๋‹ˆ, C๋‚˜ ์ž๋ฐ” ๋“ฑ์œผ๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ๋ณด๋‹ค ๋А๋ฆฐ ์†๋„

- ์™„์ „ํ•œ ์• ํ”Œ๋ฆฌ์—ํ‚ค์…˜ ๋‹จ๋… ๊ฐœ๋ฐœ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

- ์‰˜ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด ์šฉ์œผ๋กœ ๊ฐœ๋ฐœ์ด ๋˜์–ด, ๋ชจ๋ฐ”์ผ ์•ฑ ๋“ฑ ์‘์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.


2. ํŒŒ์ด์ฌ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰

(1) ํŒŒ์ด์ฌ ์‹คํ–‰ ํ™˜๊ฒฝ

- ํ”Œ๋žซํผ์— ๋…๋ฆฝ์ ์ด๋ฉฐ ์ธํ„ฐํ”„๋ฆฌํ„ฐ์‹ ๊ฐ์ฒด์ง€ํ–ฅ์ , ๋™์  ํƒ€์ดํ•‘(dynamically typed) ๋Œ€ํ™”ํ˜• ์–ธ์–ด

- ์œˆ๋„์šฐ, ๋ฆฌ๋ˆ…์Šค, ์œ ๋‹‰์Šค, ๋งฅOS ๋“ฑ ๋‹ค์–‘ํ•œ ์šด์˜์ฒด์ œ์—์„œ ๋ณ„๋„์˜ ์ปดํŒŒ์ผ ์—†์ด ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•จ.

- CPython, PyPy, Jython ๋“ฑ ๋‹ค์–‘ํ•œ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ํ™˜๊ฒฝ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

- ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐ์ฒด๋กœ ๋ชจ๋ธ๋งํ•ด์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ.

- ๋™์  ํƒ€์ดํ•‘ : ๋ณ€์ˆ˜์˜ ์ž๋ฃŒํ˜•์„ ์ง€์ •ํ•˜์ง€ ์•Š์•„๋„ ๋จ. ์ฆ‰, ํŒŒ์ด์ฌ์ด ์•Œ์•„์„œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๊ด€๋ฆฌํ•ด์คŒ.

- ๋Œ€ํ™”ํ˜• ์–ธ์–ด : ์ž‘์„ฑํ•œ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”๋กœ ํ™•์ธํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•˜๋ฉด์„œ ์ฝ”๋“œ ์ž‘์„ฑ ๊ฐ€๋Šฅ.

[1] CPython

- C ์–ธ์–ด๋กœ ๊ฐœ๋ฐœ๋œ ํŒŒ์ด์ฌ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ( C ๊ตฌํ˜„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€์˜ ์—ฐ๋™์„ ํ†ตํ•œ ํ™•์žฅ์— ์ตœ์  )

[2] ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์œ ํ˜•

- ์…€ํ”„ ํ˜ธ์ŠคํŒ… ์ปดํŒŒ์ผ๋Ÿฌ(Java / C) : ๋ถ€ํŠธ์ŠคํŠธ๋ž˜ํ•‘ ๋‹จ๊ณ„๋ฅผ ํ†ตํ•ด ์ž์‹ ์˜ ์–ธ์–ด๋กœ ์ž‘์„ฑํ•œ ์ปดํŒŒ์ผ๋Ÿฌ

- ์†Œ์Šค ๋Œ€ ์†Œ์Šค ์ปดํŒŒ์ผ๋Ÿฌ(ํŒŒ์ด์ฌ) : ํƒ€ ์–ธ์–ด๋กœ ์ž‘์„ฑํ•œ ์ปดํŒŒ์ผ

 

(2) ํŒŒ์ด์ฌ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰๊ณผ์ •

- ํŒŒ์ด์ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์†Œ์Šค ์ฝ”๋“œ ํ˜•ํƒœ๋กœ ๋ฐฐํฌ๊ฐ€ ๋จ.

- ์ฝ”๋“œ ์ž‘์„ฑ -> CPython(์ปดํŒŒ์ผ๋Ÿฌ) -> ๋ฐ”์ดํŠธ์ฝ”๋“œ(.pyc ํŒŒ์ผ) -> ํŒŒ์ด์ฌ ๊ฐ€์ƒ ๋จธ์‹ (PVM)

- ์ € ๋ฐ”์ดํŠธ์ฝ”๋“œ๋Š” ์–ด๋– ํ•œ ์šด์˜์ฒด์ œ์—์„œ๋„ ์žฌ์ปดํŒŒ์ผ ์—†์ด ๋ฐ”๋กœ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•จ.

- ์‰ฝ๊ฒŒ๋งํ•ด, ํŒŒ์ด์ฌ์—๋Š” ๋‹ค์–‘ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, ๋Œ€ํ‘œ์ ์œผ๋กœ CPython๋ฅผ ํ™œ์šฉํ•˜์ง€๋งŒ, JPython ์ฒ˜๋Ÿผ ํŒŒ์ด์ฌ ์ฝ”๋“œ๋ฅผ ์ž๋ฐ” ๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜์„ ํ•ด์ฃผ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๋„ ์žˆ๋‹ค. ํ•ด๋‹น JPython์€ ์ž๋ฐ” ๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ๋ณ€๊ฒฝ ํ•œ ๋’ค JVM์œ„์—์„œ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

- ๋งˆ์ง€๋ง‰์œผ๋กœ ํŒŒ์ด์ฌ ๊ฐ€์ƒ ๋จธ์‹ (PVM)์„ ํ†ตํ•ด .pvc ํŒŒ์ผ์˜ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ ํ•œ ๋’ค ์‹คํ–‰์„ ์‹œ์ผœ์ค€๋‹ค.

- ํŒŒ์ด์ฌ ๊ฐ€์ƒ๋จธ์‹ ์€ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ํ•œ ๋ผ์ธ ์”ฉ ์‹คํ–‰๋˜๊ณ  ๋ณ€๊ฒฝ์—†์ด ์žฌ์‹คํ–‰ ์‹œ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰์ด ๋œ๋‹ค.


3. ํŒŒ์ด์ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ

(1) IDLE

- ๊ธฐ๋ณธ์œผ๋กœ ํฌํ•จ๋œ ํŒŒ์ด์ฌ์˜ ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด๋‹ค.

- ํŒŒ์ด์ฌ๊ณผ Tkinter GUI ํˆดํ‚ท์œผ๋กœ ๊ฐœ๋ฐœ

- ๊ตฌ๋ฌธ ๊ฐ•์กฐ, ์ž๋™ ์™„์„ฑ, ์Šค๋งˆํŠธ ๋“ค์—ฌ์“ฐ๊ธฐ ๋“ฑ์ด ํฌํ•จ๋œ ๋‹จ์ˆœํ•œ IDE ์ง€ํ–ฅ์ ์ž„.

- stepping, breakpoint, call stack์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ํ†ตํ•ฉ ๋””๋ฒ„๊ฑฐ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ด์คŒ.

- http://www.python.org ํŒŒ์ด์ฌ ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ ๋‹ค์šด๋กœ๋“œ ๊ฐ€๋Šฅํ•จ.

 

(2) ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ

- ์˜คํ”ˆ์†Œ์Šค ๊ธฐ๋ฐ˜์˜ ์›น ํ”Œ๋žซํผ

- ํŒŒ์ด์ฌ์„ ๋น„๋กฏํ•œ 40์—ฌ๊ฐœ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ง€์›

- ์ „ํ†ต์ ์ธ ์†Œ์Šค์ฝ”๋“œ-์ปดํŒŒ์ผ-์‹คํ–‰ ๋ฐฉ์‹์—์„œ ๋ฒ—์–ด๋‚˜ ์›น ๊ธฐ๋ฐ˜ ๋Œ€ํ™”ํ˜• ๊ฐœ๋ฐœ ๋ฐ ์‹คํ–‰ ํ™˜๊ฒฝ

- ๋ฌธ์„œํ™”ํ•˜์—ฌ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ ๊ณต์œ ํ•˜๊ธฐ๊ฐ€ ํŽธ๋ฆฌํ•จ.

- ๋งˆํฌ๋‹ค์šด(Markdown)์„ ์ด์šฉํ•˜์—ฌ ์ฝ”๋“œ ๊ด€๋ จ ํƒ€์ดํ‹€, ์„ค๋ช… ๋“ฑ ์ž‘์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

(3) ๊ตฌ๊ธ€ Colab

- 2017๋…„ ๊ณผํ•™ ์—ฐ๊ตฌ์™€ ๊ต์œก์„ ๋ชฉ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•จ ( ๋ฌด๋ฃŒ๋กœ ์ œ๊ณต ์ผ๋ถ€ ์œ ๋ฃŒ )

- ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

- ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ + ๊ตฌ๊ธ€ ๋“œ๋ผ์ด๋ธŒ๋ฅผ ๊ฒฐํ•ฉํ•œ ์„œ๋น„์Šค

- ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ๋”ฅ๋Ÿฌ๋‹ ์—ฐ์‚ฐ ๋“ฑ ๊ณ ์„ฑ๋Šฅ ์ปดํ“จํŒ… ๋ฆฌ์†Œ์Šค ํ™œ์šฉ ๊ฐ€๋Šฅ


(4) ๊ทธ์™ธ IDE

- PyCharm(JetBrains) , VS Code ๋“ฑ ๋‹ค์–‘ํ•œ ํˆด์ด ์žˆ์Œ.


4. ์ •๋ฆฌ ํ•˜๊ธฐ

(1) ํŒŒ์ด์ฌ์˜ ํŠน์ง• ๋ฐ ์žฅ์ 

- ์‰ฌ์šด ๋ฌธ๋ฒ•๊ณผ ๋น ๋ฅธ ๊ฐœ๋ฐœ ์†๋„๋กœ ์ดˆ๋ณด์ž๋„ ์ ‘๊ทผํ•˜๊ธฐ๊ฐ€ ์‰ฝ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

- ๋ฐ์ดํ„ฐ ์กฐ์ž‘์— ๊ฐ•๋ ฅํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ œ๊ณต์ด ๋œ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

- ์˜คํ”ˆ ์†Œ์Šค ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค์–‘ํ•œ ํŒจํ‚ค์ง€์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ง€์†์ ์œผ๋กœ ํ™•์žฅ์ด ๋œ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

- ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ํ™œ๋ฐœํ•˜์—ฌ ๋ฌธ์ œ ํ•ด๊ฒฐ๊ณผ ๊ธฐ๋Šฅ ํ™•์žฅ์— ์šฉ์ด ํ•˜๋‹ค๋Š” ์ ์ด ์žˆ๋‹ค.

 

(2) ์ธ๊ณต์ง€๋Šฅ ๋ถ„์•ผ์—์„œ์˜ ํŒŒ์ด์ฌ

[1] ๋จธ์‹ ๋Ÿฌ๋‹ ๋ถ„์•ผ

- Scikit-learn, XGBoost ๋“ฑ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ์˜ˆ์ธก ๋ชจ๋ธ ๊ธฐ๋ฐ˜์˜ ์„œ๋น„์Šค ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅ

[2] ๋”ฅ๋Ÿฌ๋‹ ๋ถ„์•ผ

- TensorFlow, PyTorch, Keras ๋“ฑ ๋”ฅ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ ๋Œ€๋ถ€๋ถ„์ด ํŒŒ์ด์ฌ ๊ธฐ๋ฐ˜ 

- ๊ณ ์„ฑ๋Šฅ ๋ชจ๋ธ ๊ฐœ๋ฐœ์— ์ ํ•ฉํ•˜๋ฉฐ ์—ฐ๊ตฌ ๋ฐ ์„œ๋น„์Šค ๊ฐœ๋ฐœ์— ๋„๋ฆฌ ํ™œ์šฉ๋จ

[3] ์ •๋ฆฌ

- ํ•˜๋‚˜์˜ ์–ธ์–ด๋กœ ๋จธ์‹ ๋Ÿฌ๋‹, ๋”ฅ๋Ÿฌ๋‹, ๋ฐ์ดํ„ฐ๋ถ„์„ ๋“ฑ ํญ๋„“์€ ์ธ๊ณต์ง€๋Šฅ ๋ถ„์•ผ๋ฅผ ๋ชจ๋‘ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Œ

 

(3) ํŒŒ์ด์ฌ์˜ ๋งค๋ ฅ

- ๋ฐฉ๋Œ€ํ•œ ์˜คํ”ˆ์†Œ์Šค ์ƒํƒœ๊ณ„ 

- ๋งŽ์€ ๊ธฐ์—…๊ณผ ๊ฐœ์ธ์˜ ์ฐธ์—ฌ๋กœ ์ง€์†์  ๋ฐœ์ „ 

- ๊ณต์œ ์™€ ํ˜‘์—… ๋ฌธํ™”๋กœ ๋ฐฐ์šฐ๊ธฐ ์‰ฝ๊ณ  ํ™œ์šฉ๋„๊ฐ€ ๋†’์Œ 

- ๋†’์€ ๋ฒ”์šฉ์„ฑ์œผ๋กœ ์›น, ๋ฐ์ดํ„ฐ, ์ธ๊ณต์ง€๋Šฅ, ์ž๋™ํ™” ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 

(4) ํƒ€ ์–ธ์–ด์™€์˜ ๋น„๊ต

 

(5) ๋งˆ๋ฌด๋ฆฌ

- ํŒŒ์ด์ฌ์€ ๋ฐฐ์šฐ๊ธฐ ์‰ฌ์šฐ๋ฉด์„œ๋„ ๋ฒ”์šฉ์„ฑ๊ณผ ์ƒ์‚ฐ์„ฑ์ด ๋›ฐ์–ด๋‚˜, ๋น ๋ฅด๊ณ  ํ’ˆ์งˆ ๋†’์€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์–ธ์–ด ์ค‘ ํ•˜๋‚˜์ด๋‹ค.