Compiled VS Interpreted 언어



컴파일 언어 VS 인터프리터 언어

한마디 버전

한국어 : 컴파일된 언어는 컴파일러를 통해 구현되며 소스 코드를 기계어로 바꾸는 과정을 사전에 처리 하여 빠르게 컴퓨터에서 구동될 수 있도록 한 방법 이며, 인터프리터 언어는 대부분 소스코드를 기계어로 컴파일하지 않고 인터프리터를 통해 소스코드 실행시 각 스테이트먼트(소스코드 구문)를 하나 이상의 서브루틴 순서로 변환한 후, 기계어나 바이트코드등 다른 언어로 변환되어 구현됩니다.

영어 : Compiled language is implemented through compilers which process converting source code into machine language is pre-processed so that it can be run faster on the computer. Most interpreted languages are implemented by translating each statement into one or more subroutine sequences when executing a program through the interpreter, then converting  the source code  into other languages like machine languages or bytecode.



1. 컴파일 언어와 인터프리터 언어 종류

컴파일 언어인터프리터 언어
  • Ada
  • ALGOL
  • Visual Basic
  • PureBasic
  • C
  • C++
  • C#(바이트코드)
  • CLEO
  • COBOL
  • Cobra
  • Crystal
  • D
  • eC
  • Eiffel
  • Sather
  • Ubercode
  • Erlang(바이트코드)
  • F#(바이트코드)
  • Factor(바이트코드)
  • Forth
  • Fortran
  • Go
  • Haskell
  • Haxe(바이트코드 또는 C++)
  • Java(바이트코드)
  • Scala
  • Kotlin
  • JOVIAL
  • Julia
  • LabVIEW, G
  • Lisp
  • Common Lisp
  • Lush
  • Mercury
  • ML
  • Standard ML
  • Alice
  • Python(바이트코드-CPython)
  • OCaml
  • Nim (C, C++,또는 Objective-C)
  • Open-URQ
  • Pascal
  • Object Pascal
  • Delphi
  • Free Pascal / Lazarus
  • Modula-2
  • Modula-3
  • Oberon
  • Objective-C
  • PL/I
  • RPG
  • Rust
  • Seed7
  • SPITBOL
  • Swift
  • Visual Foxpro
  • Visual Prolog
  • W
  • Zig
  • APL
  • BASIC(초창기 버전)
  • J
  • Euphoria
  • GameMaker Language
  • JavaScript
  • Forth
  • Lava
  • Lisp
  • MUMPS
  • PHP
  • PostScript
  • Python
  • Ruby
  • REXX
  • Seed7
  • Smalltalk
  • S
  • Tcl
  • Unix shell
  • XOTcl
  • VBScript

출처: 위키피디아

일부 언어는 컴파일언어가 될수도 있고 인터프리터 언어가 될 수 도 있습니다. 파이썬은 CPython, PyPy, Jython, IronPython, PythonNet 처럼 다양한 컴파일러를 가지고 있어 소스코드를 바이트코드로 바꾸어주며, Jython은 JVM에서 실행시킬때, PythonNet은 .Net Common Language Run-time과 파이썬을 통합시켜주는 패키지 입니다. 처음 파이썬을 배울때는 정말 '파이썬 다운 파이썬'만 알게되지만, 실제로 현업에서는 CPython으로 생각될 때도 많이 있습니다.



2. 컴파일 언어 VS 인터프리터 언어

컴파일 언어인터프리터 언어
  • 컴파일 타임에 컴파일되는 언어이니 런타임에 컴파일 되는 인터프리터 언어보다 빠른경향이 있다.(경향이 있다.... 뭐 항상 그렇지는 않다 라는 뜻* - 세부내용은 하단에)
  • 미리 컴파일을 하기 때문에 오류를 배포전 오류를 잡아낼 수 있다.
  • 테스트를 하려면 컴파일을 해야한다. 여기서 추가 시간이 소요된다.
  • 생성된 바이너리 코드가 플랫폼에 영향을 받는다.


  • 컴파일 언어보다는 약간 추가적인 유연성을 제공한다.
  • 인터프리터가 실행을 하기 때문에 코드가 플랫폼의 영향을 받지 않는다. (예: 자바의 바이트 코드)
  • 동적 타이핑을 지원하고, 프로그램 크기가 대체로 더 작다.
  • 가장 치명적인 약점은 인터프리터 언어는 컴파일된 언어에 비해 전형적으로 실행속도가 느리다. 
  • 코드 인젝션 공격등의 위험이 있다.
  • 소스 코드를 쉽게 읽고 복사할 수 있다. 웹브라우저의 자바스크립트 같은 경우 소스코드를 보여주기에 중요한 로직을 담기 어렵다. 난독화를 하기도 하지만, 이런 행위가 속도를 더 느리게 만드는 경향도 있다. 

* 언어간의 성능을 비교하는 것은 체계적으로 하기란 엄청나게 어렵습니다. 각 언어의 성능은 그 언어의 설계와 구현 품질(Implementation Quality)에 의해 영향을 받습니다. '컴파일이냐' '인터프리터이냐' 이것들은 그냥 두 개의 분리된 기준이며, 우리가 이 2개의 기준으로만 언어를 평가할때 사용됩니다. 그래서, 언어별로 차이가 있고, 컴파일 언어가 인터프리터 언어보다 항상 빠르지 않을수 도 있습니다.







  • [[a.original_name]] ([[a.file_size | fileSizer]])
좋아요[[ postLike | likePlus ]]
공유
라이언

“Lead Python Engineer”

댓글 [[totalCommentCount]]
[[ comment.author__nick_name ]] [[ comment.datetime_updated | formatDate]] (수정됨)

[블라인드 처리된 글 입니다.]

답장
[[ sub.author__nick_name ]] [[ sub.datetime_created | formatDate ]] (수정됨)

취소
댓글을 남겨주세요.
'컴퓨터공학' 관련 최신 포스트
[[ post.title ]]
[[ post.datetime_published_from | DateOnly ]]