2023. 5. 25. 17:52ㆍ개발공부/IT 잡다한 지식
절차지향 프로그래밍(Procedural Programming)이란, 순차적인 처리를 중요시하는 프로그래밍 기법으로 프로그램 전체가 유기적으로 연결되도록 하고 이러한 방식은 컴퓨터의 작업처리 방식과 유사하기 때문에 실행속도가 빠르고 프로그램의 흐름을 쉽게 파악할 수 있다는 장점이 있어 초기 프로그래밍 언어의 대부분이 절차지향 프로그래밍 언어로 개발되었답니다.
다만 절차지향 프로그래밍에는 유지보수가 어렵다는 큰 단점이 있는데요, 그 이유는 실행 순서가 엄격하게 정해져 있고, 구성요소가 유기적으로 연결되어 있기 때문에 하나가 잘못되어도 시스템 전체를 수정해야 하기 때문에 유지보수가 매우 까다로운 편이며, 디버깅이 어렵습니다. 또한 실행 순서가 정해져 있기 때문에 코드의 순서가 바뀌면 결과가 달라질 가능성이 커 비효율적이기도 합니다.
절차지향 프로그래밍 언어 종류에는 C언어, 파스칼, 베이직, 포트란, 에이다 등이 있고, 그 중 1970년대에 등장한 C언어는 대표적인 절차지향 프로그래밍 언어입니다!
C언어가 오랜 시간 사랑받는 이유는 바로 높은 '이식성' 때문인데 C언어로 개발된 프로그램은 CPU 종류에 상관없이 실행할 수 있다는 장점과 속도가 빠르고 사용 메모리 양이 적은 편이기도 합니다. 현재 C언어는 가전제품, 의료 장비, 무기 등에 들어가는 프로그램 개발, 즉 임베디드 시스템 개발에서 가장 활발하게 사용되고 있습니다.
다음으로 객체지향 프로그래밍에 대해 알아보겠습니다, 절차지향 프로그래밍 언어는 유지보수가 어렵다는 단점을 극복하기 위해 탄생한 개념이 바로 객체지향 프로그래밍입니다.
객체지향 프로그래밍은 프로그램을 객체(object)라는 기본 단위로 나누어 프로그래밍하는 방식을 의미합니다. 프로그래밍 관점에서 객체란 어떤 상태(state)를 나타내는 데이터의 구조와 동작을 수행하는 연산(operation)으로 이뤄진 프로그램의 한 요소입니다. 여기서 연산을 객체지향에서는 메소드(method)라고 합니다. 이렇게 객체의 상태는 데이터에 의해 결정되고 동작은 메소드에 의해 결정되는 특징이 있는데 크게 이 3대 요소는 캡슐화, 상속, 다형성이 있습니다.
1. 캡슐화(encapsulation)
데이터와 알고리즘을 하나로 묶어 하나의 캡슐처럼 만듭니다. 따라서 데이터와 코드의 형태를 외부에서 알 수 없다는 특징이 있습니다.
2. 상속(ingeritance)
상속은 이미 작성된 클래스를 이어 받아서 새로운 클래스를 생성하는 기법으로 기존 코드를 재활용할 수 있습니다. 따라서 프로그램을 쉽게 확장할 수 있도록 해주는 수단이 됩니다.
3. 다형성(polymorphism)
하나의 방법(이름)으로 다양한 상황에 대처하는 기법입니다. 개념적으로 동일한 작업을 하는 함수들에 똑같은 이름을 부여할 수 있으므로 코드가 간결해집니다.
객체지향 프로그래밍은 절차지향의 단점을 해결하기 위해 탄생한 언어인 만큼 코드 재사용성이 좋고 유지보수가 쉬워 생산성을 향상할 수 있다는 장점이 있습니다. 또한 객체지향은 독립된 객체로 이뤄져 있어 생산적으로 작업할 수 있고 유지 보수가 간단하여 생산성이 향상될 수 있습니다. 단점으로는 절차지향언어에 비해 실행속도와 개발 속도가 느리고 코딩 난이도가 높은 편이라고 해요!
객체지향 프로그래밍 언어의 종류는 정말 다양한데요, 자바, C++, 파이썬, 루비, 오브젝티브-C 등 이 있습니다.