A linguagem NCL (Nested Context Language), motivo de orgulho para os brasileiros, é padrão do Sistema Brasileiro de TV Digital Terrestre e Recomendação H.761 da União Internacional de Telecomunicações para serviços IPTV. Seu desenvolvimento começou há alguns anos, e como qualquer trabalho de sucesso é fruto do esforço e dedicação de pesquisadores de extrema qualidade.
Neste artigo acompanharemos um pouco do histórico da linguagem NCL destacando os pontos mais importantes.
A linguagem NCL, como toda linguagem declarativa, é baseada em um modelo conceitual de dados. NCL tem por base o modelo NCM (Nested Context Model).
Tal modelo teve início com o projeto HyperProp, cujas origens encontram-se na década de 80, quando foi criado o departamento de informática da PUC-Rio. Em 1991 foi liberado o primeiro protótipo do sistema HyperProp e publicado o primeiro artigo sobre o modelo NCM. Hoje o modelo encontra-se na sua versão 3.0.
A primeira versão da linguagem NCL foi publicada em 2000, fruto da dissertação de mestrado de Meire Juliana Antonacci. Nesta versão a linguagem NCL foi especificada através de uma DTD (Document Type Definition).
Em março de 2003 foi publicada a tese de doutorado da Professora Débora Christina Muchaluat Saade que atualizou NCL para a versão 2.0. Essa versão foi especificada em XML Schema e de forma modular, permitindo a criação de perfis de linguagem a partir da combinação de seus módulos. Onde cada perfil poderia agrupar subconjuntos de módulos, possibilitando a criação de linguagens de acordo com a necessidade dos usuários. Além da nova estrutura modular a versão 2.0 introduziu novas facilidades:
- a definição de conectores hipermídia e de bases de conectores;
- o uso de conectores hipermídia para a autoria de elos;
- a definição de bases de elos;
- o reuso de elos e bases de elos em diferentes documentos;
- a definição de portas e mapeamentos para nós de composição, satisfazendo a propriedade de composicionalidade dos documentos;
- a definição de templates (módulo XTemplate) de composição hipermídia, permitindo a especificação de restrições em documentos;
- a definição de bases de templates de composição;
- o uso de templates de composição para a autoria de nós de composição;
- o refinamento da especificação de documentos com alternativas de conteúdo, através do elemento switch, que agrupa um conjunto de nós alternativos;
- o refinamento da especificação de documentos com alternativas de apresentação, através do elemento descriptorSwitch, que agrupa um conjunto de descritores alternativos, como será detalhado mais adiante;
- o uso de um novo modelo de layout espacial, que possibilita especificar informações para posicionamento de objetos em um dispositivo de saída.
A versão 2.1 da linguagem NCL foi especificada com a dissertação de mestrado publicada em abril de 2005 por Heron Vilela de Oliveira e Silva. Nesta versão foi adicionado um módulo para definição de funções de custo que permitiam a especificação da duração dos objetos de mídia de forma flexível, foi incluído o módulo para definição de regras de apresentação para serem utilizadas nos contexto switch e no elemento descriptorSwitch e também foram feitos alguns refinamentos no módulo XTemplate.
A data exata de lançamento da versão 2.2 é difícil de precisar. Nesta versão da linguagem NCL foram feitas pequenas modificações em relação à versão 2.1, tais modificações foram relacionadas a definição dos elementos da linguagem como uma nova abordagem para a definição dos módulos e perfis NCL.
Podemos citar a data da publicação da Especificação do Perfil Principal (Main Profile) (NCL 2.3), de Abril de 2006, como a data de lançamento da versão 2.3. Nesta versão foram introduzidos dois novos módulos para permitir o suporte ao reuso de bases e entidades. Também foram refinados alguns elementos para dar suporte às novas funcionalidades. Para esta versão também foram lançadas a primeira edição do Manual para Construção de Programas Audiovisuais Interativos e do Manual de Construção de Programas Audiovisuais Interativos Utilizando o COMPOSER.
Também não existem muitas informações sobre a versão 2.4 da linguagem NCL. Nesta versão foram revistos o suporte a reuso e a especificação dos elementos switch e descriptorSwitch; esta versão também é responsável pela divisão do módulo Timing, introduzido por NCL 2.1.
Pode-se considerar outubro de 2006 como a data de lançamento da versão 3.0 da linguagem NCL, nessa ocasião foi publicada a especificação Nested Context Language 3.0 Part 8 – NCL Digital TV Profiles. Nesta versão foram introduzidas duas novas funcionalidades: a navegação através do uso de teclas e as funcionalidades de animação. Também foram feitas grandes modificações na funcionalidade de template de nó de composição, a especificação de conectores hipermídia foi re-estruturada para permitir uma notação mais concisa, os relacionamentos entre os objetos imperativos NCL e outros objetos NCL também foram definidos nesta versão.
Em 30 de Novembro de 2007 foi publicada a norma ABNT NBR 15606-2 padronizando a linguagem NCL como linguagem declarativa do Sistema Brasileiro de TV Digital Terrestre.
No dia 29/04/2009, a linguagem NCL e seu ambiente de apresentação Ginga-NCL foram aprovados como padrão pela União Internacional de Telecomunicações.
Vale mencionar que na página oficial sobre as versões da linguagem NCL não existem informações sobre as datas de lançamento de cada versão nem sobre todas as publicações que foram citadas neste artigo, foi necessário um trabalho de pesquisa para o levantamento de tais informações. Portanto as datas e as publicações apresentadas neste artigo não têm caráter oficial.
Referências:
- ABNT NBR 15606-2, 2007
- ITU-T H.761, 2009
- Nested Context Model 3.0 Part 1 – NCM Core
- HyperProp: Uma Visão Geral
- The nested context model for hyperdocuments
- NCL: Uma Linguagem Declarativa para Especificação de Documentos Hipermídia com Sincronização Temporal e Espacial
- Relações em Linguagens de Autoria Hipermídia: Aumentando Reuso e Expressividade
- Nested Context Language 3.0 Part 8 – NCL Digital TV Profiles
- X-SMIL: Aumentando Reuso e Expressividade em Linguagens de Autoria Hipermídia
- Especificação do Perfil Principal (Main Profile) (NCL 2.3)
- Nested Context Language 3.0 Part 8 – NCL Digital TV Profiles
- Versões da NCL