우리는 주로 소프트웨어 개발을 할때 프로그래밍 언어를 주로 "사용" 해왔다.
그렇다면 프로그래밍 언어를 "만드는" 것은 어떤가?
프로그래밍 언어론은 좋은 프로그래밍 언어를 설계하는 방법과 프로그래밍 언어 개발을 위한 기반을 구축하는 방법을 다룬다.
많은 프로그래밍 언어는 유사한 패러다임을 따르는 유사한 개념을 다르게 구현한다.
예를 들어 "정렬 프로그램"을 생각해 보자.
다양한 언어는 각각의 다양한 알고리즘을 구현을 통해 정렬 프로그램을 작성할 수 있다.
각각의 프로그램은 뭔가를 나름대로 순서대로 정리할 것이다.
이번 강좌를 통해
- 프로그래밍 언어의 설계 원리와 개념
- 프로그래밍 언어의 설계와 구현 방법
- 다양한 그로그래밍 언어 패러다임
- 프로그래밍 언어의 종류
등에 대하여 공부한다.
PL(Programming Language) 개념과 패러다임
PL 개념: 개별 기능에 가깝다.
- 데이터 유형(data types)
- 제어 흐름(control flow)
- 표현식(expression)
- 명령문(statements)
- 변수(variables)
- 함수(functions)
PL 패러다임: PL이 따르는 원칙과 전략이다.
- 절차적(Procedural)
- 명령형(Imperative)
- 객체 지향(Object oriented)
- 함수적(Functional)
- 논리(Logic)
PL은 공통 개념과 패러다임을 공유한다.
예를 들어 "두 변수를 비교하여 뺀 값을 반환하는 함수"를 여러 언어로 표현할 수 있다.
C/C++ int compare(int x, int y) { return x - y; } |
Java public int compare(int x, int y) { return x - y; } |
Python def compare(x, y): return x - y |
Javascript function compare(x, y) { return x - y; } |
Scheme (define compare (lamda (x y) (- x y))) |
Clojure (defn compare [x y] (- x y)) ;; |
각 언어로 표현한 함수를 살펴보면
- C/C++과 Java
- Python과 Javascript
- Scheme와 Clojure
간에 표현이 공유되었다는 것을 알아볼 수 있다.
'프로그래밍언어론' 카테고리의 다른 글
[프로그래밍언어론] 6. 컴파일러와 인터프리터 (0) | 2023.09.11 |
---|---|
[프로그래밍언어론] 5. 프로그래밍 언어 설계 (0) | 2023.09.11 |
[프로그래밍언어론] 4. 튜링 머신, 튜링 완전성 (0) | 2023.09.11 |
[프로그래밍언어론] 3. PL의 관점에서 본 컴퓨터 (0) | 2023.09.11 |
[프로그래밍언어론] 2. 통합개발환경(IDE), VSCode (0) | 2023.09.05 |
우리는 주로 소프트웨어 개발을 할때 프로그래밍 언어를 주로 "사용" 해왔다.
그렇다면 프로그래밍 언어를 "만드는" 것은 어떤가?
프로그래밍 언어론은 좋은 프로그래밍 언어를 설계하는 방법과 프로그래밍 언어 개발을 위한 기반을 구축하는 방법을 다룬다.
많은 프로그래밍 언어는 유사한 패러다임을 따르는 유사한 개념을 다르게 구현한다.
예를 들어 "정렬 프로그램"을 생각해 보자.
다양한 언어는 각각의 다양한 알고리즘을 구현을 통해 정렬 프로그램을 작성할 수 있다.
각각의 프로그램은 뭔가를 나름대로 순서대로 정리할 것이다.
이번 강좌를 통해
- 프로그래밍 언어의 설계 원리와 개념
- 프로그래밍 언어의 설계와 구현 방법
- 다양한 그로그래밍 언어 패러다임
- 프로그래밍 언어의 종류
등에 대하여 공부한다.
PL(Programming Language) 개념과 패러다임
PL 개념: 개별 기능에 가깝다.
- 데이터 유형(data types)
- 제어 흐름(control flow)
- 표현식(expression)
- 명령문(statements)
- 변수(variables)
- 함수(functions)
PL 패러다임: PL이 따르는 원칙과 전략이다.
- 절차적(Procedural)
- 명령형(Imperative)
- 객체 지향(Object oriented)
- 함수적(Functional)
- 논리(Logic)
PL은 공통 개념과 패러다임을 공유한다.
예를 들어 "두 변수를 비교하여 뺀 값을 반환하는 함수"를 여러 언어로 표현할 수 있다.
C/C++ int compare(int x, int y) { return x - y; } |
Java public int compare(int x, int y) { return x - y; } |
Python def compare(x, y): return x - y |
Javascript function compare(x, y) { return x - y; } |
Scheme (define compare (lamda (x y) (- x y))) |
Clojure (defn compare [x y] (- x y)) ;; |
각 언어로 표현한 함수를 살펴보면
- C/C++과 Java
- Python과 Javascript
- Scheme와 Clojure
간에 표현이 공유되었다는 것을 알아볼 수 있다.
'프로그래밍언어론' 카테고리의 다른 글
[프로그래밍언어론] 6. 컴파일러와 인터프리터 (0) | 2023.09.11 |
---|---|
[프로그래밍언어론] 5. 프로그래밍 언어 설계 (0) | 2023.09.11 |
[프로그래밍언어론] 4. 튜링 머신, 튜링 완전성 (0) | 2023.09.11 |
[프로그래밍언어론] 3. PL의 관점에서 본 컴퓨터 (0) | 2023.09.11 |
[프로그래밍언어론] 2. 통합개발환경(IDE), VSCode (0) | 2023.09.05 |