본문 바로가기
iOS/iOS

CS 이론 : 절차형 프로그래밍 vs 선언형 프로그래밍

by 황민우 2022. 3. 10.

절차형 프로그래밍 [ procedural programming ]

어떻게(How)에 중점을 두고 프로그래밍을 하는 방식입니다.
- 실행 순서를 지정하게 되어 명령형 언어라고도 불립니다.
- 위에서 아래로 로직에 따라 코드의 순차적인 처리가 중요시되며 프로그램 전체가 유기적으로 연결됩니다.
- 코드로 원하는 결과를 달성해 나가는 과정에 중점을 두는 프로그래밍 방식입니다.
- 종류 : C, ALGOL, COBOL, FORTRAN

 

장점

  • 모듈 구성이 용이하며 구조적인 프로그래밍이 가능합니다.
  • 컴퓨터와 유사한 처리구조의 코딩 방식으로 실행 속도가 빠릅니다.

 

단점

  • 코드가 길어지면 가독성이 떨어집니다.
  • 유지보수가 어렵습니다.
  • 코드의 실행순서가 정해져 있어, 코드의 순서 변동으로 인해 동일하지 않은 결과가 발생할 수 있습니다.

 


선언형 프로그래밍 [ declarative programming ]

무엇을(What)에 중점을 두고 프로그래밍을 하는 방식입니다.
- 필요한 것을 달성하는 과정을 하나하나 기술하는 것보다, 필요한 것이 어떤 것인지 기술하는데 중점을 두는 방식입니다.
- 절차형 프로그래밍이 추상화된 것입니다.
- 종류 : SQL, Prolog


객체 지향 프로그래밍 [ Object-Oriented Programming ]

- 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고, 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방식입니다.

- 종류 : C++, C#, Java, Python, Swift,,

 

특성

1, 추상화

 - 객체들의 공통적인 특징을 도출하는 것

 - 객체지향적 관점에서 클래스를 정의하는 것을 추상화라고 할 수 있습니다.

 

2, 캡슐화

 - 실제로 구현되는 부분을 외부에 드러나지 않게 은닉할 수 있습니다.

 - 객체가 독립적으로 역할을 할 수 없도록 기능을 하나로 묶어 관리하는 것

 - 코드가 묶여있어서 오류가 없습니다.

 

3, 상속성

 - 하나의 클래스가 가진 특징(함수, 데이터)을 다른 클래스가 그대로 물려받는 것

 - 기존 코드를 재활용하는 방법으로 객체지향의 가장 중요한 기능 중 하나에 속합니다.

 

4, 다형성

 - 약간 다른 방법으로 동작하는 함수를 동일한 이름으로 호출하는 것

 - 동일한 명령의 해석을 연결된 객체에 의존하는 것

 - 오버 로딩, 오버 라이딩

 

5, 동적 바인딩

 - 가상 함수를 호출하는 코드를 컴파일할 때, 바인딩을 실행시간에 결정하는 것

 - 파생 클래스의 객체에 대해, 기본 클래스의 포인터로 가상 함수가 호출될 때 일어납니다.

 - 함수를 호출하면 동적 바인딩에 의해 파생 클래스에 오버 라이딩된 함수가 실행됩니다.

 - 프로그래밍의 유연성을 높여주며, 파생 클래스에서 재정의한 함수의 호출을 보장합니다.

 

장점

  • 코드 재사용 용이
  • 유지보수 용이
  • 대형 프로젝트에 유용하다.

단점

  • 느린 처리 속도
  • 객체에 따라 용량이 커짐
  • 설계 시 많은 시간과 노력이 필요

내용 출처

 

https://sora9z.tistory.com/39
https://kevinkim95-dev.tistory.com/2
https://migoreng.tistory.com/97
http://www.incodom.kr/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5#h_45791da82d928e012cccde6bfb5b5d23

'iOS > iOS' 카테고리의 다른 글

tableView, collectionView  (0) 2022.03.12
앱 시닝 [ App thinning ]  (0) 2022.03.11
동기/비동기, 직렬/동시  (0) 2022.03.09
오버로딩 VS 오버라이딩  (0) 2022.03.08
시뮬레이터로 할 수 없는 것 (시뮬레이터의 한계)  (0) 2022.03.07

댓글