21년 1월 18일

한 일

  • 함수형 프로그래밍이 무엇인지 학습하고 정리하였다.

    1. 프로그램을 함수의 조합으로 바라보는 패러다임이다.

    2. 여기서 함수는 불변성과 순수함수라는 특징이 있어, 어떤 상태인지에 따른 side effect가 발생하지 않는다.

    3. 비동기 프로그래밍에 있어서도 side effect가 발생하지 않는다.

      (인풋에 의해 결정되는 함수들의 조합이기 때문에 thread간에 공유되는 변수가 없다.)

    4. 자바에서 함수형 프로그래밍을 위해 인터페이스 생성자로 람다식을 사용하고, 메소드처럼 취급할 수 있는

      여러 인터페이스를 구현해놓았다는 것을 알게 되었다.

  • 프로그래머스의 길찾기 게임과 카펫 문제를 풀었다.

    1. 길찾기 게임:
      • 단순한 구현 문제이다.
      • y값으로 내림차순 정렬을 한 후 이진 탐색 트리에 삽입한다.
      • pre-order, post-order 순서로 각각 탐색한 후 결과를 반환한다.
    2. 카펫:
      • 단순한 완전탐색 문제이다.
      • yellow의 형태에 따라 결정되는 brown갯수를 알면 쉽다.
      • 주어진 yellow개수로 취할수 있는 yellow의 형태를 바꿔가며 brown개수가 일치하는 순간 답을 반환한다.
  • TCP/IP 쉽게 30페이지까지 읽었다.

    • 각각 계층이 자신의 역할만 하고 나머지는 다른 계층에 위임한다.
    • 이런 위임을 통해 마치 자신의 계층만 있는 것처럼 통신할 수 있다.
    • 애플리케이션 계층, 트랜스포트 게층, 인터넷 계층, 네트워크 인터페이스 계층에서 사용하는 프로토콜들을 확인하였다.

잘못한 것

잘한 것

느낌

  • 자바에서 함수형 프로그래밍을 위해 꼭 Functional Interface를 사용해야하는 건지 모르겠다.

    • 미션에서 주어진 조건을 만족하기 위해서는 굳이 Functional Interface가 필요한지 모르겠다.

    • 함수형 프로그래밍으로 Refactoring하는 목적에 코드의 간소화도 있을텐데, Functional Interface를 남발하면

      코드가 더 복잡해지는 것 같다.

  • TCP/IP 책을 읽었는데 엄청 꼼꼼하게 읽기보다 쓱쓱 여러번 읽는 방향으로 진행하려고 한다.

    • 부담없이 쓱쓱 읽으니까 잘 읽히고, 좋다.
    • 여러번 읽음으로써 체득하려고 한다.

할 일

  • 코드스쿼드 마스터즈 수업듣기
  • 코드스쿼드 미션 개선해보기
  • 프로그래머스 문제 풀기
  • TCP/IP 쉽게 더쉽게 읽기