프로그래밍 패러다임 (programming paradigm) 은
프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론 입니다.
함수형 패러다임은 선언형 패러다임의 일종입니다. 함수형 프로그램은 작은 '순수 함수'들을 블록처럼 쌓아 로직을 구현하고 '고차 함수'를 통해 재사용성을 높인 프로그래밍 패러다임입니다.
ex ) 자바스크립트는 단순하고 유연한 언어이며, 함수가 일급 객체이기 때문에 객체지향 프로그래밍 보다는 함수형 프로그래밍 방식이 선호됩니다.
예시 :
function add(a,b){
return a + b;
}
console.log( add(10,5) );
단점은 설계에 많은 시간이 소요되며 처리 속도가 다른 프로그래밍 패러다임에 비해 상대적으로 느립니다.
객체지향 프로그래밍의 특징
객체지향 프로그래밍 은 추상화, 캡슐화, 상속성, 다형성이라는 특징이 있습니다.
1. 추상화(abstraction)란 복잡한 시스템으로부터 핵심적인 개념 또는 기능을 간추리는 것을 의미합니다. 예를들어 후배 종화에게는 군인, 장교, 키180, 안경씀 등의 특징이 있다면 이러한 특징 중에서 코드로 나타낼 때 일부분의 특징인 군인, 장교만 뽑아서 조금더 간추려서 나타내는 것을 말합니다.
2. 캡슐화(encapsulation)는 객체의 속성과 메서드를 하나로 묶고 일부를 외부에 감추어 은닉하는 것을 말합니다.
3. 상속성(inheritance)은 상위 클래스의 특성을 하위 클래스가 이어받아서 재사용하거나 추가, 확장하는 것을 말합니다. 코드의 재사용 측면, 계층적인 관계 생성, 유지 보수성 측명에서 중요합니다.
4. 다형성(ploymorphism)은 하나의 메서드나 클래스가 다양한 방법으로 동작하는 것을 말합니다. 대표적으로 오버로딩, 오버라이딩이 있습니다.
오버로딩 : 오버로딩은 같은 이름을 가진 메서드를 여러 개 두는 것을 말합니다. 메서드의 타입, 매개변수의 유형 ,개수 등으로 여러 개를 둘 수 있으며 컴파일 중에 발생하는 '정적 다형성'입니다.
오버라이딩 : 오버라이딩은 주로 메서드 오버라이딩 을 말하며 상위 클래스로부터 상속받은 메서드를 하위 클래스가 재정의 하는 것을 의미합니다. 이는 런타임 중에 발생하는 '동적 다형성'입니다.
일이 진행되는 방식으로 그저 코드를 구현하기만 하면 되기 때문에 코드의 가독성이 좋으며 실행속도가 빠릅니다. 그렇기 때문에 계산이 많은 작업 등에 쓰입니다. 대표적으로 포트란을 이용한 대기 과학 관련 연산 작업, 머신 러닝의 배치 작업이 있습니다.단점으로는 모듈화하기가 어렵고 유지 보수성이 떨어진다는 단점이있습니다.
출처 : 면접을 위한 CS 전공지식 노트 - 지은이 : 주홍철
을 읽고 정리한 내용입니다.