반응형
✅ 프로그래밍 언어
- 인간이 이해할 수 있는 형태의 명령어를 작성하고, 컴파일러 또는 인터프리터와 같은 도구를 사용하여 기계어로 변환하여 컴퓨터가 이해하고 실행할 수 있는 프로그램을 만드는 도구이다.
- 컴퓨터는 이진수로 이루어진 기계어를 이해하며, 이를 이용해 프로그램을 실행한다.
- C, C++, Python, JavaScript, Ruby 등 다양한 언어가 있다.
- 프로그래머가 복잡한 프로그램을 작성하고 관리할 수 있도록 다양한 기능과 문법을 제공한다.
💡 프로그래밍 언어 분류
프로그래밍 언어는 고급언어, 어셈블리어, 기계어로 크게 분류된다.
고급언어
- 사람이 이해하기 쉽고 추상화된 개념을 다룬다.
- 대표적으로 Java, C, Python, JavaScript 등이 있다.
- 컴파일러나 인터프리터와 같은 도구를 사용하여 기계어로 변환된 후 실행된다.
- 일반적으로 읽기 쉽고 유지보수가 용이하다.
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
어셈블리어
- 고급언어와 기계어의 중간 단계로, 단순한 기호를 사용하여 작성된 언어이다.
- 어셈블러라는 도구를 사용하여 기계어로 변환된 후 실행된다.
- 고급언어에 비해 코드가 직관적이며, 하드웨어를 직접 다룰 수 있다.
; 윈도우즈의 경우 masm을 사용하여 어셈블리어 코드를 컴파일할 수 있다.
.MODEL SMALL
.STACK 100h
.DATA
message DB 'Hello, World!', '$'
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
MOV AH, 09h
LEA DX, message
INT 21h
MOV AH, 4Ch
INT 21h
MAIN ENDP
END MAIN
기계어
- 0과 1로 이루어진 이진수로 작성된 언어이다.
- 컴퓨터가 직접 이해할 수 있는 언어이므로, 기계어로 작성된 코드는 바로 실행된다.
- 컴퓨터가 이해하기 쉽지만, 사람이 작성하기에는 매우 복잡하다는 단점이 있다.
- 모든 컴퓨터가 동일한 기계어를 사용하지 않는다.
- 다양한 아키텍처와 플랫폼이 존재하며, 이에 따라 사용되는 기계어도 다르다.
- 윈도우 Window 컴퓨터와 맥 Mac 컴퓨터는 서로 다른 기계어를 사용한다.
- 고급언어와 어셈블리어는 플랫폼에 따라 다른 컴파일러를 사용하여 컴파일되어야 하며, 이를 통해 플랫폼 독립성을 보장할 수 있다.
01001000 01100101 01101100 01101100 01101111 00101100 00100000 01010111 01101111 01110010 01101100 01100100 00100001
✅ 컴파일러 Compiler
프로그래밍 언어로 작성된 소스 코드를 컴퓨터가 이해할 수 있는 기계어로 변환하는 프로그램이다.
- 소스 코드를 읽어서 분석(Analysis)과 변환(Translation) 과정을 거친 후, 오브젝트(Object) 파일 또는 실행 파일을 생성한다.
- 오브젝트 파일은 링커(Linker)를 통해 실행 파일로 결합되며, 실행 파일은 운영체제에 의해 실행된다.
- 고급 언어로 작성된 코드는 기계어로 직접 변환할 수 없기 때문에, 컴파일러가 중간 단계에서 어셈블리어 또는 바이트 코드(Bytecode)로 변환한다.
- 소스 코드의 오류를 검출하여 오류가 있는 코드를 수정하도록 돕는 기능도 제공한다.
- 보안 상의 이유로 코드를 숨기는 Obfuscation 기능을 제공하기도 한다.
💡 자바 컴파일러 Java Compiler
자바 언어로 작성된 소스 코드를 기계어로 변환하여 실행 가능한 바이트 코드(Bytecode) 파일을 생성하는 도구이다.
자바 개발자들이 작성한 코드를 컴파일하여 실행 가능한 애플리케이션, 앱, 웹 애플리케이션 등을 만드는 데 사용된다.
자바 컴파일러는 일반적으로 JDK(Java Development Kit)와 함께 제공되며, javac라는 명령어를 사용하여 소스 코드를 컴파일한다.
- 자바의 플랫폼 독립성: JVM(Java Virtual Machine)은 운영체제와는 독립적으로 실행되므로, 자바 애플리케이션은 모든 운영체제에서 동일하게 실행된다.
- JIT(Just-In-Time) 컴파일: 바이트 코드를 실행할 때 해당 코드를 직접 기계어로 변환하여 실행하는 방식이다.
- 디버깅: 디버깅 정보를 생성하여 디버깅이 용이하도록 지원한다.
- 다양한 개발 환경: clipse, IntelliJ 등 다양한 개발 환경에서 사용할 수 있으며, 이를 통해 개발자들은 편리하게 소스 코드를 작성하고 컴파일할 수 있다.
자바 코드를 컴파일하는 예시이다.
- Hello.java 파일을 작성한다.
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
- 커맨드 라인에서 다음 명령어를 입력한다.
javac Hello.java
- 명령어를 실행하면, Hello.class라는 바이트 코드 파일이 생성된다.
- 생성된 파일은 JVM에서 실행 가능한 파일이며, 다음과 같이 실행할 수 있다.
java Hello
- 명령어를 실행하면, "Hello, World!"라는 메시지가 출력된다.
반응형
'기타 > 백엔드 기초' 카테고리의 다른 글
자바 Java | 이클립스 Eclipse 시작하기 | Hello world 출력 (0) | 2023.02.14 |
---|---|
자바 Java | 이클립스 Eclipse 초기 설정 | 워크스페이스 Workspace, 뷰 view, 퍼스펙티브 perspective (0) | 2023.01.09 |
자바 Java | 이클립스 Eclipse 설치하기 | 자바 개발도구 JDK, JAVA SE 11, 환경변수 설정, 통합 개발 환경 IDE (0) | 2023.01.09 |
자바 Java | 자바 프로그램 개발과 실행: 소스코드 작성부터 main 메소드, 클래스파일 생성, 실행과정까지 상세히 알아보기 (0) | 2023.01.09 |
자바 Java | JDK와 JRE의 차이: 자바 개발 도구와 실행 환경 (0) | 2023.01.09 |
자바 Java | 플랫폼 독립성의 중요성과 대표적인 언어/기술들의 구현 방식 (0) | 2023.01.09 |
자바 Java | 자바의 역사와 커피에서 영감 받은 이름 유래 (0) | 2023.01.08 |
안드로이드 프로그래밍 | 깔끔한 UI를 위한 상단바 제거와 자유로운 버튼 색상 변경 방법 (0) | 2022.12.16 |