프로그래밍과 프로그래밍 패러다임

박형석·2021년 11월 11일
0

CS

목록 보기
1/10
post-thumbnail

프로그래밍?

컴퓨터 프로그래밍은 하나 이상의 관련된 추상 알고리즘을 특정한 프로그래밍 언어를 이용해 구체적인 컴퓨터 프로그램으로 구현하는 기술을 말한다.

한편 코딩은 작업 흐름에 따라 프로그래밍 언어의 명령문을 사용해 위의 프로그램을 작성하는 일, 혹은 그 코드를 작성하는 작업으로 볼 수 있다.

알고리즘 with 프로그래밍 언어 -> 프로그램

프로그래밍 패러다임

프로그래밍 패러다임은 프로그래머에게 프로그래밍의 한 관점을 갖게 해 주고, 그 관점으로 어떻게 프로그램을 구현할지 결정하게 하는 역할을 한다. 예를 들어, 객체지향 프로그래밍은 개발자가 프로그램을 상호작용하는 객체들의 집합으로 볼 수 있게 하는 반면, 함수형 프로그래밍은 상태값을 지니지 않는 함수값들의 연속으로 생각할 수 있게 해준다.

프로그래밍에 특정 생각과 관점을 더해 효율적인 작업이 될 수 있도록 하는 인식의 틀. 즉, 어떤 프로그래밍 패러다임을 가지고 프로그래밍을 한다는 것은 그냥 되는대로 하는게 아니라 특정한 관점과 생각을 견지하면서, 그 틀 안에서 효율성을 끌어내며 작업하는 것

프로그래밍 언어는 이런 프로그래밍 패러다임을 지원하며, 어떤 언어들은 하나의 특정한 패러다임만 지원하는 반면 어떤 언어는 하나 이상의 프로그래밍 패러다임을 지원하기도 한다. 이렇게 하나 이상의 프로그래밍 패러다임을 지원하는 언어를 다중 패러다임 프로그래밍 언어(multiparadigm programming language) 라고 한다. 최신 언어들은 보통 여러 패러다임을 지원하는 경향이 강하다.

Swift?

Swift 역시 다중 패러다임 프로그래밍 언어다. 크게 보면, 다음과 같은 프로그래밍 패러다임을 지원한다. (같은 차원의 분류가 아님에 주의하자)

  1. 명령형 프로그래밍
  2. 객체 지향 프로그래밍
  3. 함수형 프로그래밍
  4. 프로토콜 지향 프로그래밍

정확하게는 명령형 및 객체 지향 프로그래밍을 기반으로 한 함수형, 프로토콜 지향 프로그래밍을 패러다임을 지원한다. 애플의 프레임워크 대부분이 객체 지향 프로그래밍 패러다임을 기반으로 작성되었으며, 표준 라이브러리의 타입과 관련된 부분은 프로토콜 지향 프로그래밍 패러다임을 차용했다. 또 이런 프레임워크나 라이브러리를 벗어나 다른 영역에서 Swift를 사용했을 때는 함수형 프로그래밍 역시 작성할 수 있다.

Swift를 이용해 프로그래밍을 한다는 것은 이런 패러다임을 잘 이해하고 적용하는 것을 포함한다. 설계할 코드에 객체 지향, 함수형, 프로토콜 지향이 추구하는 관점과 틀을 적용해 막코딩이 아닌 생각하는 코딩을 해가야 한다는 말이다. 자세한 이야기는 추후에 해보자.

정리

어떤 관점을 가지고 설계를 하는지 또 그 설계를 관점에 맞게 일관성 있게 풀어내는지는 프로그래밍의 효율성, 한편 클린한 코드의 출발점과 같다. 현재 사용하고 있는 언어의 패러다임을 정확하게 이해하고 염두하며 프로그래밍을 이어나가야 프로그램의 기술부채를 줄여나갈 수 있을 것이다.

profile
IOS Developer

0개의 댓글