Por favor, não descarte a idéia imediatamente. Eu sei que é difícil competir com uma abordagem convencional que já funciona (principalmente), então minha pergunta é parcialmente "acadêmica".
Também sei que o ClojureScript existe e é muito legal, mas é um patch para uma coisa feia existente, uma abstração útil.
Isenção de responsabilidade: sou programador, mas não desenvolvedor web, e é por isso que solicito o feedback de outras pessoas. Sendo um desenvolvedor e usando a web todos os dias, lendo sobre vários tópicos e visualizando a fonte html de uma página de tempos em tempos, acho que tenho alguma idéia sobre desenvolvimento na web.
De qualquer forma, os problemas como eu os vejo:
- A web começou rápida, suja e fácil de usar, mas agora são necessárias muitas habilidades para criar uma boa página da web interativa moderna, e você só precisa ser bom nisso para ser competitivo hoje. Isso geralmente significa que "aprender a web em 21 dias", rápido e sujo, simplesmente não é suficiente.
- O html começou rápido e sujo, como um protocolo fácil de usar. Atualmente está uma bagunça.
- A linguagem JavaScript não está isenta de falhas, mas está bem.
- CSS parece ser uma tentativa decente de limpar as coisas. Vale a pena manter, pelo menos a idéia - que você pode estilizar a aparência em um arquivo separado.
- Juntando tudo - JavaScript + Html + CSS fica bastante sujo. Existem boas idéias / ferramentas que atenuam o problema, como: as bibliotecas AJAX abstraem os sabores específicos do JavaScript. Bibliotecas poderosas como JQuery, Node.js, etc. permitem fazer coisas legais em JavaScript tão imperfeitas quanto são. O Google Web Kit faz um excelente trabalho ao converter um design de GUI em uma página da web. Estruturas da Web MVC, como ASP.Net, RoR, Django, abstraem as coisas e fazem muito trabalho para você, NO ENTANTO , essas são abstrações em cima de uma base ruim.
- A demanda pelo que a web poderia fazer hoje é sempre crescente; O ChromeBook do Google é uma manifestação disso. Você executa o navegador em tela cheia e tudo o que você pode querer fazer - interações teclado / mouse, som, vídeo, jogos, texto, imagens, apresentações em power point - tudo está acontecendo dentro dele. Obrigado pelos navegadores rápidos e computadores rápidos e "nuvem", mas poderia ser muito melhor!
Do ponto de vista gráfico, um navegador é apenas uma tela retangular na qual você pode pintar qualquer coisa. Atualmente, o executável do navegador pesa muitos megabytes porque precisa saber como analisar HTML, JavaScript, CSS e exibir tudo.
Se você começar do zero e perceber que é apenas uma tela a ser pintada, acho que o navegador pode ser muito menor e mais simples. O preço a pagar é ter que escrever um programa válido para tudo em uma sintaxe descolada, como Lisp ou Clojure, mesmo para as coisas mais simples, como exibir um rótulo. Essa costumava ser a parte legal do html - se você quisesse digitar o parágrafo, digitaria literalmente. Isso raramente acontece mais. Se tudo o que você deseja é digitar apenas o parágrafo do texto, você ainda precisa pensar em estilo inline ou CSS, posicionamento. O seguinte trecho de HTML (encontrado na primeira página deste site)
<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>
não é muito mais fácil criar do que alguma sintaxe alternativa do Lispy (e eu não pensei muito nisso):
(create-link :target "/questions/tagged/programming-languages" :class "post-tag" :title "show questions tagged 'programming-languages'" :rel "tag" :content (text "programming-languages"))
Isso pode não ser uma sintaxe válida do Clojure; Eu meio que inventei. Ele não precisa imitar o html - na verdade, esse é o ponto de começar do zero. A grande vantagem aqui seria essa (text ...)
e (create-link ...)
não faz parte da linguagem principal que um navegador precisaria entender. O navegador precisaria apenas entender um Clojure "seguro" (que não consiga limpar o disco rígido) e ser capaz de desenhar e tocar música, ouvir teclado e mouse e coisas semelhantes e tudo mais - desenhar texto, reproduzir um vídeo , exibir uma caixa de combinação e interagir com ela seria tudo feito em uma biblioteca cuidadosamente projetada.
Por que eu escolhi o Clojure? É uma linguagem minúscula que pode realizar muito, além da filosofia de criar programas complicados a partir de blocos simples de construção é muito atraente.
Eu acho que ser capaz de suportar uma única linguagem poderosa como o Clojure seria suficiente para realizar tudo o que o Html e o Html5 e o CSS e JavaScripts e o Silverlight e o Flash podem realizar.
Uma discussão tangencial - acho que o mesmo vale para o LaTeX - poderia ser refeita com o Clojure como uma linguagem subjacente, e um arquivo de origem seria um programa completo que exibe um PDF ou um ps durante a execução.
Entendo que começar do zero é MUITO DURO, porque um navegador moderno tem muitos e muitos recursos úteis. Começando com uma base limpa pode valer a pena.
O que você acha dessa idéia maluca? Percebo que as respostas provavelmente seriam subjetivas devido à natureza dessa pergunta, mas ainda estou curioso sobre o que você pensa disso.