티스토리 뷰
프로그래밍 패러다임
패러다임이란?
- 한 시대의 견해나 사고를 규정하는 양식, 규범, 체계 등을 통칭하는 말
이전의 믿음과 체계가 흔들리고 새로운 체계로 대체되는 과정에 주목
예) 천동설 → 지동설
프로그래밍 패러다임
프로그램을 작성하는 전형적인 방식.
특정 언어에 종속적인 것이 아닌 프로그래머가 추구하는 프로그램 작성 방식
프로그래밍 패러다임의 변화
1. 명령형 프로그래밍 : 주어진 데이터에 어떤 연산을 어떤 순서로 할지 결정하는 것이 중요.
2. 절차형 프로그래밍 : 복잡한 데이터 처리를 위해 데이터 처리 방식 자체를 잘 정리하는 것이 중요.
3. 함수형 프로그래밍 : 데이터가 저장된 메모리(값)를 관리하는 것이 어려운 문제로 대두
4. 논리 프로그래밍 : 계산 절차를 문제의 조건을 명시하는 규칙으로 생각
5. 객체지향 프로그래밍 : 같은 데이터에 때해 다른 처리 절차를 여러 개 명시해야 하는 경우가 흔히 발생
프로그래밍 패러다음 변화의 배경
1. 응용 도메인의 변화 : 요구사항의 변화. 계산 분야 → 다양한 응용 분야
2. 프로그램 구성 방식의 변화 : 명령어 나열 → 존재하는 모듈의 조합
3. 계산 모델의 변화 : 튜링기계 모델 → 새로운 방식의 계산 모델
프로그래밍 언어 패러다임
프로그래밍 패러다임 : 프로그램을 작성하는 방식이나 스타일
프로그래밍 언어 패러다임
- 프로그래밍 언어가 지원하는 프로그래밍 패러다음
- 일반적으로 프로그래밍 언어는 여러 프로그래밍 패러다음을 지원
프로그래밍 패러다임의 양립성
- 다양한 프로그래밍 패러다임은 서로 양립할 수 있다.
- 새로운 패러다임의 등장으로 이전에 있던 패러다임이 더욱 완성된다.
- 주류 프로그래밍 패러다임이 바뀜에 따라 이를 언어가 수용하는 형태로 변화한다.
여러 패러다임의 프로그램 예
명령형
일련의 명령어 나열
10 HOME
20 INPUT "ENTER A: ";A : INPUT "ENTER B:";B
30 IF A < B THEN C = A : A = B : B = C
...
END
절차형
서브루틴이라는 절차의 집합
PROC gcd = (INT a, b) INT: (
IF b = 0 THEN
a
ELSE
gcd(b, a MOD b)
FI
);
main:(
INT a = 126, b = 312;
printf(($x"The gcd of "g" and "g" is "gl$,a,b,gcd(a,b)))
)
구조화 프로그래밍
- goto없이 프로그램을 작성하는 방법.
- 블록과 서브루틴을 이용.
- 구조화된 제어문을 이용.
#include <stdio.h>
int main() {
int a, b, c;
printf("Enter a and b: ");
scanf("%d %d", &a, &b);
do {
c = a % b;
a = b;
b = c;
} while (b > 0);
printf("gcd: %d\n", a);
return 0;
}
객체지향형
서로 통신할 수 있는 책체의 집합
igcd := [ :a :b |
| u v|
u :== a. v := b.
[ v > 0 ]
whileTrue: [ |t|
t := u.
u := v.
v := t rem: v
].
u abs
].
(igcd value: 126 value: 312) printN1.
함수형
- 데이터는 값으로, 명령어는 함수로 취급.
- 명령어가 기존 데이터를 바꿀 수 없고 다른 새로운 데이터를 만들어냄.
- 대입문과 반복문 없음
- 함수 자체도 값으로 취급
module Main (main) where
main :: IO ()
main = putStrLn (show (igcd 126 312)
igcd a 0 = bas a
igcd a b = igcd (abs b) (a `mod` (abs b ))
선언적 프로그래밍과 논리 언어
논리식(명제나 술어) 집합
puppy(happy).
safe(happy).
pet(x) :- puppy(x), safe(x).
'방송대 > 프로그래밍언어론' 카테고리의 다른 글
프로그래밍 언어의 구현 (0) | 2022.09.24 |
---|---|
구문분석 (0) | 2022.09.24 |
구문론과 의미론 (0) | 2022.09.07 |
2장 프로그래밍 언어의 발전 및 동작원리 (0) | 2022.08.25 |
1장 프로그래밍 언어 소개 (0) | 2022.08.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- flyway
- CloudFront
- kubernetes
- 쿠버네티스
- HMAC
- cka
- cloudflare
- VPC
- Auto Scaling
- eks
- S3
- 전략패턴
- Traefik
- grafana
- k8s
- jaeger
- liquibase
- IAM
- DB형상관리
- 달러구트 꿈 백화점
- minikube
- 프로덕션
- Prometheus
- 드래곤라자
- AWS
- istio
- production
- Constant
- kiali
- golang
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함