Pregunta

Después de haber examinado cada uno de estos dos proyectos, parece que ambos son MUY similares. Ambos se ejecutan sobre la CLI, ambos tienen una sintaxis de estilo python, ambos usan .NET en lugar de las bibliotecas estándar de python.

Entonces, ¿cuáles son las diferencias entre ellos y las ventajas de cada uno?

¿Fue útil?

Solución

La principal diferencia, según veo, es que Boo está estáticamente tipado, lo que significa que el tipo de una variable se infiere en su primera asignación y se fija desde allí, mientras que IronPython tiene el " real " comportamiento dinámico del código Python normal.

IronPython es oficialmente mantenido por Microsoft ahora y apunta al nuevo Dynamic Language Runtime en la versión 2.0. Sospecho que debido a su naturaleza estáticamente tipada, Boo podría ser más rápido. No tengo mucho "real" experiencia con eso sin embargo ...

IronPython también reimplementa gran parte de la biblioteca estándar de Python para que pueda ejecutar gran cantidad de software de Python sin cambios en IronPython (por ejemplo, Django ).

Otros consejos

Boo está estáticamente escrito, pero tiene una escritura de pato opcional (que, según mi experiencia, funciona bastante bien). Boo también está específicamente diseñado para ser `` amigable para la muñeca '' - en otras palabras, para minimizar la necesidad de usar combinaciones de teclas Shift. Tiene buen soporte IDE en SharpDevelop .

Como es bastante evidente, Boo se inspira mucho en Python, pero también está diseñado para aprovechar las características de .NET.

En cuanto al rendimiento, Boo se siente marginalmente más rápido que IronPython, y en particular carece del notable retraso de inicio de IronPython.

Boo sigue siendo un lenguaje inmaduro y carece de la comunidad de Python. Yo personalmente sería un poco cauteloso acerca de usarlo en la producción. Además, no estoy de acuerdo con todas las salidas que se hacen desde Python, como deshacerse del yo explícito en las clases.

Todavía no he usado IronPython, pero esto es lo que sé sobre Boo ...

  • Boo se inspiró en Python y tiene muchas similitudes sintácticas. Para conocer las diferencias, consulte http://boo.codehaus.org/Gotchas+for+Python+Users
  • Boo fue escrito específicamente para el CLR
  • Está estáticamente tipado, lo que tiene varios beneficios
    • Se puede compilar en un archivo DLL y hacer referencia a los proyectos VB y C #
    • obtienes la finalización del código en IDEs
  • El lenguaje en sí mismo si es extensible. Puede escribir '' macros sintácticas '' y de hecho agrega nuevos elementos al lenguaje. Esto lo convierte en un buen candidato para escribir DSL.
  • Todavía no está en 1.0 todavía, mientras que IronPython sí. El idioma todavía está pasando por problemas de crecimiento, pero aún es muy útil.

He usado Boo para cosas como:

  • Scripting trabajos programados. Es una gran alternativa a los archivos VBScript, BAT, especialmente si se accede a las API .NET. Desde entonces, cambié principalmente a Powershell, pero es específico del sistema operativo y tiene una sintaxis más pesada, por lo que todavía uso Boo para algunas cosas.
  • Escritura de pruebas unitarias
  • Lenguaje de script incorporado

He escrito aplicaciones en Boo y IronPython. Para mí, IronPython ha sido la opción más sólida y mucho de lo que he escrito en los puertos de CPython sin cambios. Todos los proyectos recientes han sido IronPython puro si están dirigidos a .Net Framework.

Desde que Jim " desertó " para Microsoft, IronPython se ha elevado a un idioma de nivel superior. Incluso hay Visual Studio para ello.

Estoy de acuerdo con VolkA aquí. Poder ejecutar Django es grande. Es un marco tan increíble que Boo tendrá dificultades para rehacerlo. Hoy se trata más de los marcos que proporciona un lenguaje, que de la construcción que proporciona. Y Boo no proporciona muchas mejoras sobre Python en las construcciones que admite.

La diferencia principal, en mi opinión, es que IronPython es una implementación de un lenguaje maduro: mientras que Boo es más joven y menos conocido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top