Por que Asana está desenvolvendo sua própria linguagem de programação (Lunascript)?
Update: Nos últimos meses, o Asana passou de escrever Lunascript para o nosso código de aplicação para Javascript. As duas coisas principais que estavam atrasando nosso desenvolvimento:
<
>br>We're *não* uma empresa framework, então nós'não queremos dedicar anos a este trabalho às custas da construção de nosso produto. We're ainda usamos o framework primitivo que desenvolvemos para a linguagem -- o mais importante, sistemas para recompor de forma reativa nossa interface e sincronizar mudanças com o servidor -- we're simplesmente não usamos mais a sintaxe (e estilo funcional) um pouco mais agradável que o Lunascript forneceu.
Longo prazo, podemos reavivar o compilador Lunascript. Nós achamos que isso pode ser especialmente atraente uma vez que mudamos do Asana como um produto único para o Asana como uma plataforma. Mas para o futuro imediato, nós're focamos em lançar nosso primeiro produto às custas de continuar o trabalho no Lunascript propriamente dito.
Eu quero enfatizar we'paramos de usar o Lunascript, mas o aplicativo ainda está completamente escrito no framework Luna. Veja O que é o framework de tecnologia Luna da Asana's? O que ele inclui e o que é construído em cima dele? para saber mais sobre o que é. A visão para Luna sempre girou em torno de tornar mais fácil escrever webapps livres de bugs, em tempo real, responsivos, colaborativos e interativos. A sintaxe do Lunascript sempre foi uma boa maneira de se ter, não uma peça central da visão.
>br>------------
Pela mesma razão que progredimos de assembly para C para Java para Python (ou alguma progressão similar): linguagens de nível mais alto abstraem muita infra-estrutura e ao fazê-lo melhoram drasticamente a velocidade de desenvolvimento.
Se você pensar na história da web, nós'passamos de essencialmente despejos de textos para homepages estáticas para páginas geradas dinamicamente para páginas com AJAX para páginas web Comet completamente em tempo real.
O que isto significa é que existem muitas camadas de coisas acontecendo que simplesmente não são suportadas no nível da linguagem, e você acaba com um monte do mesmo código por todo o lado. Por exemplo, toda variável que precisa ser atualizada pelo Comet (digamos, o número do meu crachá de casa no Quora) precisa ser envolvida por algum tipo de manipulador do Comet, assim como algum sistema de despacho para atualizar tudo no DOM que toca aquela variável. O Lunascript resume isso e automaticamente mantém toda a página devidamente sincronizada sem que você como autor do código tenha sequer que pensar no fato de que há alguma atualização em curso.
Apenas como ter que se preocupar com o gerenciamento de memória (em C) ou não ter suporte sintático para dicionários (em Java) torna você mais lento, ter que se preocupar com sincronização ou não ter suporte sintático para XML literalmente torna você mais lento em linguagens de programação web atuais.
Escrever uma nova linguagem não é a única solução para isso, mas é a maneira mais limpa e elegante. Isto não quer dizer que seja a melhor: existem tradeoffs substanciais para escrever uma linguagem. Mais notavelmente, você não beneficia tanto do trabalho de outros programadores, e você precisa afundar muito tempo de desenvolvimento na própria linguagem.
A opinião de Ásana é que o poder da abstração concedida pelo Lunascript é tão grande que, eventualmente, terá sido mais rápido escrever Lunascript e depois escrever um webapp na escala de Ásana do que escrever um webapp na escala de Ásana sem escrever Lunascript.
It's também vale a pena notar que ter a sua própria linguagem não é tão extremo assim. Considere, por exemplo, a Apple com Objective-C. Além disso, o Facebook tem coisas como FBML e FQL, e a Salesforce tem a sua própria linguagem. A fim de suportar uma plataforma, você eventualmente precisará da sua própria linguagem de alguma forma, e há vantagens em ter consistência na forma como um site é escrito e na forma como os desenvolvedores da plataforma escrevem aplicativos.
Finalmente, it's não é como o Asana usa exclusivamente Lunascript. Existem outras linguagens (especialmente o Javascript) em uso intenso. De certa forma, o Lunascript é apenas uma linguagem de templates Javascript, e rolar sua própria linguagem de templates é provavelmente mais comum do que não nas empresas web hoje em dia.
Artigos semelhantes
- Em que linguagem de programação o Netflix está codificado? Como eu uso essa linguagem?
- Qual é a diferença entre linguagem de máquina, linguagem de montagem e linguagem de alto nível em computadores?
- Quais são as vantagens de uma linguagem de montagem na programação sobre uma linguagem de máquina?
- A linguagem Assembly é considerada uma linguagem de programação funcional?