프로그래밍 패러다임

DD·2020년 12월 27일
0

프로그래밍 이론

목록 보기
2/12

크게 선언형 / 명령형 언어로 나뉜다.

선언형

프로그램이 수행해야 할 문제를 기술하는 것을 중점으로, '목표(What)'를 명시한다.

  • 목표를 명시하고 알고리즘은 명시하지 않는다.
  • 함수형, 논리형 등이 있다.
  • ex) HTML, Javascript(함수형) 등..

    서울역에서 출발해서, 강남역에 도착해라.

함수형(적용형)

수학적 함수를 조합하여 문제를 해결하며 알려진 값을 함수에 적용하는 것을 기반으로 한다.

  • 재귀호출이 자주 이용됨
  • 병렬처리에 유리

자바스크립트 같은 경우 명령형, 함수형 프로그래밍 방식을 모두 사용할 수 있는 멀티 패러다임 언어이다.

논리형(선언적)

기호 논리학에 기반을 둔 언어로, 논리 문장을 이용하여 프로그램을 표현하고 계산을 수행한다.

  • 반복문이나 선택문을 사용하지 않는다.
  • 비절차적 언어이다.

명령형

순차적인 명령 수행을 기본으로, 문제를 처리하기 위한 '방법(How)'에 초점을 두고 코드를 작성한다.

  • 알고리즘을 명시하고 목표는 명시하지 않는다.
  • 특정 구문의 연산을 이용하여 상태를 변경시키고 프로그램을 동작시킨다.
  • 개체의 동자고가 상태를 중요시한다.
  • 절차지향적, 객체지향적 등이 있다
  • ex) C, JAVA, FORTRAN, COBOL 등 ..

서울역에서 숙대입구역 방면 지하철 탑승
7개역 이동 후 하차
2호선 환승 구역으로 약 100m 이동
방배역 방면 지하철 탑승
4개역 이동 후 하차

절차지향적

문제를 해결함에있어 순차적인 처리를 중요시하여 프로그래밍 전체가 유기적으로 연결되도록 한다.

  • 컴퓨터의 작업 처리 방식과 유사해기때문에 속도가 빠른 경향이 있다.
  • 유지보수, 디버깅이 어렵다.
  • 실행순서가 정해져있어 코드 순서가 바뀌면 결과가 바뀔 수 있는 위험이 있다.

객체지향적

실제 세계를 모델링하여 문제를 해결한다. 데이터와 기능을 가진 객체를 기반으로 문제를 해결한다.

  • 캡슐화 : 데이터와 알고리즘을 하나의 묶음으로 만든다. 데이터를 외부로부터 감추고, 메소드를 통해 다른 객체와의 상호작용한다. (직접 객체의 data에 접근하는 것이 아니라, getDate, setDate와 같은 메소드를 이용해서 값을 받거나 수정한다)
  • 상속 : 이미 작성된 클래스를 이어 받아 새로운 클래스를 생성한다. (부모의 특성을 이어 받는 자식)
  • 다형성 : 다양한 형태를 가질 수 있는 능력. 같은 부모로부터 상속받아도 다른 일을 할 수 있다. 하나의 객체를 여러 개의 타입으로 선언하거나, 하나의 타입으로 여러가지 객체를 생성할 수 있다. (오버라이딩, 오버로딩 가능)
  • 코드의 재활용성이 높음
  • 절차지향보다 간편하지만 느림
  • 디버깅이 쉽지만 설계에 시간이 많이 들어감

image
출처 : https://brownbears.tistory.com/407

이벤트 중심(event-driven)

구동형 프로그래밍이라고도 한다. 프로그램의 흐름이 단순히 위에서 아래로 흘렀던 과거와는 달리, 최근에는 사용자의 행동, 연결된 API들 등으로 다양한 이벤트가 발생한다.
예를 들면 언제 유저가 터치, 클릭을 할지 그로 인해 API가 어떤 동작들을 할지 예측할 수가 없다.

이벤트는 항상 대상이 있어야하며, 그 대상을 '이벤트 소스'라고 한다.

  • 특정 이벤트가 발생했는데, 그 이벤트의 대상이 A 이벤트 소스다. 이런 행동을 해라 (이전 방식)
  • A 이벤트 소스에서 특정 이벤트가 발생된다면, 이런 행동을 해라. (이벤트 중심 프로그래밍)

자세한 내용은 하단의 링크를 참고! 설명이 아주 잘 되어있다.

[프로그래밍 패러다임] 이벤트 기반 프로그래밍

참고

명령형 언어
선언형 언어
절차지향 vs 객체지향

profile
기억보단 기록을 / TIL 전용 => https://velog.io/@jjuny546

0개의 댓글