공통 개념
런타임
Runtime
node index.js뜻
코드를 실제로 실행해주는 프로그램 또는 환경입니다.
언제 쓰나
Node.js는 JavaScript를, Python은 .py 파일을, JVM은 컴파일된 Java 바이트코드를 실행합니다.
예시
node index.js요청 예시
이 프로젝트에 어떤 런타임이 필요한지 설명해줘.
프로그래밍
Python, C, C++, Go, JavaScript/Node.js, Rust, Java를 실행하기 위해 필요한 런타임, 컴파일러, 패키지 관리자, 설정 파일, 버전 확인 방법을 정리한 가이드입니다.
34 개 항목
공통 개념
Runtime
node index.js코드를 실제로 실행해주는 프로그램 또는 환경입니다.
Node.js는 JavaScript를, Python은 .py 파일을, JVM은 컴파일된 Java 바이트코드를 실행합니다.
node index.js이 프로젝트에 어떤 런타임이 필요한지 설명해줘.
공통 개념
Compiler
gcc main.c -o main소스 코드를 실행 파일 같은 다른 형태로 바꾸는 도구입니다.
C, C++, Rust, Go, Java는 보통 실행 전 또는 실행 과정에서 컴파일 단계가 필요합니다.
gcc main.c -o main이 파일에 필요한 컴파일러 명령을 알려줘.
공통 개념
Interpreter
python3 main.py소스 코드를 직접 읽고 실행하거나 최소한의 준비만 거쳐 실행하는 프로그램입니다.
Python은 보통 인터프리터로 실행하고, C는 보통 먼저 컴파일합니다.
python3 main.py이 언어가 일반적으로 인터프리터 방식인지 컴파일 방식인지 설명해줘.
공통 개념
PATH
echo $PATH터미널에서 명령어를 입력했을 때 실행 파일을 찾는 폴더 목록입니다.
python, node, go, cargo, javac 명령을 찾지 못하면 PATH가 첫 번째 확인 대상 중 하나입니다.
PATH를 잘못 수정하면 원래 되던 명령도 터미널에서 사라질 수 있습니다.
echo $PATH필요한 실행환경 명령이 PATH에 잡혀 있는지 확인해줘.
공통 개념
Version check
python3 --version && node -v && go version어떤 런타임이나 컴파일러 버전이 설치되어 있는지 확인하는 명령 패턴입니다.
버전 차이로 생기는 빌드나 패키지 오류를 디버깅하기 전에 사용합니다.
python3 --version && node -v && go version이 언어의 버전 확인 명령을 알려줘.
공통 개념
Package manager
pip install requests외부 라이브러리를 설치하고 의존성 정보를 관리하는 도구입니다.
pip, npm, cargo, go modules, Maven, Gradle은 각 생태계에서 의존성을 관리합니다.
pip install requests이 프로젝트가 어떤 패키지 관리자를 쓰는지 설명해줘.
Python
python3
python3 main.pyPython 3 스크립트를 실행할 때 자주 쓰는 명령입니다.
.py 파일을 직접 실행하거나 가상환경을 만들 때 사용합니다.
python3 main.py이 Python 파일을 실행하는 방법을 보여줘.
Python
venv
python3 -m venv .venv프로젝트별로 설치 패키지를 분리하기 위한 Python 환경입니다.
프로젝트마다 다른 패키지 버전이 필요할 때 사용합니다.
생성 후 패키지를 설치하기 전에 가상환경을 활성화해야 합니다.
python3 -m venv .venv이 프로젝트용 Python 가상환경을 만들고 설명해줘.
Python
activate
source .venv/bin/activate터미널이 가상환경 안의 Python과 pip를 사용하도록 바꿉니다.
해당 프로젝트에서 pip install이나 python 명령을 실행하기 전에 사용합니다.
source .venv/bin/activatePython 가상환경이 활성화되어 있는지 확인해줘.
Python
pip
pip install requestsPython 패키지를 설치하는 도구입니다.
프로젝트나 스크립트에 필요한 라이브러리를 설치할 때 사용합니다.
pip가 실제 실행할 Python 환경과 같은 환경인지 확인해야 합니다.
pip install requests이 pip 명령이 어떤 Python 환경을 쓰는지 확인해줘.
Python
requirements.txt
pip install -r requirements.txt설치해야 할 Python 패키지 목록을 적는 텍스트 파일입니다.
프로젝트의 Python 패키지 환경을 다시 만들 때 사용합니다.
pip install -r requirements.txt활성화된 venv에서 requirements.txt 패키지를 설치해줘.
C
gcc
gcc main.c -o mainC 소스 파일을 컴파일할 때 자주 쓰는 컴파일러입니다.
main.c를 실행 파일로 만들 때 사용합니다.
컴파일은 실행 파일을 만들 뿐, 자동으로 실행하지는 않습니다.
gcc main.c -o main이 C 파일을 컴파일하고 출력 실행 파일을 설명해줘.
C
clang
clang main.c -o mainmacOS에서 Xcode Command Line Tools를 통해 자주 제공되는 C 컴파일러입니다.
C 파일을 컴파일할 때 gcc의 대안으로 사용할 수 있습니다.
clang main.c -o mainclang이 설치되어 있는지 확인하고 이 C 파일을 컴파일해줘.
C
.h header file
#include "math_utils.h"C 코드에서 함수, 타입, 상수, 공유 인터페이스를 선언할 때 주로 쓰는 파일입니다.
여러 .c 파일이 선언을 공유해야 할 때 사용합니다.
#include "math_utils.h"이 헤더 파일이 C 소스 파일과 어떻게 연결되는지 설명해줘.
C
Makefile
makemake가 실행할 빌드 명령과 의존 관계를 정의하는 파일입니다.
C나 C++ 프로젝트 컴파일에 반복되는 여러 명령이 필요할 때 사용합니다.
make이 Makefile이 무엇을 빌드하는지 설명해줘.
C++
g++
g++ main.cpp -std=c++20 -o mainC++ 소스 파일을 컴파일할 때 자주 쓰는 컴파일러 명령입니다.
C++ 코드를 컴파일할 때는 gcc가 아니라 g++를 사용합니다.
g++ main.cpp -std=c++20 -o main이 C++ 파일을 알맞은 표준 옵션으로 컴파일해줘.
C++
C++ standard
-std=c++20컴파일러가 어떤 C++ 언어 버전을 사용할지 알려주는 설정입니다.
코드가 C++17, C++20 같은 특정 표준 기능에 의존할 때 사용합니다.
컴파일러가 선택한 표준을 지원하기에 너무 오래되면 실패할 수 있습니다.
-std=c++20이 코드에 필요한 C++ 표준 버전을 알려줘.
C++
CMake
cmake -S . -B buildC와 C++ 프로젝트에서 자주 쓰는 빌드 설정 도구입니다.
단일 파일 컴파일이 아니라 CMakeLists.txt가 있는 프로젝트에서 사용합니다.
cmake -S . -B build이 프로젝트의 CMake 설정과 빌드 명령을 설명해줘.
Go
go
go versionGo 코드를 실행, 빌드, 테스트하고 모듈을 관리하는 기본 명령입니다.
go run, go build, go test, go mod, 의존성 관리에 사용합니다.
go version설치된 Go 버전을 확인해줘.
Go
go run
go run main.goGo 코드를 한 번에 컴파일하고 실행하는 명령입니다.
작은 Go 프로그램을 개발하거나 main package를 빠르게 확인할 때 사용합니다.
go run main.go이 Go 프로그램을 실행하고 오류가 있으면 설명해줘.
Go
go.mod
go mod init example.com/my-appGo 모듈과 의존성 요구사항을 정의하는 파일입니다.
Go 의존성과 import 해석의 프로젝트 기준점으로 사용합니다.
go mod init example.com/my-app이 go.mod 파일이 무엇을 정의하는지 설명해줘.
Go
go mod tidy
go mod tidy누락된 Go 모듈 의존성을 추가하고 사용하지 않는 의존성을 제거합니다.
import를 바꾼 뒤나 Go 의존성 변경을 커밋하기 전에 사용합니다.
go mod tidygo mod tidy를 실행하고 의존성 변경을 요약해줘.
JavaScript / Node.js
Node.js
node index.js브라우저 밖에서 JavaScript를 실행하는 런타임입니다.
백엔드 스크립트, 빌드 도구, Next.js 같은 웹 프레임워크 도구에 사용합니다.
브라우저 JavaScript와 Node.js는 사용할 수 있는 API가 완전히 같지 않습니다.
node index.js이 JavaScript 코드가 Node.js용인지 브라우저용인지 확인해줘.
JavaScript / Node.js
npm
npm installNode.js와 함께 설치되는 기본 패키지 관리자입니다.
패키지를 설치하고 package.json에 정의된 scripts를 실행할 때 사용합니다.
npm install이 package.json의 npm scripts를 설명해줘.
JavaScript / Node.js
package.json
"scripts": { "dev": "next dev" }Node.js 프로젝트의 scripts, dependencies, 패키지 정보를 기록하는 파일입니다.
npm run dev, npm run build, 필요한 패키지를 이해할 때 확인합니다.
"scripts": { "dev": "next dev" }이 package.json이 제공하는 명령어를 알려줘.
JavaScript / Node.js
nvm
nvm use프로젝트별로 Node.js 버전을 바꿔 사용할 수 있게 해주는 도구입니다.
프로젝트가 특정 Node 버전을 요구할 때 사용합니다.
nvm use이 프로젝트가 Node 버전을 지정하는지 확인해줘.
Rust
rustup
rustup showRust toolchain을 설치하고 관리하는 권장 도구입니다.
Rust 설치, stable/nightly 전환, target 추가에 사용합니다.
rustup show현재 활성 Rust toolchain을 확인해줘.
Rust
rustc
rustc main.rsRust 컴파일러입니다.
간단한 단일 파일 Rust 실험에 사용할 수 있지만 실제 프로젝트는 보통 cargo를 사용합니다.
rustc main.rs이 Rust 프로젝트가 rustc와 cargo 중 무엇을 써야 하는지 설명해줘.
Rust
cargo
cargo runRust의 패키지 관리자, 빌드 도구, 테스트 실행기, 프로젝트 실행 도구입니다.
일반 Rust 프로젝트에서는 cargo run, cargo build, cargo test를 사용합니다.
cargo run이 Rust 프로젝트를 cargo로 실행하고 출력을 설명해줘.
Rust
Cargo.toml
[dependencies]Rust 패키지, 메타데이터, 의존성을 정의하는 manifest 파일입니다.
Rust 프로젝트가 어떤 crate에 의존하는지 이해할 때 확인합니다.
[dependencies]이 Cargo.toml의 의존성을 설명해줘.
Java
JDK
java -versionJava 프로그램을 컴파일하고 실행하는 데 필요한 도구를 포함한 개발 키트입니다.
프로젝트가 javac, java, Maven, Gradle 같은 Java 도구를 필요로 할 때 사용합니다.
java -versionJDK가 설치되어 있는지와 활성 버전을 확인해줘.
Java
javac
javac Main.java.java 파일을 .class 바이트코드 파일로 바꾸는 Java 컴파일러입니다.
간단한 Java 파일을 컴파일하거나 빌드 도구 내부 동작을 이해할 때 사용합니다.
javac Main.java이 Java 파일을 컴파일하고 생성된 class 파일을 설명해줘.
Java
java
java Main컴파일된 Java class를 JVM에서 실행합니다.
간단한 Java 프로그램을 javac로 컴파일한 뒤 실행할 때 사용합니다.
java Main.class가 아니라 java Main처럼 실행합니다.
java Main이 Java 파일의 컴파일과 실행 명령을 보여줘.
Java
Maven / Gradle
mvn test / ./gradlew testJava 프로젝트의 의존성, 테스트, 패키징, 작업 실행을 관리하는 대표 빌드 도구입니다.
pom.xml이 있으면 Maven, build.gradle이나 gradlew가 있으면 Gradle을 사용합니다.
mvn test / ./gradlew test이 Java 프로젝트가 Maven과 Gradle 중 무엇을 쓰는지 알려줘.