sourcecode

C/C++용 CoffeeScript와 유사한 언어

copyscript 2023. 7. 23. 14:35
반응형

C/C++용 CoffeeScript와 유사한 언어

저는 C/C++을 제외하고 커피스크립트와 동일한 기능을 제공하는 언어를 찾고 있었습니다.제 말은 코드를 C로 변환하지만, 커피스크립트가 자바스크립트로 변환하는 것처럼 읽을 수 있고 읽을 수 있는 언어를 의미합니다.

저는 이것이 가능하고 심지어 바람직하다고 생각합니다. (Node.js 네이티브 모듈을 작성할 때 마지못해 C++을 다루지만) 자바스크립트와 같은 고급 언어보다 더 어렵습니다.

당신이 요구하는 것은 성능이나 유연성을 희생하지 않고 통사적인 설탕을 제공하는 언어입니다. 공백 스타일)def/end곱슬곱슬한 중괄호 대신 블록)을 추가하는 것은 사소한 일입니다.하지만 더 진보된 것을 추가하면, 정적 타이핑과 쓰레기 수거라는 두 가지 주요 장애물에 부딪히게 됩니다.

예를 들어 암묵적인 반환을 추가하려고 했다고 가정해 보겠습니다.작은 기능처럼 보이지만 생각해 보십시오.기능을 유용하게 사용하려면 마지막 식의 값이 함수의 반환 유형과 일치하지 않을 때 최소한 컴파일 시간 오류를 기록해야 합니다.즉, 컴파일러가 다음과 같은 라인을 검사해야 합니다.

a->b

어떤 유형인지 알아내야 합니다.그것은 원칙적으로 가능하지만, CoffeeScript 컴파일러보다 훨씬 더 많은 작업입니다.

또는 목록 이해를 추가했다고 가정합니다.즉, 컴파일 시 길이를 알 수 없는 배열을 할당하는 것이므로 나중에 직접 할당 취소해야 합니다.그래서 통사적인 설탕은 실제로 여러분을 해칠 수 있습니다.규칙은 "만약 당신이malloc그것, 당신free컴파일러가 다음에 추가하는 경우 "그것"은 작동하지 않습니다.malloc당신을 위해, 그것이 어디에 둘지 알아낼 수 없다면.free(일반적으로 가능하지만 많은 작업이 필요합니다.)

그래서 저는 C++에게 CoffeeScript 치료를 해주는 사람이 있었으면 좋겠지만, 조만간, 설령 그런 일이 일어날 것이라고는 생각하지 않습니다.저는 세계가 결국 시스템 수준의 프로그래밍을 위해 D나 Go와 같은 것으로 넘어갈 가능성이 더 높다고 생각합니다.

저는 OOC가 C 커피스크립트에 가장 가까운 것이라고 생각합니다.C99로 직접 컴파일되는 동적 언어(객체, 퍼스트 클래스 함수, 깨끗한 구문)에서 기대할 수 있는 많은 기능을 갖춘 프로그래밍 언어입니다.

http://ooc-lang.org/

Jacindas 목록에서 누락된 항목 하나:Vala/Genie는 Gnome이 작성한 객체를 구현하는 GObject 라이브러리가 있는 C를 대상으로 하는 컴파일러입니다.Vala는 C#과 유사한 구문이고 Genie는 Python과 유사한 구문이지만 나머지는 동일한 시스템입니다.이것은 맨 C + GObject가 그노메 사람들에게 너무 많은 고통을 주었기 때문에 실제로 만들어졌습니다.Vala는 참조 카운트 또는 소유권 추적을 기반으로 객체 및 자동 메모리 관리를 수행하며 C#과 같은 언어로 많은 것을 기대할 수 있습니다.

CoffeeScript와 같은 속성에 대해서는, 방금 에 GObject에서 생성된 코드의 종속성을 비활성화하는 실험 기능이 있어서 런타임 종속성 없이 플레인 C만 생성합니다.이렇게 하면 여러 고급 OO 기능이 비활성화되지만, 더 나은 구문, 기본 개체 시스템 및 (반)자동 메모리 관리 기능이 제공됩니다.

출력물이 얼마나 읽기 쉬운지는 모르겠지만 예쁜 프린터를 통해 실행하면 원하는 것과 매우 유사할 수 있습니다.

SugarCpp는 C++11로 컴파일할 수 있는 언어입니다.그것은 당신이 찾고 있는 것이어야 합니다.더 자세한 내용은 https://github.com/curimit/SugarCpp 를 방문하십시오.

특히 Python의 경우 다음 질문을 살펴봅니다.파이썬 프로그램을 C/C++ 코드로 변환하시겠습니까?

그들은 순수 파이썬의 하위 집합을 가져와서 독립형 C++ 코드로 변환할 Shed Skin을 언급합니다.

Cython은 일반적으로 Python 확장 모듈을 만드는 데 사용되지만 Python 인터프리터가 내장된 경우 독립 실행형 프로그램을 만들 수 있습니다.하지만 당신이 찾고 있는 것처럼 들리지는 않습니다.

Cython은 Pyrex를 기반으로 하며, 여러 면에서 서로 호환됩니다.

당신이 언급한 다른 언어들의 경우 비슷한 프로젝트들이 있는 것 같습니다.루비와 PHP.자바의 토바(더 이상 유지되지는 않지만), 알골의 마스, 베이직의 BCX, COB2C, 파스칼의 PtoC, 그리고 저는 아마도 이것이 "푸에서 C/C++로의 변환기 목록"으로 바뀌기 전에 여기서 멈춰야 할 것입니다.

도움이 되길 바랍니다!

이 새로운 프로젝트를 살펴보십시오. https://bixense.com/coffeepp/

커피++

Coffee++는 C++로 컴파일되는 작은 언어입니다.C++용 CoffeeScript와 유사한 것을 갖도록 만들어졌습니다.현재 Coffee++는 알파 상태이며 전혀 사용할 수 없거나 최종 상태가 아닙니다.참여하려면 Github에서 소스를 확인하십시오.

Coffee++의 황금률은 다음과 같습니다."그냥 C++입니다."이 코드는 1대 1로 동등한 C++로 컴파일되며 런타임 라이브러리는 없습니다.Coffee++에서 기존 C++ 라이브러리를 원활하게 사용할 수 있습니다.

개요:

소스 파일 Test.cf ++

include iostream

int main():
age := 5
dog := Dog(age)
if age != 7:
    dog.bark()

class Dog:
    public Dog(int age):
        this->age := age
    public void bark():
        std::cout << "Woof!\n"
    private int age
};

컴파일된 Test.hpp

#pragma once

int main();

class Dog {
    public:
        Dog();
        void bark();
    private:
        int age;
};

컴파일된 Test.cpp

#include "test.hpp"
#include <iostream>

int main() {
    auto age = 5;
    auto dog = Dog(age);
    if (age != 7) {
        dog.bark();
    }
}

Dog::Dog(int age) : age(age) {
}

void Dog::bark() {
    std::cout << "Woof!\n";
}

이미 발라와 지니가 언급되었으니 월간 인쇄물에서 핸드 코딩 프로그램을 떠올리지만 현대적인 GUI와 함께 사용하고 싶은 분들을 위해 BaCon(기본 변환기)을 내놓겠습니다.

Must run on each Unix/Linux/BSD platform, including MacOSX
Converted sourcecode must be compilable with GCC
Must resemble genuine BASIC with implicit variable delarations
Spoken language constructs are preferred

http://www.basic-converter.org/ 웹 사이트에는 많은 예제("BASIC"을 위한 매우 복잡한 테마 중 일부)와 거의 모든 오픈 소스 IDE용 플러그인이 있습니다. 그렇지 않으면 BACON IDE를 사용할 수 있습니다.

이건 당신이 원하는 게 아니에요, 하지만..http://www.campbell.nu/oscar/cython/index.html - 이 사이톤/사이토크는 제가 1999/2000년경 코딩한 C/C++에 대한 중요한 공간(미시적) 트랜스파일러이며, 7년 후에 도착한 사이톤 프로젝트와는 관련이 없습니다.

솔직히, 저는 펄로 썼고 정규 표현을 사용하여 휴리스틱합니다.저는 게임보이 컬러 게임의 전체 프로젝트에 사용했습니다.하지만 전 믿지 않아요그래서 먼지투성이의 늙은 벌레를 사용하는 대신에 저도 주위를 둘러보고 있습니다 ;)

후속 조치: 저는 1년 넘게 Onyx(https://github.com/ozra/onyx-lang) 에서 작업을 해왔고, 마침내 해야 할 분명한 일이 LLVM-IR 대신 C++로 컴파일하기 위해 다시 쓰는 것이라는 것을 깨달았습니다.재표적 아이디어는 신선하기 때문에 다시 쓰는 것은 여전히 증기입니다.하지만 RFC에서 당신의 의견을 잘 활용할 수 있을 것입니다. 만약 당신이 언어의 아이디어를 좋아한다면, 그것을 형성할 기회입니다.

언급URL : https://stackoverflow.com/questions/6190289/coffeescript-like-language-for-c-c

반응형