Post

It 5분 잡학사전 노개북 Day 8

It 5분 잡학사전 노개북 Day 8

title: [IT 5분 잡학사전] 노개북 DAY 8 date: 2023-01-24 10:07:25.858 +0000 categories: [노개북] tags: [] description: 노개북 DAY 8 Assignment 12


에피소드 35 ~ 38

기억하고 싶은 내용

  • 해시 함수의 규칙 p.205
    • 동일한 입력값에 대해 동일한 출력값을 가진다.
    • 약간의 입력값 변경만으로 전혀 다른 출력값이 나온다.
    • 출력값을 통해 입력값을 알 수 없다.
  • 비밀번호 입력값에 무작위 텍스트를 합쳐서 해시 함수에 이용하는 기법을 솔트(salt)라고 한다. 입력값에 대응하는 출력값을 모두 연결한 표인 레인보우 테이블에 대응하는 방법이다. p.206

  • 프로그래밍 패러다임은 프로그래머가 프로그래밍을 할 때의 관점, 방식 등을 말한다. 대표적으로 객체 지향 프로그래밍, 절차 지향 프로그래밍, 함수형 프로그래밍이 있다. p.207

  • 객체 지향 프로그래밍을 배운다는 것은 프로그래밍 관점, 방식 하나를 공부한다고 생각하면 된다. p.208

  • 함수형 프로그래밍을 배워야 하는 이유는 ‘버그가 발생하기 어려운 구조’이기 때문이다. p.217

  • ‘선언형 프로그래밍’은 CSS 처럼 원하는 결과값을 선언한다. ‘명령형 프로그래밍’은 결과값에 도달하기 위한 과정을 선언한다.

선언형 : combi_lists = itertools.combinations(array, 2) 명령형 :

1
2
3
4
5
6
combi_lists = []
for i in range(len(array)):
	temp = [array[i]]
    for j in range(i+1, len(array)):
    	temp.append(array[j])
        combi_lists.append(temp)
  • 선언형 프로그래밍을 하기 위해서는 결과를 출력하는 명령형 프로그래밍으로 작성된 코드가 필요하다. 즉 모든 선언형 프로그래밍은 명령형 프로그래밍 위에 쓴다고 할 수 있다. p.220

함수형 프로그래밍이 정확히 어떤 것인지 잘 설명이 안되어 있어 헷갈리는 부분이 존재했다.

대략적으로나마 책의 내용과 연관지어 정리해보면 명령형 프로그래밍으로 함수를 만들되, 실제 코드가 실행되는 부분은 오직 선언형 프로그래밍(함수)를 이용하여 프로그래밍 하는 것이다.

이를 위해 순수함수, 불변하는 데이터와 같은 개념이 필요하다.

  • 번아웃을 예방하는 가장 좋은 방법은 스스로 건강을 챙기는 것이다. p.223

소감

  • 객체 지향 프로그래밍의 개념 중 상속이 이해하기도 어려웠고, 이것이 언제 필요한지도 잘 몰랐었다. ‘사람’을 설명하는 클래스를 만들 때, 가장 기틀이 되는 ‘인간’ 클래스와 이를 상속하여 필요한 속성만 추가하는 ‘아기’ 클래스, ‘청소년’ 클래스를 통해 쉽게 설명한 부분이 이해도 쏙쏙 되고 너무 좋았다.

  • 반면 아쉬웠던 내용은 함수형 프로그래밍 부분이다. 읽고 난 뒤 그래서 결국 함수형 프로그래밍이 뭐야?? 라는 생각이 들었다. 그렇다고 개념을 찾아 스스로 공부하기엔 너무 어려운 내용었다.. 혹시 나중에 개정이 된다면 설명이 조금 더 보강됐으면 좋겠다.

This post is licensed under CC BY 4.0 by the author.