
디버깅
프로그램 언어 처리기
프로그래밍 언어를 컴퓨터의 언어(기계어)로 변환 및 실행
실행되는 타이밍과 방법의 차이에 따라 컴파일러와 인터프리터로 나뉨
컴파일러
전체 코드를 한 번에 기계어로 변환하여 실행 파일 제작, 미리 번역
프로그램의 실행이 빠름. But, 컴파일하는 과정이 따로 있어서 시간이 별도로 소요됨
저수준 언어가 사용하는 경향이 있음
컴파일러를 사용하는 언어: java, C, C++, Rust
+) 자바 프로그램은 어떻게 다양한 플랫폼에서 실행될 수 있는가?
자바는 바로 기계어로 변환되지 않고 바이트코드(byte code)로 변환된다.
자바 프로그램은 JVM이라는 가상 머신과 함께 실행되며,
JVM은 다양한 운영체제와 하드웨어 플랫폼에 맞게 구현되어 있다.
그래서 JVM을 통해 각 환경에 맞는 기계어로 변환해주는 덕분에
자바 프로그램이 어디서든 실행될 수 있게 된 것이다.
인터프리터
실행 시 바로바로 코드를 한 줄씩 읽어들여 기계어로 변환, 실시간 번역
프로그램 실행이 컴파일러를 사용하는 언어보다 비교적 느림
고수준 언어가 사용하는 경향이 있음
인터프리터를 사용하는 언어: JS, python, Ruby
빌드
작업하는 프로젝트 파일들을 출시하기 적합한 형태로 만드는 일
빌드 과정은 소프트웨어에 필요한 모든 파일 및 디렉토리를 실행 가능한 형태로 변환하고, 최종 제품을 생성하는 데 필요한 모든 단계를 포함
소프트웨어에 필요한 모든 파일 및 디렉토리
=> 소스 코드, 헤더 파일, 라이브러리, 이미지, 설정 파일 등
언어에 따라 컴파일이 빌드에 포함될 수 있음
일반적인 빌드 과정
소스 코드 준비 → (컴파일) → (링크) → 패키징 → 테스트 → 배포 준비 → 배포
※ 소괄호 안에 있는 과정은 언어에 따라 포함/불포함 됨
ex) git의 패키지 파일(.exe)로 배포되는 프로그램

배포
개발된 소프트웨어를 실제 사용자나 환경에 제공
소프트웨어 개발의 최종 단계
앱의 경우 애플리케이션 스토어에 등록, 웹의 경우 사용자들이 도메인에 접근해서 서비스를 이용할 수 있도록 하는 것
배포 과정
빌드 완료 → 패키징 → 배포 준비 및 수행 → 배포 후 검증 → 모니터링 및 유지보수
환경변수
운영 체제에서 프로그램 실행 시에 사용할 수 있는 값을 저장하는 변수
시스템의 환경 설정을 관리하고, 소프트웨어가 동작할 때 필요한 정보를 전달
ex) 자바의 경로를 윈도우의 시스템 환경변수로 설정하여 어느 자바 프로그램이든 컴퓨터 내의 자바를 찾아서 접근할 수 있도록 하는 것.

라이브러리
특정 기능이나 작업을 수행하기 위한 코드의 집합
개발자가 자주 사용하거나 일반적으로 필요한 기능을 미리 구현해 놓은 코드 모음
ex) 자바의 Apache Commons: 다양한 유틸리티 기능을 제공하는 모듈화된 라이브러리

프레임워크
소프트웨어 개발에서 특정 유형의 애플리케이션이나 시스템을 구축하는 데 도움을 주는 구조적 틀과 도구들의 집합
장점: 생산성 및 품질 향상, 구조화, 유지보수 용이, 확장성
단점: 복잡성, 제한된 유연성, 커스터마이징 어려움
ex) 스프링 프레임워크: 자바 기반의 웹 프레임워크
장고 프레임워크: 파이썬 기반의 웹 프레임워크