La preferencia por la escritura dinámica y estática es en gran medida una cuestión de gustos, y diferentes personas las encuentran más o menos adecuadas en diferentes situaciones.
Mi pregunta es, ¿sería técnicamente posible tener una alternativa estáticamente tipada a JavaScript para aumentar la página web del lado del cliente, etc.?
Respuestas:
Ciertamente no hay ninguna razón técnica para que tal cosa no pueda existir. No hay nada particular sobre el código del lado del cliente que exija el uso de lenguajes escritos dinámicamente.
fuente
Dado que es muy poco probable que otro idioma encuentre una adopción amplia, su mejor opción sería crear una versión estática de JavaScript (es decir, un idioma cercano a Java) y un preprocesador que lo convierta a JavaScript normal.
Por ejemplo, su script se ve así:
y el preprocesador verifica que cada variable, función, objeto, etc. se use correctamente de acuerdo con su tipo, y cambia el script a
que cada navegador puede manejar.
fuente
Por supuesto. El Google Web Toolkit compila estáticamente escrito en Java a JavaScript ... Sólo pensar en ello: toda la belleza y la flexibilidad de Java, con todo el rendimiento de JavaScript generado por máquina!
Sin embargo, en serio, podrías hacer esto para todo tipo de lenguajes, y muchos lo han intentado (también hay compiladores para C y C #). Que el resultado final sea práctico o no depende de lo que intente lograr: Google busca una plataforma consistente para desarrollar aplicaciones del lado del cliente muy grandes y tiene su propio motor JavaScript para arrancar; Es muy posible que la adopción de una bestia para los efectos de desplazamiento y la extraña llamada AJAX introduzcan mucho más dolor que simplemente aprender a vivir con un poco de código sin tipo ...
fuente
La mayoría de los beneficios de los lenguajes de tipo estático se obtienen en tiempo de compilación. Si el idioma se va a interpretar en el cliente, se pierden muchas de esas ventajas. Si los compila en el servidor, debe descubrir cómo cargarlos y ejecutarlos en el cliente (piense en los controles ActiveX). Podría optar por un enfoque híbrido (compilar en alguna forma simbólica intermedia), pero luego, básicamente, volverá a los applets de Java.
fuente
Ya existe
ActionScript 3 (el lenguaje de secuencias de comandos detrás de Flash y Flex) es un dialecto de ECMAScript que implementa tipos fuertes, y puede usarlo más o menos del mismo modo del lado del cliente que JavaScript (la diferencia es que AS3 requiere un complemento flash, y está compilado). Personalmente, trato de alejarme en estos días, pero si estás en el campamento "estático", dale un giro.
Eso responde a la pregunta principal, y ahora que tenemos eso, su pregunta secundaria se convierte en "¿Es práctico Flash?" La respuesta es "sí", con algunos "si" y "pero" s
fuente
En teoría, puede pegar cualquier script en la página que desee. La
<script>
etiqueta tiene untype
atributo, después de todo.La única barrera es obtener suficiente participación de mercado en términos de implementación en diferentes navegadores para que valga la pena usarlo.
Entonces, sí, es poco probable en este momento.
fuente
</script>
). Podrías incluir el código Brainf * ck allí si realmente quisieras. Entonces, todo lo que necesita hacer es implementar un intérprete para el idioma elegido en el navegador que desea usar.<script type="vbscript">
de una vez ...¿Sería práctico? No.
¿Es posible? ¡Si!
Desarrollar su propia alternativa estáticamente tipada a JavaScript requeriría mucho tiempo, en el mejor de los casos. En el peor de los casos, no podría convencer a ninguno de los navegadores existentes para que implementen el lenguaje de scripting de su cliente, y tendría que escribir el suyo.
fuente
Tal vez encuentre su respuesta aquí: /programming/86426/why-require-javascript-rather-than-supporting-a-standard-browser-virtual-machine
Nota: En mi opinión, las respuestas más recientes son más perspicaces a pesar de su puntaje más bajo.
fuente
Puede usar idiomas como haXe para escribir su código de forma estática y exportarlo a javascript. JavaScript se está volviendo muy rápido, por lo que es suficiente como lenguaje de salida. Intentar imponer un lenguaje tipado estáticamente como estándar web es casi imposible. Los intentos de introducir la escritura estática en JavaScript han fallado por razones de discusión general.
fuente
¿Sería técnicamente posible? Si se va a implementar en Java, diría "muy, muy difícil, pero posible" sin una pérdida significativa de rendimiento.
En realidad, estoy escribiendo a mano un DSL estáticamente escrito en Java en este momento, y la única forma en que he encontrado para evitar la verificación de tipos en tiempo de ejecución es mediante el uso de genéricos y suprimir advertencias "no verificadas" ... es decir, hasta que llegó el momento de implementar matrices multidimensionales (los parámetros de clase deben conocerse en el momento de la compilación y, por lo tanto, son inherentemente finitos, mientras que las matrices multidimensionales representan un número infinito de tipos ...) Todavía estoy tratando de resolver esto, desafortunadamente, estoy seguro de que Encontraré problemas similares con las clases definidas por el usuario.
La cosa es que sigo tropezando con este tipo de problemas, pero después de sentarme un rato, encuentro una buena solución. Entonces, para hacerlo y tener los beneficios de rendimiento de la escritura estática (sin verificación de tipo de tiempo de ejecución), diría que es extremadamente difícil, pero no imposible. Menos el rendimiento, diría difícil pero muy posible.
Sé que es una vieja pregunta, solo pensé que mi experiencia podría ser valiosa para alguien.
fuente
Es técnicamente posible escribir scripts del lado del cliente en cualquier lenguaje de scripts que admita el agente de usuario (navegador). En la práctica, el único lenguaje ampliamente compatible es JavaScript / ECMAScript. Es poco probable que los creadores de navegadores convincentes implementen y admitan un nuevo lenguaje en esta etapa; por lo tanto, si desea utilizar un nuevo lenguaje del lado del cliente tipado estáticamente, necesitaría traducir el nuevo idioma a JavaScript o implementar un intérprete en JavaScript.
Hay varios proyectos que ya hacen algo como esto; por ejemplo, Google Web Toolkit , como se menciona en una de las otras respuestas.
fuente
Dado que no tiene esperanzas de obtener todos los navegadores que se utilizan en el mundo real para admitir un nuevo idioma; el lenguaje tendrá que compilarse en jscript.
Como todos los ejemplos de la web están en jscript, el lenguaje debería parecerse principalmente a jscript.
Creo que hay un alcance con tener un "subconjunto" de jscript que es verificado por un verificador estático pero también es jscript válido. P.ej:
fuente
Supongo que la tipificación estática opcional formaba parte del Proyecto Harmony de ECMAScript; no se sabe si sucederá alguna vez en JavaScript del lado del cliente [basado en el navegador]. Vea este enlace de Wikipedia: http://en.wikipedia.org/wiki/ECMAScript#Future_development
fuente