이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

코딩

컴파일 언어와 동적 언어의 차이

이쿠우우 2020. 12. 4. 18:43
반응형

 

 

컴파일 언어와 동적 언어의 차이

 

컴파일 언어

[종류]

C, C++, GO

 

[순서]

코딩(문서) -> 빌드 (컴파일러) -> 실행파일 (기계어) 

 

[특징]

일방향

어셈블러는 역방향 가능

컴퍼일러 언어는 역방향이 불가능

이런 기계어가 나오는 언어가 컴파일 언어

실행하기 전에 기계어로 모두 변환 해놓고 실행됨

 

[장점]

속도가 빠름

어셈블리어로 미리 변환이 되어있어서 바로 실행하기만 하면 됨

아직까지 프로그램의 핵심, 근본이 되는 부분의 경우 속도가 매우 중요하여

C와 C++이 많이 사용됨

 

[단점]

플랫폼 별 다른 변환이 필요함

OS 

  • 각 OS 마다 동작 방식이 다름

  • 실행 파일을 생성하는 방식도 다르고 실행하는 방식도 다름

CPU 칩셋

  • CPU 종류마다 어셈블리언어가 다름 

  • CPU 종류가 같더라도 CPU 가 발전하면서 새로운 op code 가 추가됨

  • 그러므로 칩셋에 따라 어떻게 변환하느냐에 따라 효율이 달라짐

  • 그래서 같은 CPU 계열 이라도 변화방법이 달라지기도 함

 

 

동적 언어(인터프리터언어)

 

[종류]

C#, JAVA, Python, R

 

[순서]

코딩(문서) -> 빌드 (JAVA, C#) -> 중간 언어 -> 기계어

 

[특징]

실행하는 중간에 변환을 함  

기계어로 변환하는 과정없이 한줄 한줄 해석하여 바로 명령어를 실행

 

[장점]

생산성이 좋다

플랫폼에 상관없이 사용가능

프로그램을 만들어 놓으면 실행할 때 실행하는 주체가 어떤 플랫폼인지 파악해서

그것에 맞게 그때그때 변환해서 실행하는 방식이므로 

플랫폼에 상관없이 동작함

예) 

JAVA : class 파일만 있으면 JVM 위에서 동작하기 때문에 OS 영향을 받지 않음

C# : 기존에는 Windows 에서만 동작했지만 결국 Open 하여 다양한 플랫폼에서 사용가능

 

[단점]

속도가 느림

실행하는 중간중간 기계어로 변환을 해야해서

상대적으로 컴파일 언어보다 느림

하지만 하드웨어의 발전으로 컴파일 언어와 동적 언어와 속도차이가 많이 좁혀진 상태임

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형