>  기사  >  백엔드 개발  >  golang 컴파일러는 무엇으로 작성되었나요?

golang 컴파일러는 무엇으로 작성되었나요?

(*-*)浩
(*-*)浩원래의
2019-12-27 14:27:023081검색

golang 컴파일러는 무엇으로 작성되었나요?

Golang의 컴파일러는 어떤 언어로 작성되나요?

'닭과 달걀, 닭고기와 달걀' 문제처럼 보이지만 실제로는 그렇지 않습니다. >                                                                                            (추천 학습: go)

이 문제의 핵심은 컴파일러 자체가 프로그램이고 그 기능은 소스 코드를 컴퓨터에서 실행 가능한 프로그램으로 변환하는 것임을 이해하는 것입니다.

C/C++, Go, Rust 등 현지 언어의 경우 그들이 컴파일하고 생성하는 대상 프로그램은 대상 플랫폼의 로컬 실행 프로그램입니다. 예를 들어, 이 세 가지 언어로 Hello World를 작성하는 경우 Windows 플랫폼에서 컴파일한 결과는 .exe 파일이어야 합니다. 이러한 .exe 파일에는 소스 언어 정보가 포함되어 있지 않습니다.

Windows는 파일을 실행할 때 알지 못하며 컴파일 전에 이러한 .exe 파일이 어떤 언어로 작성되었는지 알 필요도 없습니다. 파일을 메모리에 로드하고 명령을 하나씩 실행하기만 하면 됩니다.

컴파일러 프로그램도 마찬가지입니다.

새로운 언어 CNifeLang을 개발하려면 먼저 기존 언어로 CNifeLang 컴파일러를 작성해야 합니다. 예를 들어 Golang을 사용하세요.

Golang에서 CNifeLang 컴파일러를 작성하면 합법적인 CNifeLang 소스 코드를 성공적으로 컴파일할 수 있습니다. 동등한 대상 프로그램.

그런 다음 CNifeLang을 사용하여 Golang에서 작성한 컴파일러와 정확히 동일한 기능을 가진 프로그램을 작성합니다. Golang에 구현된 컴파일러를 사용하여 프로그램을 컴파일하면 CNifeLang에 구현된 CNifeLang 컴파일러를 얻게 됩니다.

이 프로그램의 기능은 Golang으로 작성된 컴파일러와 완전히 동일하기 때문에 이 컴파일러를 사용하여 CNifeLang을 컴파일할 수 있으므로 CNifeLang은 부트스트래핑을 구현합니다.

컴파일 원리 과정을 공부했다면 컴파일은 프로그래밍 언어와 아무런 관련이 없다는 것을 알게 될 것입니다. 모든 튜링 완전 언어를 사용하여 무엇이든 작성할 수 있습니다. 공식 언어의 경우 작성한 컴파일러가 정확하다는 것을 증명하는 엄격한 수학적 방법이 있습니다.

우리의 일반적인 프로그래밍 언어는 기본적으로 프로그래밍 언어가 성숙했다는 신호 중 하나인 부트스트래핑을 구현했습니다. 컴파일러는 복잡한 프로젝트이고 성숙한 평가 시스템을 갖추고 있기 때문에 이 언어에 대해 성숙하고 사용 가능하며 효율적인 컴파일러를 작성할 수 있다는 것은 언어를 사용할 준비가 되었음을 의미합니다.

위 내용은 golang 컴파일러는 무엇으로 작성되었나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.