2009-07-08 14 views
16

El grupo de trabajo ECMAScript ha comenzado a trabajar en la próxima edición del idioma. ¿Qué pueden aprender de Ruby?¿Qué puede aprender JavaScript de Ruby?

+16

¿Qué es JavaScript? ¿No es esa la VM que ejecuta JQeury? – balpha

+4

Pregunta vaga, y no estoy seguro de por qué se centra en Ruby. (JavaScript podría aprender de muchos idiomas, ¿por qué específicamente Ruby?) –

+1

tipo de pregunta sin sentido imho. ¿Por qué deberían aprender algo de Ruby? ¿Por qué no desde C#? o SQL? Los dos idiomas están en dominios de problema completamente diferentes. – annakata

Respuesta

15

Esto es en realidad una cuestión mucho más difícil de lo que parece al principio.

La razón principal de esto es que se ha demostrado ser muy difícil obligar a los proveedores de navegadores, a modo de especificación, para implementar la mascota o características favoritas de los amantes del lenguaje, usuarios, otros proveedores o académicos sin muy buenas justificaciones . Así es como terminamos con la especificación de ES4 casi muerta en la mesa, que produjo una ES Harmony mucho menos ambiciosa (aunque todavía bastante impresionante). Un lenguaje como JavaScript que tiene problemas de implementación y puesta en práctica tan terriblemente difíciles simplemente no puede ser el tipo de patio de recreo experimental impresionante que Ruby ha sido durante gran parte de su vida. Cualquiera que haya seguido es-discuss (la lista de correo de desarrollo de lenguaje ECMAScript) probablemente ya haya notado que se requieren muchos meses de debate y experimentación para simplemente articular y acordar características comunes del lenguaje como, en la memoria reciente, sobrecarga del operador o corto forma la notación lambda.

Tal vez sea demasiado pedirle a cualquier grupo de trabajo que especifique una especificación que apunte a todos los dispositivos del planeta. En la superficie, parece que es una banda muy estrecha de lecciones, incluso las sociales, que pueden transferirse fácilmente de Ruby a JavaScript.

A tal efecto, y para facilitar la carga de Brendan Eich y su grupo:

Una de las "lecciones" con más urgencia útil para llevar a la lengua desde una perspectiva inspirada en Rubí (o LISP) sería maleabilidad del lenguaje. La capacidad de introducir nuevas características, ataques de sintaxis y lenguajes específicos de dominio que no provengan de un grupo interno de escritores de especificaciones sería increíblemente valioso. Permitir que el idioma sea un buen lugar para las extensiones modulares del idioma que se creará, y para aquellas extensiones que sean autohospedadas, a fin de minimizar los riesgos de fragmentación y permitir que esos cambios penetren y se purguen, etc.

Tal maleabilidad permitiría a la comunidad en general aplicar lecciones de todo tipo de direcciones y permitir que Internet decida en el tiempo qué lecciones valen la pena de qué idioma, etc. Ya tenemos una alta tasa de iteración y la evolución que ocurre en los otros extremos de este sándwich, es decir, en los navegadores mismos (por ejemplo, HTML5) y en las bibliotecas js. Si eso pudiera suceder más íntimamente en el nivel de idioma, podríamos ver que algunas cosas muy interesantes suceden muy rápidamente.

[adenda/editar]:

El lenguaje tiene que ser capaz de transformarse de manera significativa debido a que un pequeño grupo de personas es simplemente incapaces de anticipar todas las cosas que alguna vez va a ser utilizado para. Un tema que aparece en es-discuss a menudo es esa corriente subyacente de diseñar "un lenguaje para los próximos 10-15 años". En mi humilde opinión, este es un objetivo increíblemente poco realista. Si no lo construye, el sistema hará que desarrolle una alternativa mucho antes de la duración prevista de la especificación.Con la aceleración inmensa en el motor de JavaScript/tecnología JIT en los últimos tiempos, ya estamos viendo las primeras señales de que esto ocurra en forma de nuevos lenguajes que se escriben encima de JavaScript o que se compilan de forma cruzada sobre la marcha en JavaScript. Sí, incluso Ruby: programación de las funciones http://hotruby.yukoba.jp/

+2

HotRuby existía antes de V8 y JIT JavaScript. Pero tú haces un buen punto. Sin embargo, no hay nada de malo en que JS sea el lenguaje ensamblador de la web. Es bueno que se esté volviendo lo suficientemente rápido para ser eso. – Nosredna

+0

Gracias por eso. Creo que lo que estoy tratando de decir es que hay tendencias invisibles que se manifiestan de diversas maneras, no necesariamente de forma coordinada u orden :) Estoy de acuerdo con la parte del lenguaje ensamblador. Las velocidades * están * enloqueciéndose. – Maciek

4

Tener un nombre que suena como una piedra preciosa es mucho mejor que un nombre que suena como una enfermedad de la piel.

Pero no nombrar a su nuevo idioma después de la cosa más caliente de hoy (que es la forma en que todos nos dieron en este "Java" desorden de la escritura en el primer lugar ....)

+0

¡qué respuesta más fácil! Me alegro de que hayan aparecido muchas respuestas más serias. –

+0

Pero sigue siendo cierto. ¿Cuántas veces vemos preguntas etiquetadas "Java" cuando están hablando de ECMAscript? –

5

Abrazo, no tratar de enterrarlo en lenguaje estático construye

-2

no puedo ver a mucho de lo que se podría aprender de Ruby. El grupo de estándares ya ha dado al lenguaje la forma de volver a enviar mensajes o mensajes al prototipo. La funcionalidad method_missing puede ser genial para implementar, pero no es tan necesaria como mejores instalaciones de refelction.

4

compilar una biblioteca estándar sobre el uso intensivo de cierres, tanto para la iteración de recopilación como para la adquisición de recurso/rendimiento de recurso/disposición del patrón de recursos. esa es una de las mayores victorias de ruby, imo. por supuesto, parte de lo que permite esta es la brillante decisión de dar a cada método un parámetro de cierre 'libre', con soporte sintáctico, por lo que probablemente no se verá tan bien en javascript. las técnicas aún son útiles, sin embargo.

+1

+1 para explicar esta parte de ruby ​​de una manera que realmente se pueda entender, en lugar de decir "los bloques son geniales". –

Cuestiones relacionadas