📌 개요
🎯 학습 목표
┗ 프로그래밍 패러다임 정의 및 종류 파악, 프로그래밍 언어 패러다임 정의 및 종류 파악
🔑 학습 키워드
┗ 프로그래밍 패러다임
┗ 프로그래밍 언어 패러다임
┗ 명령형, 절차형, 함수형, 논리형, 객체지향 패러다임
💡 1. 프로그래밍 패러다임
[ "패러다임" 이란 무엇인가? ]
┗ 한 시대의 견해나 사고를 규정하는 양식, 규범, 체계 등을 통칭하는 말
┗ 토머스 쿤: 과학 분야의 발전에 따라 이전의 믿음과 체계가 흔들리고 새로운 체계로 대체되는 과정에 주목
┗ 패러다임 전환의 사례:
과학: 천동설 -> 지동설
경제: 저축이 미덕 -> 소비가 미덕
생활: "둘만 낳아 잘 기르자." -> "자녀에게 가장 좋은 선물은 동생입니다."
언어: '너무' 나쁘다. -> '너무' 좋다. ('너무'란 말의 의미가 바뀜)
┗ 프로그래밍 패러다임:
(1) 프로그램을 작성하는 전형적인 방식
(2) 특정 언어에 종속적인 것이 아닌 프로그래머가 추구하는 프로그램 작성 방식
[ 프로그래밍 패러다임의 변화 ]
┗ 주어진 데이터에 어떤 연산을 어떤 순서로 할지 결정하는 것이 중요
-> '명령형 프로그래밍 패러다임' 등장
┗ 복잡한 데이터 처리를 위해 데이터 처리 방식 자체를 잘 정리하는 것이 중요
-> '절차형 프로그래밍 패러다임' 등장
┗ 데이터가 저장된 메모리를 관리하는 것이 어려운 문제로 대두
-> '함수형 프로그래밍 패러다임' 등장
┗ 계산 절차를 문제의 조건을 명시하는 규칙으로 생각
-> '논리 프로그래밍 패러다임' 등장
'논리 프로그래밍 패러다임'은 선언적 프로그래밍 패러다임의 한 종류
┗ 같은 데이터에 대해 다른 처리 절차를 여러 개 명시해야 하는 경우가 흔하게 발생
-> '객체지향 프로그래밍 패러다임' 등장
[ 프로그래밍 패러다임 변화의 배경 ]
┗ 응용 도메인의 변화: 응용 도메인의 변화에 따라서 프로그램 패러다임 변화도 영향을 받음.
(1) 요구사항의 변화
(2) 계산 분야 -> 데이터베이스 관리, 인식 시스템, 임베디드 시스템 등 다양한 응용 분야
예: 시뮬레이션을 위해 객체지향 프로그래밍 등장
┗ 프로그램 구성 방식의 변화:
(1) 문제를 해결하기 위한 프로그램 구성 방식이 다양하게 변화됨
(2) 명령어의 나열 -> 존재하는 모듈의 조합
(3) 큰 문제를 풀기 위해 작은 문제를 풀 때 사용하던 모듈을 조합
┗ 계산 모델의 변화:
(1) 튜링기계 모델 -> 새로운 방식의 계산 모델
예: 재귀 함수론을 계산 모델로 삼은 함수형 프로그래밍 패러다임
예: 연역 추론을 계산 모델로 삼은 논리 프로그래밍 패러다임
💡 2. 프로그래밍 언어 패러다임
[ 프로그래밍 패러다임과 프로그래밍 언어 패러다임 ]
┗ 프로그래밍 패러다임: 프로그램을 작성하는 방식이나 스타일
┗ 프로그래밍 언어 패러다임: 해당 프로그래밍 언어가 지원하는 프로그래밍 패러다임
┗ 프로그래밍 언어가 특정 패러다임을 지원한다고 해도 그 패러다임으로만 프로그램을 작성해야 한다는 의미는 아니며, 해당 패러다임을 잘 지원한다는 뜻을 나타냄.
[ 주요 언어의 프로그래밍 패러다임 ]


[ 프로그래밍 패러다임의 양립성 ]
┗ 새로운 패러다임의 등장으로 이전에 있던 패러다임이 더욱 공고히 완성됨
예시: 절차형의 함수/프로시저 등장
-> 프로그램이 커지면서 관련된 명령들을 하나의 절차로 묶는 방식이 발전
-> '기존 명령형 프로그래밍을 절차로 묶어' 더 체계적으로 사용할 수 있게 된 것
┗ 다양한 프로그래밍 패러다임은 서로 양립할 수 있음
┗ 주류 프로그래밍 패러다임이 바뀜에 따라 이를 언어가 수용하는 형태로 변화
양립성 예시 언어: Python
-> 명령형 패러다임
-> 절차형 패러다임
-> 함수형 패러다임
-> 객체지향 패러다임
💡 3. 여러 패러다임의 프로그램 예
[ 명령형 프로그래밍 ]
- 프로그램을 일련의 명령어 나열로 간주
- '장점': 프로그램을 쉽게 이해할 수 있음
- '단점': 프로그램이 복잡한 경우 효과적으로 다루지 못함
[ 절차형 프로그래밍 ]
- 프로그램을 서브루틴이라는 절차 집합으로 구성하는 방법
- '장점': 재귀호출을 사용하여 프로시저를 간단하게 정의할 수 있음
[ 구조화 프로그래밍 ]
- goto 없이 프로그램을 작성하는 방법
- 블록과 서브루틴을 이용하며 구조화된 제어문을 사용해야 함
- 현재 우리가 사용하는 대부분의 언어는 블록 구조 언어
[ 객체지향 프로그래밍 ]
- 프로그램은 서로 통신할 수 있는 객체(object)의 집합
- 객체의 개념
- 상태를 유지하며 외부의 요청에 반응하는 데이터
- 상태는 '필드(멤버 변수)'로 나타내며, 반응은 '메소드(멤버 함수)'로 나타냄
- 상태는 외부에 숨기고 메소드는 외부에 공개함
- 객체지향 언어는 소프트웨어 재사용을 통해 빠른 개발을 지원함
[ 함수형 프로그래밍 ]
- 프로그램 수행이란 원하는 값을 구하는 것
- 원하는 값은 초깃값에 함수를 반복적으로 적용함으로써 구할 수 잇음
- 함수형 언어는 '함수 자체를 값'으로 취급할 수 있음
- 함수를 다룰 수 있는 함수를 '고걔함수'라고 함
- 데이터 리터럴을 나타낼 수 있는 것처럼 함수 리터럴도 나타낼 수 있음
- 최신 함수형 언어는 강력한 타입 및 타입 추론을 도입하여 프로그램 안정성을 꾀하고 있음.
[ 선언적 프로그래밍과 논리 언어 ]
- 프로그램은 논리식 집합으로 구성
- 논리식의 열거를 통한 선언적 프로그래밍 지원
- 논리식은 명제나 술어로 나타냄 -> 술어는 인수를 받을 수 있음
💡 4. 프로그래밍 언어와 프로그래밍 패러다임
[ 프로그래밍 패러다임의 특징 ]
┗ 객체지향 프로그래밍 패러다임:
- 객체 사이의 통신을 통해 계산을 표햔함
┗ 함수형 프로그래밍 패러다임:
- 함수의 적용을 통해 계산을 표현함
┗ 논리 프로그래밍 패러다임:
- 논리식의 진위를 증명하는 과정을 통해 계산을 표현함'방송통신대학교 > 📝프로그래밍 언어론' 카테고리의 다른 글
| [프로그래밍 언어론] 6강 - 프로그래밍 언어의 구현 (0) | 2026.09.02 |
|---|---|
| [프로그래밍 언어론] 5강 - 구문 분석 (0) | 2026.09.02 |
| [프로그래밍 언어론] 4강 - 구문론과 의미론 (0) | 2026.08.30 |
| [프로그래밍 언어론] 2강 - 프로그래밍 언어의 발전 및 동작 원리 (0) | 2026.08.21 |
| [프로그래밍 언어론] 1강 - 프로그래밍 언어 소개 (0) | 2026.08.21 |
