์ ๋ค๋ฌ์ How to Read a Book๊ณผ ํด๋ฆฌ์ผ์ How to Solve it์ ์ ํต์ ์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ ์ชฝ์์ ์๋ ์ธ๋ฏธ๋๊ฐ 2002๋
4์ 11์ผ ์ค์๋ํ๊ต์์ ์์๋ค.
see also SeminarHowToProgramItAfterwords
ํ๋ก๊ทธ๋๋ฐ์ด๋ ๊ฒ์ ์ด๋ป๊ฒ ํ๋๊ฐ? ์ด๋ค ์ฌ๊ณ ์ ๊ณผ์ ์ ๊ฑฐ์น๋๊ฐ? ์ด๋ค ์ธ์ง์ ๋ณด์กฐ๋ฌผ์ ๋์์ ๋ฐ์ ์ ์๋๊ฐ? ์ด๋ป๊ฒ ํ๋ฉด ํ๋ก๊ทธ๋๋ฐ์ ๋ ์ํ ์ ์์๊น?
- CrcCard (Index Card -- The finalist of Jolt Award for "design tools" along with Rational Rose Enterprise Edition)
- Paper Shell Programming -- Becoming a Pseudo-Turing Machine Yourself
- TestDrivenDevelopment -- ํ๋ก๊ทธ๋๋ฐ์ ์ฝํ๋ฅด๋์ฟ ์ค์ ์ ํ
- Stepwise Refinement -- ์ง๋ถํ ๋ฏธ๋, ์ ์ ํ ๊ณผ๊ฑฐ (see also
ProgrammingOnPurpose )
- White Board -- Communicate with the Board
- PairProgramming -- 1+1 > 2
- Refactoring -- ํ๊ฐ ๊ฐ๋ฐ๋ฒ
- DesignPatterns -- ๋์์ธํจํด ๊ณต๋ถ ์ ๋๋ก ํ์ง ๋ง๋ผ
- Coding Style -- esp. How to Name it (ํ๋ก๊ทธ๋๋จธ๋ฅผ ์ํ ์ ๋ช
ํ. "ๅญๆฐ ๅฟ
ไนๆญฃๅไน...ๅ๏ฅงๆญฃๅ่จ๏ฅง้ ่จ๏ฅง้ ๅไบ๏ฅงๆ" <๋
ผ์ด> ์๋กํธ)
- Managing To Do List -- How to Become More Productive Only With a To-do List While Programming
- Programmer's Journal -- Keeping a Diary (see also
KeepaJournalToLiveBetter )
- Lifelong Learning as a Programmer -- Teach Yourself Programming in Ten Years (http://www.norvig.com/21-days.html )
- What to Read -- Programmer's Reading List
๋์์ ํ๋ก๊ทธ๋๋ฐ ๊ฒฝํ์ด ๋ถ์กฑํ ๋ถ, ํน์ ๋๋ฌด ๋ง์ ๋ถ.
์ธ๋ฏธ๋๋ ์ค์ต/ํ ๋ก ์ค์ฌ์ ํธ๋์จ ์ธ๋ฏธ๋๊ฐ ๋ ๊ฒ์ด๋ฉฐ, ๋ฐ๋ผ์ ์ธ์์ ํ์ด ์์ด์ผ ํ ๊ฒ์. ์ฝ 20๋ช
๋ด์ธ๊ฐ ์ ๋นํ ๋ฏ. ("Tell me and I forget, teach me, and I may remember, involve me and I learn." -- Benjamin Franklin)
ํ๋์ ํ์ต์ ๋ชฉํ๋ก ํจ -- ์ ๋ ์๋ก ์ผ๋ง๋ ๋ง์ ๊ฒ์ ๋ฐฐ์ธ ์ ์๋์ง ๋งค๋ฒ ๋๋๋๋ค.
--๊น์ฐฝ์ค
์๊ฐ๊ณผ ์ฅ์ ¶
- ์ฅ์: ์ค์๋ํ๊ต ๊ณต๋(๋ด
์คํธํ) 7์ธต PC์ค (4744)
- (๊ณต์์ ) ์๊ฐ:4์ 11์ผ 7์ 30๋ถ~9์ 30๋ถ (ํ ๋ก ์ 9์ 30๋ถ์์ 10์๊น์ง ์งํ๋ ์์ )
- ๋์: ์ค์๋ํ๊ต ์ปดํจํฐ ๊ณตํ๊ณผ ์ ๋กํ์ด์ง ํ์ ๋ฐ ๋นํ์, ํน์ ํ๊ณผ, ํํ๊ต ํ์/๊ต์/์ผ๋ฐ์ธ
- ๊ตํตํธ : 212, 21๋ฒ ํ์๋ ์ค๋์
๊ตฌ. ์งํ์ฒ 7ํธ์ ์๋์ญ ํ์ฐจ (์๋์ญ์์ 20๋ถ ๊ฑฐ๋ฆฌ)
ํ๋ก๊ทธ๋จ (pun intended) ¶
์ค๋น
- 7:00-7:30 ์ธ๋ฏธ๋ ์ค๋น, ํ๊ฒฝ ์ค์น, ์๋ฆฌ ์ ํ, ๊ฐ ์ธ์ด ๊ทธ๋ฃน๋ณ xUnit(or assert) ์ฌ์ฉ๋ฒ ์ ๋ฆฌ/์คํฐ๋
- 7:30-7:50 ๊ฐ์ฌ ๋์ฐฉ. TDD ๋ฐ RF ์์ฐ(Python). ๋ํ ํ๋ฉด์ ๋ณด๊ณ ์ํ๋ ์ปคํ์ ๋ฐ๋ผํ ์ ์์.
- 7:50-8:00 PP์ ๋ํ ๊ฐ๋ตํ ์๊ฐ, ์ฃผ์์ ๋ฑ.
- 8:00-8:10 ์ปคํ๋ณ๋ก TDD ์ค์ต
- 8:10-8:30 ๊ทธ๋ฃน ๋๋๊ธฐ, Crc Card ์๊ฐ, ํ๋ก์ ํธ ์๊ตฌ์ฌํญ ์๊ฐ ๋ฐ ๊ทธ๋ฃน๋ณ ํ ์
- 8:30-9:30 ๊ทธ๋ฃน๋ณ ๊ฐ๋ฐ ์งํ (๊ฐ๋ฐ ์ค ๊ณ ๊ฐ์ ์๊ตฌ์ฌํญ ์์ )
- 9:30-9:35 ๊ทธ๋ฃน๋ณ (๋ด๋ถ) ํ ๋ก , ํ๊ฐ
- 9:35-10:00 ํ๋ก๊ทธ๋จ ์์ฐ, ์ค๋ช
, ์ ์ฒด ํ ๋ก
์ค๋น ์ฌํญ ¶
- PC ๋ฏธ๋ฆฌ ์
ํ
- ํ๋ก์ ์
ํ ์ปดํจํฐ : Idle Fork + Python 2.2
- ๊ธฐํ ๋ค๋ฅธ ์ปดํจํฐ๋ค์ ์ด๋ป๊ฒ ํ ๊น์? ๊ธฐ๋ณธ์ผ๋ก Visual Studio ๋ ๊น๋ ค์์ ๊ฒ์ด๋ฏ๋ก C, C++ ๋ ๋๊ฒ ์ง๋ง, Java ์ฐ์๋ ๋ถ๋ค์?
- ๊ธฐ๋ณธ์ ์ผ๋ก Idle Fork์ Python 2.2๋ ๋ชจ๋ ๊น์์ผ ํจ. (๊ฐ์ฌ๊ฐ Python์ผ๋ก ์๋ฒ์ ๋ณด์ผ ๊ฒ์ด๊ณ , ์ด๊ฑธ ๋ณด๋ฉด์ ๊ทธ๋๋ก ๋ฐ๋ผํ๊ณ ์ถ์ ์ปคํ์ ๊ทธ๋ ๊ฒ ํ ์ ์๋๋ก)
- Java 3๋ : JDK 1.3.1_02, eclipse 2.0 SDK(pre-release), Editplus ์ค์น ๋ฐ ์ธํ
- C++ 3๋ : VC++ 6.0 (์ค์น ๋์ด ์๋ ์ํ ํ์ธ์ฐจ์)
- python 4๋ : Python 2.2, Idle Fork
- ๊ธฐ๋ณธ์ ์ผ๋ก Idle Fork์ Python 2.2๋ ๋ชจ๋ ๊น์์ผ ํจ. (๊ฐ์ฌ๊ฐ Python์ผ๋ก ์๋ฒ์ ๋ณด์ผ ๊ฒ์ด๊ณ , ์ด๊ฑธ ๋ณด๋ฉด์ ๊ทธ๋๋ก ๋ฐ๋ผํ๊ณ ์ถ์ ์ปคํ์ ๊ทธ๋ ๊ฒ ํ ์ ์๋๋ก)
~cpp 7์ ~ 7์ 30๋ถ ์ค๋น ๊ณผ์ (์ค๋น ์ธ์์ 3~4๋ช ์ด ์ ๋นํ ๋ฏ ํฉ๋๋ค.) 0. ์ฒญ์, ์ ๋ฆฌ 1. user ์ ์ธ ๊ณต์ ์ ๊ฒ & ๋ฐ์ด๋ฌ์ค ์ฒดํฌ(v3 ๋์ค์ผ) 2. ์๋ฆฌ ๋ฐฐ์น Java 3๋ : JDK 1.3.1_02, eclipse 2.0 SDK(pre-release), Editplus ์ค์น ๋ฐ ์ธํ C++ 3๋ : VC++ 6.0 (์ค์น ๋์ด ์๋ ์ํ ํ์ธ) python 4๋ : Python 2.2, Idle Fork ํ๋ก์ ์ ํ ์ปดํจํฐ : Idle Fork + Python 2.2 3. ํ๋ก์ ํธ ์ค์น 0,1,2 ๋ฒ ์ธ์์ด ๋ ๊ฒฝ์ฐ ๋์ ์งํ, 2๋ฒ ๊ณผ์ ๋ณ๋ ฌ ์ํ 3๋ฒ ๋จ์ผ๊ธฐํ ์ฌํญ :
ํด๋น ๋ ์ง์ 7์ธต์ PC์ค์ ์ธ๋ฏธ๋ ๊ณต๊ณ ๋ฅผ ๋ถ์ฌ๋ ๋๋ค๊ณ ํ๋ฝ ๋ฐ์์ต๋๋ค. ์ ๋ณด๋ค ๋จผ์ pc์ค์ ๋์ฐฉํด ์๊ฐ์ด ์์ผ์ ๋ถ๋ค์ ์ ๋นํ ๊ณต๊ณ ๋ฅผ 7์ธต PC์ค ๋ฌธ์ ๋ถ์ฌ ์ฃผ์ธ์. PC์ ํ๋ณด์ญ์ ์์จ์ ์ด์ง๋ง, ๋ง์ฐฌ๊ฐ์ง ์
๋๋ค. --์๋ฏผ
Thread ¶
์ฅ์ ๊ด๋ จ ์ฌ๋ด : ๋์ค์ด์, ์์ฒ์ด๊ฐ 2์ธต์ ๋์ฌ๋ฅผ ์ํด ์์ ๋ณด์์ง๋ง, ํ์์ ๊ถํ์ผ๋ก๋ ๋น๋ฆด์ ์๋ค๊ณ ํ์ต๋๋ค. ์๊ณ ํ์
จ์ต๋๋ค. ๋ง์ฝ ๋ค์์ ํ์ํ ๋๋ ํ๊ณผ์ฅ๋๊ป ํด๋น ํ์ฌ์ ๋ฌธ์ ์ ์ถํ์ ์ฅ์ ํ๋ณด๊ฐ ๊ฐ๋ฅํ ๋ฏ ํฉ๋๋ค. ๊ณผ์ฌ์์ ๋ฌธ์์ ๋ํ ์ผ๋ฐ์ ์ธ ์์์ ์กด์ฌํ์ง ์๋๋ค๊ณ ํฉ๋๋ค.(๊ณผ๊ฑฐ PC ๋น๋ ธ์๋ ์ฒ๋ผ) --์๋ฏผ
4์ 12์ผ์ ์ดMT์ ๊ฒน์น๊ณ , ๋๋จธ์ง, 9์ผ์ด๋ 11์ผ์ด ์ข์๊ฑฐ ๊ฐ์๋ฐ์.. ์ธ๋ฏธ๋ ๊ธฐ๋๋๋๋ฐ์..^^ - ์ํ
ํ.. ์ ๋ง ํ๊ณ ์ถ์๋ฐ.. 9์ผ์ ํ์๊ฐ(๊ธฐ์ด๋ถ) ์์์ .. ์ด..์ด์ฉ๋ฉด ์ข์ง์.. ์ ๋..?? ใ .ใ --์ ํธ
ํ์ ์งธ๊ณ ์~ ๋ ๊ธฐ์์ฌ ๋๊ธฐํ ์งธ๊ณ ๊ฐ๋๊ตฌ๋ง.. ํ์๋ ๋๊ธฐํ๋ ๋น๊ตํด๋ณด๋ฉด.. ๋๊ธฐํ๊ฐ ํจ์ฌ๋ ํ๊ฒฉ์ด ์ปค. -์ํ
์ค์~~~ ์ด์ ๊ธฐ์์ฌ ๋๊ธฐํ ์๋น ์ ธ๋ ๋๋ค์... 9์ผ๋ ๋๊ธฐํ ์๋๋ฐ.. -์ํ
ํ.. ์ ๋ง ํ๊ณ ์ถ์๋ฐ.. 9์ผ์ ํ์๊ฐ(๊ธฐ์ด๋ถ) ์์์ .. ์ด..์ด์ฉ๋ฉด ์ข์ง์.. ์ ๋..?? ใ .ใ --์ ํธ
ํ์ ์งธ๊ณ ์~ ๋ ๊ธฐ์์ฌ ๋๊ธฐํ ์งธ๊ณ ๊ฐ๋๊ตฌ๋ง.. ํ์๋ ๋๊ธฐํ๋ ๋น๊ตํด๋ณด๋ฉด.. ๋๊ธฐํ๊ฐ ํจ์ฌ๋ ํ๊ฒฉ์ด ์ปค. -์ํ
์ค์~~~ ์ด์ ๊ธฐ์์ฌ ๋๊ธฐํ ์๋น ์ ธ๋ ๋๋ค์... 9์ผ๋ ๋๊ธฐํ ์๋๋ฐ.. -์ํ
์ ๋ง ์ฌ๋ฐ์ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ ๊ฐ ์ ์์ผ๋ฉด ์ข์ํ
๋ฐ... ์ฐธ์ํ์ง ๋ชปํ๋ ์ฌ๋๋ค์ ์ํด ์์คํ ์ธ๋ฏธ๋ ์๋ฃ๋ฅผ ๊ณต์ ํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ์ฐฝ์ค๊ตฐ์ ๋ง๋ ๊ฑด ์ฌ๋ฌ๋ถ์ด๋ ์ ๋ ์ฐธ ํ์ด์
๋๋ค. 24์๊ฐ ๊ฐ๋ฅด์ณ๋ฌ๋ผ๊ณ ํ์ธ์.
์ด๋ฐ ๊ฐ์๋ ํ๊ต์กธ์
ํ๋ฉด ๋ค์๋ ์ ํ์ง ๋ชปํ ๊ฒ์
๋๋ค.
(๊ทธ๋์ ๋ ์ ๋กํ์ด์ ๋ ์๋๋ฐ ๊ธ์ ์ฌ๋ ค๋ ๋๋ ๊ฑด์ง ๋ชจ๋ฅด๊ฒ ๊ตฐ์.) - ๋ฐ์งํ
๊ฐ์๋ฅผ ๋ นํํด์ ๋ค๋ฅธ ์ฌ๋๋ ๋ณผ ์ ์๊ฒ ํ๊ณ ์ ํฉ๋๋ค. ๊ด์ฐฎ๊ฒ ์ต๋๊น? --์ ํฌ๋ก


neocoin:์ํค์ ํน์ ๋ก๊ทธ์ธ์ด ์กด์ฌ ํ์ง ์๊ณ ,์ด์ด๋
ผ ์ด์ ๊ฐ ๊ธ์ ์ฐ๊ณ ์๊ฒฌ์ ์ฃผ์ญ์ฌ ํด์ ์
๋๋ค. ์ ๋ฒ๋ฌ ๋๊ตฐ๊ฐ ํจ๋ถ๋ก ์ง์ฐ๋ ์ฌํ๊ฐ ๋ฐ์ํด์ ์ผ๋จ ์ง์ฐ๋ ๊ถํ์ ๋ํ์ฌ HGC(Human Garbage Collector- ์๋๋ผ KHGC์ธ๊ฐ.--a)์ฒด์ ๋ก ๋ฐ๊พธ์์ง๋ง์. --์๋ฏผ
ํํ๊ต ํ์์ ์ฐธ์์ ๊ฐ๋ฅ์ผํด์ฃผ์
์ ๋๋ฌผ๋๊ฒ ๊ฐ์ฌํดํ๊ณ ์์ต๋๋ค. ^^; --์ฑํฌ์๊ฐ์๋ฅผ ๋ นํํด์ ๋ค๋ฅธ ์ฌ๋๋ ๋ณผ ์ ์๊ฒ ํ๊ณ ์ ํฉ๋๋ค. ๊ด์ฐฎ๊ฒ ์ต๋๊น? --์ ํฌ๋ก
์.. ใ
ก.ใ
ก๋
นํ.. ์ข. ๋นผ์
๊ณ ๊ฐ์ผํ๋.. --์ ํธ
์ฌ๋์ด ๋ง์ ์ง๋ ์ฐธ๊ฐ์ ๋ํ์ฌ ๋ถ์ํ ๊ฐ์ด ๋๋ค์. zpํ์์ ํํ์ฌ ๋ฆ๊ฒ ์ค๋ ์ฌ๋ ์๋ฃ์ ์ฌ๊ธฐ!!! --์๋ฏผ์ ๋ ํํ๊ต์์ด๊ฑฐ๋ ์.. ํฌ์์ดํ ํ๋ฐฐ๋๋๋ค. ์ค๋ ฅ์ด ์๋์ ์ง์ ์ฐธ๊ฐ๋ ๋ชปํ๊ณ ์ฐธ๊ดํด๋ณด๊ณ ์ถ๋ค์. ์๋ถํ๋๋ฆฝ๋๋ค. ()(__)() -- ์ต์ ํ
vim ์ฐ์๋ ๋ถ๋ค์ ์ฌ๊ธฐ๋ฅผ.
์๋ฒ | ์ฐธ๊ฐ ์ ์ฒญ์ |
1 | ์ด์ ์ฐ |
2 | ์ต๊ด์ |
3 | ๋ฐํ์ |
4 | ๊ฐ์์ฒ |
5 | ๋จ์ํ |
6 | ๊ฐ์ธ์ |
7 | ๋ฅ์๋ฏผ |
8 | ์๊ตฌ๊ทผ |
9 | ์ ์ง๊ท |
10 | ์ด๋ด๋ผ |
11 | ๊น๋จํ |
12 | ์ด์ ์ง |
13 | ์ ์ฌ๋ |
14 | ์ด์ฐฝ์ญ |
15 | ์ด์ ํธ |
16 | ์ฑํฌ์ |
17 | ์ด๋์ค |
18 | ์์ฐจ์ญ |
19 | ๊นํ์ฉ |
20 | ๊น์น๋ฒ |
21 | ์์ง์ |
22 | ํ์ฑ๋ |
์๋ฒ | ์ฐธ๊ด ์ ์ฒญ์ |
1 | ์ตํํธ |
2 | ์ ํฌ๋ก |
3 | ๋ฐ์งํ |
4 | ์ต์ ํ |
5 | ์ดํ์ฃผ |
6 | ๊น์ ์ค |
7 | ๊น์ฉ๊ธฐ |
- ์ฐธ๊ฐ์(aka Player) : ์ง์ ํ์ต์ ๋์ฐธํ๊ณ ํจ๊ป ํ ๋ก ํ๊ณ ํ๋ฐํ ์ฌ๋ฏธ์๊ฒ ๋์๋ณผ ์ฌ๋.
- ์ฐธ๊ด์(aka Spectator) : ๊ทธ๋ค์ ๊ตฌ๊ฒฝํ ์ฌ๋. (์ด ๋ถ๋ค์ ์ด ํ๊ณผ ์ ํ์ ์ด๋ป๊ฒ ๋ค๋ฅด๊ฒ ํ๋๋ผ, ๊ทธ ํ์ ๋ญ๋ฅผ ํ๊ณ , ๊ทธ ํ์ ๋ญ๋ฅผ ์ํ๋๋ผ, ๊ทธ๋ฌ๋๋ ๋์ค์ ์๋ ๊ฒ ์ ๋ ๊ฒ ๊ณ ์์ ํ๋๋ผ ๋ฑ์ ๊ด์ฐฐ์ ํ๊ณ , ํ ๋ก ์์ ์ธ๊ธํด ์ฃผ์๋ฉด ๋ชจ๋์๊ฒ ๋์์ด ๋๊ฒ ์ต๋๋ค)
Crc Card & Index Card & White Board | 1 |
Paper Shell Programming | 1 |
TestDrivenDevelopment | 5 |
Stepwise Refinement | 1 |
PairProgramming | 6 |
Refactoring | 3 |
DesignPatterns | 4 |
Coding Style | 2 |
Managing To Do List | 3 |
Programmer's Journal, Lifelong Learning & What to Read | 2 |
์ง์ง๊ธฐ ¶
C
- ๊น๋จํ, ์ด์ ์ง
- ๊ฐ์ธ์, ์ ์ฌ๋
- ์ด์ ํธ, ๋จ์ํ
- ์ด์ฐฝ์ญ, ๋ฐํ์
- ์ด์ ์ฐ, ์์ฐจ์ญ
- ์ด๋์ค, ์๊ตฌ๊ทผ
- ์ต๊ด์, ์ ์ง๊ท
- ์ฑํฌ์, ๊น์น๋ฒ
- ๊ฐ์์ฒ, ์ด๋ด๋ผ
- ๊นํ์ฉ, ๋ฅ์๋ฏผ
- ํ์ฑ๋, ์์ง์
ํ ์ ์ ¶
ํด๋น ํ์ ๊ฐ๋ฐ ํ๊ฒฝ, ์ธ์ด ์ ์ ๋ถํฐ, ํ๋ก๊ทธ๋จ ๋์์ธ, ์ฝ๋ฉ๊น์ง ๋ชจ๋ ํจ๊ป ํ๊ฒ ๋ฉ๋๋ค. ํ๊ฐ์ง ๋ฌธ์ ์ํฉ์ด ์ฃผ์ด์ง ๊ฒ์ด๊ณ , ์ ๊ฐ ๊ณ ๊ฐ์ญํ ์ ํฉ๋๋ค. ๊ฐ๋ฐ ์งํ ์ค์ ๋ช๋ฒ์ ์๊ตฌ์ฌํญ ์์ ์ด ์์ ๊ฒ์ด๋ฏ๋ก, "์ ์๋"์ ๋ํ ํ
์คํธ๊ฐ ์๋์ผ๋ก ์ด๋ฃจ์ด ์ง ๊ฒ์
๋๋ค. ๊ฐ๋ฐ ์๋ฃ ํ์๋ ๊ฐ๊ฐ ๋ค๋ฅธ ์ธ์ด๋ก ๊ตฌํ๋ ํ๋ก๊ทธ๋จ๋ค์ ์ดํด๋ณด๋ฉฐ ๋น๊ต ํ ๋ก ์ ํ ๊ฒ์
๋๋ค.
Lemon Team ๊น๋จํ, ์ ์ฌ๋, ๋จ์ํ, ์ด์ ์ฐ, ์ด์ฐฝ์ญ
Orange Team ์ด์ ์ง, ๊ฐ์ธ์, ์ด์ ํธ, ์ด๋์ค
Cocoa Team ์ต๊ด์, ์ ์ง๊ท , ์๊ตฌ๊ทผ, ์์ฐจ์ญ, ๋ฐํ์
Pipe Team ์ฑํฌ์, ๊ฐ์์ฒ, ๋ฅ์๋ฏผ, ๊นํ์ฉ
Snake Team ๊น์น๋ฒ, ์ด๋ด๋ผ, ์์ง์, ํ์ฑ๋
์ฒ์์๋ ์ ์
์ ๋์์ผ๋ก Python ๊ฐ์๊ฐ ์๋ค๊ณ ํด์, ๊ฑฐ๊ธฐ์ ๋ณดํฌ์ด ๋ ๊น ํ๋ ๋ง์์ผ๋ก ์ธ๋ฏธ๋๋ฅผ ํด๋๋ฆฌ๊ฒ ๋ค๊ณ ํ๋๋ฐ, ์ด๋ป๊ฒ ์ค๊ฐ์์ "ํ๋ก๊ทธ๋๋ฐ ์ ๋ฐ"์ ๋ํ ์ธ๋ฏธ๋๋ก ์ฑ๊ฒฉ์ด ๋ณํ ๊ฒ ๊ฐ์ต๋๋ค. ์ค์ต ์ค์ฌ์ผ๋ก ํ๊ฒ ๋ ๊ฒ์ด๊ณ , ์๋ฌด๋ฆฌ Python์ด ๋ฐฐ์ฐ๊ธฐ ์ฌ์ด ์ธ์ด๋ผ๊ณ ํด๋ Python์ ์ต์ํ ์ฌ๋์ด ํ๋๋ ์๋ ํ์ด๊ฐ ๋์๊ฐ ์์ ๋ญ๊ฐ ๋ค๋ฅธ ๊ฒ์ (Python์ ํตํด) ์ตํ๋ค๋ ๊ฒ์ ์ด๋ ต๊ณ , ๋ ํจ์จ์ ์ด์ง ๋ชปํ๊ธฐ ๋๋ฌธ์, ์ฌ๋ฌ๋ถ๋ค ์์ ์ด ๊ฐ์ฅ "์์ ์๋" ์ธ์ด๋ฅผ ์ฌ์ฉํ๋๋ก ํ๋ ๊ฒ ์ข๊ฒ ๋ค๋ ์๊ฐ์ ํฉ๋๋ค.
์ด ๋, OOP๊ฐ ๊ฐ๋ฅํ ์ธ์ด๋ฅผ ์ถ์ฒํ๊ณ , ํด๋น ์ธ์ด์ xUnit ์ฌ์ฉ๋ฒ์ ๋ฏธ๋ฆฌ ์ตํ์ค๊ธฐ ๋ฐ๋๋๋ค. (๋ฐ๋์ ์ ๋๊ฐ ํ์ํ ๊ฒ๋๋ค) http://www.xprogramming.com/software.htm ์์ ๋ค์ด ๋ฐ์ ์ ์์ต๋๋ค.
(See Also PyUnit, UnitTest, JUnit, CppUnit. C ์ธ์ด๋ฅผ ์ฌ์ฉํ์๋ ๋ถ๋ค์ ASSERT ๋ฌธ์ผ๋ก UnitTest ๋ถ๋ถ์ ์ด๋์ ๋ ๋์ ํ ์ ์์ต๋๋ค.)
(See Also PyUnit, UnitTest, JUnit, CppUnit. C ์ธ์ด๋ฅผ ์ฌ์ฉํ์๋ ๋ถ๋ค์ ASSERT ๋ฌธ์ผ๋ก UnitTest ๋ถ๋ถ์ ์ด๋์ ๋ ๋์ ํ ์ ์์ต๋๋ค.)
ํ์ง๋ง ๋์ ์๋ฃํ ์ธ์ด๋ฅผ ์ ํ๋ ๊ฒ ์์ฒด๊ฐ ํฐ ์ฅ์ ์ผ ์๊ฐ ์์ต๋๋ค. ํนํ TDD์ Refactoring์ ๋์ ์๋ฃํ ์ธ์ด์์ ๋น์ ๋ฐํ๊ณ , ๋๋ค์์ DP๋ ์ธ์ด ์์ค์์ ์ง์์ด ๋๊ฑฐ๋ ์์ฃผ ๊ฐ๋จํฉ๋๋ค. 20๋ถ ์ ๋๋ฉด Python์ ๊ฐ๋ตํ๊ฒ ํ์ ์๋ ์์ต๋๋ค.
์ฌ๋ฌ๋ถ์ ์๊ฐ์ ์ด๋ป์ต๋๊น?
00ํ๋ฒ ๊น๋จํ์
๋๋ค. C ๋ก๋ ์๊ด์์๊น์?
๊ด์ฐฎ์ต๋๋ค๋ง, ๊ฐ๋ฅํ๋ค๋ฉด OOP์ธ์ด๋ฅผ ๊ถํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ ์ด ์ ํํ ์ธ์ด์ ๋์ผํ ์ธ์ด๋ฅผ ์ ํํ ์ฌ๋์ด ์ต์ํ ํ๋ช
์ ๋ ์์ด์ผ ํฉ๋๋ค.
์ธ๋ฏธ๋ ์ ์ ํ์ด๋ฅผ ์ง๋๊ฒ ์ข๊ฒ ๊ตฐ์.. -๋จํ์ด ํ์ด์ง๋ฅผ ํตํด ์ง๋ ๊ฒ ์ข๊ฒ ์ต๋๋ค. ๊ฐ๋ฅํ๋ฉด ์๋ก ์ ๋ชจ๋ฅด๋ ์ฌ๋๋ผ๋ฆฌ๊ฐ ์ข์ต๋๋ค. ๋ฐฐ์ธ ๊ฒ์ด ๋ ๋ง์ต๋๋ค.
์ฐธ๊ด์ ์ตํํธ ์ค์ ์ ์์ค์ฝ๋: VendingMachine_์ฐธ๊ด์
see also 02_Python