728x90
반응형
- 패러다임
- 한 시대의 견해나 사고를 규정하는 양식, 규범, 체계 등을 통칭하는 말
- 토머스 쿤은 과학 분야의 발전에 따라 이전의 믿음과 체계가 흔들리고 새로운 체계로 대체되는 과정에 주목 => 패러다임 전환 (예. 천동설 → 지동설, 저축이 미덕 → 소비가 미덕)
1. 프로그래밍 패러다임
- 프로그래밍 패러다임
- 프로그램을 작성하는 전형적인 방식
- 특정 언어에 종속적인 것이 아닌 프로그래머가 추구하는 프로그램 작성 방식
✅ 프로그래밍 패러다임의 변화(1)
- 명령형 프로그래밍 패러다임
- 등장 배경: 주어진 데이터에 어떤 연산을 어떤 순서로 할지 결정하는 것이 중요
- 절차형 프로그래밍 패러다임
- 등장 배경: 복잡한 데이터 처리를 위해 데이터 처리 방식 자체를 잘 정리하는 것이 중요
- 같은 일들을 모아놓고 그 절차들을 가져다 쓰는
- 함수형 프로그래밍 패러다임(값을 중심으로)
- 등장 배경: 데이터가 저장된 메모리를 관리하는 것이 어려운 문제로 대두
- 논리 프로그래밍 패러다임 등장(선언적 프로그래밍 패러다임의 한 종류)
- 등장 배경: 계산 절차를 문제의 조건을 명시하는 규칙으로 생각
- 객체지향 프로그래밍 패러다임(객체를 중심으로)
- 등장 배경: 같은 데이터에 대해 다른 처리 절차를 여러 개 명시해야하는 경우가 흔히 발생
- 객체들을 미리 다 만들어놓고 필요할 때마다 그 객체들을 불러서 사용하는
✔️ 프로그래밍 패러다임 변화의 배경
- 응용 도메인의 변화: 계산 분야 → 다양한 응용 분야 (=요구사항의 변화)
- 프로그램 구성 방식의 변화: 명령어 나열 → 존재하는 모듈의 조합
- 계산 모델의 변화: 튜링기계 모델 → 새로운 방식의 계산 모델
2. 프로그래밍 언어 패러다임
프로그래밍 패러다임 | 프로그래밍 언어 패러다임 |
- 프로그램을 작성하는 방식이나 스타일 | - 해당 프로그래밍 언어가 지원하는 프로그래밍 패러다임 - 일반적으로 프로그래밍 언어는 여러 프로그래밍 패러다임을 지원 |
✅ 주요 언어의 프로그래밍 패러다임
✔️ 프로그래밍 패러다임의 양립성
- 다양한 프로그래밍 패러다임은 서로 양립할 수 있음
- 새로운 패러다임의 등장으로 기존의 패러다임을 버리는게 아니라 이를 더욱 공고히 완성
- 주류 프로그래밍 패러다임이 바뀜에 따라 이를 언어가 수용하는 형태로 변화
- 예) Python: 명령형 패러다임, 절차형 패러다임 기존 지원 → 함수형 패러다임, 객체지향 패러다임을 추가 포함
3. 여러 패러다임의 프로그램 예
- 명령형 프로그래밍
- 프로그램: 일련의 명령어 나열
- 장점: 프로그램을 쉽게 이해할 수 있음
- 단점: 프로그램이 복잡한 경우 효과적으로 다루지 못함
- 유클리드 알고리즘을 이용한 최대 공약수 계산 프로그램 (BASIC 구현)
- 절차형 프로그래밍
- 프로그램: 서브루틴이라는 절차의 집합
- 장점: 재귀호출(자기가 자기 자신을 호출)을 사용하여 프로시저를 간단하게 정의
- 유클리드 알고리즘을 이용한 최대 공약수 계산 프로그램 (Algol구현)
- 구조화 프로그래밍
- goto없이 프로그램을 작성하는 방법
- => goto의 경우 해당 라인으로 가서 작업을 수행하다가 끝나면 되돌아오는게 아니라 거기서 끝남. 이에 반해 구조화 프로그래밍은 블록, 서브루틴을 각각 하나의 덩어리라고 생각함. 그래서 이 덩어리를 불러서 사용할 경우 해당 작업이 끝나면 되돌아 감.
- 블록과 서브루틴을 이용
- 구조화된 제어문(=중첩된 제어문)을 이용
- 유클리드 알고리즘을 이용한 최대 공약수 계산 프로그램 (Algol구현)
- goto없이 프로그램을 작성하는 방법
- 객체지향 프로그래밍
- 프로그램: 서로 통신할 수 있는 객체(object)의 집합
- GUI 개발에 큰 획(Smalltalk)
- 프로그램 재사용 편의로 S/W 생산성에 큰 기여
- 객체의 개념
- 상태를 유지하며 외부의 요청에 반응하는 데이터
- 상태 - 필드(멤버 변수), 반응 - 메소드(멤버 함수)
- 상태는 외부에 숨기고 메소드는 외부에 공개
- 유클리드 알고리즘을 이용한 최대 공약수 계산 프로그램 (Smalltalk 구현)
- 함수형 프로그래밍
- 데이터는 값으로, 명령어는 함수로 취급
- 명령어가 데이터를 바꿀 수 없음(A라는 값을 B라는 다른 값으로 상태를 바꿔버림(별개의 값)
- 대입문과 반복문 없음
- 함수 자체도 값으로 취급 가능
- 유클리드 알고리즘을 이용한 최대 공약수 계산 프로그램 (Haskell 구현)
- 선언적 프로그래밍과 논리 언어
- 프로그램: 논리식 집합
- 논리식은 명제나 술어로 나타냄. 술어는 인수를 받을 수 있음
- 유클리드 알고리즘을 이용한 최대 공약수 계산 프로그램 (Prolog 구현)
4. 프로그래밍 언어와 프로그래밍 패러다임
- 객체지향 패러다임: 객체 사이의 통신을 통해 계산을 표현
- 함수형 패러다임: 함수의 적용을 통해 계산을 표현
- 논리 패러다임: 논리식의 진위를 증명하는 과정을 통해 계산을 표현
728x90
반응형
'KNOU > 프로그래밍언어론' 카테고리의 다른 글
[프로그래밍언어론] 6. 프로그래밍 언어의 구현 (1) | 2022.09.26 |
---|---|
[프로그래밍 언어론] 5. 구문 분석 (1) | 2022.09.20 |
[프로그래밍 언어론] 4. 구문론과 의미론 (0) | 2022.09.05 |
[프로그래밍 언어론] 2. 프로그래밍 언어의 발전 및 동작 원리 (1) | 2022.08.31 |
[프로그래밍 언어론] 1. 프로그래밍 언어 소개 (0) | 2022.08.26 |