Por favor, no descarte la idea de inmediato. Sé que es difícil competir con un enfoque convencional que ya funciona (principalmente), por lo que mi pregunta es en parte "académica".
También soy consciente de que ClojureScript existe y es muy bueno, pero es un parche en una cosa fea existente, una abstracción útil.
Descargo de responsabilidad: soy un programador pero no un desarrollador web, y es por eso que solicito los comentarios de otros. Siendo desarrollador y usando la web todos los días y leyendo sobre varios temas y viendo la fuente html de una página de vez en cuando, creo que tengo alguna idea sobre el desarrollo web.
De todos modos, los problemas tal como los veo:
- La web comenzó de forma rápida, sucia y amigable para los novatos, pero ahora se necesitan muchas habilidades para crear una buena página web moderna e interactiva, y solo tienes que ser bueno para ser competitivo hoy. Esto a menudo significa que la rápida y sucia "aprender web en 21 días" simplemente no es suficiente.
- Html comenzó rápido y sucio, como un protocolo amigable para los novatos. Actualmente es un desastre.
- El lenguaje JavaScript no está exento de defectos, pero está bien.
- CSS parece ser un intento decente para limpiar las cosas. Vale la pena mantener, al menos la idea, que puede diseñar la apariencia en un archivo separado.
- Poniendo todo junto: JavaScript + Html + CSS se vuelve bastante sucio. Ha habido buenas ideas / herramientas que mitigan el problema, tales como: las bibliotecas AJAX abstraen los sabores específicos de JavaScript. Poderosas bibliotecas como JQuery, Node.js, etc. permiten hacer cosas geniales en JavaScript tan imperfectas como es. Google Web Kit hace un muy buen trabajo al traducir un diseño de GUI en una página web. Los frameworks web MVC como ASP.Net, RoR, Django abstraen las cosas y hacen mucho trabajo por ti, SIN EMBARGO , estas son todas abstracciones sobre una base de mierda.
- La demanda de lo que la web podría hacer hoy es cada vez mayor; El ChromeBook de Google es una manifestación de eso. Ejecutas una pantalla completa del navegador y todo lo que quieras hacer: interacciones de teclado / mouse, sonido, video, juegos, texto, imágenes, presentaciones en power point, todo está sucediendo dentro de él. Gracias por los navegadores rápidos y las computadoras rápidas y "la nube", ¡pero podría ser mucho mejor!
Desde el punto de vista gráfico, un navegador es solo un lienzo rectangular en el que puede pintar cualquier cosa. Actualmente, el ejecutable del navegador pesa muchos megabytes porque tiene que saber cómo analizar Html, JavaScript, CSS y mostrarlo todo.
Si comienzas desde cero y te das cuenta de que es casi solo un lienzo para pintar, entonces creo que el navegador puede ser mucho más pequeño y simple. El precio a pagar es tener que escribir un programa válido para todo en una sintaxis original como Lisp o Clojure, incluso para las cosas más simples, como mostrar una etiqueta. Eso solía ser la parte genial del html: si solo quisiera escribir el párrafo, lo escribiría al pie de la letra. Esto rara vez sucede más. Si todo lo que desea es simplemente escribir el párrafo de texto, aún debe pensar en el estilo en línea o CSS, la colocación. El siguiente fragmento de HTML (que se encuentra en la página principal de este sitio)
<a href="/software/tagged/programming-languages" class="post-tag" title="show questions tagged 'programming-languages'" rel="tag">programming-languages</a> <a href="/software/tagged/learning" class="post-tag" title="show questions tagged 'learning'" rel="tag">learning</a>
no es mucho más fácil de crear que una sintaxis alternativa de Lispy (y no he pensado mucho en ello):
(create-link :target "/questions/tagged/programming-languages" :class "post-tag" :title "show questions tagged 'programming-languages'" :rel "tag" :content (text "programming-languages"))
Esto podría no ser una sintaxis válida de Clojure; De alguna manera lo inventé. No tiene que intentar imitar html; de hecho, ese es el punto de comenzar desde cero. La gran ventaja aquí sería eso (text ...)
y (create-link ...)
no son parte del lenguaje central que un navegador tendría que entender. El navegador solo necesitaría comprender un Clojure "seguro" (uno que no pueda limpiar su disco duro) y poder dibujar y reproducir música y escuchar el teclado y el mouse y cosas similares, y todo lo demás: dibujar texto, reproducir un video , mostrar un cuadro combinado e interactuar con él se haría todo en una biblioteca cuidadosamente diseñada.
¿Por qué elegí Clojure? Es un lenguaje pequeño que puede lograr mucho, y la filosofía de crear programas complicados a partir de bloques de construcción simples es muy atractiva.
Creo que ser capaz de soportar un solo lenguaje poderoso como Clojure sería suficiente para lograr todo lo que Html y Html5 y CSS y JavaScripts y Silverlight y Flash pueden lograr.
Un poco de una discusión tangencial, creo que lo mismo es cierto para LaTeX, podría rehacerse con Clojure como lenguaje subyacente, y un archivo fuente sería un programa completo que escupe un PDF o un ps mientras se ejecuta.
Entiendo que comenzar desde cero es MUY DURO porque un navegador moderno tiene muchas características útiles. Empezar con una base limpia puede valer la pena.
¿Qué piensas de esta loca idea? Me doy cuenta de que las respuestas probablemente serían subjetivas debido a la naturaleza de esta pregunta, pero todavía tengo curiosidad por lo que piensas de esto.
Respuestas:
Los navegadores tienen una cosa para ellos que prácticamente abruma todas las demás consideraciones.
Cuota de mercado.
En resumen, no tiene que instalarlos. Ya están en la máquina del usuario. No subestimes este beneficio singular.
Las cosas han mejorado mucho con HTML5; puede escribir un cliente rico en él, si lo desea, y hay muchos marcos disponibles que facilitan este proceso.
Si no le gustan los idiomas nativos del navegador, puede usar cosas como CoffeeScript y Less para limpiarlos. Javascript es el nuevo lenguaje de máquina de todos modos. Eso es lo que hace que cosas como ClojureScript funcionen.
Existen varias herramientas como Websharper que permiten el desarrollo web en un solo idioma.
fuente