개발/개발 공통

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

growing-dev 2023. 1. 9. 22:08
반응형

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

프로그래밍 패러다임

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

 

1. 절차적 프로그래밍

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

 

2. 객체지향 프로그래밍

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

 

3. 함수형 프로그래밍

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

 

결론

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

 

반응형