어셈블러 언어 vs 컴파일러 언어 vs 인터프리터 언어

고장난 고양이·2022년 7월 18일
0

개발지식

목록 보기
16/25

어셈블러 언어컴파일러 언어인터프리터 언어
어셈블리어CJavaScript
C++Lisp
C#(Byte Code)PHP
Visual BasicPostScript
F#(Byte Code)Python
GoRuby
Java(Byte Code)Unix Shell
ScalaVBScript
KotlinR
LispHTML
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 등이 있다.
profile
개발새발X발일지

0개의 댓글