๐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด - ์ธ์ด ํ๊ฐ ๊ธฐ์ค
๐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
์ผ๋ถ ์ธ์ด์๋ง ํด๋น๋๋ ํน์ ์ผ์ด์ค๋ ์ ์ธํ๊ณ , ๋๋ถ๋ถ ์ธ์ด์์ ํต์ฉ๋๋ ์ผ๋ฐ์ ์ธ ๋ด์ฉ๋ง ์ ๋ฆฌํ๋ค.
์๋ฅผ ๋ค์ด Fortran๊ณผ Ada๋, ๋ฐฐ์ด์ ์์ ์ฐธ์กฐ๋ฅผ ์ํด ์๊ดํธ()
๋ฅผ ์ฌ์ฉํ์ง๋ง, ๋๋ถ๋ถ ์ธ์ด์์ ๋๊ดํธ[]
๋ฅผ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์, ๋ฐฐ์ด ์์ ์ฐธ์กฐ์ ๋ํ ์ค๋ช ์์์ ์ฐธ์กฐ๋ฅผ ์ํด ๋๊ดํธ []๋ฅผ ์ฌ์ฉ
๋ผ๊ณ ํํํ๋ค.
๋๋ฌธ์ ํน์ ์ธ์ด์๋ ๋ง์ง ์๋, ์์ธ์ธ ๋ด์ฉ์ด ์์ ์ ์๋ค.
๋ํ, ๋น์ฃผ๋ฅ ์ธ์ด์ ๋ํ ๋ด์ฉ์, ๊ผญ ํ์ํ ๊ฒ์ด ์๋๋ผ๋ฉด ์๋ตํ๋ค. (ํ์์ ์ฃผ๊ด์ผ๋ก)
๐ซ ์ธ์ด ํ๊ฐ ๊ธฐ์ค
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ SW ๊ฐ๋ฐ ๋ฐ ์ ์ง๋ณด์์ ๋ํด ๋ฏธ์น๋ ์์
๊ฐ๋
์ฑ Readability
, ์์ฑ๋ ฅ Writability
, ์ ๋ขฐ์ฑ Realiability
, ๋น์ฉ Cost
๐ซ ๊ฐ๋ ์ฑ Readability
- ์ฝ๋ ์ดํด ๋์ด๋ ์ฒ๋ โ ์ ์ง๋ณด์ ๋์ด๋
- ์ธ์ด ํน์ง : ๋จ์์ฑ, ์ง๊ต์ฑ, ์ ์ด๋ฌธ, ๋ฐ์ดํฐ ํ์ ๊ณผ ๊ตฌ์กฐ, ๊ตฌ๋ฌธ ๊ณ ๋ ค์ฌํญ
(์ธ์ด ์์ฒด์ ๋ํ์ฌ, ์์ง๊ณ ๋ชป์ง๊ณ ์ ๋ฌธ์ ๊ฐ ์๋๋ผ)
๐ซง ๋จ์์ฑ (์ ๋ฐ์ ์ธ ๋จ์์ฑ Overall Simplicity)
- ๋จ์์ฑ = ๊ฐ๋ ์ฑ
- ๋ณต์กํ ์ธ์ด ๊ธฐ๋ณธ ๊ตฌ์กฐ โ ๋ฐฐ์ฐ๊ธฐ ์ด๋ ค์, ๊ฐ๋
์ฑ X
- ํน์ง ๋ค์ค์ฑ, ์ฌํ ์ฐ์ฐ์ ์ค๋ณต (Feature Multiplicity, Operator Overloading)
- But, ๊ทน๋จ์ ์ธ ๋จ์์ฑ != ๊ฐ๋ ์ฑ โ i.e. Assembly
๐ซง ์ง๊ต์ฑ Orthogonality
@ U ์ค๊ฐ๊ณ ์ฌ ์ถ์ : ์ง๊ต์ฑ์ด ๋ฌด์์ด๊ณ , ์ธ์ด์ ์ด๋ค ์ํฅ์ ์ฃผ๋๊ฐ?
- ๊ธฐ๋ณธ ์์๋ค์ ์กฐํฉํ์ฌ, ์๋ก์ด ์ ์ด๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์์ฑํ ์ ์๋ ๋ฅ๋ ฅ
- ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ x ํ์ ์ฐ์ฐ์ (๋ฐฐ์ด, ํฌ์ธํฐ)
- ์ดํด/์ฝ๊ธฐ ์ฝ๊ฒ,
- ์๋ฏธ ๋ฌธ๋งฅ ๋ ๋ฆฝ์ ์ด๊ฒ (์๋ก ๋ค๋ฅธ ํํ์ ์๋ก ๋ค๋ฅธ ์๋ฏธ),
๋ชจ๋ ์กฐํฉ ํฉ๋ฒ์ ์ด๊ฒ
- ์ง๊ต์ฑ์ ๋จ์์ฑ์ ์ํฅ์ ์ค๋ค
- ๋ง์ ๊ธฐ๋ณธ ๊ตฌ์กฐ < ์ผ๋ฐ์ ๊ท์น (์ ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ x ์กฐํฉ ๊ท์น = ์ง๊ต์ฑ)
- But, ๊ทน๋จ์ ์ธ ์ง๊ต์ฑ != ๋จ์์ฑ โ i.e. Algol 68
๐ซง ์ ์ด๋ฌธ
- ์ถฉ๋ถํ ์ ์ด๋ฌธ ์ ๊ณต
- i.e. for๊ฐ ์ ํฉํ ์ํฉ์์, while๋ง ์ ๊ณต๋๋ค๋ฉด
๐ซง ๋ฐ์ดํฐ ํ์ ๊ณผ ๊ตฌ์กฐ
- ์ถฉ๋ถํ ๋ฐ์ดํฐ ํ์
, ๊ตฌ์กฐ ์ ๊ณต
- i.e. C, 0/1 Boolean ํํ (๊ฐ๋ ์ฑ ๋ฎ์)
๐ซง ๊ตฌ๋ฌธ ์ค๊ณ Syntax Design
- ํน์์ด - Special Word
- ํน์์ด = ๊ฐ๋
์ฑ
- ์ ์ ํน์์ด โ ๋จ์์ฑ
- i.e. C/C++, ;
- ๋ง์ ํน์์ด โ ๊ฐ๋
์ฑ
- i.e. Ada, end if, end loop
- ์ ์ ํน์์ด โ ๋จ์์ฑ
- ํน์์ด๋ก ์๋ณ์๋ฅผ? (Identifier)
- i.e. Fortran, ๊ฐ๋ฅ (๊ฐ๋ ์ฑ ๋ฎ์)
- ํน์์ด = ๊ฐ๋
์ฑ
- ํ์๊ณผ ์๋ฏธ
- ๊ทธ ์์ฒด๋ก ๋ชฉ์ ์ด ๋ํ๋๋, ๋ฌธ์ฅ์ ํํ
- ๊ฐ์ ํ์, ๋ค๋ฅธ ์๋ฏธ๋ ๊ฐ๋
์ฑ(์ง๊ต์ฑ) ๋ฎ์ถค
- i.e. C/C++, ๋ฌธ๋งฅ์ ๋ฐ๋ฅธ static
๐ซ ์์ฑ๋ ฅ Writability
- ํ๋ก๊ทธ๋จ ๋ชฉ์ ์ ๋ฐ๋ฅธ, ์ธ์ด ์์ฑ ๋์ด๋
- i.e. Visual Basic, GUI ์์ฑ์ ์ ํฉ
- i.e. C, System SW ์์ฑ์ ์ ํฉ
๊ฐ๋ ์ฑ๊ณผ ๋น๋ก
- But, ๊ทน๋จ์ ์ง๊ต์ฑ != ์์ฑ๋ ฅ
- ๋ชจ๋ ์กฐํฉ์ด ํฉ๋ฒ์ ์ด๋ฉด, ์ปดํ์ผ๋ฌ๊ฐ ํ์งํ๊ธฐ ์ด๋ ค์ด ์ค๋ฅ ๊ฐ๋ฅ์ฑ
๐ซง ์ถ์ํ ์ง์
- ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ, ์ฐ์ฐ ์ ์ โ ์ธ๋ถ ์ฌํญ ๋ฌด์
- i.e. (ํด๋์ค, ์๋ฃ๊ตฌ์กฐ, ํจ์) ์ถ์ํ ์์ด, ์ฝ๋๋ฅผ ์ง ๋ค๋ฉด?
- ํ๋ก์ธ์ค ์ถ์ํ - ๋ถํ๋ก๊ทธ๋จ (ํจ์) ์ง์
- ๋ฐ์ดํฐ ์ถ์ํ - ๋ฏธ๋ฆฌ ๊ตฌํ๋ ์๋ฃ๊ตฌ์กฐ, ์ฌ์ด ์๋ฃ๊ตฌ์กฐ ๊ตฌํ
- i.e. Binary Tree, Fortran VS C++/Java
๐ซง ํํ๋ ฅ
- ๋ฌธ์ ํํ์ ์์ด ํธ๋ฆฌํ ๋ฐฉ๋ฒ ์ ๊ณต ์ฌ๋ถ
- i.e. Counting loop, for VS while
- i.e. (i = i + 1) VS (i++)
- i.e. Ada, and then Boolean Operator๋ก Short-Circuit
๐ซ ์ ๋ขฐ์ฑ Reliability
- ๋ชจ๋ ์กฐ๊ฑด/์ํฉ์ ๋ํด, ์ฃผ์ด์ง ๋ช ์ธ ์ํ ์ฌ๋ถ
- ์ธ์ด ํน์ง
- ํ์ ๊ฒ์ฌ, ์์ธ ์ฒ๋ฆฌ, ๋ณ์นญ, ๊ฐ๋ ์ฑ๊ณผ ์์ฑ๋ ฅ
๐ซง ํ์ ๊ฒ์ฌ
- CompileTime / Runtime ํ์
๊ฒ์ฌ
- CompileTime, Runtime ํ์
๊ฒ์ฌ์ ๋นํด Cost ์ ์
- i.e. int a = 3.14 โ Error
- CompileTime, Runtime ํ์
๊ฒ์ฌ์ ๋นํด Cost ์ ์
- i.e. 1978 C, ๋งค๊ฐ๋ณ์ ํ์
๊ฒ์ฌ X
- ํ์ ๊ฒ์ฌํ๋ lint
- ์ง๊ธ์ ํ์ ๊ฒ์ฌ
๐ซง ์์ธ ์ฒ๋ฆฌ
- Runtime ์ค๋ฅ๋ฅผ ์์ ํ๊ณ , ์คํ์ ๊ณ์ํ ์ ์๋ ๋ฅ๋ ฅ
- ๋ ผ๋ฆฌ ์ค๋ฅ ๋ง๊ณ ๋, ์ธ๋ถ์ ์ธ ์์ธ (Like ๋คํธ์ํฌ ์ด์)
๐ซง ๋ณ์นญ
@ TODO :
- ๋์ผํ ๊ธฐ์ต ์ฅ์์ ๋ํด (?), ์ฌ๋ฌ ์ฐธ์กฐ ๋ฐฉ๋ฒ์ ๊ฐ๋ ๊ฒ
- ์ ๋ขฐ์ฑ์ ์ ํดํ๋, ๋๋ถ๋ถ ์ธ์ด์์ ์ ๊ณต
- ์ Why, ๋ถ์กฑํ ๋ฐ์ดํฐ ์ถ์ํ โ
- i.e. type def
๐ซ ๋น์ฉ
- ๊ต์ก
- ์ธ์ด ๊ตฌํ (์ปดํ์ผ๋ฌ), ์์ฑ, ์ปดํ์ผ, ์คํ
- ์ ๋ขฐ์ฑ ๋ถ์กฑ, ์ ์ง๋ณด์
๐ซ ETC
- ์ด์์ฑ : ์ธ์ด์ ํ์คํ, ๋ค๋ฅธ ์ธ์ด์์ ํธํ์ฑ
- ์ผ๋ฐ์ฑ : ์์ฉ ๋ถ์ผ์ ๋ํ ์ ์ฉ์ฑ
- ๋ถ๋ช ์ฑ : Docu ์์ค