5 razões pelas quais JavaScript pode ser a próxima grande linguagem

October 30th, 2007 § 19 comments § permalink

Há sempre uma grande quantidade de especulação sobre qual a próxima linguagem que ganhará as mentes e corações dos desenvolvedores. As apostas atuais muito provavelmente tendem na direção do Ruby.

Considerando o sucesso que o Ruby on Rails está experimentando atualmente, eu também me sinto tentado a dizer que Ruby é a próxima grande linguagem. Ruby tem a história perfeita: virtualmente desconhecida em sua primeira década de vida, surgiu com uma estrela no cenário atual de programação, graças a uma killer app cujo mindshare não para de crescer.

Ruby é, através de Rails, responsável pela aceitação de linguagens dinâmicas como ferramentas possíveis na atualidade. Alguém poderia argumentar que a atual revolução dinâmica aconteceria com ou sem a presença do Ruby. Eu tenho que discordar: o sucesso do Ruby fez com que o passo de pesquisa e experimento em linguagem alternativas aumentasse em uma ordem de magnitude nos últimos dois anos. Eu acompanho o cenário de desenvolvimento há mais de uma década e foi somente após a explosão provocada pelo Rails que o cenário mudou.

Ainda assim, eu acredito que Ruby não será a próxima grande linguagem. A despeito de desenvolvimento como JRuby e IronRuby, o lugar no topo não está garantido para essa bela linguagem.

Esse lugar, eu acredito, pertence ao JavaScript.

Se o JavaScript se tornar a próxima grande linguagem, um ciclo completo estará formado. Uma linguagem que nasceu para transformar a parte cliente da Web e sofreu uma queda ignóbil, sendo considerada por anos algo que somente merecia a atenção de candidatos a programadores, está ressurgindo agora com uma fênix, elevada ao panteão de linguagens sérias e merecedoras de atenção.

Aqui estão cinco razões pelas quais JavaScript pode se tornar a próxima grande linguagem tanto no lado cliente quanto do lado servidor das aplicações modernas:

Razão #1: A similaridade com C e Java, simplificada

A verdade é dura: C ainda desfruta de uma enorme popularidade e influência do uso e desenho de linguagens. E com a ascendência do Java, a sintaxe do C se tornou ainda mais dominante. Por si só, isso já é um motivo para garantir uma certa medida de popularidade ao JavaScript.

Mas o motivo real está no fato de que JavaScript simplifica a sintaxe do C e do Java a um nível palatável para o desenvolvedor médio. O uso de características dinâmicas fala mais alto do que qualquer coisa. Se há um ponto em que o Java falhou foi aí: se Java tivesse gerado algo como o Groovy no seus dois primeiros anos e tivesse convertido isso na linguagem padrão para applets, a história da Web teria sido completamente diferente.

Um garbage collector funcional ajuda bastante. Como o Ruby e Python provaram, não é preciso controle granulado sobre alocação de memória para criar programas complexos.

A única desvantagem real do JavaScript, no que tange à sintaxe, pode estar no fato da mesma ser baseada em protótipos e não em classes. Isso deve mudar com o JavaScript 2, mas a decisão final dos desenvolvedores quanto a isso ainda está no futuro. Até o momento, o uso de protótipos não está freando a linguagem, embora esteja limitando determinados usos.

Razão #2: A plataforma é a Web

Não há nada mais ubíquo do que código fonte HTML. JavaScript segue a mesma direção. A despeito de minimizadores de código e obfuscadores, a vasta maioria do código JavaScript em uso atualmente está disponível para adaptação e incorporação em aplicações. De editores de textos ricos a plataformas completas de construção de interfaces passando por bibliotecas utilitárias, há uma enorme quantidade de código documentado e acessível.

Esse código, além de tudo, roda em uma plataforma aberta e extremamente acessível, que é a própria Web. Isso dá ao JavaScript um grau de liberdade em termos de experimentação que não está disponível a basicamente nenhuma outra linguagem. Com o crescimento de ferramentas de apoio, o custo de desenvolvimento inicial está caindo até um ponto em que qualquer programador pode se dar ao luxo de desenvolver aplicações mais complexas sabendo que terá suporte amplo para isso.

O fim das grandes diferenças de compatibilidade entre os vários navegadores também está contribuindo para que a Web se estabeleça cada vez mais como uma plataforma sólida para aplicações suficientemente sofisticadas que se confundem com o desktop

E um último ponto: o JavaScript está intrinsecamente mesclado em duas arenas que paralelizam a Web.

A primeira dessas arenas é a de aplicações ricas na forma de tecnologias como Adobe Air e Siverlight. Essas plataformas não só estão adotando o JavaScript como ferramenta primária como estão também aumentando o seu passo de desenvolvimento, oferecendo melhores interpretadores e compiladores.

A segunda arena é a de aplicações offline. Com o aumento de aplicações com o serviço, o uso de uma linguagem comum é necessária para aplicações que queiram deixar o confinamento do navegador e se tornarem cidadãs de um desktop extendido. JavaScript já é a linguagem candidata perfeita para isso.

Razão #3: Ajax

Não só a Web é a plataforma, mas o uso de Ajax está trazendo toda uma nova comunidade de desenvolvedores para o JavaScript. O Ajax está fazendo hoje o papel que o view source fez na Web de dez anos atrás.

Enquanto antigamente o JavaScript era relegado a funções como criar rollovers, simular transições e efetuar procedimentos minimalísticos similares em aplicações Web, aplicações atuais rotineiramente carregar centenas ou milhares de kilobytes de JavaScript para transformar a experiência do usuário.

Hoje espera-se que um desenvolvedor saiba utilizar plenamente JavaScript em suas aplicações. Seja qual for a linguagem que ele use para desenvolver–Ruby, Python, C# ou Java–uma linguagem permanece constante: o JavaScript.

Como é improvável que outras linguagens ganhem utilização em um navegador, a tendência é que o JavaScript se torne cada vez mais adaptada a criar uma experiência completa de desenvolvimento e execução em um ambiente que não ficará nada a dever aos atuais O Ajax está fazendo hoje o papel que o run-times.

Razão #4: Protocolos e ferramentas

JSON é hoje basicamente um padrão de transmissão e transformação de dados na Web. Compacto e compactável, substituiu rapidamente o XML como protocolo de transporte e tem liderança indiscutível por estar baseado na única linguagem cliente disponivel.

Esse desenvolvimento, apoiado em outros como o CouchDb estão dando ao JavaScript uma legitimidade enorme em termos de aplicação real. Nem mesmo o mundo corporativo foi capaz de resistir à mudança desencadeada por esse pequeno protocolo e, atualmnte, transformações baseadas em JavaScript são comuns. Tecnologias como o CouchDb, com sua integração direta ao JavaScript e com um uso eficiente e lógico de uma arquitetura REST só trazem benefícios à linguage.

Além disso, ferramentas e ambientes de desenvolvimento mais sofisticados estão proliferando. Ambientes de desenvolvimento estão intrinsecamente ligados ao sucesso de uma linguagem–isso, inclusive, é algo que a comunidade Ruby está percebendo agora. Esses ambientes fornecem um trampolim para desenvolvedores inexperientes e uma base sólida para desenvolvedores já experimentados.

Esse tipo de legitimização pode ser mais um dos passos que vai conduzir o JavaScript ao ponto em que outras linguagens igualmente dinâmicas não podem chegar.

Razão #5: Distribuição ubíqua

O JavaScript não está mais só nos navegadores. Como mencionado anteriormente, tanto o Adobe Air quanto o Silverlight incorporam funcionalidades baseadas em JavaScript–e de maneira muito significativa.

Mas a evolução do JavaScript não para aí. Máquinas virtuais stand-alone já existem e podem ser usadas para basicamente qualquer tipo de desenvolvimento necessário com JavaScript. A mera integração com o Java permite o acesso a uma quantidade enorme de bibliotecas que transformam o desenvolvimento de novas aplicações um passo trivial.

O processo atual de desenvolvimento do JavaScript está formando um círculo virtuoso de desenvolvimento que está colocando a linguagem em uma posição de franca ascenção. Desdobramentos como a liberação do Tamarin são avanços que repercutiram em breve na comunidade de desenvolvimento.

Olhando para a combinação acima, eu não duvido que em breve surja um framework Web baseado em JavaScript, funcionamente equivalente ao Rails ou Seaside, capaz de ser rodado em basicamente qualquer plataforma possível, dada a profileração do JavaScript, e com a capacidade de integrar-se intimamente com outras ferramentas baseadas em JavaScript. É só uma questão de tempo.

Conclusão

Prever o futuro é uma atividade essencialmente frágil. Mas especular sempre é interessante quando o passo de modificações em uma determinada área parece chegar em um certo nível onde tudo parece posssível. Esse é o caso do JavaScript agora, em minha opinião, e as cinco razões acima são uma reflexão desse pensamento.

Eu volto então à minha aposta: e se eu tivesse que apostar agora, eu apostaria no JavaScript.

SOA, convergência e o fim dos power users

May 12th, 2007 § 0 comments § permalink

O Luiz Rocha comenta mais uma vez sobre SOA e posso dizer que concordo amplamente. Em especial, o ponto abaixo de chamou a atenção:

O principal benefício que eu vejo em SOA, nesse conceito de se desenvolver arquiteturas distribuídas, cujo elemento atômico é um serviço–a menor unidade relevante para o negócio a ser tratado–é que cria uma arquitetura que é adaptável as mudanças tecnológicas.

A maior mudança tecnológica que termos presenciado nos últimos dez anos não é em absoluto visível: é a aceitação maior de um fator de mudança no que tange a sistemas. Pode parecer estranho dizer isso, considerando o clichê sempre repetido de que a tecnologia muda com a velocidade do pensamento, mas há uma resistência inerente mesmo nas maiores guerras por inovação. Isso é expresso, em especial, pelo mito de backwards compatibility para sistemas. Eu não estou falando também em termos de usuários, mas em termos de arquiteturas. O desenvolvimento tem tendido a uma modularização real e bastante específica que provavelmente terá o seu desfecho, em termos concretos do que vem acontecendo nos últimos anos, com implementações práticas de SOA.

Um fator que eu acredito estar por trás disso é justamente outro ponto em que o Luiz toca, ao mencionar as pessoas que trocam de celular para aproveitar as novas tecnologias. Esse tipo de atitude, antes reservado para a parte geek da população, está agora se entranhando em todos as classes de usuários. Celulares são um exemplo particularmente apto porque suas gerações tem em média dois ou três meses de duração. E aqui entra outra consideração: o power user está desaparecendo–desparecendo porque, efetivamente, cada usuário atual está se transformando em um.

A cada mês, dois ou três artigos são publicados dizendo que “ainda não estamos lá” no que tange à computação móvel. O que todos esses artigos ignoram, sem exceção, é que a convergência está acontecendo em uma passo tão rápido que está quase passando despercebida. Houve uma época em que um celular era não mais do que um rádio glorificado enquanto, hoje, mesmo as unidades mais simples empacotam um poder de processamento enorme. Se hoje estamos falando no colapso da telefonia fixa, logo estaremos falando no fim da telefonia móvel como um negócio monolítico, monopolista e mal-gerenciado. Combine redes mesh, banda efetivamente ilimitada, VoIP, e processamento distribuído em larga escala e estamos falando de uma realidade inteiramente diferente da atual.

O que me lembra de algo: o melhor modo de prever o futuro é inventá-lo.

Where Am I?

You are currently browsing the Futuro category at Superfície Reflexiva.