UPL Ch.4

chezze·2023년 4월 20일
0
post-thumbnail

Programming Languages

programming language 는 프로그램을 작성하기 위한 언어를 말한다.
programming language는 컴퓨터와 소통하기 위한 일종의 protocol 이라고 할 수 있다.

Classification of programming languages

프로그래밍 언어는 크게 다음 3가지로 나눌 수 있다.

  • Machine Languages
    1세대 언어라고도 하며, 컴퓨터가 읽을 수 있는 0과 1로 구성되어 있다.
    컴퓨터와 가까운 언어로, 사람이 읽거나 작성하기는 어렵다.

  • Assembly Languages
    2세대 언어라고도 하며, Machine Language와 1대1 대응된다.
    문자열 형태의 명령어로 이루어져 있어 사람이 읽을 수 있으며, 기계가 바로 읽을 수 없다.
    Assembler을 통해 Machine Language으로 변환할 수 있다.

  • High-level programming languages
    3세대 언어라고도 하며, 사람이 읽거나 작성하기 쉬운 형태를 가지고 있다.
    하드웨어를 추상화하여 하드웨어에 대한 이해 없이도 사용할 수 있다.
    여러 종류의 언어가 존재하고, 각각의 언어마다 서로 다른 구문 구조, 의미, 특성을 가진다.

Compilation / Interpretation

컴퓨터는 프로그래밍 언어를 있는 그대로 이해할 수 없기 때문에,
번역기나 해석기를 활용하여 프로그램을 실행한다.

Compilation

Compilation은 프로그래밍 언어로 작성된 소스 코드를 다른 언어로 번역하는 과정으로,
소스 코드를 읽어서 ML 혹은 VML로 변환한다.

이렇게 변환된 Machine Code는 CPU에서 직접 실행되기 때문에,
일반적으로 컴파일된 프로그램의 실행 속도가 빠르다.

Compiled langauge는 주로 static-typed language(정적 타입 언어)이다.

예시) C/C++, Java, Ocaml, Scala, ...etc

Interpretation

Interpretation은 소스 코드를 직접 실행하는 것으로,
프로그램을 실행하기 전 별도의 컴파일 과정 없이 소스 코드를 바로 실행한다.

인터프리터는 소스 코드를 한 줄씩 읽어서 해당 코드를 실행하며, 이를 반복하면서 프로그램을 실행한다.

일반적으로, 인터프리터를 사용하여 개발된 프로그램은 실행 속도가 느리지만 개발 속도가 빠르며,
코드 수정이 용이하다는 특징이 있다.

Interpreted languaged에는 주로 dynamic-typed language(동적 타입 언어)이다.

예시) Python, JavaScript engine, Shell script, ...etc

Components of programming languages

프로그래밍 언어는 구문 구조 (syntax)의미 (semantics) 로 구성된다.

Syntax

Syntax 는 문법적으로 올바른 문장을 작성하기 위한 규칙의 집합이다.
즉, 프로그래밍 언어에서 허용되는 단어나 구문을 정의한 것을 Syntax라고 한다.

example) "문장을 종결하기 위해 세미콜론(;)을 사용해야 한다"는 syntax이다.

semantics

semantics 는 문법적으로 올바른 문장의 의미를 결정하는 규칙의 집합이다.

example) "c = a + b; 라는 문장에서 '+' 기호는 덧셈을 의미한다"는 semantics이다.

Unspecified Behaviors

syntax 와 semantics에 대한 규칙이 모호하게 정의되어 있거나 특정 상황에서 언어의 동작이 명확히 정의되지 않으면, Unspecified Behaviors가 발생할 수 있다.

Unspecified Behaviors에 돌입하게 되면 error에 준하는 문제가 발생한다.

profile
주니어 컴공학부생🌱

0개의 댓글