크로스 컴파일러의 개발 역사
1950년대 IBM의 John Backus는 연구팀을 이끌고 FORTRAN 언어와 그 컴파일러를 개발했습니다. 하지만 당시 사람들은 편집이론에 대해 잘 알지 못했기 때문에 개발 작업이 복잡하고 힘들어졌습니다. 동시에 Noam Chomsky는 자연어 구조에 대한 연구를 시작했습니다. 그의 발견은 결국 비정상적으로 단순한 구조와 일부 자동화를 갖춘 컴파일러로 이어졌습니다. Chomsky의 연구는 문법의 용이성과 이를 식별하는 데 필요한 알고리즘을 기반으로 언어를 분류하는 것으로 이어졌습니다. 촘스키 계층구조(Chomsky Hierarchy)라고 불리는 이 체계에는 0형 문법, 1형 문법, 2형 문법, 3형 문법이라는 4가지 수준의 문법이 포함되어 있으며, 각 수준은 전자의 특별한 경우입니다. 유형 2 문법(또는 문맥 자유 문법)은 프로그래밍 언어 중 가장 유용한 것으로 입증되었으며 오늘날 프로그래밍 언어를 구성하는 표준 방식을 나타냅니다. 구문 분석 문제(문맥 자유 문법 인식을 위한 효과적인 알고리즘)에 대한 연구는 1960년대와 1970년대에 수행되었으며 이 문제를 아주 완벽하게 해결했습니다. 이는 편집 철학의 표준 부분이 되었습니다.
유한 자동화와 정규 표현식은 문맥 자유 문법과 밀접한 관련이 있으며 Chomsky의 Type 3 문법에 해당합니다. 이에 대한 연구는 촘스키의 연구와 거의 동시에 시작되어 프로그래밍 언어에서 단어를 상징적으로 표현하는 방식으로 이어졌습니다.
이후 사람들은 효과적인 객체 코드를 생성하는 방법을 개선했으며 이것이 원래의 컴파일러였으며 오늘날에도 여전히 사용되고 있습니다. 사람들은 이를 최적화 기법이라고 부르는데 실제로는 최적화된 대상 코드를 얻지 못하고 효율성만 향상시키기 때문에 실제로는 코드 개선 기법이라고 불러야 합니다.
분석 문제가 이해하기 쉬워지자 사람들은 컴파일러의 자동 구성 중 이 부분을 연구하기 위해 프로그램 개발에 많은 노력을 기울였습니다. 이러한 프로그램은 원래 컴파일러 컴파일러라고 불렸지만 자동으로 컴파일의 일부만 처리하기 때문에 파서 생성기라고 더 정확하게 불립니다. 이러한 프로그램 중 가장 유명한 것은 1975년 Steve Johnson이 Unix 시스템용으로 작성한 Yacc(Yet Another Compiler-compiler)입니다. 마찬가지로, 유한 상태 오토마타에 대한 연구에서는 스캐너 생성기라는 도구도 개발했는데, 그 중 Lex(Mike Lesk가 Yacc와 동시에 Unix 시스템용으로 개발함)가 선두주자입니다.
1970년대 후반과 1980년대 초반에는 코드 생성을 포함하여 컴파일러의 다른 부분 생성을 자동화하는 데 중점을 둔 많은 프로젝트가 있었습니다. 이러한 시도는 거의 성공하지 못했습니다. 아마도 너무 복잡하고 이해가 부족했기 때문일 것입니다.
최근 컴파일러 디자인의 발전은 다음과 같습니다. 첫째, 컴파일러에는 프로그램의 정보를 추론하거나 단순화하는 데 사용되는 더 복잡한 알고리즘의 응용 프로그램이 포함되어 있으며 이는 결국 함께 결합된 더 복잡한 프로그래밍 언어의 개발과 관련이 있습니다. . 그 중 대표적인 것이 함수형 언어 컴파일을 위한 Hindley-Milner 유형 검사의 통합 알고리즘입니다. 둘째, 컴파일러는 편집기, 링커, 디버거 및 프로젝트 관리 프로그램을 포함하는 창 기반 IDE(대화형 개발 환경)의 일부가 되어가고 있습니다. 이런 IDE 표준은 많지 않지만, 표준 윈도우 환경의 발전이 방향이 되었습니다. 한편, 컴파일 원리 분야에 대한 많은 연구에도 불구하고 기본 컴파일러 설계 원리는 지난 20년 동안 크게 변하지 않았으며, 급속히 컴퓨터 과학 과목의 중심 연결 고리로 자리잡고 있습니다.
1990년대에는 GNU 프로젝트나 기타 오픈소스 프로젝트의 일부로 많은 무료 컴파일러와 컴파일러 개발 도구가 개발되었습니다. 이러한 도구는 모든 컴퓨터 프로그래밍 언어를 컴파일하는 데 사용할 수 있습니다. 이러한 프로젝트 중 일부는 고품질로 간주되며 현대 컴파일 이론에 관심이 있는 사람들은 무료 소스 코드를 쉽게 사용할 수 있습니다.
1999년경 SGI는 산업용 병렬 최적화 컴파일러 Pro64의 소스 코드를 출시했습니다. 이 컴파일러는 나중에 전 세계의 많은 컴파일러 연구 그룹에서 연구 플랫폼으로 사용되었으며 Open64라는 이름을 갖게 되었습니다. Open64는 우수한 디자인 구조와 포괄적인 분석 및 최적화를 갖추고 있어 컴파일러에 대한 고급 연구에 이상적인 플랫폼입니다.