소스 코드

소스 코드(Source Code)는 프로그래밍 언어나 어셈블리어 등으로 작성된 프로그램의 논리·데이터 처리와 명령을 기술한 원본 자료다. 사람이 읽고 수정할 수 있는 텍스트가 일반적이지만, 생성기·시각적 언어와 모델 기반 시스템에서는 다른 구조를 함께 사용할 수 있다. 컴파일러는 소스의...

영어 명칭Source Code
분류프로그램의 원본 작성·입력 자료
작성 언어프로그래밍 언어, 어셈블리어 등
주요 형태텍스트 파일·모듈·프로젝트
처리 도구컴파일러, 인터프리터, 전처리기
관리버전 관리 시스템·리뷰·빌드
출력 관계오브젝트 코드·바이트코드·실행 파일
라이선스저작권자와 소프트웨어 라이선스에 따라
참조 문서GNU Coding Standards
보안 안내Reproducible Builds

소스 코드(Source Code)는 프로그래밍 언어나 어셈블리어 등으로 작성된 프로그램의 논리·데이터 처리와 명령을 기술한 원본 자료다. 사람이 읽고 수정할 수 있는 텍스트가 일반적이지만, 생성기·시각적 언어와 모델 기반 시스템에서는 다른 구조를 함께 사용할 수 있다. 컴파일러는 소스의 구문과 의미를 검사하고 기계어·바이트코드 또는 다른 형식으로 변환하며, 인터프리터는 소스를 직접 읽거나 내부 표현을 만들어 실행할 수 있다.

소스 파일은 함수·타입과 모듈·패키지, 선언과 설정 자료로 구성될 수 있다. 대규모 프로젝트는 여러 파일과 라이브러리·빌드 설정 및 자산을 함께 관리한다. 소스와 자동 생성된 코드를 모두 사용하는 경우 원래 개발자가 유지보수하는 진짜 입력 소스와 빌드 과정의 중간 생성물은 구분해야 한다. 언어와 도구에 따라 코드가 UTF-8 또는 다른 문자 인코딩으로 저장될 수 있으므로 정확한 문자 처리도 중요하다.

프로그램은 소스에서 목적 코드와 실행 파일을 빌드할 수 있지만 모든 소스가 반드시 실행 파일 하나로 변환되지는 않는다. 라이브러리와 스크립트·셰이더, 컴파일 시 플러그인과 데이터 정의 등 역할이 달라질 수 있다. 컴파일러 버전·설정과 링크 라이브러리, 시스템 환경에 따라 동일한 소스의 결과가 달라질 수 있으므로 재현 가능한 빌드에는 도구 체인·종속성·환경을 함께 보존해야 한다.[1]

소스 코드의 공개와 사용 허가는 다른 문제다. 웹에서 코드를 읽을 수 있다고 해서 수정·상업적 재배포나 별도 저작물 이용이 항상 허용되는 것은 아니며, 자유·오픈 소스 사용권은 명시된 라이선스가 결정한다. Git 등의 버전 관리는 코드 변경·기여와 릴리스 기록을 관리하는 데 도움을 주지만 코드가 정확하거나 안전하다는 사실을 자체적으로 보장하지 않는다.

역사

정의와 적용 범위

구조와 형식

컴파일·실행 과정

하드웨어·운영체제와의 관계

개발·디버깅 도구

보안·호환성과 주의점

관련 문서

  1. Reproducible Builds: How build dependencies affect the result ↩