728x90
반응형
오늘 TIL 3줄 요약
- 비밀번호 LS에 냅다 저장 x. 해시함수 --> 레인보우 테이블로 확인 가능 --> 솔트로 무작위 텍스트 합쳐서 해시함수 통과. => 확인 X
- 객체지향 프로그래밍으로 코드를 간결하게, 함수형으로 버그 발생을 어렵게 하기
- 번아웃이 왔다고 느끼면 너무 늦은 것... 맞지. 그럼 늦어. 미리 미리 예방하자.
TIL (Today I Learned) 날짜
2024. 03. 26
오늘 읽은 범위
35 ~ 38 에피소드
책에서 기억하고 싶은 내용을 써보세요.
- 프로그래밍 패러다임: 프로그래머가 프로그래밍을 할 때의 관점, 방식 등의 사고의 틀.
- 프로그래밍 언어는 이런 프로그래밍 패러다임을 1개 또는 그 이상 지원.
- 자바는 객체 지향 프로그래밍, 함수형 프로그래밍 지원
- 절차 지향 프로그래밍도 한 갈래임.
- 객체지향 프로그래밍: 클래스를 이용해 속성은 같지만 데이터는 다른 중복된 내용을 class함수 하나로 받을 수 있음.
const player_1 = {
name: "Bill Gates",
health: 85,
skill: "Programmer",
};
const player_2 = {
name: "Virginia Woolf",
health: 60,
skill: "Author",
};
//... 끝이 없이 계속 써줘야 함.. 그래서 객체 지향
//객체 지향은
class Player {
constructor(name, health, skill) {
this.name = name;
this.health = health;
this.skill = skill;
this.xp = 0; //게임으로 생각하면 xp는 0에서 시작
}
}
const bill = new Player("Bill Gates", 85, "Programmer");
const woolf = new Player("Virginia Woolf", 60, "Author");
//new Player로 class에 넣을 수 있음.
- 비슷하지만, 반복되는 것의 상속도 가능함.
//심즈 같이 사람을 만드는 게임
class Human {
constructor(name) {
this.name = name;
this.arms = 2;
this.legs = 2;
}
}
class Teenager {
constructor(name) {
this.name = name;
this.arms = 2;
this.legs = 2;
this.emotional = true;
}
curse() {
return `aGA@#%%#@`;
}
}
class Baby {
constructor(name) {
this.name = name;
this.arms = 2;
this.legs = 2;
this.cute = true;
}
cry() {
return `waa waa`;
}
}
//class Human이 계속 중복되는 것을 extends로 수정 가능
//더 짧아짐.
class Human {
constructor(name) {
this.name = name;
this.arms = 2;
this.legs = 2;
}
}
class Teenager extends Human {
constructor(name) {
this.emotional = true;
}
curse() {
return `aGA@#%%#@`;
}
}
class Baby extends Human {
constructor(name) {
this.cute = true;
}
cry() {
return `waa waa`;
}
}
- 함수형 프로그래밍: 버그가 발생하기 어려운 구조로, 자바, 자스, 파이썬 등이 지원.
- 선언형과 명령형 프로그래밍을 알아야 함.
- 선언형 프로그래밍: 원하는 결과 값을 선언함. --> BLT샌드위치 만들어줘
- 예, CSS
//선언형 -> 공백을 💗로 바꾸기
function spaceToHeart(text) {
return text.replaceAll(" ", "💗");
}
- 사실상 선언형 프로그래밍은 명령형 프로그래밍 위에 쓰는 것. replaceAll도 명령형으로 작성됐을테니깐.
- 명령형 프로그래밍: 원하는 결과 값에 어떻게 도달하는 지 선언함 -->
- 1) 빵 2개 굽기
- 2) 양상추 2-3장 씻고, 토마토 썰어서 2조각 준비, 구운 베이컨 3개 준비
- 3) 1)의 빵 1개 위에 2) 재료를 쌓고, 나머지 빵으로 덮기
//명령형 -> 공백을 💗로 바꾸기
function spaceToHeart(text) {
//text를 가져와서
let result = "";
for (let i = 0; i < text.length; i++) {
//한 글자씩 비교
if (text[i] === " ") {
result += "💗"; //공백이면 💗로 교체
} else {
result += text[i]; //공백 아니면 패스
}
}
return result;
}
- 명령형은 세세하게 지시할 수 있지만, 실수하기 쉽고 다른 동료가 이해하기 힘들수도 있음.
- 선언형은 결과 중심이라 이해도 쉽고, 동료가 이해하기도 좋음.
- 홀수를 제거하는 함수형 프로그램밍
- 함수를 인자로 쓴 게 특징적.
function checkForOdd(item) {
return item % 2 === 0;
}
function removeOdd(items) {
return items.filter(checkForOdd);
}
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
- 객체지향이나 함수형 프로그래밍이 무엇인지 궁금했는데 찍먹 해본 것 같아서 좋음.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
- 절차지향 프로그래밍은 뭘까?
오늘 읽은 다른사람의 TIL
728x90
반응형
'book' 카테고리의 다른 글
[노개북] day 14 Final 감상문 (0) | 2024.03.28 |
---|---|
[노개북] day 13 (2) | 2024.03.28 |
[노개북] day 10 (1) | 2024.03.25 |
[노개북] day8 (1) | 2024.03.24 |
[노개북] day5 (0) | 2024.03.21 |