프로그래밍 언어론
programming-language
프로그래밍 언어론
프로그래밍 언어
- 명령형 언어(절차 언어)
- 함수형 언어(적용형 언어)
- 논리형 언어(선언적 언어)
- 객체 지향 언어
양면적 방법론
- 언어 구문론: 형식적 측면
- 언어 의미론: 의미 해석적인 측면
프로그래밍 언어의 설계
- 실행의 효율성
- 일반성
- 직교성
- 획일성
- 표현력
- 정확성
- 컴퓨터 독립성
- 안전성
- 일관성
- 확장성
- 부분성
프로그래밍 언어의 구문
- 어휘 구조는 어휘 토큰이다.
- 문맥 자유 문법(context-free grammar): 모든 생성 규칙에서 정의될 대상이 하나의 비단말 기호만으로 구성된 문법
구문 형식 정의
- BNF(Backus-Naur Form)
- EBNF(Extended BNF)
- 구문 도표(Syntax Diagram)
파스 트리
- BNF에 의해 어떤 표현이 생성될 수 있는지 확인하기 위해 작성하는 트리
- 단말 노드의 나열이 주어진 BNF로 생성 가능한 표현됨
- 유도를 트리 형태로 나타낸 것
모호한 문법: 한 가지 BNF 구문에 대해 두 개 이상의 파스트리가 나올 수 있는 상황이다.
- 제거하기 위해: 1) 비단말 기호와 문법 규칙을 추가, 2) 유결합 규칙이나 좌결합 규칙을 적용
신뢰성: 현수 else 를 제거하기 위한 추가적인 구문 구조가 필요하다.
구현 기법
- 컴파일 기법: 고급 언어로 작성된 원시 프로그램을 기계어로 번역하여 기계어 프로그램을 만들어 실행시키는 방법
- 인터프리트 기법: 고급 언어를 기계어로 하는 컴퓨터를 하드웨어로 구성하는 대신에 이 고급 언어 기계를 다른 기계에서 실행되는 실행 시뮬레이션하는 방법이다.
- 중간코드 실행 기법: 프로그램을 실행시키기 쉬운 형태로 번역, 변역된 형태의 프로그램을 실행 시뮬레이션으로 실행
변수
- 변수의 정의
- 선언문
- 묵시적 선언
바인딩
- 바인딩: 기본 단위가 선택할 수 있는 여러 가지 속성 중에서 일부를 선정하여 결정해주는 행위
- 동적 바인딩: 프로그램 실행 시간 중에 이루어짐
- 정적 바인딩: 번역 시간에 수행
선언과 할당
- 선언: 실행 시 사용될 자료의 속성을 컴파일러 등에게 알려주는 프로그램 문장
- 할당문: 변수의 내용을 변경할 수 있는 연산
- 상수: 값이 변경되지 않는 식별자를 사용할 때 공통적으로 기억하기 쉬운 이름을 부여해 사용
식과 제어문
- 표현식: 하나 이상의 피연산자를 가지고 자료값의 계산을 기술
- 조건문: 조건에 따라 실행되는 부분이 달라질 때 사용
- 반복문: 특정 영역의 명령문을 정해진 횟수만큼 반복 실행
자료형
- 자료형: 객체들의 집합과 이 객체들의 실체들을 생성, 작성, 소멸, 수정, 분해하는 연산들의 집합
- 단순형
- 수치형
- 논리형
- 문자형
- 열거형: 객체들을 리스트로 정하며, 순서 관계와 할당 연산
- 배열: 집합체에서 첫 원소의 상대적 위치인 첨자로 원소를 식별하는 동질형 자료의 집합체
- 배열이름, 원소의 형, 원소의 길이, 시작주소, 차원수, 첨자 상한 및 하한 정보
- 열우선
- 행우선
- 연상배열: 순서를 갖지 않는 데이터 원소의 집합체
- 레코드: 원소를 식별자로 구별하는 이질형 자료의 집합
- 포인터: 어떤 객체에 대한 참조를 의미
- 정적 형 검사: 컴파일 시간
- 동적 형 검사: 실행 시간
영역과 수명
- 블록: 내부 식별자 선언 후 새로운 프로그램 환경을 설정
- 변수 수명: 값을 저장하기 위해 기억장소를 할당받고 있는 기간
기억장소 할당
- 정적 기억장소 할당
- 정적 변수: 실행시간 전에 생성되어서 실행 시간 전체가 변수의 수명
- 동적 기억장소 할당
- 스택 기반: 블록 또는 부 프로그램이 활성화될 때 기억장소 할당
- 준정적 변수: 활성화 레코드의 차감거리가 번역 시간에 결정되더라도 실행시간의 단위 프로그램이 활성화되는 시점에서 바인딩
- 준동적 변수: 단위 프로그램이 활성화되는 시점에 지역 변수가 모두 생성, 지역변수가 요구하는 기억장소의 크기가 결정되는 변수
- 동적 변수: 활성화 레코드가 활성화되는 시점에서도 크기를 알 수 없는 변수
- 참조환경
- 단위 프로그램에서 선언된 지역변수
- 사용가능한 비지역변수
- 비지역 변수 참조 방법
- 정적 체인 사용 기법: 모든 호라성화 레코드에 정적 링크를 할당
- 디스플레이 사용 기법: 정적 체인 관계를 1차원 배열에 저장
매개변수 전달 기법
- 형식 매개변수: 서브메소드가 실행되는 동안 호출자가 보내준 식 또는 다른 이름을 대신 사용하는 이름
- 실 매개변수: 원래의 식 또는 이름
- 참조 호출: 매개변수의 주소를 대응되는 형식 매개변수에 보냄
- 값 호출: 형식 매개변수에 해당되는 기억장소를 별도로 유지, 실 매개변수에 해당되는 주소를 보내면 r-value를 구해 형식 매개변수의 기억장소에 복사하여 사용
- 이름 호출: 형식 매개변수의 이름이 사용될 때마다 대응되는 실 매개변수가 사용된 것처럼 간주
- 부작용: 지역 변수 외의 변수값을 변화시킴
- 별명: 동일한 기억장소를 함께 사용하고 있는 다른 이름
- 중복 정의: 한 개체가 두 가지 이상의 개념으로 사용됨
추상 자료형
- 추상화: 자신의 속성들의 일부만 가지고 작업 또는 객체를 필요한 정도로 묘사
- 자료 추상화: 자료형의 표현과 그에 관련된 연산들을 함께 묶어 캡슐화
- 캡슐화: 부적당한 사용으로부터 자료형을 보호
참조
- 프로그래밍언어론 by. 우균, 김진욱