[프로그래밍 언어론] 3강 - 프로그래밍 언어 패러다임

2026. 8. 29. 20:27·방송통신대학교/📝프로그래밍 언어론

📌 개요

🎯 학습 목표

┗  프로그래밍 패러다임 정의 및 종류 파악, 프로그래밍 언어 패러다임 정의 및 종류 파악

 

🔑 학습 키워드

┗  프로그래밍 패러다임

┗  프로그래밍 언어 패러다임

┗  명령형, 절차형, 함수형, 논리형, 객체지향 패러다임

 

💡 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
'방송통신대학교/📝프로그래밍 언어론' 카테고리의 다른 글
  • [프로그래밍 언어론] 5강 - 구문 분석
  • [프로그래밍 언어론] 4강 - 구문론과 의미론
  • [프로그래밍 언어론] 2강 - 프로그래밍 언어의 발전 및 동작 원리
  • [프로그래밍 언어론] 1강 - 프로그래밍 언어 소개
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    오늘
    어제
    • 전체보기 (240)
      • 방송통신대학교 (94)
        • ⚙️컴퓨터의 이해 (11)
        • 💻컴퓨터과학 개론 (15)
        • 🔢자료구조 (14)
        • 🧬알고리즘 (10)
        • ⚙️운영체제 (14)
        • 📝프로그래밍 언어론 (7)
        • 🕸️이산수학 (11)
        • 🌍유비쿼터스 컴퓨팅 (11)
        • 🖥️컴퓨터과학과 (1)
      • 공부 (72)
        • 📚백엔드 공부 (6)
        • ☕Java (23)
        • 🌳Spring (13)
        • ⚙️C (12)
        • ⚡Python (15)
        • JavaScript (1)
        • 🛢️Database (0)
        • Algorithm Problem Solving (2)
      • 네트워크 (7)
        • 📜HTTP (7)
      • 스파르타코딩클럽 (64)
      • 정보 (2)
      • 정리가 필요한 글 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    spring
    자바
    그래프
    컴퓨터과학과
    이산수학
    방통대
    컴퓨터과학 개론
    알고리즘
    컴퓨터의 이해
    유비쿼터스
    운영체제
    배열
    Python
    방송대
    방송통신대학교
    함수
    파이썬
    C언어
    Java
    자료구조
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
junbin2
[프로그래밍 언어론] 3강 - 프로그래밍 언어 패러다임
상단으로

티스토리툴바