2011-01-01 11 views
8

Parece que estos dos idiomas se denominan "lo que C# debería haber sido", con macros hygenic, REPL, compilador como servicio (CaaS), escritura estática + pato (mucho antes de que C# lo tuviera). ¿Hay alguna diferencia importante entre estos dos idiomas, o son solo dos implementaciones diferentes de más o menos lo mismo? Leí en alguna parte que el macro servicio de Nemerle es más poderoso que el de Boo; ¿Es esto cierto?¿Cuáles son las diferencias entre Boo vs Nemerle?

¿Cómo se comparan en términos de actividad actual, madurez e integración con IDE?

Además, ¿se rumoraría que la característica CaaS de C# 5.0 los haría obsoletos si se lleva a cabo, o hay características que los mantendrán relevantes?

Respuesta

8

Agregar CaaS a un lenguaje como C#, o incluso macros a Boo, no es suficiente para alcanzar el nivel de metaprogramación de Nemerle, para el cual el lenguaje ha sido diseñado desde el principio. Los tipos algebraicos, la cita y la coincidencia de patrones son una necesidad para el procesamiento abstracto del árbol de sintaxis.

Nemerle ha alcanzado recientemente el estado de candidato a la publicación. El trabajo en Nemerle 2.0 ya está en marcha. Boo parece estar cerca de una etapa similar, pero un poco atrás.

Boo se integra principalmente con SharpDevelop, mientras que Nemerle tiene integración con Visual Studio 2008.

+3

Boo ha sido de calidad de producción durante * años * –

+1

Yo diría que ambos han sido durante mucho tiempo más estables que C# 1.0-1.2. :) –

+2

Nemerle también tiene integración con SharpDevelop. Puedes compilarlo desde las fuentes. –

8

El lenguaje Nemerle tiene muchas características que el lenguaje Boo no tiene. Y si necesita alguna función Boo en Nemerle, es muy fácil agregarla.

+0

¿Qué hay de la función de boo que no tiene que escribir llaves o puntos y comas? :-) –

+4

@Robert P: la sintaxis de Boo proviene de Python, mientras que Nemerle es de C# ... Pero, Nemerle también puede usar [sintaxis similar a Python] (http://nemerle.org/Indentation-based_syntax) –

+0

¡Ja! Parece tan. Supongo que el único otro es que (afaict) Nermele no tiene la capacidad de ejecutarse como un lenguaje interpretado (ala python/perl/etc), ¿o estoy equivocado también? –

Cuestiones relacionadas