June's Blog

객체 지향 프로그래밍의 5원칙 - S.O.L.I.D

객체 지향 프로그래밍이란? 객체 지향 프로그래밍(영어: Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 “객체”들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받...

MSA(microservice architecture, 마이크로서비스 아키텍처)의 특징

정의 마이크로서비스(microservice)는 애플리케이션을 느슨하게 결합된 서비스의 모임으로 구조화하는 서비스 지향 아키텍처(SOA) 스타일의 일종인 소프트웨어 개발 기법이다.[마이크로서비스] “단일 애플리케이션을 작은 서비스 모음으로 개발하는 접근 방식으로서 작은 서비스는 자체적으로 실행할 수 있고, 경량 메커니즘을 통해 서로 통신한다....

코틀린으로 배우는 함수형 프로그래밍 - 8장 애플리케이티브 펑터

범위 8장 애플리케이티브 펑터 개념 정리 애플리케이티브 스타일 프로그래밍(applicative style programming): 컨텍스트를 유지한 상태에서 함수에 의한 연속적인 데이터 변환을 체이닝하는 방식. 이더(either): 성공과 실패를 모두 포함하는 컨텍스트. 성공한 경우는 라이트가 되고, 실패한 경우는 레프트가 된다. 두...

코틀린으로 배우는 함수형 프로그래밍 - 7장 펑터

범위 7장 펑터 개념 정리 펑터(Functor): 매핑할 수 있는 것(can be mapped over)이라는 행위를 선언한 타입 클래스. 메이비(Maybe): 어떤 값이 있을 수도 있고 없을 수도 있는 하스켈의 컨테이너형 타입이다. 자바8에는 옵셔널(Optional), 스칼라에서는 옵션(Option)이라는 이름으로 동일한 역할을 하...

코틀린으로 배우는 함수형 프로그래밍 - 6장 함수형 타입 시스템

범위 6장 함수형 타입 시스템 개념 정리 대수적 데이터 타입(Algebraic data type): 다른 타입들을 모아서 형성되는 합성 타입의 종류로, 곱 타입(product type)과 합 타입(sum type)이 있다. 대수적 데이터 타입의 핵심은 기존 타입들을 결합하여 새로운 타입을 정의하는 것이다.[대수적 자료형] 곱 타입(p...

코틀린으로 배우는 함수형 프로그래밍 - 5장 컬렉션으로 데이터 다루기

범위 5장 컬렉션으로 데이터 다루기 개념 정리 컬렉션 다루기에서 명령형 방식 대비 함수형 프로그래밍의 장점 코드가 간결해져서 가독성이 좋다. 결괏값을 저장하기 위해서 별도의 리스트를 생성할 필요가 없다. 비지니스 로직에 집중할 수 있다. 버그가 발생할 확률이 적다. 테스트가 ...

코틀린으로 배우는 함수형 프로그래밍 - 4장 고차 함수

범위 4장 고차 함수 요약 고차 함수, 부분 함수, 부분 적용 함수, 커링, 합성 함수는 함수형 프로그래밍을 하는데 기본적인 개념들이다. 개념 정리 고차 함수(higher order function): 함수형 프로그래밍에서 다음 두 가지 조건 중 하나 이상을 만족하는 함수. 함수를 매개변수로 받는 함수 ...

코틀린으로 배우는 함수형 프로그래밍 - 3장 재귀

범위 3장 재귀 개념 정리 재귀(recursion): 어떤 함수의 구현 내부에서 자기 자신을 호출(재귀 호출, recursive call)하는 함수를 정의하는 방법. 메모이제이션(memoization)이란, 어떤 반복된 연산을 수행할 때 이전에 계산했던 값을 캐싱해서 중복된 연산을 제거하는 방법이다. 꼬리 재귀(tail-recur...