1. 프로그래밍 언어란 무엇인가?
- 컴퓨터와 의사소통하기 위한표기법
- 기계가 읽을 수 있고 사람이 읽을 수 있는 형태로 계산을 서술하기 위한 표기체제
- 어셈블리어 언어: symbol 사용 → 기계 종속적/ 저급 수준의 추상화
2. 프로그래밍 언어를 배워야하는 이유
→ 프로그래밍 언어 고찰
- 언어 특징들에 대한 기본 개념
- 특징들의 구현과 이때 발생하는 문제점
- 특징들의 설계에 대한 기본 개념
- 실제 언어의 도입 예: 비교 분석
▷ 프로그래밍 언어를 고찰함으로써 얻는 장점
1) 사용하고 있는 언어의 이해와 효율적인 알고리즘 작성 → 유용한 프로그래밍 구사 능력
2) 프로그래밍 언어 선택 능력, 새로운 프로그래밍 언어의 학습 능력/ 언어 설계 능력
3. 프로그래밍 언어에서의 추상화
▶ 추상화 (abstraction)
-
주어진 작업이나 객체를 속성들의 일부분을 가지고 필요한 만큼 묘사할 수 있는 방법을 지원하는 것
-
필수적인 속성만으로 주어진 것을 묘사하므로 나머리 속성들은 추상화, 은닉 또는 삭제 됨
-
추상화 범주
- 자료 추상화: 계산될 자료의 특성을 추상화
- 제어 추상화 (알고리즘 추상화)
- 실행 순서를 제어하는 특성을 추상화
- 제어 추상화의 예: 반복문, 조건문, 프로시저 호출 등
▷ 추상화에 포함된 정보의 양에 따른 분류
- 기본 추상화: 가장 지역적인 정보
- 구조 추상화: 보다 전역적인 정보인 프로그램의 구조
- 단위 추상화: 단위 프로그램 전체
▷ 자료 추상화
- 기본 추상화: 컴퓨터 내부 자료 표현 → 추상화
- 구조 추상화: 관련된 자료의 집합을 추상화
- ex) 배열, 렌코드 (구조형 자료)
- 구조형에 새 이름 부여 기능 (새 차원의 추상화)
- 단위 추상화: 자료의 생성과 사용에 대한 정보를 한 장소에 모아두고, 자료의 세부 사항에 대한 접근을 제한하는 도구
- 자료형의 구조 변경이 프로그램 전체에 영향을 주지 않으며, 자료 구조의 세부사항을 무시함
▷ 제어 추상화
* 추상화란? readablilty 증가 목적
4. 계산 전형
1) 명령형 언어 (절차적 언어)
- 특징:
- 문제점:
- 폰 노이만 병목 현상 발생 (순차 실행)
- 많은 자료의 동시 계산. 비결정적 계산, 순서에 의존하지 않는 계산 등에 비효율적
→ 비절차적 언어: 함수형 언어, 논리형 언어
2) 함수형 언어 (적응형 언어): 함수 평가와 함수 적용을 기본으로 함
- 특징: 함수의 평가 및 호출 방법을 제공
- 함수의 평가 및 호출 방법을 제공
- 함수 배정문이 없음
- 반복 연산은 재귀적 함수 이론에 의해 기술됨
3) 논리형 언어 (선언적 언어)
- 특징
- 기호 논리학에 근거
- 계산의 실행 순서(how)대신 무엇을 하려고 하는가(what)를 선언
- 반복이나 선택 개념 불필요
4) 객체 지향 언어
- 특징
- 객체에 기반을 둔 언어
- 객체는 클래스로 그룹화
5. 언어 정의
- 언어의 정확한 형식 정의가 필요한 이유?
- 언어의 구조와 의미의 정확한 기술 없이는 프로그래밍이 불가능함
- 모호함 없는 언어 구현
- 프로그래밍 과정에서 프로그램이 어떻게 동작할 것인가에 대한 문제 발생 시 유용함
- 프로그램 설계 과정을 규격화하는 방법
- 언어 정의의 범주: 구문 정의와 의미 정dml
1) 구문 정의: 언어 구문에 대한 정의는 형식화가 많이 되어있음
- 대부분의 언어가 문맥 자유 분법을 만족하며 BNF로 정의
2) 의미 정의: 의미는 프로그램 실행 시 어떤 일이 발생하는가를 기술