CS/Design Pattern

[ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„] ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ΄λž€?

개발개꡴🐸 2022. 10. 1. 16:19

ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„(Programming Paradigm)μ΄λž€?

ν”„λ‘œκ·Έλž˜λ¨Έμ—κ²Œ ν”„λ‘œκ·Έλž˜λ°μ˜ 관점을 κ°–κ²Œ ν•΄μ£ΌλŠ” 역할을 ν•˜λŠ” 개발 λ°©λ²•λ‘ μž…λ‹ˆλ‹€.

 

예λ₯Ό λ“€μ–΄ 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ° : ν”„λ‘œκ·Έλž˜λ¨Έλ“€μ΄ ν”„λ‘œκ·Έλž¨μ„ μƒν˜Έ μž‘μš©ν•˜λŠ” κ°μ²΄λ“€μ˜ μ§‘ν•©μœΌλ‘œ λ³Ό 수 있게 ν•˜λŠ” λ°˜λ©΄μ—,

ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° : μƒνƒœ 값을 μ§€λ‹ˆμ§€ μ•Šμ€ ν•¨μˆ˜ κ°’λ“€μ˜ μ—°μ†μœΌλ‘œ 생각할 수 있게 ν•΄μ€λ‹ˆλ‹€.

 


μ„ μ–Έν˜•κ³Ό ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°

μ„ μ–Έν˜• ν”„λ‘œκ·Έλž˜λ°(Declarative Programming)μ΄λž€ "무엇을" ν’€μ–΄λ‚΄κ°€λŠ”κ°€μ— μ§‘μ€‘ν•˜λŠ” νŒ¨λŸ¬λ‹€μž„μ΄λ©°, 
"ν”„λ‘œκ·Έλž¨μ€ ν•¨μˆ˜λ‘œ 이루어진 것이닀"λΌλŠ” λͺ…μ œκ°€ 담겨 μžˆλŠ” νŒ¨λŸ¬λ‹€μž„μž…λ‹ˆλ‹€.

 

예λ₯Ό λ“€μ–΄ JavaScript둜 μžμ—°μˆ˜λ‘œ 이루어진 λ°°μ—΄μ—μ„œ μ΅œλŒ€κ°’μ„ μ°Ύμ„λ•Œ λ‹€μŒκ³Ό 같이 μ‚¬μš©ν•©λ‹ˆλ‹€.

const ret = [1, 2, 3, 4, 5, 11, 12]
.reduce((max, num) => num > max ? num : max, 0)
console.log(ret) // 12
  • reduce()λŠ” 'λ°°μ—΄'만 λ°›μ•„μ„œ λˆ„μ ν•œ 결과값을 λ°˜ν™˜ν•˜λŠ” 순수 ν•¨μˆ˜

이처럼 ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μ€ 이와 같은 μž‘μ€ '순수 ν•¨μˆ˜'듀을 λΈ”λ‘μ²˜λŸΌ μŒ“μ•„ λ‘œμ§μ„ κ΅¬ν˜„ν•˜λŠ” 'κ³ μ°¨ ν•¨μˆ˜'λ₯Ό 톡해 μž¬μ‚¬μš©μ„±μ„ 높인 ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μž…λ‹ˆλ‹€.

 

 

*FP의 νŠΉμ§•μ„ 쒀더 μ•Œμ•„λ³΄κ³  μ‹Άλ‹€λ©΄ μ•„λž˜μ˜ ν¬μŠ€νŒ…μ„ μ°Έκ³ ν•˜μ„Έμš”

https://j-su2.tistory.com/35

 

[ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„] OOP와 FP

OOPλž€? OOPλŠ” Object Oriented Programming의 μ•½μžλ‘œ 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ„ λœ»ν•©λ‹ˆλ‹€. class와 object에 κΈ°λ°˜ν•œ ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„(λ””μžμΈ νŒ¨ν„΄)으둜, κ΄€λ ¨λœ 데이터끼리 λ¬Άμ–΄μ„œ classλ₯Ό ν˜•μ„±ν•˜κ³  κ·Έ μ•ˆμ—

j-su2.tistory.com


객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°

κ°μ²΄λ“€μ˜ μ§‘ν•©μœΌλ‘œ ν”„λ‘œκ·Έλž¨μ˜ μƒν˜Έ μž‘μš©μ„ ν‘œν˜„ν•˜λ©° 데이터λ₯Ό 객체둜 μ·¨κΈ‰ν•˜μ—¬ 객체 내뢀에 μ„ μ–Έλœ λ©”μ„œλ“œλ₯Ό ν™œμš©ν•˜λŠ” 방식을 λ§ν•©λ‹ˆλ‹€.

  • 섀계에 λ§Žμ€ μ‹œκ°„μ΄ μ†Œμš”λ˜λ©° 처리 속도가 λ‹€λ₯Έ ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬νƒ€μž„μ— λΉ„ν•΄ μƒλŒ€μ μœΌλ‘œ 느림

 

예λ₯Ό λ“€μ–΄ JavaScript둜 μžμ—°μˆ˜λ‘œ 이루어진 λ°°μ—΄μ—μ„œ μ΅œλŒ€κ°’μ„ μ°Ύμ„λ•Œ λ‹€μŒκ³Ό 같이 μ‚¬μš©ν•©λ‹ˆλ‹€.

const ret = [1, 2, 3, 4, 5, 11, 12]
class List {
    constructor(list) {
        this.list = list
        this.mx = list.reduce((max, num) => num > max ? num : max, 0)
    }
    getMax() {
        return this.mx
    }
}
const a = new List(ret)
console.log(a.getMax()) // 12
  • ListλΌλŠ” 클래슀λ₯Ό λ§Œλ“€κ³  aλΌλŠ” 객체λ₯Ό λ§Œλ“€ λ•Œ μ΅œλŒ€κ°’μ„ μΆ”μΆœν•΄λ‚΄λŠ” λ©”μ„œλ“œλ₯Ό λ§Œλ“¦

객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ€ 좔상화, μΊ‘μŠν™”, 상속성, λ‹€ν˜•μ„±μ΄λΌλŠ” νŠΉμ§•μ΄ μžˆμŠ΅λ‹ˆλ‹€.

 

*OOP의 νŠΉμ§•μ„ 쒀더 μ•Œμ•„λ³΄κ³  μ‹Άλ‹€λ©΄ μ•„λž˜μ˜ ν¬μŠ€νŒ…μ„ μ°Έκ³ ν•˜μ„Έμš”

https://j-su2.tistory.com/35

 

[ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„] OOP와 FP

OOPλž€? OOPλŠ” Object Oriented Programming의 μ•½μžλ‘œ 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ„ λœ»ν•©λ‹ˆλ‹€. class와 object에 κΈ°λ°˜ν•œ ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„(λ””μžμΈ νŒ¨ν„΄)으둜, κ΄€λ ¨λœ 데이터끼리 λ¬Άμ–΄μ„œ classλ₯Ό ν˜•μ„±ν•˜κ³  κ·Έ μ•ˆμ—

j-su2.tistory.com


μ ˆμ°¨ν˜• ν”„λ‘œκ·Έλž˜λ°

둜직이 μˆ˜ν–‰λ˜μ–΄μ•Ό ν•  연속적인 계산 κ³Όμ •μœΌλ‘œ 이루어진 νŒ¨λŸ¬λ‹€μž„μž…λ‹ˆλ‹€.

  • 일이 μ§„ν–‰λ˜λŠ” λ°©μ‹μœΌλ‘œ μ½”λ“œλ₯Ό κ΅¬ν˜„ν•˜κΈ°λ§Œ ν•˜λ©΄ λ˜μ„œ μ½”λ“œμ˜ 가독성이 μ’‹μœΌλ©° μ‹€ν–‰ 속도가 λΉ λ₯΄λ‹€λŠ” μž₯점
  • 계산이 λ§Žμ€ μž‘μ—… 등에 μ“°μž„
  • λŒ€ν‘œμ μœΌλ‘œ ν¬νŠΈλž€(fortran)을 μ΄μš©ν•œ λŒ€κΈ° κ³Όν•™ κ΄€λ ¨ μ—°μ‚° μž‘μ—…, λ¨Έμ‹  λŸ¬λ‹μ˜ 배치 μž‘μ—… 등이 있음
  • λͺ¨λ“ˆν™”ν•˜κΈ°κ°€ μ–΄λ ΅κ³  μœ μ§€ λ³΄μˆ˜μ„±μ΄ λ–¨μ–΄μ§„λ‹€λŠ” 단점이 있음

νŒ¨λŸ¬λ‹€μž„μ˜ ν˜Όν•©

μ—¬λŸ¬ κ°€μ§€μ˜ ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ΄ μžˆμ§€λ§Œ μ–΄λ– ν•œ νŒ¨λŸ¬λ‹€μž„μ΄ κ°€μž₯ μ’‹μ„κΉŒ? λΌλŠ” μ§ˆλ¬Έμ—” 닡이 μ—†μŠ΅λ‹ˆλ‹€.

λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ΄λ‚˜ μ„œλΉ„μŠ€μ˜ νŠΉμ§•μ„ κ³ λ €ν•΄μ„œ νŒ¨λŸ¬λ‹€μž„μ„ μ •ν•˜κ±°λ‚˜ μ—¬λŸ¬ νŒ¨λŸ¬λ‹€μž„μ„ μ‘°ν•©ν•˜μ—¬ 상황과 λ§₯락에 따라 νŒ¨λŸ¬λ‹€μž„ κ°„μ˜ μž₯점만 μ·¨ν•΄ κ°œλ°œν•˜λŠ” 것이 ꢌμž₯λ©λ‹ˆλ‹€.


[좜처] 면접을 μœ„ν•œ CS 전곡지식 λ…ΈνŠΈ

http://www.yes24.com/Product/Goods/108887922

 

면접을 μœ„ν•œ CS 전곡지식 λ…ΈνŠΈ - YES24

λ””μžμΈ νŒ¨ν„΄, λ„€νŠΈμ›Œν¬, 운영체제, λ°μ΄ν„°λ² μ΄μŠ€, 자료 ꡬ쑰, 개발자 λ©΄μ ‘κ³Ό ν¬νŠΈν΄λ¦¬μ˜€κΉŒμ§€!CS 전곡지식 μŠ΅λ“κ³Ό λ©΄μ ‘ λŒ€λΉ„, 이 μ±… ν•œ ꢌ이면 μΆ©λΆ„ν•˜λ‹€!개발자 λ©΄μ ‘μ—μ„œ 큰 비쀑을 μ°¨μ§€ν•˜λŠ” CS(Comp

www.yes24.com