2010-12-02 20 views
15

Tengo afinidad por python, pero trabajo en un entorno .NET, así que estaba investigando Iron Python, y preguntándome para qué se usaría.Iron Python: cuáles son los buenos usos de Iron Python

¿Podría escribir una aplicación en él? ¿o es para agregar un lenguaje de scripting a tu aplicación?

¿Cómo lo usan?

+0

¿Qué parte del sitio web http://www.python.org encuentra confusa? Parece proporcionar una buena visión general de Python. Tal vez podría proporcionar citas o enlaces específicos a cosas que lo confunden. –

Respuesta

23

Uno o ambos :)

yo no pretender conocer un "propósito" específico para IronPython pero ciertamente puedo puede utilizar para escribir aplicaciones, y puedo usar para las secuencias dentro de una una aplicación .NET más grande.

Aparte de todo lo demás, es una forma práctica de facilitar suavemente a los desarrolladores de Python en el mundo de .NET. (¿Por qué no aprender C# al mismo tiempo? Vamos, el agua es preciosa ...)

+1

He estado trabajando en C# desde 2.0, Python fue solo el primer idioma que aprendí, y nunca olvidas tu primera ... –

+16

"¡Adelante, el agua es preciosa, pero hay una pitón en ella!". Estupendo. –

4

Lo usamos como un lenguaje incrustado dentro de nuestro software. Tenía un artículo en mi blog, pero recientemente cambié a un nuevo sistema. Puede encontrar una versión archivada (con enlaces de imagen rotos) aquí:

Nuestros ingenieros de campo ahora usan el lenguaje incrustado para probar cosas sobre la marcha, nuestro aseguramiento de la calidad las personas lo usan para crear pequeños guiones para probar todas las funciones del hardware, etc ....

Espero que esto ayude.

1

Puede escribir una aplicación en ella, puede usarla como lenguaje de scripting en su aplicación.

Se usa para acceder a bibliotecas de Python existentes y, si es necesario, escribir partes de tu código en Python si un idioma .NET no parece lo suficientemente adecuado para ese trabajo.

2

Lo usa para escribir el código de Python que se ejecuta en la plataforma .NET. Es bueno para todo lo que Python es bueno para.

El lenguaje Python es el lenguaje Python, sin importar qué. IronPython es una implementación del tiempo de ejecución para ese idioma - el código de soporte que compila su fuente, crea una máquina virtual para ejecutar el bytecode en el archivo .pyc resultante, se comunica con el sistema operativo para poner argumentos de línea de comando en sys.argv, y todas esas otras cosas divertidas. (Bueno, está bien, la plataforma .NET también hace mucho del trabajo. :))

1

Mi experiencia de IronPython es su uso como parte del motor que se puede cambiar después de la instalación de la aplicación base .Net. Con la ayuda de Python, hemos descrito un conjunto realmente grande de reglas comerciales, que pueden modificarse a partir de la instalación de dos sistemas. Parcialmente se usó IronPython como lenguaje de complemento.

La diferencia del lenguaje de script - que después de la compilación IronPython se ejecutó como código CLR.

5
  • IronPython es simplemente otra implementación de Python. Puedes usarlo en cualquier lugar donde uses cualquier otra implementación de Python. (Limitaciones de plataforma de módulo, por supuesto   – obviamente no se puede usar IronPython en un dispositivo solo de Java.)
  • IronPython es simplemente otro compilador de .NET. Puede usarlo en cualquier lugar donde use cualquier otro lenguaje .NET.
  • IronPython es más que otra implementación de Python. Es una implementación de Python que le da acceso completo a cualquier biblioteca .NET.
  • IronPython es mucho más que otro compilador .NET. Es un compilador de .NET que le da acceso completo a cualquier biblioteca de Python.
  • IronPython es un motor de secuencias de comandos integrables para cualquier aplicación .NET, biblioteca y marco.
4

Creo que la familia de idiomas Iron es principalmente para agregar más sabores a la plataforma, permitiéndole ingresar a .NET usando un lenguaje que le es familiar. Disminuye mucho la barra para obtener nuevas personas con diferentes antecedentes en .NET

Aunque la sintaxis es Python, la implementación sigue desarrollándose sobre la CLR y el producto final no será muy diferente si usted decide ir a un proyecto de IronPython en lugar de decir C#.

He tenido cierta experiencia con IronPython y encuentro agradable trabajar con ella (por supuesto, me gusta mucho el lenguaje). IronPython ahora es considerado un ciudadano de primera clase por parte de Microsoft, y esa es también la impresión que se obtiene al usarlo. Sin embargo, una desventaja de su uso es que no está tan ampliamente adoptado como los dos idiomas principales, lo que causa algunos problemas a la hora de colaborar y mantener una base de códigos a lo largo del tiempo.

Me pareció particularmente útil al hacer un puerto .NET de un algoritmo de búsqueda que se implementó por primera vez en Python.

En cuanto a agregar capacidades de scripting a su aplicación, esa no es probablemente la intención original de IronPython, pero ya se ha hecho. Umbraco CMS tiene (o al menos tenía) la capacidad de crear widgets utilizando Python como un lenguaje de scripting dinámico dentro de su plataforma. Una característica muy buena para tener.

debería seguir adelante y probarlo .. Siempre es bueno tener más herramientas en el cinturón :)

1

Creo Resolver Systems construyeron sus productos con IronPython. Así que definitivamente hay un uso real de IronPython.

También se solicitó anounced que portarán NumPy a IronPython y .Net. Esto ciertamente ampliará el atractivo de IronPython.

1

Primero: IronPython es realmente más un compilador que un intérprete en el sentido más estricto: se usará para generar ensamblajes .NET a partir de los archivos fuente de python. Así que sí, puedes escribir aplicaciones y casi todo lo que el .NET Framework puede hacer.

Uno de los mayores beneficios de IronPython es que tiene (efectivamente) no GIL, lo que significa que si ambos escriben código Python y tiene varios subprocesos, a menudo puede obtener un rendimiento mejor que CPython sin tener que engendrar múltiples procesos y encurtir objetos a través de los límites. No resuelve el problema de concurrencia, pero .NET proporciona construcciones mucho más robustas para manejarlo. Creo que esto es bastante nicho honestamente, pero ciertamente está ahí.

La página wiki python.org para IronPython listas de un manojo de los diferenciadores clave, así:

6

IronPython con WPF es la manera más productiva para diseñar una interfaz gráfica de usuario que yo sepa. Casi toda la aplicación que se muestra a continuación está escrita en IronPython. Solo las partes muy pequeñas se realizan en C# o C++/CLI por motivos de rendimiento.

Claro, te falta algo de integración WPF/C#, pero ganas mucho más en el lado de la productividad.

alt text

IronPython es también mucho más fácil de extender que CPython. Tome su código C++ y simplemente agregue un pequeño contenedor C++/CLI encima. CPython no tiene nada que sea tan fácil como esto. Esa es la razón por la que comencé a usar IronPython, porque me cansé de escribir wrappers para mi código C++ en CPython. Boost.Python, SWIG y similares no funcionaron para mí.

+1

Esta aplicación se ve muy interesante. Combina wpf y productividad. ¿Es posible elaborarlo más? P.ej. Un tutorial sobre este tema? – liang

1

Puede usarlo para cosas interesantes como tener un servidor web incorporado dentro de su aplicación que se puede desarrollar con uno de los frameworks web de Python disponibles. Es mucho más fácil y más fácil de desarrollar que un servidor web ASP.NET dentro de su aplicación. CherryPy, por ejemplo, también viene con un servidor web incorporado que debería funcionar bien con IronPython con algunas pequeñas modificaciones.

8

El mayor beneficio de IronPython es que acerca mucho el mundo de Python y .NET.

Si tiene bibliotecas (asambleas) escrito en C# puede importar los directamente en IronPython y se utilicen, así:

import clr 
clr.AddReferenceToFileAndPath('MyAssembly.dll') 

import MyNamespace 

c = MyNamespace.MyClass() 

c.MyFunction() 

Esto es muy agradable para la reutilización de exisiting código .NET cuando scripting o incluso interactiva usar con el intérprete IronPython.

Ordinario CPython requiere Python .NET para hacer lo mismo o cosas similares. En mi experiencia, Python .NET funciona la mayor parte del tiempo, pero no siempre, y IronPython proporciona una experiencia mucho más refinada en el acceso a .NET desde Python.

IronPython probablemente demorará siempre la implementación de referencia de CPython en términos de soporte de biblioteca estándar, etc., pero en general el desarrollo no se queda atrás, que sería difícil trabajar con un fondo de CPython.

Por último, hay algunos sustanciales differences entre CPython y IronPython, a lo que hay que prestarle atención. Ejemplo: recolección de basura (me mordió el otro día ...).

+0

Considero que esta es la mejor manera de probar el código, probar la usabilidad del código y evitar el lanzamiento de funciones internas inútiles que manchan el código heredado sin ningún motivo. – Mitzi

Cuestiones relacionadas