개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
비밀번호를 암호화하기 위해 해시 함수를 사용한다.
객체 지향 프로그래밍에서는 클래스와 상속 개념이 사용된다.
명령형 프로그래밍은 할 일을 세세하게 지시할 수 있는 대신 개발자가 실수하기 쉽다. 반면 선언형 프로그래밍은 결과 중심으로 코드를 작성하니 실수가 적다.
TIL (Today I Learned) 날짜
2023.01.24
오늘 읽은 범위
에피소드 35 - 에피소드 38
책에서 기억하고 싶은 내용을 써보세요.
해시 함수
특징
동일한 입력값에 대해 동일한 출력값을 가진다.
입력값이 아주 살짝만 바뀌어도 출력값은 엄청나게 크게 바뀐다.
레인보우 테이블(rainbow table)은 해시 함수가 변경한 값을 원래의 값과 연결한 표로, 레인보우 테이블을 알면, 원래의 값을 알아낼 수 있다.
그래서 레인보우 테이블과 같이 미리 계산된 테이블을 사용하는 공격을 방어하기 위해 솔트(salt)(=무작위 데이터)를 추가 입력하는 방법이 있다.
객체 지향 프로그래밍
클래스
같은 속성을 가진 각기 다른 데이터를 나타내기 위해 ‘클래스’ 개념을 사용한다.
게임으로 비유를 하자면, 플레이어를 찍어내는 공장이 Player 클래스이고, Player 클래스 속성으로는 name, health, skill 등이 있다.
한 명의 플레이어가 하나의 객체로써, 각 플레이어별로 각기 다른 속성 값을 가지고 있다.
상속
중복을 해결하기 위해 ‘상속’ 개념을 사용한다.
심즈 게임으로 비유를 하자면, 게임 내 사람은 아이일 수도 있고, 청소년일 수도 있고, 성인일 수도 있다.
사람을 Human 클래스로 나타내면, 아기(Baby 클래스), 청소년(Teenager 클래스), 성인(Adult 클래스)은 Human 클래스를 상속함으로써 사람이 가진 공통된 속성을 나타낼 수 있고, 상속받은 클래스 내에서 각기 다른 속성에 대해 나타낼 수 있다.
함수형 프로그래밍
선언형 프로그래밍(ex. CSS)에서는 원하는 결괏값을 선언한다.
명령형 프로그래밍에서는 원하는 결괏값에 어떻게 도달하는지 선언한다.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
함수형 프로그래밍이 무엇인지는 에피소드 38을 통해 대략적으로 이해는 하였는데, 뭔가 추상적인 느낌이 있어서, 좀 더 리서치 해봐야겠습니다!
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
선언형 프로그래밍 = 함수형 프로그래밍인가요,
아니면 함수형 프로그래밍이 선언형 프로그래밍에 포함되는 건가요?
오늘 읽은 다른사람의 TIL
ddobab85님의 TIL (https://nomadcoders.co/community/thread/6909)