어셈블러 언어 | 컴파일러 언어 | 인터프리터 언어 |
---|
어셈블리어 | C | JavaScript |
| C++ | Lisp |
| C#(Byte Code) | PHP |
| Visual Basic | PostScript |
| F#(Byte Code) | Python |
| Go | Ruby |
| Java(Byte Code) | Unix Shell |
| Scala | VBScript |
| Kotlin | R |
| Lisp | HTML |
| Python(Byte Code-CPython) | Java |
| Delphi | |
| Objective C | |
| PL/I | |
| Rust | |
| Swift | |
✅ 어셈블러(Assembler)
어셈블리어로 작성된 어셈블리어 소스 코드를 기계어로 변환(변역)해주는 프로그램입니다.
✅ 어셈블리어
- 하드웨어와 소프트웨어의 가장 밑 부분에 있는 저급 언어(Low Language)
- 기계와 1:1로 대화하는 언어 => binary로 소통이 힘들기 때문에 어셈블리어를 이용
- 해킹, 운영체제, 임베디드에서 사용
- 속도가 매우 빠름
- 기계어와 매우 유사한 언어
장점
- 속도가 매우빠름
- 프로그램 크기가 작음
- 무엇이든 만들 수 있음 게임이나 IDE 같은거 빼고
단점
- 어려움
- 큰 프로그램 개발에는 어려움
- 기계적인 지식이 필요
- OS 및 하드웨어의 특성을 탐(AMD INTEL 다르고 리눅스 윈도우 다르고)
✅ 컴파일러(Compiler)
컴파일러란 해당 컴파일러 언어로 작성된 소스코드를 어셈블리어, 기계어로 변환 해주는 프로그램
C언어를 예를 들자면
C언어로 작성된 코드를 컴파일을 하면 어셈블리어로 변환되고 어셈블리어는 기계어로 변환해줍니다.
특징
- 전체 파일을 스캔하여 한꺼번에 번역한다.
- 초기 스캔시간이 오래 걸리지만, 한번 실행 파일이 만들어지고 나면 빠르다.
- 기계어 번역과정에서 더 많은 메모리를 사용한다.
- 전체 코드를 스캔하는 과정에서 모든 오류를 한꺼번에 출력해주기 때문에 실행 전에 오류를 알 수 있다.
✅ 인터프리터(Interpreter)
컴파일러와는 반대로 인터프리터는 프로그램 실행시 한 번에 한 문장씩 번역한다
특징
- 프로그램 실행시 한 번에 한 문장씩 번역한다.
- 한번에 한문장씩 번역후 실행 시키기 때문에 실행 시간이 느리다.
- 컴파일러와 같은 오브젝트 코드 생성과정이 없기 때문에 메모리 효율이 좋다.
- 프로그램을 실행시키고 나서 오류를 발견하면 바로 실행을 중지 시킨다. 실행 후에 오류를 알 수 있다.
- 대표적인 언어로 Python, Ruby, Javascript 등이 있다.