본문 바로가기
knowledge/development

프로그래밍 패러다임(1) - 프로그래밍 패러다임과 언어의 관계

by 앙냥냥냥 2020. 8. 5.

프로그래밍 패러다임

프로그래밍 패러다임은프로그래머에게 프로그래밍의 관점을 갖게 해 주고, 결정하는 역할을 한다. 예를 들어객체지향 프로그래밍은 프로그래머들이 프로그램을 상호작용하는 객체들의 집합으로 볼 수 있게 하는 반면에,함수형 프로그래밍은 상태값을 지니지 않는 함수값들의 연속으로 생각할 수 있게 해준다.
- wikipidea : programming paradigm

패러다임(Paradigm) 의 사전적 의미는 한 시대의 사람들의 견해나 사고를 근본적으로 규정하고 있는 인식의 체계. 또는, 사물에 대한 이론적인 틀이나 체계. 순화어는 '틀' 이라고 한다. 다시 말하자면 programming paradigm은 프로그램을 어떻게 짜야할 지에 대한 이론적인 틀이나 체계를 아울러 말하는 셈이다.

 

프로그래밍 패러다임은 우리가 세상 모든 것을 객체로 보게도 하고, 하나의 절차로 보게 하기도 한다. 개발자들은 프로그래밍 패러다임을 통해 세상을 보고, 그것을 다시 프로그래밍화 하는 것이다.

 

그런데 그냥 그것뿐이다. 어떤 언어가 해당 패러다임 기반으로 언어라고 해서, 해당 패러다임으로만 구현되어야 하는 것은 아니다. 자바는 OOP기반으로 빌드되었지만 lambda나 stream등의 Functional Programming의 특징인 일급객체로써의 함수를 사용하기 위한 api들을 제공한다. 

더보기

물론 이 말이 자바가 객체지향 언어임을 부정하는 것은 아니며, 해당 api들이 함수를 정말 일급객체로 다루는지도 의문이다. wikipedia 왈,

"그러나 태생부터 함수형 패러다임을 지원하는 여타 언어들과는 달리 여전히 함수를 일급객체로 취급하지는 않는다. 자바에서 람다식은 함수형 인터페이스를 구현하는 익명클래스의 인스턴스를 생성하며"

또한 각각의 패러다임들은 때로는 공존할 수 있다. 두개, 세개의 패러다임이 공존하는 Poly-paradigm, Multi-paradigm이 대두되는 이유가 그것이다.

 

다시말해 우리가 흔히 말하는 프로그래밍 패러다임은 해당 언어가 어떻게 구현되었는가에 초점을 두는 것이 아니라. 내가 짤 프로그램을 어떻게 구현할 것인가에 초점을 둔다. 특정 패러다임을 지원하지 않는 언어라면, 해당 패러다임을 기반으로 프로그래밍을 하기는 정말 어려운 일일 수 있다. 그렇지만 언어는 패러다임을 강제하지 않으며(대부분의 경우 멀티패러다임을 지원한다.), 패러다임 또한 언어를 강제하지 않는다.

 

쉬운 길은 있어도, 틀린 길은 없다는 뜻이다.

'knowledge > development' 카테고리의 다른 글

final과 static  (0) 2020.07.15
RESTful API의 조건  (0) 2020.06.10
Dependency Injection  (0) 2020.06.08
대체 etc/hosts는 뭐하는 친구인가  (0) 2020.06.08