2011-02-17 1 views

답변

2

외관상으로는 제한이 심하며 전체적으로 프로그래밍하기가 훨씬 적습니다. 상상해보십시오. 이것은 PyPy를 구현하는 데 필요하지만 일반적으로 Python과 상호 작용할 수있는 빠른 컴파일 된 코드를 원한다면 Cython (CPython 확장을 대상으로하며 거의 모든 Python을 완벽하게 지원할 수 있음)을 사용하거나보다 일반적인 코드 이것을 할 수있는 언어. 빠르고, 컴파일 된 코드 만 원한다면 ... RPython은 예를 들어, C,하지만 여전히 중요한 이점은 보이지 않습니다. 적어도 사용 가능하고 안정적인 언어를 만들려는 노력은 아닙니다.

2

왜 RPython으로 직접 작성하고 싶습니까?

Python 코드에서 훨씬 더 단순 해 보이며 PyPy를 실행합니다.

왜 C 코드를 작성하고 싶습니까?

그것은 너무 간단 파이썬을 작성하고 PyPy가 C

에서 구현 될 것 같다 내가 어셈블러 코드를 작성하고 싶을 왜

?

파이썬을 작성하고 어셈블러에서 구현 된 C 및 C에서 PyPy를 구현하는 것이 훨씬 간단 해 보입니다.

나는 정말 인 것 같아요.

왜 가장 편리한 언어 사용을 중단하고 덜 편리한 언어로 전환하고 싶습니까?

좋은 언어를 포기할 때 가치는 무엇입니까?

+0

컴파일 된 RPython 프로그램은 특정 문제 (루프가있는 클래스)에 대해 Python보다 훨씬 빠르게 처리 할 수 ​​있습니다. – highBandWidth

+2

나에게 JIT 핸들로 PyPy하지 않을 것인가? –

+3

PyPy의 JIT 때문에 더 이상 참이 아닙니다. – fijal

17

저는 다른 사람들과 이야기 할 수는 없지만, 저는 개인적으로 RPython을 범용 언어로 사용하는 것에 매우 관심이 있습니다. 다른 사람들의 질문에 대답하려면 :

왜? Cython은 사용 방법을 파악하는 데 어려움이 있기 때문에 당신이 까다로운 타입의 선언을 올바르게 넣지 않는다면, 속도 향상을 얻지 못할 것입니다. RPython을 사용하면 빠르게 실행되거나 전혀 실행되지 않습니다.

PyPy를 사용하면 속도는 향상되지만 현재 RPython 만큼은 아닙니다.

RPython은 초고속, 다소 Pythonic 코드를 얻는 좋은 방법 일 수 있습니다. Here's an example을 참조하십시오. 불행히도이 작업을 수행하는 큰 프로젝트를 알지 못합니다.

+0

이것을 @fijal과 @SLott에 연결하면, JIT가있는 pypy의 최신 버전이 요인 예에서 어떤 역할을하는지 알면 좋을 것입니다. – highBandWidth

+0

Cython은 알아 내기 힘들고, 설명 할 수 없을 정도로 빠르지 않은 코드를 제공합니다. RPython은 알아야 할 고통이며, 번역 프레임 워크의 내장에서 던져지는 불가분의 예외로 컴파일이 불가능한 코드를 제공합니다. RPython 코드는 Pythonic도 아닙니다. Python을 메타 프로그래밍 언어로 사용하여 컴파일 타임 계산을 할 수 있습니다. – Ben

+0

@Ben : 끔찍한 오류 메시지에 익숙해졌습니다. 그리고 실제로 문서를 읽는다면 알아내는 것이 정말 고통스럽지 않습니다. 더 익숙해지는 것이 고통입니다. 당신은 단지 당신의 두뇌를 전환해야합니다. 아, 원시가 아닌 유형 (즉, 사용자 정의 클래스)은 다른 비 기본 유형과 동일한 컨테이너에 저장 될 수있는 것 같습니다. 기본적으로 포인터가없는 다형성입니다. 산뜻한. – refi64

11

예, RPython을 사용하여 독립형 실행 파일과 라이브러리를 만드는 PyPy의 번역 도구 체인을 사용하는 프로젝트가 이미 있습니다. RPythonic이라고합니다.

4

일반적인 목적의 RPython은 CPython과 PyPy의 경쟁자가 아닙니다. 그것은 심지어 Cython과 같은 것들을위한 경쟁자가 아닐 것입니다.

왜? 때문에 RPython은 파이썬 아니 !!RPython은 파이썬과 일부 구문을 공유하는 언어 일뿐입니다. 파이썬 인터프리터가 RPython 코드 인 을 실행할 수있을만큼 충분하지만 파이썬 코드를 가져 와서 RPython으로 컴파일 할 수는 없습니다.

RPython을 정적으로 유형 지정하고 컴파일 할 수 있도록 추가 된 Python의 제한 사항 (실제로는 정적 유형 유추를 가짐)은 언어를 완전히 변경하기에 너무 심각합니다. RPython 프로그램을 작성하려면 RPython으로 작성하고 작성해야합니다. 파이썬으로 프로그램을 작성한 다음 RPython으로 컴파일하기로 결정할 수는 없으며 실제 파이썬 프로그램을 약간 수정하여 RPython으로 만들 수도 없습니다. 일반적인 파이썬 코드는 일반 RPython 코드와 같지 않습니다. RPython을 작성하는 것은 Java 또는 C#을 작성하는 것과 유사합니다.

그래서 파이썬으로 일반 프로그램을 작성하려고하지만 더 빨리 가고 싶다면 RPython은 거의 제공하지 않습니다. 그것이 PyPy의 Python 인터프리터가 채우려 고 시도하는 틈새입니다.

파이썬보다 빠르게 실행해야하기 때문에 일반 프로그램을 낮은 수준의 컴파일 언어로 작성하려면 Java 또는 C#과 같은 기존의 매우 성숙한 언어와 라이브러리가 있어야합니다.

RPython을 코딩하는 이유는 특히 RPython에 의해 더 잘 만들어진 것입니다. 직접 쓰지 않고도 가비지 컬렉터와 JIT 컴파일러를 추가 할 수있는 인터프리터를 작성하는 것과 같습니다! 여기 RPython이 빛을 발합니다. 예, 더욱 세련되고 유용한 RPython 인터프리터 작성 환경에 관심이 많습니다. 그러나 RPython의 전문 분야에서 특별히 이득이되지 않는 프로그램을 작성하기위한 범용 프로그래밍 언어로서, 이미 그 역할을 더 잘 채울 수있는 기존 언어와 경쟁 할 수있는 지점에 도달하는 것은 엄청난 양의 작업 일뿐입니다. 예를 들어 파이썬의 광범위한 표준 라이브러리가 RPython에서 사용할 수 없기 때문에 간신히 표준 라이브러리가 있습니다.