Pregunta

Bueno, después de mucho tiempo escribiendo programas .net en C #, empecé a sentirme enojado y frustrado por toda la basura sintáctica que viene con los idiomas tipificados estáticamente. Ahora quiero cambiar a idiomas tipificados dinámicamente, que aprovechan el CLI. Así que busqué un poco y no me gustó lo que vi. La primera vez que busqué IronPython. Pero el proyecto se siente desorganizado, simplemente no se veía bien en absoluto. Entonces me enteré de Boo. Me gustó boo, el ideal y todo, pero parece que el proyecto se ha detenido. Luego escuché sobre IronRuby, pero el proyecto aún está en fase beta, por lo que decidí esperar hasta que se vuelva más maduro.

Entonces, como no pude encontrar un buen lenguaje dinámico compatible con CLR, les pregunto, ¿qué es lo que usan (usted)?

Desde que la gente comenzó a preguntar cuál es la razón para no elegir IronPython. Bueno, la razón es que, como dije antes, parece desorganizado. ¿Por qué?

1- La página de inicio apunta a otra página en codeplex, la página de inicio debe estar limpia y solo señalar las ventajas de IronPython, tome la página de IronRuby como ejemplo http://www.ironruby.net/ es lo que oculta al usuario las cosas desarrolladas en el idioma (aunque el usuario tiene que acceder al svn de IronRuby antes de usarlo). Qué tipo de problemas intentaba resolver IPython cuando se creó. ¿Hay una página con ese tipo de información? Bueno, la página está ahí, pero está oculta en la 'Página de más información' entre un montón de enlaces sin sentido a artículos. En la página de Boo, a primera vista se llama Manifesto http://boo.codehaus.org/BooManifesto.pdf .

Hay más, pero tengo la sensación de que IPython es solo un intérprete de fabricación casera, a pesar de la calidad que realmente puede tener. Sentí que era más seguro descargar Boo y usar IronPython (pero no me preocupa que Microsoft también haya descargado IPython).

Acerca de Duck-Typing y la escritura estática de Boo, ambos parecen funcionar bien para mí.

¿Fue útil?

Solución

Todavía usaría Boo . No estoy seguro de por qué crees que Boo ha sido detenido. El desarrollo a veces parece lento, pero hay varias personas trabajando actualmente en las correcciones de errores como lo demuestra esta lista de problemas solucionados recientemente (bugs) .

Para aquellos que no están familiarizados con Boo, es muy similar a Python, pero incluye cosas que Python no (como interpolación de cadenas y macros sintéticas ). Puede compilar programas de Boo o usar Boo a través del " Shell interactivo de Boo " booish .

Por cierto, tampoco me gustó IronPython cuando lo miré hace un par de años. Para mí, parecía un puerto directo de Python al CLI, pero, por lo que pude ver, no incluía las nuevas características que requiere el desarrollo de .NET.

EDIT : IronPython parece haber progresado desde la primera vez que lo miré (gracias por que Curt lo haya señalado). Sin embargo, no me he molestado en volver a mirar IronPython desde que encontré a Boo.

Otros consejos

En términos de usabilidad práctica IronPython va a ser lo mejor Apuesta ahora mismo.

¿Por qué la gente sugiere Boo? Es un lenguaje estático, que no es lo que esta pregunta está pidiendo. Sí, ya sé que tiene capacidad de escritura opcional, pero realmente si la información relacionada con Boo es aceptable para el autor de la pregunta, entonces la pregunta debería editarse para dejarlo claro.

Respecto a IronPython, dijiste que no te gustaba, pero realmente no hay ninguna respuesta que pueda dar a los comentarios críticos que son tan vagos :)

Alternativamente, le sugiero que eche un vistazo a cPython . Un par de puntos:

  • Puede crear archivos .exe con py2exe y otras herramientas.
  • Acceso mucho más amplio a bibliotecas y marcos de Python de terceros
  • Acceso a las API de Windows a través de pywin32
  • Se puede usar la extensión de Python escrita en C (a diferencia de IronPython, aunque hay esfuerzos en curso para mejorar esta situación )

Encontrará que realmente no necesita .NET para la mayoría de las cosas. Por supuesto, todo esto depende de su aplicación. Para integrarse con el código .NET existente, obviamente tiene que usar IronPython.

Dice que desea " dinámico " ;, pero si la motivación es solo para evitar " toda esa basura sintáctica " ;, debe echar un vistazo a F # . Es de tipo estático, pero tiene la sensación de sintaxis ligera de un lenguaje dinámico, así como un modo interactivo (bucle REPL).

Estoy de acuerdo con tu opinión de que IronPython parece desorganizado, pero lo he estado usando para proyectos (pequeños) y hasta ahora estoy bastante contento con él.

Si aún no lo ha visto, debe consultar IronPython Studio .

He estado en un camino similar. Revisé Boo, dotLISP, IronPython, etc.

Recomiendo IronPython. PERO si aún no tiene ninguna experiencia con Python, entonces probablemente aprenderá Python central más rápido al cargar CPython y usarlo para los ejemplos & amp; tutoriales.

Una vez que haya comprendido CPython, IronPython será mucho más fácil de entender. Por supuesto, aún debe comprender algunos C # y tener acceso a la documentación de .Net SDK. Sin él, IronPython es extremadamente difícil de conseguir cosas útiles.

También puede consultar el idioma Fan . No es pura dinámica, es una mezcla de static y amp; dinámica. Y como la mayoría de los lenguajes más nuevos, es OO puro con una mezcla de funcional en él. También se ejecuta en la plataforma JVM y CLR.

En cuanto a la sintaxis, está más cerca de C # con una gran cantidad de sintaxis de azúcar, por lo que parece una combinación de C # con Ruby / Python.

Dado que el idioma es nuevo, solo tiene 3 años, su rendimiento aún no es estelar.

Actualización 21-Feb-2014: Fan cambió su nombre a Fantom

Echa un vistazo a Clojure . La versión CLR aún se encuentra en las primeras etapas, pero es probable que la versión java funcione en .Net a través de IKVM

  

... basura sintáctica que viene con idiomas tipificados estáticamente ...

Si su inquietud es la basura sintáctica, entonces también le gustaría revisar los idiomas tipificados estáticamente con inferencia de tipo, sobre todo F # .

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