3-1공부/프로그래밍언어론

1장

KGW2027 2022. 4. 16. 15:51
728x90
반응형

프로그래밍 언어의 요소

 - 구문(Syntax)

 언어의 문법(Formal grammer)와 언어의 어휘(Voca)로 나뉜다.

 - 의미 분석(Semantics)

 각 문장이 어떤 뜻인지, 객체는 어떻게 메모리에 할당되는지 분석

 - 이름(Name)

 영역(Scope), 타입(Type), 생명주기(Lifespan), 가시성(Visibility)등에 묶인 것

 - 타입(Type)

 수, 문자, 불, 리스트, 트리 등 허용하는 연산 결정이고, 타입오류 감지에 사용된다.

 

 

프로그래밍 패러다임

 - 명령형

 - 객체지향 : 상속, 다형성, 메시지전달 등의 특징을 가짐. ( C#, JAVA 등 )

 - 함수형 : 함수 합성, 재귀 등의 특징을 가짐 ( Haskell, Lisp 등 )

 - 논리형 : 프로그램을 문제에 대한 제한식으로 표현한 집합. 비결정적임 ( Prolog )

 

 

설계 제약사항

 - 폰-노이만 구조를 지켜야함.

 - 기술적 환경이 자유롭고, 표준을 만들어야 함.

 - Legacy System ( 이전 버전에 대한 지원? )

 

 

성공적인 언어의 특징

 - 단순성가독성 : 명령문 개수의 소규모화, 구문구조의 단순함, 배우기 쉽고 작성하기도 쉬움.

 - 묶기의 명확성 : 어떤 개체와 성질을 결합하는 것 (변수와 변수의 타입, 변수와 변수의 값 등..)

  -> 조기 묶기는 컴파일 시간에 실행되고, 만기 묶기는 실행 시간에 실행된다.

 - 신뢰성 : 다른 플랫폼에서 실행해도 같은 결과를 보여주며, 타입 오류를 잘 감지하고 메모리 누수를 방지한다.

 - 지원성 : 쉽게 구해서 사용할 수 있는 컴파일러와 IDE가 있고, 양질의 교재, 지침서, 사용자 커뮤니티 등이 있다.

 - 추상화

 - 직교성 : 상호 독립된 소규모 기본 연산만으로 프로그램을 구축할 수 있음.

  -> 함수의 인수타입을 제한하는 등인데, 이로 인해 직교성과 효율성은 반비례하게 된다.

 - 구현의 효율성

 

 

컴파일러 와 인터프리터

 컴파일러(Compiler)

  - 컴파일 실행 과정 : 어휘분석 > 구분분석 > 타입검사 > 코드향상 > 코드 생성

  - 컴파일러는 기계코드를 만들어서 실행한다.

 

 인터프리터(Interpreter)

  - 인터프리터 실행 과정 : 어휘분석 > 구분분석 > 타입검사 > 인터프리터 > 컴퓨터

  - 인터프리터는 가상 기계의 명령을 실행한다.

 

 

Q. C언어에서의 while(*p++ = *q++) 는 무엇을 의미하는가?

 -> String copy(strcpy)

728x90
반응형

'3-1공부 > 프로그래밍언어론' 카테고리의 다른 글

기말1] 의미구조  (0) 2022.06.03
5장  (0) 2022.04.16
4장  (0) 2022.04.16
3장  (0) 2022.04.16
2장  (0) 2022.04.16