3~6์ฅ์ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ๋ค๋ฃฌ๋ค.
2๋ถ _ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์
์ํํธ์จ์ด ์ํคํ ์ฒ๋ ์ฝ๋๋ก๋ถํฐ ์์ํ๋ค. ๋ฐ๋ผ์, ์ฝ๋๊ฐ ์ฒ์ ์์ฑ๋ ์์ ์ ํ๋ก๊ทธ๋๋ฐ๋ถํฐ ์ค๋ช ํ๋ค.
๐ ํ๋ก๊ทธ๋๋ฐ์ ์ญ์ฌ... ๋ค์๋ณด๊ธฐ
1938๋ , ๋ฐ์ด๋๋ฆฌ ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ ์๊ธฐ์๋ ๋ฐ๋ณต๋ฌธ, ๋ถ๊ธฐ๋ฌธ, ํ ๋น๋ฌธ, ์๋ธ๋ฃจํด, ์คํ ๋ฑ์ ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ๋ค.
1940๋ ํ๋ฐ, ์ด์ ๋ธ๋ฌ(assembler)์ ๋ฑ์ฅ์ผ๋ก ๋ฐ์ด๋๋ฆฌ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ง ์์์ด ๊ฐ๋ฅํด์ก๋ค.
1951๋ , ๊ทธ๋ ์ด์ค ํธํผ๋ ์ปดํ์ผ๋ฌ(complier)๋ผ๋ ์ฉ์ด๋ฅผ ๋ง๋ค๊ณ , ์ต์ด์ ์ปดํ์ผ๋ฌ์ธ A0 ๋ฅผ ๋ฐ๋ช ํ๋ค.
์ดํ Fortran, COBOL, PL/1, SNOBOL, C, Pascal, C++, Java ๋ฑ ์ธ์ด๊ฐ ์ฐ๋ฃจ๋ฃจ ๋์๋ค.
์ดํ, ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์๋ ํ์ ์ ์ธ ๋ณํ๊ฐ ์ผ์ด๋ฌ๋ค.
ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์(paradigm) ์ "ํ๋ก๊ทธ๋๋ฐ์ ํ๋ ๋ฐฉ๋ฒ"์ผ๋ก, ๋์ฒด๋ก ์ธ์ด์๋ ๋ ๋ฆฝ์ ์ด๋ค.
ํจ๋ฌ๋ค์์ ์ด๋ค ํ๋ก๊ทธ๋๋ฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ ์ง, ์ธ์ ์ด ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํด์ผํ๋์ง๋ฅผ ๊ฒฐ์ ํ๋ค.
3์ฅ ํจ๋ฌ๋ค์ ๊ฐ์
โ๏ธ ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ
- ๋ฌด๋ถ๋ณํ ์ ํ(goto ๋ฌธ์ฅ)์ ์ฌ์ฉํ์ง ์๊ณ , if/then/else ์ do/while/until ๊ณผ ๊ฐ์ ์ ์ด๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋๋ก ํ๋ ๋ฐฉ์
- ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ์ ์ ์ดํ๋ฆ์ ์ง์ ์ ์ธ ์ ํ์ ๋ํด ๊ท์น์ ๋ถ๊ณผํ๋ค.
= goto ๋ฌธ์ฅ์ ์ฐ์ง ๋ชปํ๋๋ก ํ๋ค.
โ๏ธ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ
- ํจ์ ํธ์ถ ์คํ ํ๋ ์(stack frame)์ ํ(heap)์ผ๋ก ์ฎ๊ธฐ๋ฉด, ํจ์ ํธ์ถ์ด ๋ฐํ๋ ํ์๋ ํจ์์์ ์ ์ธ๋ ์ง์ญ ๋ณ์๊ฐ ์ค๋ซ๋์ ์ ์ง๋ ์ ์์์ ๋ฐ๊ฒฌ
- ์ฆ, ํ์์ ํธ์ถํ ํจ์๋ ํด๋์ค์ ์์ฑ์๊ฐ ๋์๊ณ , ์ค๋ซ๋์ ์ ์ง๋ ์ง์ญ ๋ณ์๋ ์ธ์คํด์ค ๋ณ์, ์ค์ฒฉ ํจ์๋ ๋ฉ์๋๊ฐ ๋์๋ค.
- ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ ์ดํ๋ฆ์ ๊ฐ์ ์ ์ธ ์ ํ์ ๋ํด ๊ท์น์ ๋ถ๊ณผํ๋ค.
= ํจ์ ํฌ์ธํฐ๋ฅผ ํน์ ๊ท์น์ ๋ฐ๋ผ ์ฌ์ฉํ๋ค.
โ๏ธ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- ์ํ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ณผ์ ์์ ๋๋ค(lambda) ๊ณ์ฐ๋ฒ์ ๋ฐ๊ฒฌํ๋ค.
- ๋๋ค ๊ณ์ฐ๋ฒ์ ๊ธฐ์ด๊ฐ ๋๋ ๊ฐ๋ ์ ๋ถ๋ณ์ฑ(immutability)์ผ๋ก, ์ฌ๋ณผ(symbol)์ ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์๋๋ค๋ ๊ฐ๋ ์ด๋ค.
- ํจ์ํ ์ธ์ด์๋ ํ ๋น๋ฌธ์ด ์ ํ ์๋ค๋ ๋ป๊ณผ ๊ฐ๋ค. (๋ณ์ ๊ฐ์ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ง๋ง ๊น๋ค๋ก์ด ์กฐ๊ฑด๋ด์์๋ง ๊ฐ๋ฅ)
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ํ ๋น๋ฌธ์ ๋ํด ๊ท์น์ ๋ถ๊ณผํ๋ค.
= ํ ๋น๋ฌธ์ ์ฐ์ง ๋ชปํ๋๋ก ํ๋ค.
=> ๊ฐ๊ฐ์ ์ธ๊ฐ์ง ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ์ผ์ข ์ ๊ท์น์ ๋ถ๊ณผํจ์ผ๋ก์จ ํ๋ก๊ทธ๋๋จธ์๊ฒ์ ํน์ ๊ถํ์ ๋ฐํํ๊ณ ์๋ค.
ํจ๋ฌ๋ค์์ ๋ฌด์์ ํด์ผํ ์ง ๋งํ๊ธฐ๋ณด๋ค๋, ๋ฌด์์ ํด์๋ ์ ๋๋์ง๋ฅผ ๋งํด์ค๋ค.
4์ฅ ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ
์ ๋ช ํ ๋ค์ต์คํธ๋ผ.. Dijkstra ํ๋ก๊ทธ๋๋จธ์ ์ด์ผ๊ธฐ๋ถํฐ ์์ํ๋ค. ๐
1952๋ ๋ค๋๋๋ ์ต์ด์ ํ๋ก๊ทธ๋๋จธ, ํ๋ก๊ทธ๋๋จธ๋ผ๋ ์ง์ ์ด ์๋ ์์ , ์ด๋ก ๋ฌผ๋ฆฌํ์๋ผ๊ณ ๋งํด์ผํ๋ ์์ ๋ถํฐ ํ๋ก๊ทธ๋๋ฐ์ ์๋ฆฌ๋ ๊ณผํ์ ์ฆ๋ช ํ๊ธฐ ์ํด ๋ ธ๋ ฅํ ์ฌ๋์ด๋ค.
์ฆ๋ช
๋ฐ์ดํฌ์คํธ๋ผ๊ฐ ์ด๊ธฐ์ ์ธ์ํ ๋ฌธ์
- ํ๋ก๊ทธ๋๋ฐ์ ์ด๋ ต๊ณ , ํ๋ก๊ทธ๋๋จธ๋ ํ๋ก๊ทธ๋๋ฐ์ ์ ํ์ง ๋ชปํ๋ค.
- ํ๋ก๊ทธ๋จ์ ๋๋ฌด ๋ง์ ์ธ๋ถ์ฌํญ์ ๋ด๊ณ ์๊ณ , ์์ ์ธ๋ถ์ฌํญ์ด๋ผ๋ ๊ฐ๊ณผํ๋ฉด ๊ฒฐ๊ตญ ์์ ์ธ์ ๋ฐฉ์์ผ๋ก ์คํจํ๊ณค ํ๋ค.
์ํ์ ์ธ ์๋ฆฌ "์ฆ๋ช (proof)"์ ์ ์ฉํด ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ ํ๋ค.
- ์ํ์์์ ์ ํด๋ฆฌ๋ ๊ณ์ธต๊ตฌ์กฐ๋ฅผ ํ๋ก๊ทธ๋๋จธ๋ ์ฌ์ฉํ ์ ์์๊ฑฐ๋ผ๊ณ ๋ฏฟ์๋ค.
- ๊ทธ์ ๋น์ ์ ๊ณต๋ฆฌ, ์ ๋ฆฌ, ๋ค๋ฆ์ ๋ฆฌ, ๋ณด์กฐ์ ๋ฆฌ๋ก ๊ตฌ์ฑ๋๋ ์ ํด๋ฆฌ๋ ๊ณ์ธต๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ๊ฒ์ด์๋ค.
- ํ๋ก๊ทธ๋๋จธ๋ ์ ์ฆ๋ ๊ตฌ์กฐ๋ฅผ ์ด์ฉ, ์ด๋ค ๊ตฌ์กฐ๋ฅผ ์ฝ๋์ ๊ฒฐํฉ, ์ฝ๋๊ฐ ์ฌ๋ฐ๋ฅด๋ค๋ ์ฌ์ค์ ์ค์ค๋ก ์ฆ๋ช ํ๊ฒ ๋๋ ๋ฐฉ์์ ๊ธฐ๋ํ๋ค.
์ฆ๋ช ํ๊ธฐ ์ํด์ ๋จ์ํ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ๊ธฐ๋ณธ์ ์ธ ์ฆ๋ช ์ ์์ฑํ ์ ์๋ ๊ธฐ๋ฒ์ ๊ณ ๋ฏผํ๋ค.
- ์ด ๊ณผ์ ์์ goto ๋ฌธ์ฅ์ด ๋ชจ๋์ ๋ ์์ ๋จ์๋ก ์ฌ๊ท์ ์ผ๋ก ๋ถํดํ๋ ๊ณผ์ ์ ๋ฐฉํด๊ฐ ๋๋ ๊ฒฝ์ฐ๊ฐ ์์์ ๋ฐ๊ฒฌํ๋ค.
- ๋ชจ๋์ ๋ถํดํ ์ ์๋ค๋ฉด, ํฉ๋ฆฌ์ ์ผ๋ก ์ฆ๋ช ํ ๋ ํ์์ ์ธ ๋ถํ ์ ๋ณต ์ ๊ทผ๋ฒ์ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
- goto ๋ฌธ์ฅ์ ์ฌ์ฉํ๋๋ผ๋, ๋ฐฉํด๊ฐ ๋์ง ์๋ ๊ฒฝ์ฐ๋ ๋ถ๊ธฐ(if/then/else) ์ ๋ฐ๋ณต(do/while) ์ด๋ผ๋ ๋จ์ํ ์ ์ด ๊ตฌ์กฐ์ ํด๋นํ๋ค๋ ์ฌ์ค์ ๋ฐ๊ฒฌํ๋ค.
๋จ์ํ ์ ์ด ๊ตฌ์กฐ๋ ์์ฐจ ์คํ(sequential execution)๊ณผ ๊ฒฐํฉํ์ ๋ ํน๋ณํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์๋ค.
- ๋ต๊ณผ ์ผ์ฝํผ๋๋ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ์์ฐจ(sequence), ๋ถ๊ธฐ(selection), ๋ฐ๋ณต(iteration) ์ด๋ผ๋ ์ธ ๊ฐ์ง ๊ตฌ์กฐ๋ง์ผ๋ก ํํํ ์ ์๋ค๋ ์ฌ์ค์ ์ฆ๋ช ํ๋ค.
- ์ด ๋ฐ๊ฒฌ์ ํตํด ๋ชจ๋์ ์ฆ๋ช ๊ฐ๋ฅํ๊ฒ ํ๋ ์ ์ด ๊ตฌ์กฐ == ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ์ ์๋ ์ ์ด ๊ตฌ์กฐ์ ์ต์ ์งํฉ ์์ ๋ณด์ฌ์คฌ๋ค.
-> ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ์ ํ์ !
๋ฐ์ดํฌ์คํธ๋ผ์ ์ฆ๋ช ์ ๊ณ์๋๊ณ ์ ํด๋ฆฌ๋ ๊ณ์ธต๊ตฌ์กฐ๋ฅผ ๋ง๋ค ์ ์์ ๊ฒ์ด๋ผ ์๊ฐํ๋ค..
- ์์ฐจ ๊ตฌ๋ฌธ : ๋จ์ํ ์ฐ๊ฑฐ๋ฒ์ ์ด์ฉํด ์ ๋ ฅ๋ถํฐ ์ถ๋ ฅ๊น์ง ์์ฐจ์ ์ผ๋ก ์ถ์
- ๋ถ๊ธฐ : ๋ถ๊ธฐ๋ฅผ ํตํ ๊ฐ ๊ฒฝ๋ก๋ฅผ ์ด๊ฑฐํ ํ ์์ฐจ ๊ตฌ๋ฌธ๊ณผ ๊ฐ์ด ์ถ์
- ๋ฐ๋ณต : 1์ ๊ฒฝ์ฐ๊ฐ ์ฌ๋ฐ๋ฆ์ ์ฆ๋ช ํ๊ณ , N์ ๊ฒฝ์ฐ๊ฐ ์ฌ๋ฐ๋ฅด๋ค๊ณ ๊ฐ์ ํ ํ N+1์ ๊ฒฝ์ฐ๋ ์ฆ๋ช ํ๋ ๊ท๋ฉ๋ฒ ์ฌ์ฉ
ํด๋ก์ด ์ฑ๋ช ์ / ๊ธฐ๋ฅ์ ๋ถํด
- "goto ๋ฌธ์ ํด๋ก์" ์ผ๋ก ํธ์ง๋ฅผ ์จ์ ์ธ ๊ฐ์ง ์ ์ด ๊ตฌ์กฐ์ ๋ํ ์์ ์ ์๊ฒฌ์ ํผ๋ ฅํ๋ค.
- ์ด ๋ ผ์์ด 10๋ ์ด์ ์ง์๋์์ง๋ง.. ์ปดํจํฐ ์ธ์ด๊ฐ ์งํํ๋ฉด์ goto ๋ฌธ์ฅ์ ๋ฐ๋ ค๋๊ณ ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ์ด ์๋ฆฌ์ก๊ฒ ๋์๋ค.
- ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ์ ํตํด ๋ชจ๋์ ์ฆ๋ช ๊ฐ๋ฅํ ๋ ์์ ๋จ์๋ก ์ฌ๊ท์ ์ผ๋ก ๋ถํดํ ์ ์๊ฒ ๋์๋ค.
- ์ด๋ ๊ฒฐ๊ตญ ๋ชจ๋์ ๊ธฐ๋ฅ์ ์ผ๋ก ๋ถํดํ ์ ์์์ ๋ปํ๋ค.
๊ฑฐ๋ํ ๋ฌธ์ ๊ธฐ์ ์ - > ๊ณ ์์ค์ ๊ธฐ๋ฅ๋ค - > ์ ์์ค์ ํจ์๋ค - > ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ์ ์ ์ด ๊ตฌ์กฐ๋ก ํํ ๊ฐ๋ฅ
- 1970 ํ๋ฐ ~ 1980 ๋ ๋์ ๊ฑธ์ณ ๊ตฌ์กฐ์ ๋ถ์(structured analysis), ๊ตฌ์กฐ์ ์ค๊ณ(structured design) ๊ธฐ๋ฒ์ด ์ธ๊ธฐ๋ฅผ ๋์๋ค.
ํ์ง๋ง.. ์๋ฐํ ์ฆ๋ช ์ ์์๋ค.
ํ๋ก๊ทธ๋จ ๊ด์ ์์ ์ ๋ฆฌ์ ๋ํ ์ ํด๋ฆฌ๋ ๊ณ์ธต๊ตฌ์กฐ๋ ๋ง๋ค์ด์ง์ง ์์๋ค.
์ํ์ ์ธ ์ฆ๋ช ๋ง ์๋ ๊ฒ์ด ์๋.. ๊ณผํ์ ๋ฐฉ๋ฒ(scientific method) ์ผ๋ก ์ฌ๋ฐ๋ฅธ์ง๋ฅผ ์ ์ฆํ ์ ์๋ค.
- ์ํ : ์ฆ๋ช ๊ฐ๋ฅํ ์์ ์ด ์ฐธ์์ ์ ์ฆํ๋ ์๋ฆฌ
- ๊ณผํ : ์ฆ๋ช ๊ฐ๋ฅํ ์์ ์ด ๊ฑฐ์ง์์ ์ ์ฆํ๋ ์๋ฆฌ
๋ฐ์ดํฌ์คํธ๋ผ๋ "ํ ์คํธ๋ ๋ฒ๊ทธ๊ฐ ์์์ ๋ณด์ฌ์ค ๋ฟ, ๋ฒ๊ทธ๊ฐ ์์์ ๋ณด์ฌ์ค ์๋ ์๋ค" ๊ณ ๋งํ ์ ์ด ์๋ค.
์ฆ, ํ๋ก๊ทธ๋จ์ด ์๋ชป๋์์์ ํ ์คํธ๋ฅผ ํตํด ์ฆ๋ช ํ ์๋ ์์ง๋ง, ํ๋ก๊ทธ๋จ์ด ๋ง๋ค๊ณ ์ฆ๋ช ํ ์๋ ์๋ค.
=> ์ํํธ์จ์ด๋ ์ํ์ ์ธ ๊ตฌ์กฐ๋ฅผ ๋ค๋ฃจ๋ ๋ฏ ๋ณด์ด์ง๋ง, ๊ณผํ๊ณผ ๋น์ทํ๋ค๊ณ ๋ณผ ์ ์๋ค.
๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ก๊ทธ๋จ์ ์ฆ๋ช ๊ฐ๋ฅํ ์ธ๋ถ ๊ธฐ๋ฅ ์งํฉ์ผ๋ก / ์ฌ๊ท์ ์ผ๋ก ๋ถํดํ ๊ฒ์ ๊ฐ์ํ๋ค.
์ดํ ํ ์คํธ๋ฅผ ํตํด ์ฆ๋ช ๊ฐ๋ฅํ ์ธ๋ถ ๊ธฐ๋ฅ๋ค์ด ๊ฑฐ์ง์ธ์ง๋ฅผ ์ฆ๋ช ํ๋ ค๊ณ ์๋ํ๋ค.
๊ฑฐ์ง์์ ์ฆ๋ช ํ๋ ํ ์คํธ๊ฐ ์คํจํ๋ค๋ฉด, ์ด ๊ธฐ๋ฅ๋ค์ ๋ชฉํ์ ๋ถํฉํ ๋งํผ ์ถฉ๋ถํ ์ฐธ์ด๋ผ๊ณ ์ฌ๊ฒจ์ง๋ค.
๊ฒฐ๋ก
๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ์น๋ "๋ฐ์ฆ ๊ฐ๋ฅํ ๋จ์๋ฅผ ๋ง๋ค์ด ๋ผ ์ ์๋ ๋ฅ๋ ฅ" ๋๋ถ์ด๋ค.
์ํํธ์จ์ด๋ ๊ณผํ๊ณผ ๊ฐ๊ณ , ๋ฐ๋ผ์ ๋ฐ์ฆ ๊ฐ๋ฅ์ฑ์ ์ํด ์ฃผ๋๋๋ค.
์ํํธ์จ์ด ์ํคํ ํธ๋ ๋ชจ๋, ์ปดํฌ๋ํธ, ์๋น์ค๊ฐ ์ฝ๊ฒ ๋ฐ์ฆ ๊ฐ๋ฅํ๋๋ก(ํ ์คํธ๊ฐ ์ฝ๋๋ก) ๋ง๋ค๊ธฐ ์ํด ๋ถ์ฃผํ ๋ ธ๋ ฅํด์ผ ํ๋ค.
๐ ๋ง๋ฌด๋ฆฌ
์ํํธ์จ์ด์ ๋์ ๊ณผ์ ์ ์ฆ๋ช ํ๊ณ ์ ํ๋ ์๋๋ค์ด ๋๋ผ์ ๊ณ , ์ํํธ์จ์ด๋ ์ํ์ด ์๋ ๊ณผํ์ ๊ฐ๊น๋ค๋ ๊ฒฐ๋ก ์ด ๊ต์ฅํ ์๋ฟ์๋ค.
์ฆ๋ช ๊ฐ๋ฅํ๋๋ก ๋ ์์ ๊ตฌ์กฐ๋ก ์ชผ๊ฐ ๊ฒ์ด, ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ์ ์๋ ์ ์ด ๊ตฌ์กฐ์ ์ต์ ์งํฉ์ด๋ผ๋ ๊ฒ๋..
ํด๋ฆฐ ์ฝ๋์์ ์ฝ์๋ ๋ฉ์๋ ์๊ฒ ์ชผ๊ฐ๊ธฐ, ํด๋์ค ๋จ์ผ ์ฑ ์ ์์น ๋ฑ.. ๋ชจ๋ ํ ์คํธ๋ฅผ ์ํ ๊ฒ์ด๊ณ , ๋ชจ๋ ์ฆ๋ช (๋ฐ์ฆ)์ ์ํ ๊ฒ์ด๋ค. ๐ค
'๐ Client' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํด๋ฆฐ ์ํคํ ์ฒ] 1์ฅ ์ค๊ณ์ ์ํคํ ์ฒ๋? & 2์ฅ ๋ ๊ฐ์ง ๊ฐ์น์ ๋ํ ์ด์ผ๊ธฐ (0) | 2022.01.11 |
---|