Machine Language (기계어)
Assembly Language (어셈블리어)
- 컴퓨터 프로세서를 다루기 위한 가장 기본적인 언어
- 오로지 CPU가 수행해야 할 직접적인 작업에 관한 내용만을 명령내릴 수 있다.
- 일반적으로 함수나 변수와 같은 편의를 위한 고차원적인 기능들은 가지고 있지 않다.
- Machine Language와 같은 구조나 명령어들을 갖고 있지만, 소프트웨어 개발자는 숫자가 아닌 이름을 이용해서 작업을 할 수 있다. (사람이 읽고 이해할 수 있는 방식으로 작업할 수 있다.)
- 단점은 컴퓨터가 수행하는 모든 작업을 세부적으로 명시해주어야 한다는 것이고, 장점은 소프트웨어 개발자가 컴퓨터의 모든 작업 실행에 대한 전권을 갖고 있다는 것이다.
- CPU의 내부 구조와 직접적으로 작동하기 때문에 low-level language라고도 한다. (기계어와 명령어가 1:1로 대응되는 단어들로 구성되어 있다.)
- high-level language(Python, Java, Javascript, Clojure 등)보다 컴파일, 실행 속도가 빠르다.
Interpreted Language & Compiled Language
- High-level Language는 크게 두 부류로 나눌 수 있다.
- [비유] 한국어(프로그래밍 언어)를 영어(기계어)로 번역(컴파일)할 때, 두가지 방법으로 가능하다.
- 1) 한국어로 쓴 편지를 가져가서 한 문장씩 읽으면서 동시에 번역해주기
- 2) 한국어로 쓴 편지를 모두 영어로 번역해서 작성하고 전달해주기
- 1) Interpreted Language
- 2) Compiled Language
CLI & GUI
- User Interface(UI): 사용자가 전자기기나 컴퓨터를 사용할때 어떻게 사용해야 하는지
- CLI: Command Line Interface
- 터미널이나 콘솔창을 통해 명령어를 입력하여 작업을 수행
- 장점 - 정확하고 섬세한 명령 가능, 메모리 소비 낮음, 속도 빠름
- 단점 - 작업 수행 난이도 높음 (명령어 대한 지식 필요, 오타 하나가 굉장히 큰 차이를 만들 수 있다, 명령어들이 보통 직관적이지 않다)
- GUI: Graphical User Interface
- 시각적인 그래픽이나 이미지 혹은 아이콘 등을 이용하여 작업을 수행
- 장점 - 작업 수행 난이도 낮음 (매우 직관적이고 러닝 커브도 높지 않음)
- 단점 - 세밀함이 떨어짐, 어떤 일련의 절차를 반복하거나 복사하기 힘듬, 메모리 소비 높음, 속도 느림
📕 참고 자료
https://book.vanillacoding.co/starter-kit/
https://www.javatpoint.com/what-is-machine-language
https://www.javatpoint.com/embedded-system-assembly-language