저는 프로그래밍 초보자이며 용어를 잘 이해하지 못합니다. C 또는 C ++와 같은 컴파일 된 언어로 작성된 소스 코드가 프로그램으로 간주되는지 알고 싶습니다. 그렇지 않다면, 아무도 이유를 설명 할 수 있습니까?
저는 프로그래밍 초보자이며 용어를 잘 이해하지 못합니다. C 또는 C ++와 같은 컴파일 된 언어로 작성된 소스 코드가 프로그램으로 간주되는지 알고 싶습니다. 그렇지 않다면, 아무도 이유를 설명 할 수 있습니까?
답변:
프로그램에 대한 Wikipedia 항목을 참조하십시오 : ( 굵게 추가했습니다 )
컴퓨터 프로그램은 컴퓨터에서 실행될 때 특정 작업을 수행하는 명령 모음입니다 . 컴퓨터가 작동하려면 프로그램이 필요하며 일반적으로 중앙 처리 장치에서 프로그램의 명령을 실행합니다.
컴퓨터 프로그램은 일반적으로 컴퓨터 프로그래머가 프로그래밍 언어로 작성합니다. 사람이 읽을 수있는 소스 코드 형식의 프로그램에서 컴파일러는 컴퓨터 코드 (컴퓨터가 직접 실행할 수있는 명령으로 구성된 형식)를 파생시킬 수 있습니다.
따라서 "프로그램"은 컴퓨터가 실행하는 명령어 세트이며 "소스 코드"는 사람이 읽을 수있는 명령어 버전입니다.
C 또는 CPP와 같은 컴파일 된 언어로 작성된 소스 코드가 프로그램으로 간주되는지 알고 싶습니다.
그렇습니다.
그러나
이 사고 방식의 위험은 "컴퓨터가 내 프로그램을 실행하고, 예를 들어 C로 프로그램을 작성하는데, 소스 코드는 컴퓨터에 대한 명령이라는 것"이라고 생각합니다.
그리고 이것은 20 세기에 우리 중 너무 많은 사람들이 수십 년 동안 생각한 것입니다. 지난 10여 년 동안 우리가 배운 것은 다른 프로그래머가 소스 코드의 주요 대상이라는 것입니다 . 예, 소스는 극장에서 프로그램을받는 것과 같은 방식으로 다른 사람들에게 무슨 일이 일어나고 있는지 알려주는 프로그램입니다. 소스 코드의 장점은 프로그램 일뿐만 아니라 컴퓨터에 대한 지침이기도합니다.
존재 여부에 관계없이 상황에 따라 다릅니다. 이런 식으로 생각하십시오. 나는 개념에 대한 공식적인 이름이 무엇인지 잊지 만 단어가 뭔가하지 무엇을 설명하는 의미가 있지만, 무엇 말한다 언어의 이론이 아니다는 . 빨간 사과는 빨간색이 아니기 때문에 빨간색이 아니지만 파란색이 아니고 녹색이 아니기 때문에 빨간색이 아닙니다. 그것이 사실인지 아닌지를 무시하고, 잠깐만 가정하고 그 맥락에서 질문에 대해 생각하십시오.
우리는 그 개념을 생각할 때 소스 코드를 집의 청사진과 비교할 수 있습니다. 다른 청사진의 스택에서 청사진을보고 "이 집입니까?"라고 묻고 다른 청사진은 상업용 건물, 다리 등을위한 것이라면 대답은 그렇습니다. 청사진은 다른 모든 것들을 나타내는 것이 아니며, 주택 측면은 다른 청사진과 구별되는 것입니다.
그러나 집의 청사진은 나무와 마른 벽에서 나온 실제 집과 동일하지 않습니다. 청사진과 실제 집의 차이가 의미가있는 상황이 있습니다. 계획과 결과물에는 차이가 있습니다.
컴파일 된 언어로 된 프로그램의 소스 코드는 청사진과 같습니다. 라이브러리, 커널 모듈 등과 비교하는 경우 소스 코드와 프로그램은 개념적으로 동일합니다. 그러나 소프트웨어를 컴파일, 디자인 및 배포하는 방법을 살펴보면 둘이 동일하지 않습니다. 다시 한 번, 계획과 산출물간에 차이가 있습니다.
tl; dr : 어떤 것이 무엇인지, 그것이 무엇을 나타내는지는 때때로 같은 것으로 간주되지만 다른 때는 그렇지 않습니다.
소스 코드는 원래 코드 줄 (사람이 작성)에 대한 일반적인 용어입니다. 소스가 아닌 다른 종류의 코드는 번역이나 다른 프로그램에 의해 생성 될 수 있습니다.
지적 재산은 더욱 광범위하며 소스 코드와 기타 코드 또는 데이터를 모두 포함 할 수 있습니다.
프로그램은 완전성면에서 다른 코드 (소스 또는 기타)와 구별됩니다. 프로그램은 실행이 가능하거나 실행되도록 충분히 완성 된 코드입니다. 모든 코드 (소스 또는 기타)가 실행하기에 충분한 완전성을 나타내는 것은 아닙니다. 예를 들어 라이브러리는 다른 코드와 결합하여 사용하기 때문에 일반적으로 실행할 수 없기 때문에 프로그램으로 간주되지 않습니다.
이 완전성은 때때로 main
운영 체제에서 프로그램의 진입 점으로 사용되는을 갖는 것을 의미 합니다.
일반적으로 프로그램이 실행될 때이를 프로세스라고합니다.
소스 코드 는 IS 선호 하는 소프트웨어의 형태로 인간의 소프트웨어 개발자가되는 작업 . 통찰력은 소프트웨어 개발 이 사회적 과정이므로 소스 코드는 사회적 개념입니다. 컴퓨터가 아닌 주로 사람 (동료 개발자 또는 같은 프로그램에서 몇 달 안에 일하는 사람)을위한 소스 코드를 작성합니다. C로 코딩 된 프로그램의 경우 종종 .c
C 파일 및 .h
헤더 파일이지만, Makefile 도 소스 코드입니다. 그러나 때로는 메타 프로그래밍 기술이 사용됩니다. 일부 프로그램은 C 코드를 생성 한 다음 입력해당 생성기의 출력 은 C 코드 인 경우에도 소스 코드로 간주됩니다 . 두 가지 예 : 구문 분석 문제에 일부 파서 생성기 ( GNU bison 과 같은 )를 사용 하면 해당 생성기 의 입력 파일이 소스 코드입니다. 또는 일부 sqlite 데이터베이스 에서 작은 awk 또는 gawk 스크립트를 작성하여 생성 된 헤더 의 큰 선언 으로 변환 될 데이터 를 추출 할 수 있습니다 . 그 데이터베이스는 소스 코드를 포함 할 것입니다!.y
enum
컴퓨터 프로그램 과 달리이 그것을 실행 컴퓨터에 관련이있다. 이것은 보통에 의해 얻어진다 컴파일 일부 소스 코드 (일부 작성 프로그래밍 언어를 ,이있는 사양 기술 문서에 영어로 작성이 봐요 n1570 에 대한 초안을 C11 ! - 소프트웨어가 아닌 도구) 바이너리로 실행 .
무료 소프트웨어에 대해서도 읽어보십시오 . 기존의 자유 소프트웨어 프로젝트의 소스 코드에 대해 자세히 알아보십시오 ( github 또는 sourceforge 를 참조하십시오 ).