์ด ๊ธ์ ๊ตญ๋ฏผ๋ํ๊ต ๊ฐ์น์ ๊ต์๋์ 'ํ๋ก๊ทธ๋๋ฐ์ธ์ด๋ก ' ์์ ์ ํ ๋๋ก
๊ฐ์ธ์ ์ผ๋ก ํ์ตํ ๋ด์ฉ์ ๋๋ค.
2.1 ๋์งํธ ์ปดํจํฐ ์ด์ ์ ์ธ์ด
- ์ต์ด์ ์๊ณ ๋ฆฌ์ฆ
- ์ฐฐํํ, BC 1500 - 3000 ๋ฐ๋น๋ก ๊ทผ์ฒ ๋ฉ์ํฌํ๋ฏธ์
- 60์ง๋ฒ ์ฌ์ฉ(ํ์ฌ ์, ๋ถ, ์ด ๊ฐ๋
์ ์ฌ์ฉ), ๋ถ๋ ์์์ , ๊ฐ๊ฐ์น์ ๊ฐ๋ฅ
- ๋์ํ ๋ฐฉ์ ์ ํด๊ฒฐ
- ์์, 0 ๊ฐ๋
์์ (if x < 0 then branch ๊ฐ๋
X)
- ์๊ณ ๋ฆฌ์ฆ ๋ฐ๋ณต ์์ฑ, ์ฐ์ํ ํ๊ธฐ๋ฒ์ด์์
- ์ฐฐํํ, BC 1500 - 3000 ๋ฐ๋น๋ก ๊ทผ์ฒ ๋ฉ์ํฌํ๋ฏธ์
- Euclid
- B. C. 300๋
, ์ต๋๊ณต์ฝ์ ์๊ณ ๋ฆฌ์ฆ ๊ธฐ์
=> 0 ๊ฐ๋ ์์, ์ 1 ์ด ์ ์(๋๋์ ์์ ์ด๋ ํ ์๋ฅผ ๋๋๋ ์)๋ก ์ธ์๋์ง ์์์ - ํน์ํ ๊ฒฝ์ฐ์ ๋ฐ๋ณต์ํด
- B. C. 300๋
, ์ต๋๊ณต์ฝ์ ์๊ณ ๋ฆฌ์ฆ ๊ธฐ์
- Charles Babbage (1792 - 1871)
- Difference Engine
- ๊ณ์ฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ๊ธฐ๊ณ
- ์ ํ ์ฐจ(finite difference) ์ ์๋ฆฌ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ํจ
- Analytical Engine : ํ ๋์งํธ ์ปดํจํฐ์ ์๋ฆฌ ํฌํจ
- ํ์ฌ ์ปดํจํฐ์ ์ ์ฌํ ๊ตฌ์กฐ
- ํ๋ก๊ทธ๋จ๊ณผ ์๋ฃ๋ฅผ ์ฃผ๊ธฐ์ต์ฅ์น์ ์ ์ฅ์ํค๋ ์ ์ฅ ๊ฐ๋
์์
(์ฃผ๊ธฐ์ต์ฅ์น ์์ด ํ๋ก๊ทธ๋จ์ ์ํํด์ผ ํ๊ธฐ์ ์ฐ์ฐ ์นด๋, ๋ณ์ ์นด๋ ์ฌ์ฉ)
=> ๊ธฐ๊ณ๋ก ํ ์ ์๋๊ฑด ๋ค ํด๋ด ํ์ง๋ง, ์ ์ ๋ถํ์ด ์์ด์ ํ๊ณ๊ฐ ์์
- ํ์ฌ ์ปดํจํฐ์ ์ ์ฌํ ๊ตฌ์กฐ
- Ada Augusta (C. Babbage ์กฐ์)
- ์ต์ด์ ์ปดํจํฐ ํ๋ก๊ทธ๋๋จธ (Analytical Engine ํ๋ก๊ทธ๋๋จธ)
- Ada '์๊ณ ๋ฆฌ์ฆ ๋ถ์' ์ ๋ํ ๊ฒฌํด
- ์ต์ด์ ์ปดํจํฐ ํ๋ก๊ทธ๋๋จธ (Analytical Engine ํ๋ก๊ทธ๋๋จธ)
- 1930๋
๋-1940๋
๋
- ํ๋ก๊ทธ๋๋ฐ ํ๊ธฐ์์ ์ฐฝ์กฐ์ ์ธ ๊ฒ๋ค์ด ๊ธ๊ฒฉํ ์ฆ๊ฐํจ
• Zuse์ Plan Calculus
• Turing์ Turing Machine
• Church์ Lambda Calculus
• Aiken์ Mark I
• von Neumann์ Flow Diagrams - ๋์งํธ ์ปดํจํฐ์ ์ด๊ธฐ ๊ฐ๋ฐ์์๊ฒ ์๋ ค์ง์ง ์์
- ํ๋ก๊ทธ๋๋ฐ ํ๊ธฐ์์ ์ฐฝ์กฐ์ ์ธ ๊ฒ๋ค์ด ๊ธ๊ฒฉํ ์ฆ๊ฐํจ
- Difference Engine
2.2 1950๋ ๋ : ์ต์ด์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
1950๋ ๋ ์ด๋ฐ
๊ธฐ๊ณ์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก๊ทธ๋จ์ ์ ์ฅํ๋ ๋ฐฉ์์ด์์
=> ์ด๋ฅผ ๊ธฐํธํํ์ฌ ์ด์
๋ธ๋ฆฌ ์ธ์ด๊ฐ ๋์ค๊ฒ๋จ
(๊ธฐ๊ณ ์์กด์ , ์์ฐ์ด์ ์์ดํ ๊ตฌ๋ฌธ)
1950๋ ๋ ์ค๋ฐ
Fortran (Formula TRANslation)
=> John Backus์ ์ํด ๊ณ ์๋ ์ต์ด์ ๊ณ ๊ธ ์ธ์ด๋ก Fortran II, Fortran IV, ... , Fortran 90 ๋ฑ์ด ์์
Fortran ์ปดํ์ผ๋ฌ๋ ํจ์จ์ ์ธ ๊ธฐ๊ณ์ด ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๋ฐฐ์ด, ๋ฐ๋ณต ๊ตฌ์กฐ(LOOP), ๋ถ๊ธฐ๋ฌธ(IF), ๋ถ ํ๋ก๊ทธ๋จ(์๋ธ๋ฃจํด) ๋ฑ ํ์ ์ธ์ด์ ํฐ ์ํฅ์ ๋ฏธ์นจ
1950๋ ๋ ํ๋ฐ
- COBOL : ์์
์๋ฃ ์ฒ๋ฆฌ์ฉ (์ํ, ์ ๋ถ, ํ๊ณ ๋ฑ)
- ํ๋ก๊ทธ๋จ์ ์ฝ๊ธฐ ์ฝ๊ณ , ์ดํดํ๊ธฐ ์ฝ๊ฒ ํ๋ ๊ฒ์ด ์ค๊ณ ๋ชฉ์ ์
- ๋ ์ฝ๋ ๊ตฌ์กฐ ๋์
=> ๋ฐ์ดํฐ ๋ฌถ์์ ๊ตฌ์กฐํํจ (ex. ์ด๋ฆ, ์ฃผ์, ์ ํ๋ฒํธ๋ฅผ ํ๋์ ๊ณ ๊ฐ ์ ๋ณด๋ก) - ์๋ฃ๊ตฌ์กฐ์ ์คํ ๋ถ๋ถ์ ๋ถ๋ฆฌ
=> ๋ฐ์ดํฐ๋ ๋ฐ๋ก ์ ์ธ, ์คํ ๋ก์ง์ ๋ฐ๋ก - "PICTURE"๋ฅผ ์จ์ ์ํ๋ ์ถ๋ ฅ ์์์ ๊ฐ๋ณ์ฑ ๋ถ๊ฐ
=> ์ซ์/๋ฌธ์ ์ถ๋ ฅ ํ์์ ์ค์ (ex. 000-0000 ํํ ์ ํ๋ฒํธ)
- ALGOL 60 : ์๊ณ ๋ฆฌ์ฆ ๊ธฐ์ , ๋ฒ์ฉ
=> ํ๋์จ์ด๋ ๊ณ์ ๋ฐ์ ๋ ๊ฑฐ๋๊น ์ปดํ์ผ๋ฌ๋ ๋์ค์ ์๊ฐํ๊ณ ์๊ณ ๋ฆฌ์ฆ์ ์ฝ๋ฉํ๋ ๊ด์ ์ ๋ง์ถฐ์ง
(๋ฐ๋ผ์, COBOL๊ณผ ๋ค๋ฅด๊ฒ ๋ ์ด๋ก ์ ์)
- ์์์ ์์ ํ(free format), ๊ตฌ์กฐ์ ๋ช
๋ น๋ฌธ, begin-end ๋ธ๋ก
=> ์ฝ๋ ์ค ๋์ฐ๊ธฐ, ๋ค์ฌ์ฐ๊ธฐ ๋ฑ์ด ์์ ๋ก์ - ๋ณ์์ ํ์
์ ์ธ, recursion, call-by-value ๋งค๊ฐ ๋ณ์ ๋ฑ
=> ํจ์์ ์ธ์๋ฅผ ๊ฐ์ผ๋ก ์ ๋ฌ (๋ณต์ฌํด์ ์ ๋ฌ) - ์คํ ๊ธฐ๋ฐ์ ์คํ ํ๊ฒฝ ๋์
=> ํจ์ ํธ์ถ ์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์คํ์ ์๊ณ ๊บผ๋ - Backus-Naur Forms(BNF)์ ์ต์ด๋ก ์ฌ์ฉ
=> ๋ฌธ๋ฒ์ ์ํ์ ์ผ๋ก ํํํ ๋ฐฉ์
- ์์์ ์์ ํ(free format), ๊ตฌ์กฐ์ ๋ช
๋ น๋ฌธ, begin-end ๋ธ๋ก
- Lisp : ๊ธฐํธ์ฐ์ฐ, ๋ฆฌ์คํธ ์ฒ๋ฆฌ์ฉ (์ธ๊ณต์ง๋ฅ ์ฐ๊ตฌ ๋ชฉ์ )
- ์ผ๋ฐ์ ์ธ ๋ฆฌ์คํธ ๊ตฌ์กฐ์ ํจ์์ ์ ์ฉ์ ๊ธฐ๋ณธ์ผ๋ก ํจ
=> (A B C) ์ฒ๋ผ ๋ฐ์ดํฐ ๋ฌถ์ ์ฒ๋ฆฌ ๋ฐ (+ 1 2 ) = 3 ์ฒ๋ผ ํจ์ ์ ์ฉ ์ค์ฌ - ์ธ๊ณต์ง๋ฅ ๋ถ์ผ ์์ฉ
- ํต์ผ๋ ์๋ฃ๊ตฌ์กฐ, S-expression
=> ์ฐ์ฐ๊ณผ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๊ดํธ๋ก ํํํ๋ Symbolic Expression์ ์ฌ์ฉ
์์์ (+ 1 2) ๋ 1 + 2 ๋ฅผ LISP ์คํ์ผ๋ก ์์ฑํ ์์์ - ๊ธฐ๋ณธ์ ์ธ ๊ณ์ฐ ํ๊ธฐ๋ฒ์ ํจ์ ์ ์ฉ
- garbage collection ๊ฐ๋
์๊ฐ
=> ์ ์ฐ๋ ๋ฉ๋ชจ๋ฆฌ ์๋ ์ ๋ฆฌ - Recursion์ ์์กฐ
- ์ผ๋ฐ์ ์ธ ๋ฆฌ์คํธ ๊ตฌ์กฐ์ ํจ์์ ์ ์ฉ์ ๊ธฐ๋ณธ์ผ๋ก ํจ
- APL : ๋ฐฐ์ด ์ฒ๋ฆฌ์ฉ
=> ํ๋ ฌ/๋ฒกํฐ ์ฐ์ฐ์ ํ ์ค๋ก ์ฒ๋ฆฌ (ํ๋ ฌ/๋ฒกํฐ์ ๋ง์ถค)
ex. A + B -> ๋ ๋ฒกํฐ์ ์์๋ณ ๋ง์
2.3 1960๋ ๋ : ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํญ์ฆ
- PL/I
- Fortran, Cobol, Algol 60์ ์ฅ์ ๋ชจ๋ ์์ฉ
- ์๋ก์ด ๊ฐ๋
์ถ๊ฐ (๋ณํ์ฑ, ๊ธฐ์ต ์ฅ์ ํ ๋น, ์์ธ์ฒ๋ฆฌ)
- ๋ณํ์ฑ : ์ฌ๋ฌ ์์ ์ ๋์์ ์ฒ๋ฆฌ ๊ฐ๋ฅ
- ๊ธฐ์ต ์ฅ์ ํ ๋น : ๋์ ๋ฉ๋ชจ๋ฆฌ ์ฒ๋ฆฌ ๊ฐ๋ฅ
- ์์ธ ์ฒ๋ฆฌ : ์ค๋ฅ ๋ฐ์ ์ on error ๋ฑ์ผ๋ก ์ฒ๋ฆฌ ๊ฐ๋ฅ
- ์ธ์ด์ ๋ฌธ์ ์ (๋ฐฉ๋)
- ์ปดํ์ผ๋ฌ(๋ฒ์ญ๊ธฐ)๊ฐ ํฌ๊ณ ์์ฑ์ด ์ด๋ ค์
- ์คํ ํจ์จ ์ ํ
=> Potran, C ๊ฐ์ exe ํ์ผ์ด ๊ตฌ์กฐ์ ์ผ๋ก ๋น ๋ฆ - ๋ฐฐ์ฐ๊ธฐ ์ด๋ ค์, ์ค๋ฅ ๋ฐ์ ์ ๋
- ์ธ์ด ํน์ฑ๋ค์ ์ํธ ์์ฉ์ผ๋ก ์ธํ ์ ๋ขฐ์ฑ ์ ํ
=> ๊ธฐ๋ฅ๋ค์ด ์๋ก ์ถฉ๋ํ๋ฉด์ ๋ฒ๊ทธ ์ ๋ฐ ๊ฐ๋ฅ์ฑ์ด ๋์์ง
- Fortran, Cobol, Algol 60์ ์ฅ์ ๋ชจ๋ ์์ฉ
- Algol 68
- Algol60 + ํ ์ธ์ด์ ์ฌ๋ฌ ๊ธฐ๋ฅ + ํํ๋ ฅ ์๊ณ ์ผ๊ด๋ ๊ตฌ์กฐ
=> ๋ณต์กํ ๊ฐ๋ ๋ ๊ฐ๊ฒฐํ๊ฒ ํํ ๊ฐ๋ฅ - ์ด๋ก ์ ์ผ๋ก ์ผ๊ด์ฑ ๊ฐ๋ ๊ตฌ์กฐ
=> ๋ฌธ๋ฒ์ด ์ผ๊ด๋ผ์ ๋ฐฐ์ฐ๊ธฐ๋ง ํ๋ฉด ์์๋๋ก ๋์ํจ - ์ผ๋ฐ์ ์ธ ํ(type) ์์คํ
, ์ง๊ต์ฑ ๊ฐ์กฐ
=> ๋ชจ๋ ๊ธฐ๋ฅ์ด ๋ ๋ฆฝ์ ์ด๋ผ ์กฐํฉ์ด ์ฌ์ (์ง๊ต์ฑ)
(๋ฐฐ์ด๋ ํจ์์ฒ๋ผ ์ธ ์ ์๊ณ , ํจ์๋ ๊ฐ์ฒ๋ผ ์ธ ์ ์์) - ์ธ์ด ๊ธฐ์ -> ์๋ก์ด ์ฉ์ด ๊ณผ๋ค ์ฌ์ฉ
- ๋์์ธ ์ผ๊ด์ฑ, ํ์ผ ์์คํ
, ์คํํ๊ฒฝ -> ์ฐ์
- ๋ฒ์ฉ ์ปดํจํฐ ์ฌ์ฉ ๋ถ๊ฐ๋ฅ (์ปดํ์ผ๋ฌ ๊ตฌํ์ ๋ฌธ์ ์ )
=> ์ปดํ์ผ๋ฌ ๊ตฌํ์ด ์ด๋ ค์์ ์ค์ ๋ก ์ฐ๊ธฐ์ ๋๋ฌด ๋ฌด๊ฑฐ์
- Algol60 + ํ ์ธ์ด์ ์ฌ๋ฌ ๊ธฐ๋ฅ + ํํ๋ ฅ ์๊ณ ์ผ๊ด๋ ๊ตฌ์กฐ
- Snobol
- ์ต์ด์ ๋ฌธ์์ด ์ฒ๋ฆฌ ์ธ์ด, ํจํด ๋งค์นญ ๊ธฐ๋ฅ ๋ค์
- ์ต์ด์ ๋ฌธ์์ด ์ฒ๋ฆฌ ์ธ์ด, ํจํด ๋งค์นญ ๊ธฐ๋ฅ ๋ค์
- Simula 67
- ๊ฐ์ฒด ์งํฅ ์ธ์ด (ํด๋์ค ๊ฐ๋
์ต์ด ๋์
)
- Simula I + Algol 60
- ์๋ฎฌ๋ ์ด์
๋ชฉ์
- ๊ฐ์ฒด ์งํฅ ์ธ์ด (ํด๋์ค ๊ฐ๋
์ต์ด ๋์
)
- Basic
- ์๋ถํ ์ฉ์ ๊ฐ๊ฒฐํ ์ธ์ด
=> ํ๋์ ์ปดํจํฐ๋ฅผ ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ์ฌ์ฉํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ๋ง๋ฌ
(๊ฐ ์ฌ์ฉ์์๊ฒ ๋ช ๋ฐ๋ฆฌ์ด์ฉ ๋ฒ๊ฐ์ ๋ฐฐ์ ํด์ค) - ๋ง์ดํฌ๋ก ์ปดํจํฐ ์ด์ (๊ต์ก์ฉ, ์ฌ๋ฌด์ฒ๋ฆฌ์ฉ, ๊ฐ์ ์ฉ)
=> ์ด๊ธฐ PC(๋ง์ดํฌ๋ก ์ปดํจํฐ)์ ์ด์๋์ด ๋๋ฆฌ ์ฌ์ฉ๋จ - ์ธ์ด๊ตฐ (๊ฐ๊ฒฐํ๊ณ ๋จ์ํ ์ค๊ณ ๋๋ถ์ ๋ค์ํ ๋ฒ์ ๋ค์ด ํ์๋จ)
=> ๊ฐ์ฅ ํต์ฌ ๊ธฐ๋ฅ๋ง ํฌํจ๋ minimal BASIC๊ณผ ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ ๋ฑ ๋ ํ๋ถํ ๊ธฐ๋ฅ์ด ํฌํจ๋ Standard BASIC - ํ์ ๋์จ Basic : ์ ์ด ๊ตฌ์กฐ, ๋ณ์ ์ ์ธ, ํ๋ก์์ ์ถ๊ฐ
- ์๋ถํ ์ฉ์ ๊ฐ๊ฒฐํ ์ธ์ด
2.4 1970๋ ๋ : ๊ฐ๊ฒฐ์ฑ, ์ถ์ํ, ์ฐ๊ตฌ์ฌํญ
1960๋
๋์ ์ ๋ง ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ๋์ค๋ ํผ๋ ํ ๊ฐ๊ฒฐ์ฑ๊ณผ ์ผ๊ด์ฑ์ด ์ถ๊ตฌ๋จ
- Pascal
- ์๊ณ , ๊ฐ๊ฒฐํ๊ณ , ํจ์จ์ ์ด๊ณ , ๊ตฌ์กฐ์ ์ด๋ฉฐ, ํ๋ก๊ทธ๋๋ฐ ๊ต์ก์ฉ
- ๋ถ๋ฆฌ ์ปดํ์ผ, ์ ์ฉํ ๋ฌธ์์ด ์กฐ์, ์
์ถ๋ ฅ ๊ฐ๋ฅ
=> ์ฌ๋ฌ ํ์ผ๋ก ๋๋ ์ ๊ด๋ฆฌํ๊ธฐ ์ข์ (๋ถ๋ฆฌ ์ปดํ์ผ ๊ฐ๋ฅ)
- ์๊ณ , ๊ฐ๊ฒฐํ๊ณ , ํจ์จ์ ์ด๊ณ , ๊ตฌ์กฐ์ ์ด๋ฉฐ, ํ๋ก๊ทธ๋๋ฐ ๊ต์ก์ฉ
- C ์ธ์ด
- Pascal ๊ณผ๋ ๋ค๋ฅธ ๊ฐ๋์ ๊ฐ๊ฒฐ์ฑ
=> Pascal๊ณผ ๋ฌ๋ฆฌ ๊ต์ก๋ณด๋ค ์ค์ฉ์ฑ์ ์ด์ ์ ๋ - ์์ ์์ฃผ๋ก ํ ์์คํ
๊ณผ ์คํํ๊ฒฝ ์ถ์, ํ๋์จ์ด ์ ๊ทผ ์ฉ์ด
=> ์ฝ๋๊ฐ ์งง๊ณ ๋น ๋ฅด๋ฉฐ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์, ํฌ์ธํฐ๋ฅผ ์ง์ ๋ค๋ฃฐ ์ ์์ด ํ๋์จ์ด ์ ๊ทผ์ด ์ฉ์ดํจ - ์ค๊ธ ์ธ์ด๋ก ๋ถ๋ฅ : ๊ธฐ๊ณ ์ ๊ทผ์ฑ ๊ฐํ (๊ณ ๊ธ ์ธ์ด์ ์๋ฐ ๊ฐ๋
)
=> ๊ณ ๊ธ ์ธ์ด์ฒ๋ผ ์ฌ๋์ด ์ดํดํ๊ธฐ ์ฝ๊ณ ์ ๊ธ ์ธ์ด์ฒ๋ผ ๊ธฐ๊ณ๋ ๊ฐ๊น์ด ์ ์ด ๊ฐ๋ฅ - ์ด์์ฒด์ ํ๋ก๊ทธ๋๋ฐ์ฉ
=> ์ค์ ๋ก C ์ธ์ด๋ก UNIX๋ฅผ ๋ง๋ค๋ฉฐ C ์ธ์ด๊ฐ ๋์คํ๋จ
- Pascal ๊ณผ๋ ๋ค๋ฅธ ๊ฐ๋์ ๊ฐ๊ฒฐ์ฑ
C, Pascal ์ ๊ฐ๊ฒฐ์ฑ, ๋์์ธ ์ผ๊ด์ฑ(์๊ทธ๋ฃน์ ๊ณ ์)์ด ์ฑ๊ณต ์์ธ
=> ์์์ ๊ฐ๋ฐ์ ๊ทธ๋ฃน์ด ์ง์คํด์ ์ค๊ณํ๊ธฐ์ ์ฌ๋ฌ ์ฌ๋์ ์๊ฒฌ์ด ์์ด์ง ์๊ณ ํ๋์ ์ฒ ํ๊ณผ ์คํ์ผ๋ก ์ผ๊ด๋๊ฒ ๋ง๋ค์ด์ก์
(์ธ์ด ์์ฒด๊ฐ ๋ช ํํ๊ณ ํผ๋์ด ์ ์)
2.5 1980๋ ๋ : ํตํฉ๊ณผ ์๋ก์ด ๋ฐฉํฅ
ํจ์ํ ์ธ์ด์ ์๋ก์ด ๊ด์ฌ์ด ๋ถ์ฌ๋์๊ณ ๋ ผ๋ฆฌํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๋ฑ์ฅ ๋ฐ ๊ฐ์ฒด ์งํฅ ์ธ์ด์ ๋ํ ํ๋ฐํ ์ฐ๊ตฌ ๋ฐ ๊ฐ๋ฐ์ด ์งํ๋จ
- Ada
- ์๋ฃ ์ถ์ํ, ํ์
๋ฉ์ปค๋์ฆ(package), ๋ณํ ์ฒ๋ฆฌ(task), ์์ธ์ฒ๋ฆฌ๊ธฐ ๋์
- ์๋ฃ ์ถ์ํ : ์ค์ ๊ตฌํ ์ธ๋ถ ์ฌํญ์ ์จ๊ธฐ๊ณ , ๋ฐ์ดํฐ์ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ถ๋ฆฌํ๋ ๊ฐ๋
- ํ์
๋ฉ์ปค๋์ฆ : ๋ฐ์ดํฐ์ ๊ด๋ จ๋ ์ ์ฐจ๋ฅผ ํ๋๋ก ๋ฌถ๋ ๊ฐ๋
์ผ๋ก, ๋ชจ๋ํ๋ฅผ ํตํด ์ฌ์ฌ์ฉ์ฑ๊ณผ ๊ด๋ฆฌ ์ฉ์ด์ฑ์ ๋์
- ๋ณํ ์ฒ๋ฆฌ : ์ฌ๋ฌ ์์ ์ ๋์์ ์คํํ๋ ๊ธฐ๋ฅ์ผ๋ก, ๋ฉํฐ ์ค๋ ๋ฉ ๋ฐ ๋์์ฑ ์ฒ๋ฆฌ์ ๋์์ ์ค
- ์์ธ ์ฒ๋ฆฌ๊ธฐ : ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋ ์ด๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฉ์ปค๋์ฆ
- ์๋ฃ ์ถ์ํ : ์ค์ ๊ตฌํ ์ธ๋ถ ์ฌํญ์ ์จ๊ธฐ๊ณ , ๋ฐ์ดํฐ์ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ถ๋ฆฌํ๋ ๊ฐ๋
- ๋์์ธ์ด ์ฌ์ธํ๊ณ ์์ธํจ, ์ฌ์ฉ ๊ธ์ฆ
- ๋จ์ : ๋ณต์ก ๋ฐฉ๋(์ 2์ PL/I ๊ฐ๋ฅ์ฑ)
- ์๋ฃ ์ถ์ํ, ํ์
๋ฉ์ปค๋์ฆ(package), ๋ณํ ์ฒ๋ฆฌ(task), ์์ธ์ฒ๋ฆฌ๊ธฐ ๋์
- Modula-2
- Modula ์ธ์ด๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ํ๋ฉฐ ์ด์์ฒด์ ๊ตฌ์ถ์ฉ
- Pascal์ ๋์์ธ์ ๊ฒฐ์ ๋ณด์ (๋น์ ์คํ์ ์ธ์ด)
- ์ถ์ํ, ๋ถ๋ถ์ ๋์์ฒ๋ฆฌ ๊ฐ๋
- ๋ด์ฅํ ์์คํ
ํ๋ก๊ทธ๋๋ฐ ๋ชฉ์
=> ํ๋์จ์ด ์ ๊ทผ์ด ์ฉ์ดํ ๋ค๋ชฉ์ ์ธ์ด - ๊ต์ก ๋ชฉ์ ์ผ๋ก ์ธ๊ธฐ
- ๊ฐ๋ฅํ ํ ์๊ท๋ชจ์ ๊ฐ๊ฒฐํ ์ธ์ด๋ก ์๋
=> ์์ธ์ฒ๋ฆฌ๊ธฐ๋ฅ ๋ฑ ์ ์ธ
- Modula ์ธ์ด๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ํ๋ฉฐ ์ด์์ฒด์ ๊ตฌ์ถ์ฉ
- Prolog
- ๋
ผ๋ฆฌํ ์ธ์ด, ์ธ๊ณต์ง๋ฅ ๋ถ์ผ์์ ์ฌ์ฉ
- ํธ์ถ ๊ธฐ๋ฐ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก, ๊ท์น์ ์ ์ํ๊ณ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ค์ ์ถ๋ก ํจ
- ๋
ผ๋ฆฌํ ์ธ์ด, ์ธ๊ณต์ง๋ฅ ๋ถ์ผ์์ ์ฌ์ฉ
- SETL
- ์งํฉ๋ก ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์๋ (๋ฏธ์ ๋ถ, ์ํ์ ๊ต์ก ๋ชจ๋ธ๋ก ์ฌ์ฉ)
- ์งํฉ๋ก ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์๋ (๋ฏธ์ ๋ถ, ์ํ์ ๊ต์ก ๋ชจ๋ธ๋ก ์ฌ์ฉ)
- Smalltalk
- ๊ฐ์ฒด ์งํฅ ์ธ์ด์ ๋ชจ๋ฒ
- ๊ฐ์ฒด ์งํฅ ์ธ์ด์ ๋ชจ๋ฒ
- C++
- C์ธ์ด๋ฅผ ํ์ฅํ ๊ฐ์ฒด ์งํฅ ์ธ์ด
- C์ธ์ด๋ฅผ ํ์ฅํ ๊ฐ์ฒด ์งํฅ ์ธ์ด
- Eiffel
- Pascal์ ๊ฐ๊น์ฐ๋ฉด์ ์ผ๊ด์ฑ ์๋ ๊ฐ์ฒด ์งํฅ ์ธ์ด
1980๋ ๋ ๋ฑ์ฅํ ํจ์ํ ์ธ์ด
- ์คํด(Scheme)
- Lisp ์ธ์ด ๊ฐ์
- Lisp ๋ณด๋ค ํ์ผ์ ์ด๊ณ , lambda calculus์ ๊ฐ๊น๊ฒ ์ค๊ณ๋จ
=> ํจ์๋ง์ผ๋ก ๋ชจ๋ ๊ณ์ฐ์ ํํํ ์ ์๋ค๋ lambda calculus์ ๊ฐ๊น๊ฒ ์ค๊ณ๋จ
- Lisp ์ธ์ด ๊ฐ์
- ML(meta language)
- ๊ธฐ์กด ํจ์ํ ์ธ์ด์ ์์ด ํจ
=> ํจ์ํ ์ธ์ด ์ค์์๋ ๋๋ฌผ๊ฒ ๊ฐ๋ ฅํ ํ์ ์ฒดํฌ๋ฅผ ์ง์ํ์ฌ ํ๋ก๊ทธ๋จ ์คํ ์ ์ ์๋ฌ๋ฅผ ์ก์ ์ ์์
(์์ ์ฑ) - Pascal๊ณผ ์ ์ฌํ๋ ์ ์ฐ์ฑ์ด ์์ (๋ฌธ๋ฒ, ํ์
์ฒดํน์์)
=> ํ์ ์ ๋ช ์ํ์ง ์์๋ ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ํ์ ์ ์ถ๋ก ํด์ค
(์ ์ฐ์ฑ)
- ๊ธฐ์กด ํจ์ํ ์ธ์ด์ ์์ด ํจ
- Miranda
2.6 1990๋ ๋ : World Wide Web ํ๋ก๊ทธ๋๋ฐ
1990๋ ๋ ์ธ์ด๋
- ์์ฉ๋ฌธ์ ๋ฅผ ๋น ๋ฅด๊ฒ ๊ตฌํ
- ์ค์ฌ์ฉ์๊ฐ ์ง์ ํ๋ก๊ทธ๋๋ฐ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฝ๊ฒ ์ฒ๋ฆฌ
ํ๋ ค๋ ํน์ง์ด ์์
=> ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก HTML, Java, Javascript, PHP, ASP ๋ฑ์ด ๋ฑ์ฅํจ
Java ์ธ์ด
C++ ๊ธฐ๋ฐ์์ ๋ง์ ๊ตฌ์กฐ ์ญ์ , ์ผ๋ถ ๊ตฌ์กฐ ๋ณ๊ฒฝ, ์ผ๋ถ ๊ตฌ์กฐ ์ถ๊ฐ ๋ฑ์ผ๋ก C++์ ๊ฐ๋ ฅํจ๊ณผ ์ ์ฐ์ฑ์ ์ ๊ณตํจ
(ํฌ์ธํฐ, ๋ค์ค ์์๊ณผ ๊ฐ์ ๋ถํ์ํ๊ฑฐ๋ ์ํํ ๊ธฐ๋ฅ์ ์ ๊ฑฐํ๊ฑฐ๋ ๋ณ๊ฒฝํจ)
=> C++๋ณด๋ค ๊ท๋ชจ๋ ์์์ง๊ณ , ๋ ๊ฐ๊ฒฐํ๊ณ , ์ ๋ขฐ์ฑ์ด ์ฆ๊ฐ๋ ์ธ์ด
(C/C++ ๊ฒฐ์ ๋ณด์์ ํตํด Web ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ์์ฉ๋ถ์ผ๊ฐ ํ์ฅ๋จ)
- ์๋ฃํ, ํด๋์ค ์ ๊ณต
- ๊ธฐ๋ณธ ์๋ฃํ : ์ค์นผ๋ผ ํ(๋จ์ผ๊ฐ)๋ง ์ ๊ณต
=> C++ ์ฒ๋ผ ๋ณตํฉ ๊ตฌ์กฐํ์ ์์ด์ ๊ฐ๊ฒฐํ๊ณ ์์ธก ๊ฐ๋ฅํ ์๋ฃ ๊ตฌ์กฐ๋ฅผ ์ ์งํจ - ๋ฏธ๋ฆฌ ์ ์๋ ํด๋์ค ๊ฐ์ฒด๋ก ์ ๊ณต (C++์ ๊ตฌ๋ณ)
=> ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํฐ๋ ํด๋์ค ํํ๋ก ์ ๊ณตํจ (ex. Integer)
(C++์์ ๊ธฐ๋ณธ ํ์ ๊ทธ๋ฅ ๊ฐ์ผ๋ก๋ง ์กด์ฌํ๊ณ ๊ฑฐ๊ธฐ์ ํด๋นํ๋ ํด๋์ค ๋ฒ์ ์ ๋ฐ๋ก ์์) - ํฌ์ธํฐ ์ญ์ -> ์ฐธ์กฐํ ์ ๊ณต
=> ํฌ์ธํฐ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ง์ ์กฐ์ ๊ฐ๋ฅํ ๊ฒ์ ์ํํ๊ณ ์ค๋ฅ๊ฐ ๋ง์ผ๋ฏ๋ก ํฌ์ธํฐ ๊ฐ๋ ์ ์์ ๊ณ , ๋์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ์ฐธ์กฐํ๋ง ์ ๊ณตํจ (์์ ์ฑ)
=> ํฌ์ธํฐ - ๊ธฐ์ต์ฅ์ ์ง์, ์ฐธ์กฐํ - ๊ฐ์ฒด ์ง์ - ๋
ผ๋ฆฌํ ์ ๊ณต (์ฐ์ ์ฐ์ฐ์ ์ฌ์ฉ ๋ถ๊ฐ : C/C++ ์ ๊ตฌ๋ณ)
=> C/C++์ ์ ์ 0, 1์ ๋ ผ๋ฆฌ๊ฐ์ผ๋ก ์ผ์ง๋ง, Java๋ ๋ช ํํ๊ฒ ๊ตฌ๋ถ
(Java์์ ์ด๋ฐ true, false๋ ์ซ์์ฒ๋ผ ๊ณ์ฐํ ์ ์์) - ๋ถํ๋ก๊ทธ๋จ(์๋ธ๋ฃจํด) ์ ๊ณต ์ํจ -> ํด๋์ค ๋ฉ์๋ ์ ๊ณต
=> Java์ ๋ชจ๋ ์ฝ๋๋ ํด๋์ค ์์ ์์ด์ผํจ
(ํด๋์ค ๋ฐ๊นฅ์ ๋ ๋ฆฝ์ ์ผ๋ก ํจ์ ์ ์ ๋ถ๊ฐ - ๊ฐ์ฒด ์งํฅ ์์น ์ค์) - ๋จ์ผ์์๋ง ์ง์
=> ๋์ interface๋ฅผ ๋ง๋ค์ด์ ๋ค์ค ์์์ ์ ์ฐํจ์ ์ ์ง
(Java์์ class๋ ํ๋๋ง ์์ ๊ฐ๋ฅํ์ง๋ง interface๋ ์ฌ๋ฌ ๊ฐ ๊ตฌํ ๊ฐ๋ฅํจ) - ๋์์ฑ ์ ๊ณต (synchronize) - Thread
=> Thread ํด๋์ค๋ฅผ ์ด์ฉํด ์ฌ๋ฌ ์์ ์ ๋์์ ์คํํ ์ ์๋ ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํจ
=> synchronized ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๊ณต์ ์์์ ์์ ํ๊ฒ ์ ๊ทผํ๋๋ก ์ ์ดํ ์ ์์ด ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ์ ํฉํจ - garbage collector
=> C/C++ ์ ๋ฉ๋ชจ๋ฆฌ ํด์ ๋ฅผ ์ง์ ํด์ผํ๊ธฐ์ ์ค์๊ฐ ์ฆ์๋ฐ Java๋ ์๋์ผ๋ก ์ฐ์ง ์๋ ๊ฐ์ฒด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ํจ - ๋ฌต์์ ํ ๋ณํ : ํ๋ํ๋ง ํ์ฉ (widenning)
=> int ์์ long ์ฒ๋ผ ์์ ํ์ ์์ ํฐ ํ์ ์ ์๋ ํ ๋ณํ์ด ๋์ง๋ง ์ถ์ํ ๋ณํ์ ๋ช ์์ ์ผ๋ก๋ง ๊ฐ๋ฅ
(์๋ฃ ์์ค ์ํ ์ค์) - ์ค๊ฐ ์ธ์ด ์ ๊ณต (์ด์์ฑ ์ฆ๊ฐ)
=> Java๋ ์์ค์ฝ๋๋ฅผ ๋ฐ์ดํธ ์ฝ๋๋ผ๋ ์ค๊ฐ ์ธ์ด๋ก ์ปดํ์ผํจ (.class)
=> JVM ์์์ ์คํ๋๋ฏ๋ก ์ด์์ฒด์ ์ ์๊ด์์ด ์คํ ๊ฐ๋ฅํจ
(Write Once, Run Anywhere - WORA) - Java applet : ํด๋ผ์ด์ธํธ์์ ์คํ (ํ์ฌ๋ ๋ณด์ ๋ฌธ์ ๋ฐ ๋ชจ๋ฐ์ผ ์น ํธํ ๋ฌธ์ ๋ก ๊ฑฐ์ ์ฌ์ฉ X)
=> Java๋ก ์์ฑํ ํ๋ก๊ทธ๋จ์ ๋ฏธ๋ฆฌ ์ ๋ก๋ํ๊ณ ๋ธ๋ผ์ฐ์ ์์์ applet ํ๊ทธ๋ก ๋ถ๋ฌ์ฌ ์ ์์
(์น ๋ธ๋ผ์ฐ์ ์์์ ์คํ๋๋ Java ํ๋ก๊ทธ๋จ)
2.7 ์ธ์ด์ ์ธ๋๋ก ๊ณผ ๋ฏธ๋
2000๋ ๋
- C# (GUI์ ์ ํฉ)
- C++, Java, Delphi, Visual Basic์ ๊ธฐ๋ฐ
- .NET ํ๋ ์์ํฌ์์ ์ปดํฌ๋ํธ SW ๊ฐ๋ฐ
- C++, Java, Delphi, Visual Basic์ ๊ธฐ๋ฐ
- XSLT
- XML ๋ฌธ์๋ฅผ ๋ค๋ฅธ ํํ์ ๋งํฌ์
์ธ์ด๋ก ๋ณํ
- XML ๋ฌธ์๋ฅผ ๋ค๋ฅธ ํํ์ ๋งํฌ์
์ธ์ด๋ก ๋ณํ
- JSP
- 4์ธ๋ ์ธ์ด์ ํน์ง
- ์ํํธ์จ์ด์ ์๊ธฐ (software crisis)
- 4์ธ๋ ์ธ์ด๋ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
์ ์ํด ๋ง๋ค์ด์ง ๋ช
๋ น์ด๋ก ์ถ๋ฐ ์๋ํฐ(editor)๋ ๋๋ฒ๊ฑฐ(debugger), ์๋ฅ์์ฑ๊ธฐ๋ ์ ์ด์ฉ ์ ํธ๋ฆฌํฐ์ ๊ฐ์ ๊ฐ๋ฐ๋๊ตฌ๋ค๊ณผ ํจ๊ป ๋์์ธ ํ๊ฒฝ์ ํฌํจ
- SQL, Lotus, Delphi ๋ฑ
- ๊ฑฐ๋ํ ํ์ผ ์ฒ๋ฆฌ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ช ๊ฐ ์ ๋๋ ์ฝ๋๋ก ์ ์ํ๊ฒ ์์ฑ
- ์ธ์ด ์ค๊ณ ์ด๋ก ์ ๊ณตํํ ๋ฐ๋ ์์ง๋ง ์ค์ฉ์ฑ์ด ํผ
- ์ต๊ทผ์ Visual Basic, Visual C++, Power Builder ๋ ์ด ๋ถ๋ฅ์ ์ํจ
- ์ํํธ์จ์ด์ ์๊ธฐ (software crisis)
- ๋ช
์ธ ์ธ์ด
- ์ฌ์ฉ์๊ฐ ์ํ๋ ๋ฐ๋ฅผ ์์ ํ๋ฉด ์์คํ ์ด ์๊ตฌ ์ฌํญ์ ๊ตฌํํด์ฃผ๋ ์ธ์ด
- ์ํํธ์จ์ด ์๊ธฐ (software crisis)์ ๊ทน๋ณต
- ์ธ์ด์ ๊ธฐ์ ๋ณด๋ค๋ ์กฐ์ง์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐ
- ๊ธฐ์กด ์ฝ๋์ ์ฌ์ฌ์ฉ ์ฆ๋
- ์ด์์ฑ ์ฆ๋
- ๋ฌธ๋ฒ ์์ฃผ์ ์๋ํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก๊ทธ๋๋จธ์ ์์ฐ์ฑ ๋์
- ๊ธฐ์กด ์ฝ๋์ ์ฌ์ฌ์ฉ ์ฆ๋
- ์ธ์ด์ ๊ธฐ์ ๋ณด๋ค๋ ์กฐ์ง์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐ
- ์ธ์ด ์ค๊ณ์ ๋ฏธ๋
- ํ๋์จ์ด์ ์ปดํจํฐ ๊ตฌ์กฐ์ ๋ฐ๋ฌ์ ์ํด ์ํฅ ๋ฐ์
- ์๋ก์ด ์ธ์ด์ ์ถํ๋ณด๋ค๋ ๊ธฐ์กด ์ธ์ด๋ค์ ๊ฐ๊ณ ๋ฆ์, ์ธ์ด ์ค๊ณ์ ๋ํ ์ดํด๋ฅผ ์ ์ง์ ์ผ๋ก ์ฆ๊ฐ์ํค๋ ๋ฐฉํฅ์ผ๋ก ์์๋จ
- ํ๋์จ์ด์ ์ปดํจํฐ ๊ตฌ์กฐ์ ๋ฐ๋ฌ์ ์ํด ์ํฅ ๋ฐ์
'๐ป CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋ฐ์ธ์ด๋ก ] ์ธ์ด์ ๊ตฌ๋ฌธ๊ณผ ๊ตฌํ ๊ธฐ๋ฒ (2) | 2025.04.19 |
---|---|
[ํ๋ก๊ทธ๋๋ฐ์ธ์ด๋ก ] ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ค๊ณ (1) | 2025.04.16 |
[ํ๋ก๊ทธ๋๋ฐ์ธ์ด๋ก ] Concepts of Programming Languages (0) | 2025.03.29 |
[Java] int ์ Integer ์ฐจ์ด (0) | 2025.03.21 |
Java๋ ์ปดํ์ผ ์ธ์ด์ผ๊น? ์ธํฐํ๋ฆฌํฐ ์ธ์ด์ผ๊น? (0) | 2025.03.10 |