development

C / C ++ 소스로 컴파일되는 프로그래밍 언어?

big-blog 2020. 12. 25. 22:44
반응형

C / C ++ 소스로 컴파일되는 프로그래밍 언어?


저는 CoffeeScript사용하여 JavaScript 개발을 더 쉽게 만들고 있습니다. JavaScript로 컴파일되는 깨끗한 구문을 가진 언어입니다.

그렇다면 구문을 단순화하거나 기능을 향상시키기 위해 C / C ++ 소스 코드로 컴파일되는 기존 프로그래밍 언어는 무엇입니까?


언어 Haxe 는 C ++, C #, Java, JavaScript, Python (실험용), PHP, Flash 및 NekoVM으로 출력 할 수 있습니다.


ValaGenie 는 GObject 유형 시스템을 사용하고 C 코드로 컴파일되는 언어입니다. 나는 그것들을 사용한 적이 없지만 흥미로워 보입니다. GObject는 GTK에서 사용하는 유형 시스템이지만 GTK와 분리 가능하다고 생각합니다.


GHC (Glasgow Haskell 컴파일러) 에는 -fvia-cC로 컴파일 하는 옵션 ( )이있었습니다.

그러나 v7부터는 LLVM이 외부 C 컴파일러를 통하지 않고 네이티브 코드를 생성하는 데 사용된다고 생각합니다.


OOC 는 매우 새롭지 만 아주 좋습니다.


PHP 프로그램을 C ++로 변환하는 HipHop 이 있습니다 .


Qt 문서 인용 :

Meta-Object Compiler 인 moc는 Qt의 C ++ 확장을 처리하는 프로그램입니다. moc 도구는 C ++ 헤더 파일을 읽습니다. Q_OBJECT 매크로를 포함하는 하나 이상의 클래스 선언을 찾으면 해당 클래스에 대한 Meta Object 코드를 포함하는 C ++ 소스 파일을 생성합니다. 무엇보다도 Meta Object 코드는 신호 및 슬롯 메커니즘, 런타임 유형 정보 및 동적 특성 시스템에 필요합니다. moc에 의해 생성 된 C ++ 소스 파일은 컴파일되고 클래스 구현과 연결되어야합니다.

그래서 그것은 일종의 C ++가 C ++로 바뀌는 것입니다. 당신이 찾고있는 것에 맞는지 확실하지 않습니다.


프로그래밍 언어 인 IBM Informix 4GL은 C 코드로의 다단계 변환을 거쳐 자체 런타임 라이브러리, ESQL / C (Embedded SQL in C) 런타임 라이브러리 및 시스템의 C 라이브러리와 컴파일 및 연결됩니다.

  • program.4gl -원본 소스 코드
  • program.4ec -임베디드 ESQL / C 및 확장 입력 작업이있는 C 코드
  • program.ec -ESQL / C가 내장 된 C 코드
  • program.c -순수 C 코드
  • program.o -개체 코드
  • program -실행 가능

.4ec단계는 역사적 사고의 일종이다; 원래 ESQL / C 컴파일러는 확장 입력 연산과 ESQL / C를 모두 처리했지만 확장 연산이 ESQL / C 컴파일러에서 제거되었을 때 (ESQL / C 라이브러리와 컴파일러가 상당히 재 작성되었을 때) 확장 입력 연산이 원래 ESQL / C 컴파일러에서 처리 한 코드를 조각하여 처리했습니다.

많은 사람들이 다른 언어에서 I4GL 소스를 작성하거나 I4GL 컴파일러에 제출하기 전에 밀접하게 관련된 소스 코드를 I4GL로 전처리하는 코드 생성기를 작성했습니다.


ECL (Embeddable Common Lisp) 은 Common Lisp를 C로 컴파일 할 수 있습니다.


LLVM 용 C 백엔드를 작성할 수 있다고 가정하면 거의 모든 것을 C로 변환 할 수 있지만 더 깊은 질문은 "왜?"입니다. 오늘날이 작업을 수행하는 도구가없는 이유는 C로 컴파일하려는 경우 계속해서 중간 기계 코드 언어를 대상으로하는 것이 어떨까요? (예 : LLVM 또는 JVM)

예전에는 괜찮은 vm 언어가 부족했기 때문에 C로 컴파일하는 아이디어가 좀 더 방어 적이었습니다.하지만 오늘날에는 그렇게 할 이유가 그리 많지 않습니다. 즉, 특정 해석 언어를 사용하여 C / C ++로 컴파일하는 많은 프로젝트를 찾을 수 있습니다. 예를 들어, 다음은 Python to C ++ 컴파일러입니다.

http://shed-skin.blogspot.com/


대부분의 주요 프로그래밍 언어는 Turing-complete 이기 때문에 실제로는 동등하며 그 언어로 작성된 프로그램은 서로 번역 될 수 있다고 주장 할 수 있습니다.

즉, 다른 사람들이 언급했듯이 C 코드를 생성하는 백엔드가있는 (또는 개발 초기에 사용하던) 언어 구현에서 이진 코드 생성과 관련된 복잡성을 제거했기 때문에 꽤 많은 언어가 있습니다. . 그것은 말한 코드가 실제로 읽을 수 있다는 의미가 아닙니다. 컴파일 된 형식보다 더 읽기 쉽습니다.

목록에 대한 나의 공헌에 관해서는, lexyacc "프로그램"(그것이 고려 될 수 있다면)은 일반적으로 C 코드로 변환됩니다. 끔찍하고 엉켜있는 엉망이지만 그럼에도 불구하고 C 코드는 ...


clang이 C ++를 C로 컴파일 할 수 있다고 들었습니다. 그래도 "단순화"할 것 같지는 않습니다.


대부분의 언어는 C 코드를 생성하는 데 사용할 수 있지만 실제로 수행하려는 작업에 따라 다릅니다. 실제로 코드를 읽을 수 있기를 원하십니까? Windows 응용 프로그램을 만들려고합니까?

배우기 쉽고 보편적으로 유용한 언어를 찾고 있다면 Python은 항상 좋은 선택이며 C / C ++가 할 수있는 모든 것을 할 수 있습니다.


Oracle의 PRO * C / C ++는 임베디드 SQL 언어입니다. 임베디드 SQL 문을 필요한 C / C ++ SQL 라이브러리에 대한 함수 호출로 대체하는 사전 컴파일러에 의해 처리되는 C / C ++에 SQL 문을 포함 할 수 있습니다. 프리 컴파일러의 출력은 실행 파일로 컴파일 할 수있는 표준 C / C ++입니다.

http://en.wikipedia.org/wiki/Pro*C
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14407/toc.htm


Matlab (Embedded Matlab)의 하위 집합은 C로 컴파일 할 수 있습니다. 임베디드 코더 도구 상자가 필요합니다.

참조 URL : https://stackoverflow.com/questions/6498850/programming-languages-that-compile-into-cc-source

반응형