10.1 개요 부 프로그램 일련의 행위나 계산을 추상화하는 기법으로 제공 실행과 분리해서 선언할 수 있는 블록 : 호출 요구 함수(Function) : 함수 이름으로 값을 반환 서브루틴(Subroutine), 프로시저(Procedure) : 매개변수로 값을 반환 각 프로시저는 단일 진입점을 가짐 Caller는 Callee의 실행 동안 중단됨 부 프로그램 종료 시, 제어는 호출자에게 되돌아감 10.2 매개변수 평가와 전달 기법 실 매개변수 호출 프로그램으로 전달하기 위해 사용된 식 또는 이름 형식 매개변수 부 프로그램이 실행될 때, 실 매개변수를 대신하여 사용하는 이름 일반적으로 지역 변수 역할 a. 참조 호출 (call by reference) 실 매개변수 값 대신 주소를 형식 매개변수에 보내는 방법 c..
분류 전체보기
9.1 정적 및 동적 기억 장소 배당 정적 기억 장소 할당 번역 시간에 할당 기억장소 크기와 위치가 정적으로 고정 배열 접근코드가 효율적 (크기가 고정되어 있기 때문에) 서브프로그램은 recursion을 수행할 수 없음 동적 기억 장소 할당 실행 시간에 할당 변수 제한 완화 (자료형, 크기 등) 인터프리터 언어.. c, c++ 같은건 정적 동적 다 함. static / auto 9.2 단위 프로그램 (module) 선언 가능 : 지역 식별자 도입 지역 변수 : 단위 프로그램에서 선언하여 사용하는 변수 (즉, 해당 모듈에 없는 변수는 non-local 혹은 global 변수이다) 활성화 상태 : 한 단위 프로그램의 실행 시작부터 종료까지 블록도 단위 프로그램에 속한다. 단위 활성화 (unit activat..
8.1 블록과 영역 영역 식별자의 효력을 나타낼 수 있는 영역 (용어정리) 프로그램 내에서 어떤 선언이 유효한 부분 수명 식별자(변수) 값을 보유할 메모리가 배정되어 있는 실행 시간 메모리 할당부터 해제까지의 시간 식별자 영역 제공의 간결한 방법 그냥 모든 식별자를 전 프로그램에서 사용 가능하게 함 (전역변수로) 하지만, 식별자 사용의 복잡화, 혼동, 프로그램 합성 시 문제점 발생 해결책 : 단위 프로그램의 식별자 사용 (localization 요구) 8.2 동적 영역과 정적 영역 지역변수 (local variable) : 현재 블록에서 선언된 변수, 형식 매개변수 비지역 변수 (non-local variable) : 현재 블록에서 사용되지만, 바깥 블록에서 선언된 변수 전역 변수 (global) : 모..
자료형 정의된 객체 집합 + 연산 (생성, 작성, 소멸, 수정, 분해) 7.1 자료형과 선언 변수, 자료형 선언 정적 자료형 검사 명세부를 구현부와 분리 -> 추상 자료형 프로그램 신뢰성, 판독성 증가 쟁점 사항 바인딩 시점 : 번역시간 or 실행시간 강자료형 : 연산이 수행되기 전에 명시적인 형 변환을 요구 (Ada 같은거) 7.x 단순형 열거형 : pascal이 진심 배열 : 보통은 행우선. / 포트란은 열우선 연상 배열 레코드 포인터 자료형 : 자바는 포인터 대신 클래스 인스턴스 참조 이명 : 다수의 포인터가 동일 객체 지시 garbage : 포인트되지 않은 객체 존재 허상 참조 : 빈 값(장소)을 가리키고 있는거 자료형 변환 축소변환은 무조건 명시를 해줘야한다. 자료형 동치 이름 동치 / 구조 동..
6.1 변수 (X := 3.141592) 이름 : X 속성 : 원주율, 실수 참조 : 값이 저장된 위치 (메모리 주소) 값 : 3.14159 6.2 바인딩 변수의 위 4가지 요소에 값을 확정하는 행위. 이름에 특정 속성을 연결 (추상화) 1. 실행 시간 (runtime) : 동적 바인딩 변수에 값 배정, 메모리 할당 2. 번역 시간 (translation time) : 정적 바인딩 변수, 자료구조, 레코드의 Data Type(자료형)을 확정 3. 언어 구현 시간 언어를 컴퓨터에서 구현할때 (컴파일러를 생성할때..?) 언어의 특징을 구현 int타입의 크기, 실수의 유효숫자 개수 등등을 구체적으로 딱 짓는게 아니라 시스템마다 다름 4. 언어 정의 시간 언어를 정의할때 확정하는 바인딩. 언어의 대부분의 구조가..
BNF 구문 형식을 정의하는 가장 보편적인 표기 ::= 정의 비단말 (nonterminal) : BNF 규율로 다시 정의될 대상을 의미한다. 단말 (terminal) : 키보드에서 입력할 수 있는 기호 EBNF BNF를 확장해서 보다 읽기 쉽고 간단하게 표현 메타기호 {} : 0번 이상 반복 {s}+ [] : 0번 또는 1번 선택 () : 범위중 택1 BNF ::= + | - | * | / EBNF ::= ( + | - | * | / ) ::= 같은거(메타기호)를 Terminal로 쓸때 : ‘’로 감싼다 ::= '::=' ::= {'|' } 구문 도표 오른쪽으로 가는게 produce 왼쪽으로 가는게 reduce 모호성 ::= - | \* 일 때, 3 - 2 * 5 의 경우 다른 파싱 트리를 두개 만들 수..
3.2 기본원칙효율성목적 코드의 효율성 : 번역기가 효율적인 실행 코드를 생성해야함 (컴파일된 파일)번역의 효율성 : 설계된 언어가 번역기에 의해 빠르게 번역될 수 있어야 함 (컴파일 과정)구현의 효율성 : 번역기 구현이 어렵거나 복잡하지 않음 (컴파일러 구현)프로그래밍 효율성 : 설계된 언어로 얼마나 쉽고 빠르게 작성 가능한지 (코드 구현)일반성특별한 경우를 피하고, 밀접하게 관련있는 여러 개념들을 일반적인 하나의 개념으로 통합해 얻는 성질→ 당연히 지원해야 하는 기능이 작동되어야 함 (범용적으로)대입연산자 : 대부분의 언어는 ‘=’ 인데, 파스칼에서는 ‘:=’로 사용매개변수 : Fortran에서는 callby Reference로만 전달 (일반성 x) / ADA는 다 됨 (일반성 ㅇ)일반성이 갖는 문제..
50s Fortran : 실행 효율성 중시 ALGOL 60, Cobol : 의 등장으로 효율성보다 일반적인 원칙 중시하게 됨 Fortran : 최초의 고급언어 COBOL : 미 국방성 ALGOL 60 : BNF 최초 사용 LISP : 일반적인 리스트 구조와 함수의 적용을 기본 원리로 채택 / AI 60s 복잡성 제어 필요성 인식 추상화 기법, 언어 규칙과 제한의 감소 필요성 PL/I ALGOL 68 : 디자인일관성 / 일반성, 직교성 (일찍) 추가 → 복잡성 감소 70s 간결성, 추상화 강조 / 신뢰성 증진 C : 얘도 간결성, 중급언어(기계접근성 강화), 성공요인(UNIX) Pascal : 간결성 CLU : 자료추상화 / 병행성 예외처리 처음으로 제안 (신뢰성 증진) ㅁㅊㄷㅁㅊㅇ 80s 함수형 언어, ..