1.3 ์ถ์ํ : readability ์ฆ๊ฐ ๋ชฉ์
์์ ๋ฐ๋ฅธ ๋ถ๋ฅ
- ๊ธฐ๋ณธ ์ถ์ํ : ๊ฐ์ฅ ์ง์ฝ์ ์ธ ๊ธฐ๊ณ์ ๋ณด์ ๋ํ ์ถ์ํ
- ๊ตฌ์กฐ ์ถ์ํ : ๋ณด๋ค ์ ์ญ์ ์ธ ์ ๋ณด์ธ ํ๋ก๊ทธ๋จ์ ๊ตฌ์กฐ์ ๋ํ ์ถ์ํ
- ๋จ์ ์ถ์ํ : ๋จ์ ํ๋ก๊ทธ๋จ ์ ์ฒด์ ๋ํ ์ ๋ณด์ ์ถ์ํ
๋ฒ์ฃผ
- ์๋ฃ ์ถ์ํ : ๋ฌธ์์ด, ์ซ์์ ๊ฐ์ ๊ณ์ฐ๋ ์๋ฃ์ ํน์ฑ์ ์ถ์ํ → ๋ฐ์ดํฐ
- ์ ์ด ์ถ์ํ : ์คํ์์๋ฅผ ์ ์ดํ๋ ํน์ฑ์ ์ถ์ํ → ์๊ณ ๋ฆฌ์ฆ
ex) ๋ฐ๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ, ํ๋ก์์ ํธ์ถ ๋ฑ
์๋ฃ ์ถ์ํ
- ๊ธฐ๋ณธ : ์ปดํจํฐ ๋ด๋ถ ์๋ฃ (Data type ์ถ์ํ)
- ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ : ๋ณ์๋ก ์ถ์ํ
- ์๋ฃ์ ๊ฐ : 2์ง์๋ฅผ 10์ง์ ์ค์ํ์ผ๋ก ์ถ์ํ
- ๊ตฌ์กฐ : ์ฐ๊ด๋ ๋ฐ์ดํฐ ์งํฉ์ ์ถ์ํ (๋ฐฐ์ด, ๋ ์ฝ๋, struct) typedef (๊ตฌ์กฐํ์ ์ ์ด๋ฆ ๋ถ์ฌ ๊ธฐ๋ฅ)
- ๋จ์ : ์๋ฃ์ ์์ฑ, ํ๊ธฐ, ์ฌ์ฉ์ ๊ดํ ์ ๋ณด๋ฅผ ๋ชจ์๋๊ณ ์ ๊ทผ์ ์ ํ
๋ฐ์ดํฐ ์ ์, ์ธํฐํ์ด์ค, ๊ฐ๋ค์ ํ๋๋ก ์บก์ํ (c++์ class → ADT)
์ ์ด ์ถ์ํ
- ๊ธฐ๋ณธ : ๋ช๊ฐ์ ๊ธฐ๊ณ ๋ช ๋ น์ด๋ฅผ ๋ชจ์ ์ดํดํ๊ธฐ ์ฌ์ด ์ถ์ ๊ตฌ๋ฌธํ
๋ฐฐ์ ๋ฌธ (x := x+y) / ๋ถ๊ธฐ๋ฌธ (if goto) ๋ฑ๋ฑ
- ๊ตฌ์กฐ : ๊ฒ์ฌ ๊ฐ์ ๋ฐ๋ผ ๋ถํ ๋ ๋ช ๋ น์ด ๊ทธ๋ฃน ์ํ
๋จ์ผ state ๊ตฌ๋ฌธ๋ค์ด ์กฐํฉ๋ผ์ ํ๋์ ๊ตฌ๋ฌธ์ ์ด๋ฃธ.
- ํ์ผ๋ฌธ (if, case, switch) / ๋ฐ๋ณต๋ฌธ (for, while ๋ฑ๋ฑ) / ๊ฐ๋ ฅํ ๊ตฌ์กฐ ์ ์ด(ํ๋ก์์ )
- ๋จ์ : procedure๋ค์ด ๋ชจ์ฌ์ ํ๋์ ๊ทธ๋ฃน์ ์ถ์ํ
์ฌ๋ฌ ์์ ๋ค์ ๋ชจ์์ ํ๋์ ๋จ์ ํ๋ก๊ทธ๋จํ / ๋ผ์ด๋ธ๋ฌ๋ฆฌ
ex) C++/JAVA์ class, ADA์ package
๋ณ๊ฐ์ ์ถ์ํ๊ธฐ๋ฒ
- ๋ณํ ํ๋ก๊ทธ๋๋ฐ(๋๊ธฐํ, ํต์ ๊ฐ๋
์ง์)
ex) coroutine, task, process
1.4 ๊ณ์ฐ ์ ํ (computational paradigms)
๋ช ๋ นํ (impertative) / ์ ์ฐจ์ (procedural) ์ธ์ด
- ๋ช ๋ น์ ์์ฐจ์ ์คํ (๋ณ๋ชฉํ์) - ๋ณ์ ์ฌ์ฉ / ๋ฐฐ์ ๋ฌธ ์ฌ์ฉ
- ๋ง์ ์๋ฃ์ ๋์ ๊ณ์ฐ, ์์์ ์์กดํ์ง ์๋ ๊ณ์ฐ์ ๋นํจ์จ์ → ๋ณ๋ชฉํ์
ex - C, ADA, Pascal, Fortran, Basic ๋ฑ ๋๋ถ๋ถ ์ธ์ด
๋ช ๋ นํ ๊ณ์ฐ ์ ํ์ ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด ํจ์ํ/๋ ผ๋ฆฌํ ๋ฑ์ด ๋์ด.
ํจ์ํ (functional) / ์ ์ฉํ (applicative) ์ธ์ด
- ํจ์๋ฅผ ๋ง๋ค๊ณ → ํ๊ฐํ๊ณ → ์ ์ฉํ๊ธฐ ์ํด ํธ์ถ
- ๋ณ์, ๋ฐฐ์ ๋ฌธ์ด ์์
- ๋ฐ๋ณต ์ฐ์ฐ์ ์ฌ๊ท์ ํจ์ ์ด๋ก ์ ์ํด ๊ธฐ์ ๋จ
๋ ผ๋ฆฌํ (logical) / ์ ์ธํ (declarative) ์ธ์ด
- ๊ธฐํธ ๋ ผ๋ฆฌํ (p์ด๋ฉด q์ด๋ค..) ์ ๊ทผ๊ฑฐ
- ๋ ผ๋ฆฌ์ ์ธ ๊ธฐ์ ์ ๋จผ์ ํ๊ณ , ๊ฑฐ๋ฐ๊ฐ ๋ญ ํ๋๊ฑฐ๊ฐ์๋ฐ..
- ๋ฐ๋ณต์ด๋ ์ ํ ๊ฐ๋ ๋ถํ์
๊ฐ์ฒด ์งํฅ ์ธ์ด
- ๊ฐ์ฒด์ ๊ธฐ๋ฐ
- ๊ฐ์ฒด : ์ํ๋ฅผ ์๋ฏธํ๋ ๊ธฐ์ต ์ฅ์์ ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ ์ฐ์ฐ์ ์งํฉ (๋ณ์, ํจ์)
- ๊ฐ์ฒด๋ ํด๋์ค๋ก ๊ทธ๋ฃนํ
- Simula67 ์ด ์ต์ด
1.5 ์ธ์ด ์ ์
- ๊ตฌ๋ฌธ(syntax) ์ ์์ ์๋ฏธ(semantics) ์ ์
- ๊ตฌ๋ฌธ ์ ์ : ๋๋ถ๋ถ์ ์ธ์ด๊ฐ ๋ฌธ๋งฅ ์์ ๋ฌธ๋ฒ (context free grammer)๋ฅผ ๋ง์กฑํ๋ฉฐ,
BNF๋ก ์ ์ → ํ์ํ๊ฐ ์ ๋์ด ์์ - ์๋ฏธ ์ ์ : ์๋ฏธ๋ ํ๋ก๊ทธ๋จ ์คํ ์ ์ด๋ค ์ผ์ด ๋ฐ์ํ๋๊ฐ๋ฅผ ๊ธฐ์
ex) if๋ฌธ์์ ๊ฑฐ์ง์ผ๋, else๋ฌธ ์ดํ๊ฐ ์กด์ฌํ๊ธฐ ์์ ๊ฒฝ์ฐ
์๋ฏธ๋ก ์ ํ์์ ์ ์ ๋ฐฉ๋ฒ : denotational / axiomatic