-목차-
1. 프로그래밍 언어 분류
2. C 언어 소개
3. Compiled Language vs Interpreted Language
4. C 언어 컴파일과 Python 언어 인터프리트 비교하기
5. Von Neumann Architecture
1. 프로그래밍 언어 분류
- 프로그래밍 언어 : 프로그램을 작성하기 위한 언어. 인간 친화성 수준에 따라 기계어, 어셈블리어, 고급언어로 분류
+) 기계어 명령어, ISA 다 같은 말로 보자..
● 고급언어 (High-Level Language)
ex) X=Y+Z
- 영어와 비슷한 구문으로 표현됨. 사람이 읽고 쓰기 쉽다.
- 기계어에 독립적이다. (ISA의 종류와 무관함)
- 고급언어를 컴파일링하면 기계어가 된다.
- C/C++, Python, JAVA 등이 고급언어의 예
- 대비 관점에서 어셈블리어나 기게어를 저급언어(Low-Level Language)라고도 한다.
● 어셈블리어 (Assembly Language)
ex) Load Y, ADD Z, STORE X
- 기계어 이진수 코드를 사람이 이해하기 쉬운 기호화 코드로 대치한 것
● 기계어 (Machine Language)
ex) 1010 0010 , 1100 0101, 1011 0110
- 이진수 코드로 CPU마다 고유의 기계어 (ISA)
- 보통 프로그래머들은 고급언어로 프로그램의 소스코드를 작성하고 컴파일 과정을 통해 기계가 해독 가능한 기계어 형식의 이진실행파일(운영체제를 이용해 적재 및 실행함)로 변환한다.
● 이식성 (Portability)
- 프로그램을 다른 기계/플랫폼에서 활용하기 위해 필요한 수정이나 변경의 수준
- 이식성이 높을수록 수정, 변경이 거의 없이 프로그램을 사용할 수 있다.
- 기계어로 작성된 프로그램은 CPU마다 다른 기계어(ISA)를 사용하기때문에 이식성이 매우 낮다.
- 고급언어로 작성된 프로그램은 소스코드를 컴파일하기만 되기때문에 이식성이 상대적으로 높다.
2. C 언어 소개
● C 언어의 특징
- 고급 언어의 특성(쉬움)과 저급 언어의 강점(빠르고 효율적)을 겸비
- 구조화 프로그래밍 지원 : 복잡한 문제를 잘 정의된 여러 함수로 처리 가능. 블록, 함수 등의 개념으로 소스코드 작성 용이.
- 이식성 : 이식성이 높음
- 효율성 : 적은 메모리를 이용해 빠르게 수행 가능한 프로그램 작성 가능
- 다양한 연산자 : 프로그램을 간결하고 쉽게 작성 가능
- 동적 메모리 관리 : 메모리 자원이 제한된 환경에서도 구동가능한 프로그램 작성 가능
3. Compiled Language vs Interpreted Language
- 컴파일 언어는 전체 소스 코드를 이진 기계어 코드로 번역하고 그걸 묶어 이진 실행 파일을 생성한다.
- 인터프리티드 언어는 소스코드를 한 문장씩 이진 기계어코드로 번역하고 그 결과를 바로 실행한다. 즉, 별도의 이진 실행 파일을 생성하지 않는다.
4. C 언어 컴파일과 Python 언어 인터프리트 비교하기
+) 컴퓨터 프로그램과 실행
- 컴퓨터 프로그램 : 명령어들과 데이터들 모음, 실행 파일 형태로 보조기억장치에 저장/설치됨
- 실행(Execution)과 적재(Loading)과정은 OS가 수행한다.
+) 프로그램과 프로세스의 차이
- 메모장 : 프로그램
- 메모장1, 메모장2와 같이 메모장 파일들 : 프로세스
+) Bit, Byte, Hexa
● 컴터에서 정보는 2진수로 표현
ex) 0100, 11010001
● Bit - Binary Digit
- 컴퓨터에서 정보를 표현하는 기본 단위
- 1 bit는 0 또는 1을 나타낼 수 있음
- n bits는 2^^n개의 경우의 수를 표현할 수 있음
● 1 Byte = 8 bits
- 알파벳 문자 표현을 위해 8 bits가 필요했던 것으로부터 유래
- 1 Byte는 256가지 경우의 수 표현 가능
● Hexa
- 16진수 체계
- 0,1,...9,A(10),B(11),C(12),D(13),E(14),F(15)
- 긴 2진수를 짧게 표현 가능, 하나의 숫자가 4 bits에 대응
- Hexa임을 표시하기 위해 앞에 Ox를 덧붙이는 경우가 많음
ex) 0010 1010 1100 -> Ox2AC
+) Memory Address
● Memory
- m bits를 저장할 수 있는 다수의 Memory Cell이 연속적으로 이어져 있는 것
- 대부분의 현대 컴퓨터는 m=8, 즉 Memory Cell이 1 Byte를 저장
● Memory Address의 필요성
- 연속된 Memory Cell 중 어떤 Cell에서 읽거나 쓸지를 표현할 수 있어야함
● Memory Address
- 컴퓨터에서는 주로 2진수 또는 Hexa로 표현
- Memory Address에 쓰이는 bits 수가 k라면 2^^k개의 Memory Cell 구별
- k 값은 전체 메모리 공간의 크기와 관련
ex) k = 32일 때, m = 8인 메모리 고안의크기는 4 GiBytes이다.
5. Von Neumann Architecture
'CS > C, C++' 카테고리의 다른 글
[C/C++] 02 - 2 자료형과 연산 기초 (0) | 2021.10.17 |
---|---|
[C/C++] 02 - 1 C 프로그램 구조와 변수, 표준 입출력 기초 (0) | 2021.10.17 |
[C/C++] 01-1 컴퓨터 시스템과 프로그램의 이해 (0) | 2021.10.17 |
[C/C++] 05-4 다양한 자료형과 자료 표현 - 연산자 (0) | 2021.10.03 |
[C/C++] 05-3 다양한 자료형과 자료 표현 - 문자열 (0) | 2021.10.02 |