소스 코드
소스 코드(Source Code)는 프로그래밍 언어나 어셈블리어 등으로 작성된 프로그램의 논리·데이터 처리와 명령을 기술한 원본 자료다. 사람이 읽고 수정할 수 있는 텍스트가 일반적이지만, 생성기·시각적 언어와 모델 기반 시스템에서는 다른 구조를 함께 사용할 수 있다. 컴파일러는 소스의...
| 영어 명칭 | Source Code |
|---|---|
| 분류 | 프로그램의 원본 작성·입력 자료 |
| 작성 언어 | 프로그래밍 언어, 어셈블리어 등 |
| 주요 형태 | 텍스트 파일·모듈·프로젝트 |
| 처리 도구 | 컴파일러, 인터프리터, 전처리기 |
| 관리 | 버전 관리 시스템·리뷰·빌드 |
| 출력 관계 | 오브젝트 코드·바이트코드·실행 파일 |
| 라이선스 | 저작권자와 소프트웨어 라이선스에 따라 |
| 참조 문서 | GNU Coding Standards |
| 보안 안내 | Reproducible Builds |
소스 코드(Source Code)는 프로그래밍 언어나 어셈블리어 등으로 작성된 프로그램의 논리·데이터 처리와 명령을 기술한 원본 자료다. 사람이 읽고 수정할 수 있는 텍스트가 일반적이지만, 생성기·시각적 언어와 모델 기반 시스템에서는 다른 구조를 함께 사용할 수 있다. 컴파일러는 소스의 구문과 의미를 검사하고 기계어·바이트코드 또는 다른 형식으로 변환하며, 인터프리터는 소스를 직접 읽거나 내부 표현을 만들어 실행할 수 있다.
소스 파일은 함수·타입과 모듈·패키지, 선언과 설정 자료로 구성될 수 있다. 대규모 프로젝트는 여러 파일과 라이브러리·빌드 설정 및 자산을 함께 관리한다. 소스와 자동 생성된 코드를 모두 사용하는 경우 원래 개발자가 유지보수하는 진짜 입력 소스와 빌드 과정의 중간 생성물은 구분해야 한다. 언어와 도구에 따라 코드가 UTF-8 또는 다른 문자 인코딩으로 저장될 수 있으므로 정확한 문자 처리도 중요하다.
프로그램은 소스에서 목적 코드와 실행 파일을 빌드할 수 있지만 모든 소스가 반드시 실행 파일 하나로 변환되지는 않는다. 라이브러리와 스크립트·셰이더, 컴파일 시 플러그인과 데이터 정의 등 역할이 달라질 수 있다. 컴파일러 버전·설정과 링크 라이브러리, 시스템 환경에 따라 동일한 소스의 결과가 달라질 수 있으므로 재현 가능한 빌드에는 도구 체인·종속성·환경을 함께 보존해야 한다.[1]
소스 코드의 공개와 사용 허가는 다른 문제다. 웹에서 코드를 읽을 수 있다고 해서 수정·상업적 재배포나 별도 저작물 이용이 항상 허용되는 것은 아니며, 자유·오픈 소스 사용권은 명시된 라이선스가 결정한다. Git 등의 버전 관리는 코드 변경·기여와 릴리스 기록을 관리하는 데 도움을 주지만 코드가 정확하거나 안전하다는 사실을 자체적으로 보장하지 않는다.