스칼라 함수형 프로그래밍 개요와 기본 개념
View: 226
0
0
작성자: 달빛제이크
카테고리: Scala Language
발행: 2024-05-30
수정
2024-06-21
안녕하세요. 달빛제이크입니다.
이번 글 부터는 스칼라의 함수형 프로그래밍에 대해서 소개하려고 합니다.
함수형 프로그래밍(Functional Programming)은 프로그래밍 패러다임 중 하나로, 순수 함수로서의 불변성을 기본으로 함수를 값처럼 사용하여 코드를 작성하는 방법론입니다.
PC가 대중화 되기 시작하면서 DOS나 Unix의 터미널 (또는 Shell)에서 소프트웨어를 실행 시킬 때에는 컴퓨터에 일일이 동작을 지시하는 절차 지향 프로그래밍이 활용되었습니다.
이후 Windows의 탄생으로 GUI 환경이 제공되면서 복잡한 프로그램이 요구되었고, 데이터를 효과적으로 구조화하면서 코드의 재사용성을 높이기 위해 객체 지향 프로그래밍 개념이 도입되었습니다.
컴퓨터 하드웨어의 급격한 발전으로 데이터 처리 속도가 빨라지고 멀티 코어가 대중화 되면서, 하드웨어의 성능을 최대한 활용하기 위한 방법으로 동시성(Concurrency)과 병렬성(Parallelism)을 지원하는 프로그래밍 기법이 요구되었습니다.
특히 동시성 프로그래밍은 싱글 코어에서 Task를 빠르게 전환하며 여러 작업이 마치 동시에(Concurrent) 실행되는 것처럼 보이게 하는 기법으로 대표적인 방식이 스레드(Thread), 비동기 프로그래밍(Asynchronous Programming) 등이 있습니다.
문제는 프로그램이 여러 스레드나 프로세스에서 동시에 실행되기 때문에 이들 간의 상호 작용이 복잡해서 경쟁 상태 (Race Condition), 교착 상태 (Deadlock), 라이브락 (Livelock), 기아 상태(Starvation)의 오류를 발생 시킬 수 있다는 점입니다.
이를 해결하기 위해 여러 가지 방법론들, Framework들이 등장했고, 많은 프로그래밍 언어들이 함수형 프로그래밍 방식을 채용하기 시작했습니다.
함수형 프로그래밍 방식은 순수 함수를 사용하기 때문에 함수의 실행이 외부에 영향을 끼치지 않고, 한 번 변수를 초기화 하면 변수에 할당된 값들이 절대 변하지 않기 때문에 스레드 안정성을 보장 받을 수 있고, 프로그램의 동작을 예측하기 쉬운 장점을 가지고 있습니다.
순수 함수형 프로그래밍 언어로는 LISP(리스프), Erlang(얼랭), OCaml(오캄), Haskel(하스켈) 등이 있으며, 객체 지향 프로그래밍과 함수형 프로그래밍을 결합한 멀티 패러다임 프로그래밍 언어로서 Scala가 있습니다.
함수형 프로그래밍 기법이 절대 진리는 아니며 문제를 해결하는 하나의 방법으로 접근하는 것이 바람직합니다. 스칼라에서는 함수형 프로그래밍 방식을 지향하면서 기존의 문법 체계도 유지해서, 문제를 해결하는 데 최적의 Solution을 제공할 수 있도록 다양한 언어적인 기능을 지원합니다.
함수형 프로그래밍의 주요 특징으로는 순수 함수(Pure Function), 불변성(Immutability), 일급 함수(First-Class Function), 고차 함수(Higher-Order Function), 선언형 프로그래밍(Declarative Programming) 등이 있으며, 다양한 기능을 가진 함수들을 제공하고 있습니다.
이번 글에서는 함수형 프로그래밍에 대해 간단히 살펴보았습니다.
다음 글에서 스칼라의 함수 및 프로그래밍 방식에 대해 좀 더 구체적으로 들어가 보도록 하겠습니다.
감사합니다.
