ํฐ์คํ ๋ฆฌ ๋ทฐ
[ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์] ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ด๋?
๊ฐ๋ฐ๊ฐ๊ตด๐ธ 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์ ํน์ง์ ์ข๋ ์์๋ณด๊ณ ์ถ๋ค๋ฉด ์๋์ ํฌ์คํ ์ ์ฐธ๊ณ ํ์ธ์
[ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์] 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์ ํน์ง์ ์ข๋ ์์๋ณด๊ณ ์ถ๋ค๋ฉด ์๋์ ํฌ์คํ ์ ์ฐธ๊ณ ํ์ธ์
[ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์] 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
'CS > Design Pattern' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์] SOLID๋? (3) | 2023.05.23 |
---|---|
[Design Pattern] DDD(๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ)๋? (0) | 2022.10.26 |
[Design Pattern] TDD(ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ) (0) | 2022.07.04 |
[ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์] OOP์ FP (0) | 2022.07.03 |
[Design Pattern] GoF(Gang of Four) ๋์์ธ ํจํด ์ข ๋ฅ (0) | 2022.06.28 |
- Total
- Today
- Yesterday
- ์๋ฐ
- ๋ฐฑ์ค javascript
- Baekjoon
- http
- ์ด๋ถํ์
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ด์์ฒด์
- map
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- ๋์์ธ ํจํด
- ์นด์นด์ค ์ธํด
- fp
- ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ deep dive
- 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด
- ๋ฐฑ์ค node.js
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์ ์ญ ๋ณ์
- ์๊ณ ๋ฆฌ์ฆ
- ๋ฐฑ์ค
- ์ฝ๋ฉํ ์คํธ
- JavaScript
- ํ๋กํผํฐ
- git
- ํฌํฌ์ธํฐ
- ํ๋กํ ์ฝ
- ๋ ์์ปฌ ํ๊ฒฝ
- TDD
- ๋คํธ์ํฌ
- ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |