본문 바로가기
728x90

함수형 프로그래밍3

2부(3, 4, 5, 6장). 벽돌부터 시작하기: 프로그래밍 패러다임 3장 패러다임 개요 구조적 프로그래밍 무분별한 점프(goto 문)이 해롭다는 사실과 함께 재안된 최초의 패러다임이다. 무분별한 점프 대신 조건문과 반복문을 상요한다. 구조적 프로그래밍은 다음과 같이 요약할 수 있다. 구조적 프로그래밍은 제어흐름의 직접적인 전환에 대해 규칙을 부과한다. 객체 지향 프로그래밍 함수 호출 스택 프레임을 힙으로 옮기면, 함수 호출이 반환되어도 함수에서 선언된 지역 변수가 오랫동한 유지된다. 이런 함수가 클래스의 생성자가 되었고, 지역변수가 인스턴스, 중첩 함수가 메서드가 되었다. 함수 포인터를 특정 규칙에 따라 사용하는 과정은 다형성이 되었다. 객체 지향 프로그래밍은 다음과 같이 요약할 수 있다. 객체 지향 프로그래밍은 제어흐름의 간접적인 전환에 대해 규칙을 부과한다. 함수형 .. 2022. 5. 15.
함수형 프로그래밍 JS에서 객체지향 패러다임을 사용하기는 쉽지 않다. JS는 프로토타입 기반 객체지향을 사용하고 this 역시 자바 같은 언어에서의 this와는 다르기 때문이다. 따라서 객체지향 대신 함수형을 사용한다면 프로젝트의 유지보수가 조금은 더 쉬워지고, 디버깅도 쉬워진다. 함수형 프로그래밍은 모든 것을 함수로 표현한다. 따라서 함수형 프로그래밍에서는 함수의 역할(입력을 받아 아웃풋을 내보내는 것)을 고려하면 된다. 명령형 프로그래밍과는 다르게 동작을 위해 동작의 구현 과정까지 세세히 생각하지 않아도 된다. 즉, 함수형 프로그래밍은 어떤 동작을 수행하기 위해 동작 과정을 세세히 명령하는 것이 아닌, "어떤 동작을 하겠다!" 라고 선언해야 한다. 다음 예제를 보자. 1 2 3 const name = "yunki"; .. 2022. 3. 26.
1장 - 자바 8, 9, 10, 11: 무슨 일이 일어나고 있는가. 스트림 처리 스트림은 한 번에 한 개씩 만들어지는 연속적인 데이터 항목들의 모임이다. 자바 8에는 java.util.stream 패키지에 스트림 API가 추가되었다. 스트림 패키지에 정의된 Stream는 T 형식으로 구성된 일련의 항목을 의미한다. 스트림 API는 파이프라인을 만드는 데 필요한 메서드들을 제공한다. 스트림 API는 작업을 고수준으로 추상화해서 일련의 스트림으로 만들어 처리할 수 있다. 또 한 스트림 파이프라인을 이용해 입력 부분을 여려 CPU 코어에 쉽게 할당할 수 있다. 스레드라는 복잡한 작업을 사용하지 않고도 병렬성을 얻을 수 있다. 스트림 API는 연산의 동작을 파라미터화할 수 있는 코드를 전달한다는 사상에 기초한다. 동작 파라미터화(behavior parameterization)로.. 2022. 2. 12.
728x90