본문 바로가기
Aiffel/Fundamental

프로그래밍 패러다임

by EDGE-AI 2021. 12. 30.
  • 패러다임 : 어떤 한 시대의 사람들이 견해나 사고를 근본적으로 규정하고 있는 테두리를 말하며, 인식의 체계 또는 사물에 대한 이론적인 틀이나 체계를 의미하는 개념
  • 프로그래밍 패러다임 : 프로그래머에게 프로그래밍의 관점을 갖게 해주고, 결정하는 역할
    • 언어에 따라 하나 혹은 여러개의 패러다임을 지원함

프로그래밍 패러다임

  1. 절차 지향 프로그래밍 : 일이 진행되는 순서대로 프로그래밍 하는 방법
    • 장점 : 코드가 순차적으로 작성되어 있어 순서대로 읽기만 하면 이해 가능
    • 단점 : 순차적으로 작성되어 있기 때문에 위에서 하나가 잘못되면 아래도 연쇄적으로 문제가 생겨 유지보수가 어려움
  2. 객체 지향 프로그래밍 : 개발자가 프로그램을 상호작용하는 객체들의 집합으로 볼 수 있게 함. 객체를 먼저 작성하고 함수 작성
    • 장점 : 코드를 재사용하기 쉬움. 코드 분석이 쉬우며 아키텍쳐를 바꾸기 쉽다.
    • 단점 : 객체 간 상호작용이 있기 때문에 설계에서 많은 시간이 소요되며, 설계를 잘못하면 전체적으로 바꿔야 할 수도 있다.
    • 파이썬은 객체지향 프로그래밍 지원
  3. 함수형 프로그래밍 : 데이터 사이언티스트에게 적합한 프로그래밍 패러다임. 효율성, 버그 없는 코드, 병렬 프로그래밍과 같은 장점 제공
    • 함수로 문제를 분해. 이 함수들은 입력을 받아서 출력을 만들어 내기만 하고, 생성된 출력값은 다른 변수나 함수에 의해 변하지 않음.
    • 순수성 : 함수형 방식은 내부 상태를 수정하거나 함수의 반환값에서 보이지 않는 다른 변경사항들을 만드는 부작용이 있는 함수를 사용하지 않음.
      • 부작용이 전혀 없는 함수 : 순수 함수
      • 순수성이 없는 함수
      • A = 5
        
        def impure_mul(b):
            return b * A​
      • 순수성이 있는 함수
      • def pure_mul(a, b):
            return a * b
      • 순수하게 함수 input 2개만을 이용하여 결과를 내보냄
    • 모듈성 : 함수형 프로그래밍은 문제를 작은 조각으로 분해하도록 강제. 복잡한 변환을 한 함수 안에서 수행하는 거대한 함수보다, 한 가지 작업을 수행하는 작은 함수들로 쪼개어 만드는 것이 코딩하기 쉽고, 가독성도 좋을 뿐더러 오류를 확인하기도 쉽다.
    • 디버깅과 테스트 용이성 : 함수형 프로그래밍으로 개발된 프로그램은 각각의 함수가 작고 명확하게 명시되기 때문에 디버깅을 쉽게 할 수 있다. 또한, 각 함수는 잠재적으로 단위 테스트의 대상이기 대문에, 테스트가 더 쉽다.

'Aiffel > Fundamental' 카테고리의 다른 글

Pandas로 그래프 그리기  (0) 2022.01.05
Git, Github  (0) 2021.12.30
클래스, 모듈, 패키지  (0) 2021.12.30
MultiProcessing  (0) 2021.12.30
파이썬의 특징  (0) 2021.12.30

댓글