3

인터프리터가 아닌 컴파일러는 인터프리터와 마찬가지로 문제가되지 않아야 입력을 변환하고 실행하지 않아도됩니다. 따라서 통역사를 쓰지 않을 것입니다. Ruby 나 PHP가 너무 느리다고 가정 해 봅시다.작성된 현대적이고 오래된 컴파일러는 무엇입니까?

그러나 컴파일러는 어떻습니까?

신속한 개발을 특징으로하는 스크립팅 언어로 컴파일러를 작성한다면 최소한 하프로 소스 코드와 초기 개발 시간을 줄일 수 있습니다. 적어도 그렇게 생각합니다.

알아 두어야 할 사항 : 스크립팅 언어 란 프로그래머가 프로그래밍을 더 빠르고 쉽고 즐겁게 만들 수있는 일반적인 기능을 가진 언어를 해석하는 것을 의미합니다. 예 : PHP, 루비, 파이썬은, 어쩌면 자바 스크립트는하지만 그 컴파일러가 정상적으로에 기록 된 어떤 컴파일러

  • 에 대한 이상한 선택이 될 수 있습니다? C, C++ 또는 Assembler와 같은 저급 수준의 응답을하는 이유는 무엇입니까?

  • 스크립팅 언어로 작성된 컴파일러가 있습니까?

  • 컴파일러 작성에 저수준 또는 고급 프로그래밍 언어를 사용할 때의 이점은 무엇입니까?

+3

C++로 코드를 작성하는 것이 빠르고 쉽고 재미 있습니다. –

+0

GO 언어에 대한 Google Tech Talk (http://www.youtube.com/watch?v=rKnDgT73v8s)는 컴파일러에게 큰 관심사입니다. 컴파일러 속도는 여기에서 중요한 특징입니다. –

+0

@Neil, C++ 초보자에게 ;-) –

답변

1

대부분의 컴파일러는 C 또는 C++로 작성되었습니다. 오늘날에도 컴파일러의 성능이 중요합니다. 900 파일 프로젝트를 컴파일해야하는 경우 2 분 또는 20 분이 걸리면 차이가 발생합니다.

일부 컴파일러는 스크립팅 언어로 작성됩니다 (Python에서 Python으로 작성된 Pyjamas라는 한 가지 예가 마음에 들지만). 업계 최고의 컴파일러의 대부분은 C & C++로 작성되었습니다.

+0

바보 같은 점은 C와 C++ 모두에서 끔찍한 문자열 처리 코드를 작성하는 것이 너무 쉽다는 것입니다. 물론 이것은 이러한 언어의 잘못이 아니지만 마술처럼 빠르지는 않습니다. 고속 컴파일러를 얻는 것은 주로 데이터 구조와 알고리즘을 지능적으로 사용하는 것입니다. (재밌네, 그게 거의 모든 고성능 프로그래밍에 관한거야!) –

6

대부분의 컴파일러는 대상 프로그래밍 언어 (bootstrapping)로 작성됩니다.

물론 수많은 예외가 있습니다.

+0

객관적이고 검증 가능한 진실 일 때 왜 반대표를 던집니까? –

+0

나는 downvote를하지 않았지만, FORTRAN과 COBOL의 경우에는 2를 제외하고는 사실이 아닙니다. 당신의 주장을 뒷받침 할 통계가 있다면, 그것을 제공하십시오. –

+0

또 다른 예는 Ada 컴파일러와 같이 GNU와 함께 제공되는 언어이거나 나머지 GCC 도구 세트와 마찬가지로 C에서 작성된 'gcj'입니다 –

0

이들은 주로 비교적 높은 수준의 언어 (C/C++)로 작성되었습니다. 그러나 현대 하드웨어에서는 관리 언어 (C#/Java), 함수 언어 (Haskell) 또는 더 나은 관리 언어 (Nemerle)로 작성된 컴파일러를 사용하는 것이 완벽합니다.

기능적 언어는 구문 분석 트리/AST를 훨씬 쉽게 처리 할 수있는 pattern matching이라는 기술을 사용합니다.

실제 컴파일러는 특정 언어로 된 언어에 대한 컴파일러를 작성하고 있습니다 (bootstrapping이라는 프로세스).

0

컴파일하면 Spolsky 조엘 컴퓨터 또는으로 할 수있는 가장 연산 집약적 인 것들 중 하나입니다 그것을두고 : 컴파일 된 언어

코드 작성이 마지막 일의 하나입니다 여전히 수 ' 정원에서 즉시 수행 할 수 다양한 가정용 컴퓨터.

따라서 C 및 C++ 자연 선택을 가능한 한 빨리 수행 할 수있는 컴파일러가 필요하지 않습니다.

+0

코드를 작성하거나 컴파일 중입니까? 나는 초고속 C 컴파일러를 보았다. (C++은 더 어렵습니다.) 코드의 실제 작성은 느립니다. 창조적이고 인간적인 과정이기 때문에 진정한 알고리즘으로 변환 할 수는 없습니다. (우리가 가지고있는 알고리즘은 하나의 언어를 다른 언어, 즉 컴파일로 변환합니다.) –

0

pypy이라는 파이썬 용 원시 파이썬 컴파일러가 있습니다.

0

또한

http://www.meta-alternative.net/mbase.html

:, 예컨대을 효율적으로 컴파일러를 구현하기위한 전문적인 프로그래밍 언어가 있습니다 아이러니, JetBrains의 MPS, 좀 더.

일반적으로 기능 언어는이 영역에서 매우 효율적입니다. 특히 대수 데이터 유형이있는 언어, 예를 들어 하스켈, ML (F #, OCaml), Nemerle, Scala와 같은 패턴 일치와 같은 패턴이 있습니다.

0

SUN/Oracle JVM의 javac 컴파일러는 Java로 작성되었습니다. 편집 할 때 백그라운드 컴파일을 위해 Eclipse IDE 내에서 사용되는 Java 컴파일러와 동일합니다. 함수형 언어는 대개 컴파일러 작성에 매우 적합하기 때문에 많은 함수형 언어 용 컴파일러가 해당 언어로 작성되는 경우가 많습니다. 제한된 언어 용 컴파일러 (예 : GLSL/OpenCL과 같은 GPU 프로그래밍)는 GPU에서 실행 가능한 언어로 작성되지 않습니다.

하나의 근본적인 문제는 주어진 컴파일러에 의해 컴파일 된 언어가 컴파일러를 구현하기에 좋은 언어가 아닐 수 있다는 것입니다. Fortran에서 FORTRAN 용 컴파일러를 작성하는 사람은 누구에게도 알지 못합니다.

본질적으로 컴파일러의 구현 언어는 관련 언어의 적합성과 개발 시간, 필요한 런타임 성능, 도구 가용성 및 기타 기준의 호스트에 따라 해당 컴파일러의 입력 언어 일 수도 있고 아닐 수도 있습니다. 개발자 친숙.