다양한 소프트웨어 개발 도구와 함께 컴퓨터 프로그래밍에 사용되는 언어는 수년에 걸쳐 발전해 왔습니다.
첫 번째 컴퓨터는 콘솔에서 스위치로 입력 한 숫자로 프로그래밍되었습니다.
사람들은 소프트웨어를보다 쉽고 빠르게 만드는 데 사용할 수있는 언어와 소프트웨어를 개발하기 시작했습니다. 첫 번째 주요 개발은 소스 코드의 각 라인이 컴퓨터 프로그램에 의해 기계어 명령으로 변환되는 어셈블러 언어를 작성하는 것이 었습니다. 이와 함께 링커 (기계 코드 조각을 더 큰 조각으로 연결 함)가 개발되었습니다. 어셈블러는 어셈블리 언어 용으로 설계된 C/C++ 프리 프로세서와 비슷한 매크로 또는 선처리 기능을 추가하여 향상되었습니다.
그런 다음 사람들은 어셈블러가 아닌 언어로 작성된 사람들처럼 보이는 프로그래밍 언어를 만들었습니다 (예 : FORTRAN 및 COBOL 및 ALGOL). 이러한 언어는 읽기가 쉬우 며 한 줄의 소스가 여러 기계 명령어로 변환 될 수 있으므로 어셈블러보다는 이러한 언어로 컴퓨터 프로그램을 작성하는 것이 더 생산적이었습니다.
C 프로그래밍 언어는 FORTRAN과 같은 초기 프로그래밍 언어에서 얻은 교훈을 사용하여 나중에 구체화되었습니다. 그리고 C는 이미 존재하던 링커 같은 이미 존재했던 것과 동일한 소프트웨어 개발 도구를 사용했습니다. C++은 객체 지향적 인 기능을 도입 한 C의 세련미부터 시작하여 나중에 C++가 발명되었습니다. 실제로 첫 번째 C++ 컴파일러는 C++ 소스 코드를 C 소스 코드로 변환 한 C++ 변환기였습니다.이 소스 코드는 C 컴파일러로 컴파일되었습니다. 그러나 현대의 C++은 C++ 표준의 모든 기능을 템플릿, 람다 및 C++ 11 이상의 모든 기타 기능과 함께 제공하기 위해 코드를 직접 작성합니다.
C 또는 C++ 소스 파일에서 응용 프로그램을 만드는 기본 단계는 다음과 같습니다. (1) 소스 파일이 생성됩니다 (2) 소스 파일이 컴파일됩니다 (실제로는 전처리 기와 컴파일), (3) C/C++ 컴파일러에서 만든 개체 파일을 연결하여 .exe
컴퓨터 프로그램의 한 버전을 다른 버전으로 변환하는 단계가 있습니다. C++ 소스는 오브젝트 파일을 생성하도록 컴파일됩니다. 그런 다음 오브젝트 파일을 링크하여 실행 파일을 생성합니다.
프로그램을 실행하면 실행 파일이 실행됩니다. 실행 파일에는 여러 종류의 정보가 들어 있습니다. 첫 번째는 C++ 소스 코드를 컴파일 한 결과 인 기계 명령어입니다. 다른 하나는 로더가 실행 파일을 메모리로로드하는 방법을 알기 위해 사용하는 정보입니다.
예전에는 모든 라이브러리와 오브젝트 파일이 실행 파일에 링크되었으며 실행 파일은 로더에 의해로드되었고 로더는 매우 간단했습니다.
그런 다음 사람들은 공유 라이브러리와 동적 링크 라이브러리를 고안했으며 이로 인해 더 복잡한 로더가 필요했습니다. 로더는 실행 파일을 메모리에로드하여 실행을 시작할 수있을뿐만 아니라 로더는 필요한 공유 라이브러리 또는 동적 링크 라이브러리도 찾아로드해야합니다. 또한 로더는 추가 구성 요소 인 공유 라이브러리를 일정량 연결해야하므로 로더가 이전보다 훨씬 많은 작업을 수행합니다.
컴퓨터에서 (실행), 다음 링커는 그 객체는 실행 파일을 생성, 파일을 함께 연결합니다. – 0x499602D2
당신의 책의 비유와 함께,'printf ("Hello, world! \ n");'는 "우리가 쓰는"부분이므로 객체 코드는'printf'를 호출하는 명령을 가질 수 있습니다. 표준 라이브러리는 실제로'printf'를 구현하는 부분입니다 (어떻게 인쇄 할 예정입니까 ??). 그것이 차이점입니다. 물론 일반적으로 C++에서는'cout << "Hello, world! \ n"; "라고 쓰지만 첫 번째 프로그램은 아이디어가 같습니다. – Brandin