ํฌ์ŠคํŠธ

๐ŸŒš ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด - ์–ธ์–ด ํ‰๊ฐ€ ๊ธฐ์ค€

๐ŸŒ‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

์ผ๋ถ€ ์–ธ์–ด์—๋งŒ ํ•ด๋‹น๋˜๋Š” ํŠน์ˆ˜ ์ผ€์ด์Šค๋Š” ์ œ์™ธํ•˜๊ณ , ๋Œ€๋ถ€๋ถ„ ์–ธ์–ด์—์„œ ํ†ต์šฉ๋˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋‚ด์šฉ๋งŒ ์ •๋ฆฌํ–ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด 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
  • i.e. 1978 C, ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž… ๊ฒ€์‚ฌ X
    • ํƒ€์ž… ๊ฒ€์‚ฌํ•˜๋Š” lint
    • ์ง€๊ธˆ์€ ํƒ€์ž… ๊ฒ€์‚ฌ

๐Ÿซง ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

  • Runtime ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•˜๊ณ , ์‹คํ–‰์„ ๊ณ„์†ํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ
  • ๋…ผ๋ฆฌ ์˜ค๋ฅ˜ ๋ง๊ณ ๋„, ์™ธ๋ถ€์ ์ธ ์š”์ธ (Like ๋„คํŠธ์›Œํฌ ์ด์Šˆ)

๐Ÿซง ๋ณ„์นญ

@ TODO :

  • ๋™์ผํ•œ ๊ธฐ์–ต ์žฅ์†Œ์— ๋Œ€ํ•ด (?), ์—ฌ๋Ÿฌ ์ฐธ์กฐ ๋ฐฉ๋ฒ•์„ ๊ฐ–๋Š” ๊ฒƒ
  • ์‹ ๋ขฐ์„ฑ์„ ์ €ํ•ดํ•˜๋‚˜, ๋Œ€๋ถ€๋ถ„ ์–ธ์–ด์—์„œ ์ œ๊ณต
    • ์™œ Why, ๋ถ€์กฑํ•œ ๋ฐ์ดํ„ฐ ์ถ”์ƒํ™” โ†‘
    • i.e. type def

๐Ÿ’ซ ๋น„์šฉ


  • ๊ต์œก
  • ์–ธ์–ด ๊ตฌํ˜„ (์ปดํŒŒ์ผ๋Ÿฌ), ์ž‘์„ฑ, ์ปดํŒŒ์ผ, ์‹คํ–‰
  • ์‹ ๋ขฐ์„ฑ ๋ถ€์กฑ, ์œ ์ง€๋ณด์ˆ˜

๐Ÿ’ซ ETC


  • ์ด์‹์„ฑ : ์–ธ์–ด์˜ ํ‘œ์ค€ํ™”, ๋‹ค๋ฅธ ์–ธ์–ด์™€์˜ ํ˜ธํ™˜์„ฑ
  • ์ผ๋ฐ˜์„ฑ : ์‘์šฉ ๋ถ„์•ผ์— ๋Œ€ํ•œ ์ ์šฉ์„ฑ
  • ๋ถ„๋ช…์„ฑ : Docu ์ˆ˜์ค€
์ด ๊ธฐ์‚ฌ๋Š” ์ €์ž‘๊ถŒ์ž์˜ CC BY 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.