Olá pessoal! Nesse post tentarei fazer um comparativo um tanto quanto informal em relação aos dois ambientes de programação fornecidos pelo Ginga, o Ginga-NCL e o Ginga-J.

Comparações geram sempre controvérsias, ainda mais em se tratando de tecnologias muito novas como essas (pelo menos no caso da NCL, já que Java não é tão nova assim).

Entretanto, existem alguns aspectos mais gerais sobre linguagens de programação que podem ser aplicados. São nesses aspectos que eu vou procurar justificar a comparação.

Produtividade

Tradicionalmente as linguagens declarativas são mais produtivas que as linguagens imperativas de uso geral. Um dos motivos é que a linguagem declarativa normalmente é desenvolvida para resolver um problema específico, isto é, foram otimizadas para resolver apenas um problema, porém resolve da forma mais produtiva.

Essas linguagens são as chamadas Linguagens de Domínio Específico (DSL). Há quem advogue que o mundo ideal seria se houvesse uma DSL para resolver cada tipo de problema. Partindo dessa premissa bem conhecida, podemos inferir que, de modo geral, DSLs são mais produtivas que linguagens de uso geral.

Se considerarmos que as linguagens de uso geral são bem conhecidas, por serem usadas mais frequentemente pelos programadores, é possível que inicialmente ela forneça uma produtividade maior devido ao aprendizado que será necessário para utilizar uma linguagem declarativa. Entretanto, no caso do Ginga-J é necessário aprender as bibliotecas extras que ela inclui, o que não tornará isso necessariamente uma verdade.

Ginga-NCL utiliza como base a linguagem declarativa NCL que foi desenvolvida especificamente para definir relacionamentos espaciais e temporais, ao passo que o Ginga-J utiliza a linguagem imperativa Java. Para oferecer suporte à criação de aplicações interativas, o Ginga-J precisa incluir algumas bibliotecas extras, como Java TV, por exemplo.

Desempenho

Normalmente os programas escritos em NCL necessitam de menos código, o que pode ser uma vantagem pois reduz o tempo de transmissão da aplicação.

Além disso, alguns profissionais estão reclamando que as aplicações escritas usando o Ginga-J estão demorando para serem iniciadas no set-top box do telespectador. A linguagem Java também é tida como mais lenta devido a sua maior robustez, enquanto a NCL, devido a sua simplicidade, requer menos poder de processamento.

Comunidade

É indiscutível que a linguagem Java possui uma comunidade maior, estando em primeiro lugar entre as linguagens mais populares. Java é utilizada para inúmeros fins, desde aplicações corporativas, aplicações desktop e mobile, enquanto que NCL é utilizada apenas para especificação de relacionamentos espaciais e temporais.

Sendo assim algumas empresas, como é o caso da Globo, estão optando ou podem vir a optar por utilizar o Ginga-J para criação de aplicações interativas, devido a maior oferta de profissionais que dominam a linguagem.

Poder de expressão

Como regra geral, podemos dizer que toda linguagem declarativa possui poder de expressão limitado. É possível que os projetistas da linguagem não tenham pensado em algum cenário de uso e com isso algum problema possa simplesmente ser impossível de ser expressado utilizando NCL.

Do outro lado, o poder de expressão de uma linguagem como Java é “virtualmente” ilimitado. Se um problema não puder ser expressado utilizando uma linguagem de uso geral, é impossível expressá-lo utilizando qualquer outra linguagem.

Felizmente o Ginga-NCL vem equipado também com a linguagem Lua, que assim como Java, é imperativa. Isso permite que o Ginga-NCL seja tão expressivo quanto o Ginga-J.

Portabilidade

De acordo com a norma brasileira para TV Digital Terrestre, apenas a especificação Ginga-NCL é obrigatória em todos os dispositivos. A especificação Ginga-J é apenas obrigatórias para receptores fixos e móveis (TV, set-top box) e opcional para dispositivos portáteis (celulares, smartphones, etc).

Isso pode não significar nada, visto que Java está disponível em uma grande quantidade de celulares e não é uma tecnologia obrigatória. Entretanto, se você quer a garantia que a sua aplicação irá funcionar em todos os dispositivos, opte pelo Ginga-NCL.

Conclusão

A princípio o Ginga-NCL parece oferecer tudo que é necessário para fazer qualquer tipo de aplicação para a TV Digital, oferecendo maior produtividade, portabilidade e desempenho em comparação ao Ginga-J.

Entretanto nenhuma das tecnologias atingiu um grau de maturidade suficiente para que possamos considerar essa conclusão definitiva. Por muito tempo o Brasil apenas consumiu tecnologia estrangeira e o Ginga-NCL além de ser uma tecnologia genuinamente brasileira, ainda tornou-se um padrão de relevância internacional. Essa é uma boa fonte de inspiração para que os brasileiros passem a pensar em não só consumir, mas também em criar novas tecnologias.

E qual a sua opinião sobre esses subsistemas? Qual você prefere?

Deixe um comentário com a sua opinião!