[개발 상식] 프로그래밍 패러다임을 알아보자

2023. 1. 9. 22:08·개발/개발 공통
반응형

프로그래밍 패러다임의 개념과 패러다임 3가지 종류에 대해서 알아보도록 하겠다.

프로그래밍 패러다임

  • 프로그래밍 패러다임은 어떠한 방식으로 프로그래밍을 할지, 프로그래밍 혹은 코드를 바라보는 관점에 대한 고민에서 나온 전략이라고 볼 수 있다.
  • 사람이 프로그래밍을 하고 컴퓨터가 프로그래밍된 대로 돌아가는데, 결국 똑같은 기능을 하더라도 어떻게 프로그래밍을 하느냐에 따라 코드가 천차만별이 될 수 있다.
  • 따라서 프로그래밍이 지향하는 혹은 지양하는 방법들과 프로그래밍할 언어가 어떠한 고민과 철학을 갖고 만들어졌는지에 대한 생각이라고 이해할 수 있다.
  • 대표적으로 절차적, 객체지향, 함수형 프로그래밍이 있다.

 

1. 절차적 프로그래밍

  • 절차 혹은 순서에 따라 프로그래밍을 하는 방식으로, 어떤 프로시저의 호출을 바탕으로 한다.
  • 프로시저란 하위 프로그램이나 함수와 같은 것을 의미하며, 이 프로시저의 호출하며 프로그래밍한다고 생각하면 된다.
  • 절차적 프로그래밍을 통해 복사해서 붙이지 않고도 같은 코드를 다른 장소에서 다시 사용할 수 있게 해 준다.
  • GOTO를 쓰는 것보다 프로그램의 흐름을 더 쉽게 따라갈 수 있게 해 준다. (GOTO문이나 JUMP문을 많이 쓰면 크고 복잡한 프로그램이 일명 스파게티 코드가 될 수도 있다.)
  • 모듈화를 하거나 구조화를 할 수 있다.
  • 대표적으로 C언어가 있다.

 

2. 객체지향 프로그래밍

  • 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.
  • 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 쉽게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다.
  • 또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 코드 분석을 가능하게 하는 장점이 있다.
  • 하지만 프로그램의 객체화 경향은 실제 모습을 그대로 반영하지 못한다는 비판을 받기도 한다.
  • 대표적으로 C++, JAVA와 같은 언어가 있다.

 

3. 함수형 프로그래밍

  • 최소 단위가 함수이며, 함수를 통하여 새로운 데이터들을 만들어가며 파이프 형태로 프로그래밍하는 방식이며 선언형 프로그래밍 방식과 비슷하다.
  • 모든 데이터의 처리를 수학적 함수(function)의 계산으로 취급하여 결과 값을 받아보고자 하는 패러다임입니다.
  • 함수 단위로 나눠지므로 재사용성이 높다.
  • Immutability을 지향하기에 동작을 예측하기 쉽고 Side Effects를 방지한다.
  • Side Effects를 방지하므로 동시성 문제도 해결된다.
  • SQL, Scala, Clojure 등이 존재한다.

 

결론

프로그래밍을 함에 있어서 혹은 새로운 개발 언어를 배움에 있어서 각 언어간의 차이와 철학을 이해할 때 필수적으로 이해해야 하는 것이 프로그래밍 패러다임이라고 생각한다. 따라서 최소한 세 가지 절차적, 객체지향, 함수형 프로그래밍에 대해 충분히 이해하고 현재 언어를 사용하거나 새로운 언어를 배울 때 더욱 효과적이고 언어가 의도한 대로 프로그래밍을 할 수 있다고 생각한다.

 

저작자표시

'개발 > 개발 공통' 카테고리의 다른 글

[객체 지향] SOLID 원칙에 대해서 알아보자  (1) 2023.01.14
[객체 지향] 객체 지향 프로그래밍(OOP)에 대해 알아보자  (0) 2023.01.14
[도서 리뷰] 소프트웨어 장인 책을 읽은 후기  (0) 2023.01.10
[라이브러리] 정적(static) vs 공유(shared)  (0) 2023.01.05
[개발문화] 데일리 스크럼을 더 잘하기 위한 방법  (0) 2023.01.05
'개발/개발 공통' 카테고리의 다른 글
  • [객체 지향] 객체 지향 프로그래밍(OOP)에 대해 알아보자
  • [도서 리뷰] 소프트웨어 장인 책을 읽은 후기
  • [라이브러리] 정적(static) vs 공유(shared)
  • [개발문화] 데일리 스크럼을 더 잘하기 위한 방법
growing-dev
growing-dev
S/W 개발 관련 내용들과 취미나 육아, 맛집 등 관심 있는 내용을 공유하는 블로그입니다.
    반응형
  • growing-dev
    성장하는 개발자 블로그
    growing-dev
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 개발
        • 개발 공통
        • 개발 환경
        • Git
        • 자료구조, 알고리즘
        • C, C++
        • Python
        • DevOps
        • CMake
      • 공부
        • 영어
        • 경제
      • 취미, 육아
        • 육아
      • 생활정보
  • 블로그 메뉴

    • 홈
  • 링크

    • growing-dev GitHub
  • 공지사항

    • [블로그 시작] 성장하는 개발자 스토리입니다.
  • 인기 글

  • 태그

    하이볼
    티스토리챌린지
    필스너
    TDD
    키즈카페
    VS Code
    Python
    생산성
    앨리웨이
    소프티어
    OPIC
    dfs
    오블완
    WSL
    오픽
    Clang
    git
    CMake
    C++
    프로그래머스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
growing-dev
[개발 상식] 프로그래밍 패러다임을 알아보자
상단으로

티스토리툴바