컴파일러 란 무엇입니까?
컴파일러는 사람이 읽을 수있는 텍스트 파일을 컴퓨터가 더 쉽게 이해할 수있는 형식으로 변환하는 특수한 유형의 컴퓨터 프로그램입니다. 가장 기본적인 수준에서 컴퓨터는 1과 0의 두 가지만 이해할 수 있습니다.이 수준에서 인간은 매우 느리게 작동하며 이해할 수없는 긴 문자열 1과 0에 포함 된 정보를 찾습니다. 컴파일러는 이러한 격차를 해소하는 컴퓨터 프로그램입니다.
처음에 컴파일러는 컴퓨터가 이해 한 1과 0의 비트로 만 심볼을 변환 할 수있는 매우 간단한 프로그램이었습니다. 프로그램은 또한 매우 간단하며 원래 손으로 컴퓨터가 이해할 수있는 데이터로 변환 된 일련의 단계로 구성되었습니다. 이 작업은 시간이 많이 걸리는 작업이므로이 작업의 일부는 자동화되거나 프로그래밍되어 첫 번째 컴파일러가 작성되었습니다. 이 프로그램은 단계별 프로그램을 실행하는 데 필요한 단계를 모으거나 컴파일했습니다.
이 간단한 컴파일러는보다 복잡한 컴파일러를 작성하는 데 사용되었습니다. 최신 버전에서는 더 많은 규칙을 컴파일러 프로그램에 추가하여 인간 프로그래머가보다 자연스럽게 언어를 사용할 수 있습니다. 이를 통해 프로그램 작성이 쉬워지고 더 많은 사람들이 프로그램 작성을 시작할 수있었습니다. 더 많은 사람들이 프로그램 작성을 시작함에 따라 프로그램 작성에 대한 더 많은 아이디어가 제공되어보다 복잡한 컴파일러를 만드는 데 사용되었습니다. 이런 식으로, 컴파일러 프로그램은 계속 발전하고 개선하며 사용하기가 더 쉬워집니다.
컴파일러 프로그램도 전문화 할 수 있습니다. 특정 언어 구조는 다른 언어보다 특정 작업에 더 적합하므로 특정 작업 또는 언어를 위해 특정 컴파일러가 개발되었습니다. 일부 컴파일러는 다단계 또는 다중 패스 입니다. 첫 번째 패스는 매우 자연스러운 언어를 사용하여 컴퓨터가 이해할 수있는 언어에 더 가깝게 만들 수 있습니다. 두 번째 또는 세 번째 단계는 최종 단계 인 실행 파일로 전달할 수 있습니다.
다단계 컴파일러의 중간 출력은 일반적으로 의사 코드 라고합니다. 컴퓨터에서는 사용할 수 없기 때문입니다. 의사 코드는 컴퓨터 프로그램과 같이 매우 체계적으로 구성되어 있으며보다 자연스러운 언어처럼 자유롭게 흐르고 자세하지 않습니다. 최종 출력은 실제로 실행 파일 이기 때문에 실행 파일 이라고합니다. 이와 같이 작업을 분할하면 각 하위 작업이 다르므로보다 복잡한 컴파일러를보다 쉽게 작성할 수 있습니다. 또한 컴퓨터가 요청한 내용을 이해하는 데 문제가있는 위치를 컴퓨터가 쉽게 파악할 수 있도록했습니다.
프로그램 이해에서 컴파일러를 제한하는 오류를 구문 오류 라고 합니다 . 프로그램 기능 방식의 오류를 논리 오류 라고 합니다 . 논리 오류는 발견하고 수정하기가 훨씬 어렵습니다. 구문 오류는 철자 오류와 비슷하지만 논리 오류는 문법 오류와 비슷합니다.
크로스 컴파일러 프로그램도 개발되었습니다. 크로스 컴파일러를 사용하면 특정 제조업체가 설계 한 한 컴퓨터에 대해 작성된 텍스트 파일 명령 세트를 다른 제조업체가 다른 컴퓨터에 대해 컴파일하고 실행할 수 있습니다. 예를 들어, Intel 컴퓨터에서 실행되도록 작성된 프로그램은 때때로 Motorola에서 개발 한 컴퓨터에서 실행되도록 크로스 컴파일 될 수 있습니다. 이것은 종종 잘 작동하지 않습니다. 컴퓨터 프로그램이 작동하는 수준에서 컴퓨터 하드웨어는 사용자와 비슷하더라도 매우 다르게 보일 수 있습니다.
크로스 컴파일은 한 컴퓨터가 다른 컴퓨터를 에뮬레이트하는 것과 다릅니다. 컴퓨터가 다른 컴퓨터를 에뮬레이트하는 경우 다른 컴퓨터 인 것처럼 가장합니다. 두 개의 프로그램, 즉 다른 컴퓨터 인 척하는 프로그램과 실행중인 프로그램이 동시에 실행되므로 에뮬레이션은 크로스 컴파일보다 속도가 느립니다. 그러나 크로스 컴파일이 작동하려면 프로그램을 설명하는 원래의 자연 언어 텍스트와 프로그램이 다른 컴퓨터에서 실행되도록 작동 할 수있는 원래 컴퓨터와 충분히 유사한 컴퓨터가 모두 필요합니다. 이것이 항상 가능한 것은 아니므로 두 기술이 모두 사용됩니다.