노마드 개발 북클럽 “IT 5분 잡학사전” 2주 챌린지
(23.11.10 ~ 23.11.24)
11/21 TUE, Assignment # 12
🔖 오늘 읽은 범위 : 에피소드 35 ~ 에피소드 38
1. 책에서 기억하고 싶은 내용은?
✏️ 객체 지향 프로그래밍이 뭐죠? ①② (에피소드 36, 37)
프로그래밍 패러다임이란?
프로그래밍 패러다임은 프로그래머가 프로그래밍을 할 때의 관점, 방식 이런 것을 말해. 프로그래밍을 하는 사고의 틀이라고 생각해도 좋아. 프로그래밍 언어는 이런 프로그래밍 패러다임을 하나 또는 하나 이상을 지원해. 이를테면 자바는 객체 지향 프로그래밍, 함수형 프로그래밍을 지원해.
대표적인 프로그래밍 패러다임으로 절차 지향 프로그래밍, 객체 지향 프로그래밍, 함수형 프로그래밍이 있어.
게임 만드는 과정으로 이해하는 객체 지향 프로그래밍
→ name, health, skill 이라는 같은 속성이 반복
➡️ 클래스 등장!
공장에 name, health, xp, skill의 값만 넣으면 나머지 코드는 공장이 찍는 거지.
이렇게 하면 코드를 손으로 직접 입력하는 양도 줄고, 속성도 오타가 나지 않도록 피할 수 있을 거야. 그리고 새 속성을 부여할 때는 공장에 알려 주기만 하면 되는 거지. 바로 이런 자연스런 생각이 객체 지향 프로그래밍의 클래스(class)라는 개념이야. 실제로 클래스는 속성은 같지만 데이터는 다른 녀석들을 위한 공장 같은 거야.
➡️ 객체 지향 프로그래밍의 상속
여기서도 코드 중복 문제가 생겨. 물론 성인, 청소년, 아기는 엄연히 다르지만 결국은 인간이야. 이름이 있고, 팔과 다리가 각각 2개씩 있지. 약간 다르지만 이렇게 중복되는 걸 해결하고 싶을 거야. 여러분이 개발자라면 말이지! 그리고 바로 이때 상속이 등장해!기본이 되는 Human 클래스를 나머지 클래스에 상속시키면 돼. 상속을 이용하면 Human 클래스의 기본 속성은 다 가지면서도 자신만의 속성을 추가할 수 있어. 실제 인간처럼 말이지!
→ 기존보다 양이 훨씬 줄어들었고, 의미도 더 명확하게 바뀌었어.
✏️ 함수형 프로그래밍이 뭐죠? (에피소드 38)
샌드위치 만들기로 배우는 함수형 프로그래밍
🥪 선언형 프로그래밍 → ”BLT 샌드위치 만들어 줘!”
🥪 명령형 프로그래밍
↓
① 토스트 빵 2개를 꺼내서 구워라!② 양상추 2~3장 씻고, 토마토 얇게 썰어서 2조각 준비하고, 구운 베이컨 3개를 준비해라!
③ ①의 토스트 빵 1개 위에 의 재료를 쌓은 다음, 나머지 토스트 빵 1개로 덮어라!
- 선언형 프로그래밍은 원하는 결괏값을 선언 (선언형 프로그래밍의 대표적인 예는 CSS야.)
- 명령형 프로그래밍은 원하는 결괏값에 어떻게 도달하는지 선언해. BLT 샌드위치를 만들어 줘!라고 하는 게 아니라, 샌드위치를 만드는 단계를 다 알려 주는 거지.자바스크립트로 보는 명령형 프로그래밍과 선언형 프로그래밍의 차이
➡️ 명령형 프로그래밍은 입력한 text의 글자를 1개씩 모두 비교하면서 공백이면 ♡로, 공백이 아니면 result에 이어 붙이도록 코드를 작성해. 말 그대로 텍스트의 공백을 어떻게 해야 하는지를 하나씩 알려 주지.
➡️ text로 replaceAll이 실제 어떤 작업을 하는지는 선언형 프로그래밍으로선 중요하지 않아. 물론 replaceAll은 명령형 프로그래밍으로 작성되어 있을 거야. 그래서 모든 선언형 프로그래밍은 명령형 프로그래밍 위에 쓴다고 이야기할 수도 있어.
정리하자면, 명령형 프로그래밍은 할 일을 세세하게 지시할 수 있는 대신 개발자가 실수하기 쉽고, 여러분이 작성한 코드를 동료가 이해하기 어렵다는 특징이 있어. 반면 선언형 프로그래밍은 결과 중심으로 코드를 작성하니 실수도 적고, 동료가 코드를 이해하기도 쉬워.함수형 프로그래밍 작성해보기
➡️ 주목해야 할 것은 filter의 인자로 checkForOdd라는 함수를 보냈다는 거야. 이게 바로 함수형 프로그래밍에서 자주 쓰는 방식이지. 이렇게 함수형 프로그래밍은 함수 중심으로 코드를 적는 방식으로 선언형 프로그래밍 콘셉트를 유지해.
2. 오늘 읽은 소감은?
함수형 프로그래밍 에피소드 특히 재미있고, 이해가 쏙 되고, 유익했다.
오늘 읽은 에피소드는 궁금했던 부분과 새롭게 알게 된 부분이 정말 많았다.
짧은 에피소드였기 때문에 내용을 깊게 알기보다는 학습을 위한 밑바탕을 채운 느낌이었다. 하얀 도화지에 점 몇 개 찍은 기분이랄까. 객체 지향 프로그래밍과 선언형, 명령형 프로그래밍, 함수형 프로그래밍 등 이전에는 용어만 들어도 헷갈렸던 개념들이 조금씩 자리를 잡으려 하고 있는 것 같다. 사실 이번 에피소드를 읽기 전까지는 선언형, 명령형 프로그래밍이 뭔지, 함수형 프로그래밍이 무엇을 의미하는지 생각해볼 생각 조차 못했다. 어디선가 접해도 자연스럽게 넘어갔던 것 같다.
사실 지금도 객체 지향 프로그래밍이 무엇이냐고 물어보면, 뭐라고 대답해야 할지 정의를 내리기 어렵다. 검색을 해보니, “컴퓨터 프로그래밍 패러다임 중 하나로, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법” 이라는 말이 개인적으로는 가장 이해가 잘되는 정의인것 같다.
가볍게 읽으려고 했던 책이었는데, 내가 모르는 지식들이 생각보다 더더 많아서 매일 정말 많이 배워가는 것 같다. 한 번 읽어서 완벽히 기억할 수 있다면 얼마나 좋을까, 쓸데없는 생각을 해본다. 여러번 반복해서 공부하다보면, 나도 누군가에게 자연스럽게 설명할 수 있게 되겠지?
'Frontend Dev > Input' 카테고리의 다른 글
[원티드 프리온보딩 FE 챌린지 11월] 클린 코드 프론트엔드 (0) | 2023.11.27 |
---|---|
[IT 5분 잡학사전 2주 챌린지] 하이브리드 앱, 크로스 플랫폼 앱 다른거 나만 몰랐어..? (0) | 2023.11.23 |
[IT 5분 잡학사전 2주 챌린지] 코볼 개발자를 찾는다구요? (👥 코볼이 뭔데..? 👥👥) (0) | 2023.11.19 |
[IT 5분 잡학사전 2주 챌린지] 드디어 챌린지 2주차 진입! (0) | 2023.11.18 |
[IT 5분 잡학사전 2주 챌린지] 자료구조와 알고리즘은 필수라고? (0) | 2023.11.16 |