Python, Java, C++

김동한·2024년 5월 2일
0

CS

목록 보기
2/13
post-thumbnail

interpreter언어 vs compile언어 and...

📌script 언어

응용 소프트웨어를 제어하는 컴퓨터 프로그래밍 언어, 기존에 이미 존재하는 소프트웨어(APP)을 제어하기 위해 사용함.


📌interpreter 언어

source code 한줄씩 읽어가며 명령을 처리하는 프로그래밍 언어로 번역과 실행이 동시에 이루어짐. 명령자체의 속도가 컴파일러 언어보다 느림.
ex) python, javascript,sql,...


📌compiler 언어

source code를 한번에 다른 object 코드로 번역한후에, compile해 실행가능한 파일로 만든 후, 모든 source code의 명령을한번에 실행하는 언어.
ex) C,C++,C#,...

1) 컴퓨터 하드웨어(cpu)가 알아들을 수 있는 low level언어(ex. Assembly,object code,machine code) 로 번역됨.
2) compile하여 실행 가능(binary)한 파일이 생성됨

💡규모가 큰 source code에 대해,
compile 언어: 프로그램 실행 전 먼저 기계어로 컴파일함.
interpreter 언어: 코드를 한번에 한줄 씩 읽어 들이면서 바로 실행함

📌Java는..?

결론적으로, Java는 compiler언어에도 interpreter언어에도 포함된다.

1. compile 언어

Java는 자바 컴파일러(Java Compiler)를 사용한다. 이는, Java코드를 자바 가상머신(Java Virtual Machine, JVM)이 실행 가능한, 자바 바이트 코드 (자바 바이트 코드: .class)로 번역한다.

2. interpreter 언어

자바 바이트 코드는 자바 가상 머신(JVM)의 자바 인터프리터(Java Interpreter)를 이용해서 한 줄씩 실행된다.즉, 자바 바이트 코드로 작성된 실행 프로그램을 자바 인터프리터가 한 줄씩 읽으며, 컴퓨터가 이해 가능한, 2진 코드로 번역한 후에 실행시키는 것이다.


객체지향 언어들,,

Java

pros

  • 안정성과 확장성이 높음
  • 다양한 라이브러리와 프레임워크가 존재해 개발 생산성 높임
  • 웹 서비스 개발, 안드로이드 앱 개발에 사용

cons

  • 실행시간이 상대적으로 느릴 수 있음
  • 메모리 관리가 자동으로 이루어져 가끔씩 Garbage Collector로 인해 성능 저하 발생
  • 다중 상속 불가

C++

pros

  • 하드웨어 접근성이 뛰어남
  • 시스템 프로그래밍과 성능에 최적화 됨
  • 효율적인 메모리 관리, 저수준 제어 가능
  • 대규모 프로젝트에 적합
  • 변수 type check를 엄격히 해 Runtime Error가능성 줄이고 디버깅 도움
  • 인라인 함수 도입 등으로 함수 호출로 인한 성능 저하 방지
  • 실행시간이 효율적임
  • 다중 상속 가능

cons

  • 다소 복잡하고 어려운 문법
  • 개발 생산성이 상대적으로 낮음
  • 메모리 관리가 수동적으로 이루어져 오류 가능성이 존재

Python

pros

  • 읽기 쉬운 문법과 간결한 코드
  • 다양한 라이브러리, 모듈로 데이터 분석에 용이
  • 다중상속 가능
  • 웹개발, 인공지능 등 다양한 분야에 활용됨
  • 변수의 자료형 다로 지정하지 않고, 선언 및 값 지정이 가능

cons

  • 실행속도가 다른언어에 비해 느린 편임.
  • GIL(Global Interpreter Lock)로 멀티스레딩 환경에서 성능이 제한됨

📌GIL
global interpretor lock의 약어로, python 프로그램은 특정 시점에 하나의 thread만 실행된다. multi threaded 프로그램에서 single thread처럼 동작하는 성능 병목 현상이 발생한다.
📌thread
process 내에서 실제로 작업을 수행하는 주체이다. 두개이상의 thread를 가지는 process를 multi threaded process라고한다.
📌process
process는 단순히 실행중인 program이라고 할 수 있다. 사용자가 작성한 program이 운영체제에 의해서 메모리 공간을 할당받아 실행중인걸 의미한다.

profile
(●'◡'●)

0개의 댓글