2012-04-15 29 views
21

Ambos lenguajes afirman corregir las deficiencias percibidas de JavaScript. Me gustaría entender las diferencias clave en cómo CoffeeScript y Dart (compilados a JavaScript) buscan lograr esto. En particular,¿Cuáles son las principales diferencias entre las mejoras de CoffeeScript y Dart en JavaScript?

  • ¿El modelo de objeto es el mismo que en JavaScript?
  • ¿Están tipeados estática o dinámicamente? Fuerte o débil?
  • ¿Cómo funcionan los cierres en cualquiera de los idiomas?
  • ¿Admiten coroutines?
  • ¿Cuáles son las principales diferencias en sintaxis?
  • ¿Cuántas bibliotecas nativas puedo usar?
  • ¿Puedo usar bibliotecas JavaScript existentes?

Soy no interesado en cosas como las preferencias personales, las tasas de adopción, soporte de la herramienta o utilidad para un propósito particular.

+0

Podría ser una mejor opción para http://programmers.stackexchange.com/ –

+0

@TrevorBurnham Gracias, lo consideraré. ¿Eso implica que las preguntas que no son constructivas en stackoverflow pertenecen allí o que hay menos bullying en los programadores.stackexchange.com? IOW, ¿por qué esta pregunta sería "no constructiva" aquí, pero está bien? – Tobias

+0

No parece especialmente no constructivo para mí, aunque tal vez no estaba nada claro. Editado, reabierto. – Shog9

Respuesta

19

Seth Ladd tiene un blog post donde compara ciertos aspectos de CoffeeScript con Dart y JavaScript. No toca todas tus viñetas, pero puede ser un comienzo. También publicó este discussion en respuesta a un artículo de Coffeescript y Dart sobre nettuts.

+1

Muchas gracias, ese es el tipo de información que estoy buscando. – Tobias

1

Para añadir a excelentes conexiones de Richard G: Puede utilizar JavaScript dentro CoffeeScript http://coffeescript.org/#embedded prueba cabo CoffeeScript en ese sitio; muchos buenos ejemplos.

IIRC, Dart era su propio idioma al principio. Cuando la comunidad de desarrollo no estaba tan abierta a Dart (ya sea "meh" o "ugg"), Google añadía JavaScript a la compilación cruzada de Dart. Native Dart finalmente competirá con JavaScript. Dart es de calidad alfa ahora; Me lo saltaría a menos que tengas muchas pruebas.

Para mí, una mejor pregunta sería: "¿Debo desarrollar en CoffeeScript o Haxe JS?"

+5

En realidad, Dart está diseñado para ser compilable (y compilado) a JavaScript desde el primer día. El compilador actual (dart2js) es en realidad un tercer compilador de Dart -> JavaScript (primero fue dartc, luego rana, luego leg, que recientemente se renombró a dart2js). – Ladicek

+0

"¡http://www.haxejs.org/" está siendo reportado como fuente de malware por Chrome! – George

0

Encontré una nueva vid en MarakanaTechTV que tiene alguna comparación de Dart vs JS (en su mayoría vinculada a la máquina virtual de Dart, no cuando se representa a JS desde Dart). Aspectos destacados:.

  • Más clase basada (a diferencia de los prototipos de JS, que son similares, pero el dardo es más como Java & C++ aquí Esto ayuda hace dardo más rápido, ya que las llamadas no tienen que viajar hasta la cadena de prototipo.)
  • Objects sizes may be static & denso, lo que ayuda a que las matrices de objetos se ejecuten más rápido. Aunque puedes usar "mapa" si quieres arreglos con agujeros.
  • Int maths están disponibles, que son más rápidos que los doble flotadores (que JS es más o menos siempre).
  • Dart has SIMD que puede reducir el uso de la gran cantidad de datos de la CPU (por ejemplo, imágenes, audio, video, 3d, tablas enormes). Aunque a menos que planee procesar gráficos, audio o grandes tablas de números dentro del navegador, esto no le importará. (Por cierto, no estoy de acuerdo con el orador, mis propias traducciones a SIMD para DSP que muestran que cambiar a SIMD toma algo de "sobrecarga", ya que un código de operación SIMD toma 1 o más ciclos sobre el código de operación double/int típico, & tiene que gastar códigos de operación para traducir entre SIMD & las 'viejas' matemáticas.Dicho esto, incluso usando SIMD para 2 canales (como audio estéreo), puede ahorrar un mínimo de 20% de CPU, & hasta 3.7x de ganancia de velocidad si usa los 4 canales).

Y otra "Why Dart?" vid para desarrolladores web. Handy language sugar/shortcuts: constrictores nombrados, léxico 'this.', Cascadas de métodos. Enlace de datos incorporado como Angular.js.

Cuestiones relacionadas