# 프로그래밍 언어
: 프로그램을 만들때 사용하는 언어
# 프로그래밍 언어의 종류
1. 저급언어(Low-Level Programming Language): 컴퓨터가 직접 이해하고 실행할 수 있는 언어
▸저급언어의 종류
- 기계어 (Machine language) : 0과 1의 명령어 (비트로 이루어진 언어), 16진수로도 표현
# 이진수로 표현된 기계어
01111111 01000101..
# 16진수로 표현된 기계어
8000 00b0 0040 ....
- 어셈블리어(Assembly language): 기계어를 읽기 편한 형태로 번역한 언어
# 어셈블리어 예시
push rbp
mov rbp, rsp
2. 고급언어(High-Level Programming Language): 사람이 이해하고 작성하기 쉽게 만들어진 언어
▸ 종류
- 컴파일 언어 (complie language) / 대표적 언어: C, Java
: 작성된 소스코드 전체를 컴파일러를 통해 컴파일을 수행하여 목적코드를 생성
→ 컴파일 중 소스코드 내 오류가 하나라도 발견 시, 컴파일 실패됨.
- 인터프리터 언어 (interpreter language) / 대표적 언어: Python
: 작성된 소스코드를 한줄 한줄 차례대로 인터프리터를 통해 컴파일을 수행하여 목적코드를 생성
→ N번째 소스코드 내 오류가 발생 시 오류가 발생한 소스코드 이전까지 올바르게 수행됨.
▸ 고급언어 이점
1) 사람이 읽고 쓰기 편함
2) 가독성
3) 편리한 문법
※ 위 내용과 같이 하나의 프로그래밍 언어가 반드시 둘 중 '하나의 방식'만으로 작동하는 것은 아니다.
: 컴파일이 가능한 언어라 해서 인터프리트가 불가능하거나, 인터프리터 언어라해서 컴파일이 불가능하지 않다.
→ 고급언어가 저급언어로 변환되는 대표적인 방법에 컴파일 방식과 인터프리터 방식이 있다라는 것에 집중
◈ 그렇다면 목적코드를 생성하면 실행이 가능할까?
→ 목적 파일이 실행되기 위해서는 링킹(Linking) 작업이 필요하다.
* 목적파일(Object File) : 목적코드로 이루어진 파일
Q: 왜 링킹작업을 거쳐야 하는가?
A: 프로그램 안에는 다른 파일이나 라이브러리(미리 작성된 코드)를 참조하는 부분이 있기 때문
* 링킹(Linking) 과정(프로그램의 "마지막 조립 과정")
: 링킹은 여러 오브젝트 파일과 외부 라이브러리를 합치는 작업 (외부에 있는 함수나 코드를 정확히 찾아 연결함)
- 프로그램 안의 함수 호출(예: printf() 같은 표준 함수)이 실제로 어디에 있는지 찾아 연결
- 필요한 코드 조각들을 모두 모아 실행 가능한 하나의 파일로 생성
* 부가 설명 (비유: 레고 조립)
- 목적 파일은 레고로 비유하자면 "개별 블록"으로 생각하자.
- 여기서 링킹(Linking) 작업은 각 개별 블록들을 모아 "완성된 작품"을 만드는 과정으로 이해하자.
- 이렇게 조립해 완성된 작품이 바로 실행 파일이고, 이제 프로그램을 실행(동작)할 준비가 된 상태이다.
'CS(Computer Science knowledge) > 프로그래밍 언어론' 카테고리의 다른 글
프로그래밍 언어 (0) | 2024.12.03 |
---|