티스토리 뷰
고급언어로 작성된 프로그램은 컴퓨터가 바로 이해할 수 없기 때문에 기계어로 변환하는 과정을 거쳐야만한다.
소스코드를 기계어로 변환하는 처리기법으로 번역 기법(컴파일 기법)과 인터프리터 기법이 있고 컴파일 기법을 이용해 프로그램을 실행시키는 언어를 컴파일 언어, 인터프리터 기법을 통해 프로그램을 실행시키는 언어를 인터프리터 언어라 한다.
컴파일러
고급언어로 작성된 소스프로그램을 기계어로 번역된 목적프로그램으로 번역해주는 번역기로 번역기법에서 사용된다.
저급언어로 작성된 프로그램은 어셈블러라고 하는 번역기를 통해 번역되며 사용되는 번역기 및 번역과정은 다음과 같다.
번역기 종류
1. 컴파일러 -고급언어를 번역해 어셈블리언어 혹은 기계어로된 목적 프로그램을 생성
2. 어셈블러 - 저급언어를 번역해 기계어로된 목적 프로그램 생성
3. 링커 - 재배치 가능한 기계어 프로그램을 생성하는 번역기
4. 로더 - 링커가 생성한 재배치가능한 기계어를 받아들여 실행가능한 프로그램을 생성
■ 컴파일 언어 종류
C, C++, FROTRAN, Java
■ 컴파일 언어 장점
반복문, 부프로그램 호출과 같은 반복처리 프로그램 수행속도가 빠르다.
한 번 번역된 프로그램은 변경이 없다면 재사용 가능하다.
■ 컴파일 언어 단점
번역된 프로그램(=목적프로그램)은 기억장소를 많이 요구한다. 목적프로그램의 크기는 소스와 같다.
프로그램 일부분만 변경하더라도 프로그램 전체를 컴파일 해야한다.
인터프리터
복잡하지 않은 프로그램 혹은 대화식 프로그램에 많이 사용된다. 원시코드(소스프로그램)를 한줄 단위로 번역후 바로 실행하며, 실행 중 에러가 발생해도 발생지점 이전까지 프로그램이 실행된다. 에러가 발생하면 실행을 즉시 중단하기 때문에 에러는 하나만 검출된다.
■ 인터프리터 언어 종류
Python, JavaScript, Java, SQL
■ 인터프리터 언어 장점
프로그램이 바로 실행되므로 목적프로그램이 만들어지지 않기 때문에 기억장소를 효율적으로 사용할 수 있다.
실행단위가 작기 때문에 프로그램 변화에 빠르게 대처할 수 있으며 번역 속도가 컴파일러보다 빠르다.
■ 인터프리터 언어 단점
프로그램실행시 코드를 한 줄 단위로 받아 바로 실행시키기 때문에 반복처리 프로그램의 실행 속도가 느리다.
하이브리드 기법
번역하는 과정에서 컴파일 기법과 인터프리터 기법 두 가지 방식을 혼합한 형태를 하이브리드 기법이라 하는데, Java가 하이브리드 기법으로 동작한다. 하이브리드 기법을 통해 얻게되는 장점은 운영체제에 독립성을 가질 수 있게 되는 것이다.
Java는 프로그램을 실행시키기 쉬운 중간코드(바이트코드)로 번역한 후 이를 JVM으로 넘기고 JVM은 바이트코드를 2진코드로 변환시켜 운영체제로 넘겨준다.
중간코드(바이트코드)의 실행을 하드웨어 인터프리터가 아닌 소프트웨어 인터프리터(자바 인터프리터)가 수행함으로써 JVM만 있다면 Java는 운영체제에 독립성을 가질 수 있게되어 다양한 운영체제 환경에서도 실행가능하다.
'Computer Science > Etc' 카테고리의 다른 글
구글메일(gmail)에서 Base64 형태의 이미지 안보이는 경우 (Java SMTP, HTML 전송) (0) | 2024.02.15 |
---|---|
배치 프로그래밍이란? (0) | 2022.11.24 |
하드코딩이란? (0) | 2022.06.30 |
무료 온라인 코딩 사이트 추천 (0) | 2022.06.16 |
REST API와 RESTful API란? (0) | 2022.04.06 |
- Total
- Today
- Yesterday
- C++
- 개발용어
- Thymeleaf
- 이클립스
- HeidiSQL
- SQL
- Open API
- 환경설정
- CS
- svn
- 국비교육
- 부트스트랩
- C
- 스프링부트
- 데이터베이스
- 인턴
- JSP
- CSS
- 넥사크로
- 오라클
- Java
- JVM
- 네트워크
- 오류
- 프로그래머스
- 스프링
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |