¿Hay algún interés en el desarrollo de la Rpython (Restricted Python)PyPy project como un lenguaje de programación de propósito general? Tal vez podría ser un tenedor del proyecto PyPy. ¿Existe tal proyecto? Dado que los programas están compilados, uno podría simplemente contribuir con módulos escritos en Rpython, y podría competir con otras implementaciones de Python, incluyendo CPython y PyPy.Rpython PyPy como un lenguaje de programación en general
Respuesta
Por lo que parece, las restricciones son bastante severas y, en general, es mucho menos programar, supongo. Eso es necesario para implementar PyPy, pero en general, si quiere un código rápido compilado que pueda interactuar con Python, usaría Cython (que está dirigido a las extensiones de CPython y es compatible con casi todo Python sin problemas) o escriba código en uno de los más comunes idiomas que pueden hacer esto. Y si solo quieres un código compilado rápido ... bueno, RPython puede ser más agradable que, por ejemplo, C, pero aun así, no veo una ventaja significativa aquí (al menos ninguna que justifique el esfuerzo de crear un lenguaje estable y utilizable).
¿Por qué querría escribir directamente en RPython?
Parece mucho más simple para el código Python y ejecuta PyPy.
¿Por qué querría escribir el código C?
Parece mucho más sencillo escribir Python y han PyPy ser implementado en C
¿Por qué querría escribir código ensamblador?
Parece mucho más simple escribir Python y tener PyPy implementado en C y C implementado en Assembler.
Supongo que realmente es tortugas hasta el final.
¿Por qué querría dejar de usar el idioma más conveniente y cambiar a un idioma menos conveniente?
¿Cuál es el valor de renunciar a un lenguaje agradable?
No puedo hablar por todos los demás, pero personalmente estoy extremadamente interesado en usar RPython como un lenguaje de propósito general. Para responder las preguntas de otras personas:
¿Por qué? Debido a que Cython es un dolor para descubrir cómo usarlo. Si no hace muchas declaraciones de tipos complicados, no obtendrá ninguna aceleración. Con RPython, se ejecutará rápidamente o no se ejecutará en absoluto.
El uso de PyPy ofrece una buena aceleración, pero actualmente no es tanto como RPython.
RPython puede ser una buena forma de obtener un código superrápido y algo pitónico. Here's an example para ayudarlo a comenzar. No estoy al tanto de ningún gran proyecto para hacer esto, desafortunadamente.
Conectando esto con lo que dicen @fijal y @SLott, sería bueno ver cómo funciona la última versión de pypy con JIT en el ejemplo de los factores. – highBandWidth
Cuando a Cython le cuesta trabajo descifrarlo y le da un código que inexplicablemente no es rápido, RPython es difícil de descifrar y le proporciona un código que inexplicablemente no puede compilar con una excepción inescrutable desde las entrañas del marco de traducción. El código de RPython tampoco es para nada pitónico. Sin embargo, puedes usar Python como un lenguaje de meta-programación para hacer cómputos en tiempo de compilación, ¡lo cual es genial! – Ben
@Ben: Te acostumbras a los horribles mensajes de error. Y, si realmente lees los documentos, no es realmente penoso descubrirlo. Es más una pena acostumbrarse. Solo tienes que cambiar tu cerebro. Ah, y los tipos no primitivos (es decir, las clases personalizadas) parecen poder almacenarse en el mismo contenedor que otro tipo no primitivo. Es esencialmente polimorfismo sin puntero. Ordenado. – refi64
Sí, ya hay un proyecto para utilizar la cadena de herramientas de traducción de PyPy para crear ejecutables independientes y bibliotecas utilizando RPython. Se llama RPythonic.
Un RPython de propósito general no sería un competidor para CPython y PyPy. Ni siquiera sería un competidor para cosas como Cython.
¿Por qué? Porque RPython no es Python !!RPython es simplemente un lenguaje que comparte cierta sintaxis con Python; suficiente como para que un intérprete de Python pueda ejecutar el código de RPython, , pero no puede tomar el código de Python y compilarlo como RPython.
Las restricciones en Python que se agregan para permitir que RPython se tipifique y compile estáticamente (de hecho, para tener inferencia de tipo estático) son tan severas que cambian por completo el idioma. Si desea escribir un programa RPython, debe decidir hacerlo por adelantado y escribirlo en RPython. No puedes escribir un programa en Python y luego decidir compilarlo como RPython, y ni siquiera puedes modificar un programa de Python realista para convertirlo en RPython. El código de Python normal no se parece en nada al código RPython normal; escribir RPython es más similar a escribir Java o C#.
Así que si quiere escribir programas generales en Python pero quiere que sean más rápidos, RPython tiene muy poco que ofrecerle. Ese es el nicho que el intérprete Python de PyPy está tratando de llenar.
Si desea escribir programas generales en un lenguaje compilado de nivel inferior porque necesita que su programa se ejecute más rápido que Python, existen bibliotecas y lenguajes muy maduros para eso, como Java o C#.
La razón para codificar en RPython sería hacer algo que RPython mejora especialmente. ¡Como escribir intérpretes a los que puedes agregar colectores de basura y compiladores JIT sin tener que escribirlos a mano! Aquí RPython brilla, y sí, estaría muy interesado en un entorno de escritura de intérpretes RPython más pulido y utilizable. Pero como un lenguaje de programación de propósito general para escribir programas que no se benefician particularmente de las especialidades de RPython, simplemente sería una cantidad monstruosa de trabajo llegar al punto en el que podría competir con los idiomas existentes que ya cumplen ese rol mejor. Apenas tiene una biblioteca estándar ahora (porque casi ninguna biblioteca extensiva estándar de Python se puede usar en RPython), por ejemplo.
- 1. R como un lenguaje de programación de uso general
- 2. ¿Cómo inicializar un conjunto() en el código que se compilará como el rpython de pypy?
- 3. son generadores compatibles en RPython?
- 4. ¿Se puede usar PyPy/RPython para producir un pequeño ejecutable independiente?
- 5. Síntesis del lenguaje de programación general (Python) con lenguaje personalizado (PureData/MaxMSP/ChucK)
- 6. Lua como lenguaje de scripting de propósito general?
- 7. ¿Cómo aprender R como lenguaje de programación?
- 8. PHP como un lenguaje de programación de escritorio
- 9. ¿Qué lenguaje de programación funcional debería elegir como primer lenguaje de programación funcional?
- 10. ¿Qué califica un lenguaje de programación como dinámico?
- 11. Javascript como un lenguaje funcional
- 12. métodos sys RPython no funcionan
- 13. Siri lenguaje de programación
- 14. ¿Qué está escrito estáticamente en RPython?
- 15. ¿Qt 4 es un lenguaje de programación?
- 16. Stackless en PyPy y PyPy + greenlet - diferencias
- 17. ¿Tiene Lua un futuro como lenguaje de scripting de propósito general?
- 18. TCL como lenguaje de programación del lado del servidor
- 19. ¿Cómo crear un lenguaje de programación .Net?
- 20. ¿Qué es un lenguaje de programación formal?
- 21. ¿XSLT es un lenguaje de programación funcional?
- 22. Windows: ¿Qué lenguaje de programación?
- 23. Incrustar un lenguaje de programación en un programa
- 24. GBA ROM Lenguaje de programación
- 25. Lenguaje de programación de gráficos por computadora
- 26. Lenguaje de programación basado en Unicode
- 27. Arrays en lenguaje de programación J
- 28. Lenguaje de programación y compilador
- 29. ¿Qué características de lenguaje se requieren en un lenguaje de programación para hacer un compilador?
- 30. Escribir un gran proyecto utilizando lenguaje de programación J
Los programas compilados de RPython pueden ser mucho más rápidos que Python para ciertas clases de problemas (aquellos con bucles). – highBandWidth
¿No PyPy con un controlador JIT eso para mí? –
Ya no es cierto debido al JIT de PyPy. – fijal