Programando em NCL 3.0.pdf - Telemidia - PUC-Rio

Programando em NCL 3.0.pdf - Telemidia - PUC-Rio Programando em NCL 3.0.pdf - Telemidia - PUC-Rio

telemidia.puc.rio.br
from telemidia.puc.rio.br More from this publisher
11.07.2015 Views

17.1 Integrando Objetos Imperativos à NCLComo vimos no Capítulo 1,o universo das aplicações de TVD (TVDigital) pode ser particionado em um conjunto de aplicações declarativas eum conjunto de aplicações imperativas. A entidade inicial de uma aplicação,isto é, aquela que dispara a aplicação, é que define a que conjunto a aplicaçãopertence, dependendo de essa entidade ser codificada segundo uma linguagemdeclarativa ou imperativa. Note que aplicações declarativas podem conterentidades imperativas e vice-versa; o que as caracteriza é apenas a entidadeinicial.Linguagens declarativas enfatizam a descrição declarativa de umatarefa, em vez de sua decomposição passo a passo, em uma definiçãoalgorítmica do fluxo de execução de uma máquina, como fazem as descriçõesimperativas. Por ser de mais alto nível de abstração, tarefas descritas deforma declarativa são mais fáceis de ser concebidas e entendidas, sem exigirum programador especialista, como é usualmente necessário nas tarefasdescritas de forma imperativa. Contudo, uma linguagem declarativa muitasvezes visa a um determinado domínio de aplicações e define um modeloespecífico para esse domínio.Linguagens imperativas de propósito geral são bem expressivas, poréma um elevado custo. Como mencionado, elas usualmente exigem umprogramador especialista, geralmente colocam em risco a portabilidade deuma aplicação, e o controle da aplicação é muito mais sujeito a erroscometidos pelo programador.A autoria de aplicações puramente declarativas usando linguagens dedomínio específico é vantajosa quando ela depende apenas de recursosprevistos no projeto da linguagem. Quando uma aplicação necessita defuncionalidades não-previstas pela linguagem declarativa, a solução pode setornar complicada ou até mesmo impossível.Uma solução para esse impasse consiste em adicionar algum suporteimperativo à linguagem declarativa de domínio específico; assim, o autor deaplicações poderá usar a forma declarativa sempre que possível e tirarproveito da forma imperativa quando necessário. Quando uma tarefa casarcom o modelo da linguagem declarativa, o paradigma declarativo será, emgeral, a melhor escolha. No entanto, nos casos em que o foco de realização deuma tarefa não casar com o foco da linguagem declarativa, o paradigmaimperativo será, em geral, a melhor escolha. De fato, a solução pode advirpela adição, à linguagem declarativa de domínio específico, de suporteproveniente do uso de linguagens de propósito geral, incluindo, além daslinguagens imperativas, as linguagens funcionais, linguagens lógicas etc.360

Em NCL, a realização de algumas tarefas é complicada sem auxílioimperativo, tal como processamento matemático, manipulação sobre textos,animações complexas e colisões para objetos gráficos, enfim, de modo geral,tarefas que necessitem da especificação de algoritmos e estruturas de dadosque não aquelas providas de forma nativa pela linguagem.Objetos imperativos podem ser incluídos em documentos NCLdefinindo novos tipos de elemento , cujo conteúdo (localizado atravésdo atributo src) seria composto por códigos em alguma linguagemimperativa 3 . Por exemplo, os perfis BDTV e EDTV da NCL para o SistemaBrasileiro de TV Digital terrestre incluem os tipos application/x-ncl-NCLua,para objetos de mídia com código Lua (extensão de arquivo .lua), eapplication/x-ginga-NCLet, para objetos de mídia com código Java (Xlet)(extensão de arquivo .class ou .jar), esse último só para dispositivos fixos. ARecomendação H.761 para serviços IPTV inclui apenas o tipo application/xncl-NCLua.Alguns requisitos devem ser cumpridos na integração de linguagensdeclarativas e imperativas.No caso de linguagens declarativas e imperativas já especificadas eimplementadas, deve-se mexer o mínimo nas linguagens, para evitar osurgimento de dependências mútuas que comprometam a evoluçãoindependente de cada uma delas.Linguagens declarativas, como a NCL, são facilmente compreendidaspor autores de conteúdo audiovisual que não possuem base de programação,ao contrário de linguagens imperativas. Sendo assim, na integração delinguagens declarativas e imperativas, também é desejado que haja o mínimode intercalação entre seus códigos de modo a simplificar a divisão de tarefasentre equipes de profissionais técnicos e não-técnicos em linguagens deprogramação.Por fim, em apresentações multimídia, o documento declarativo deve sero componente-mestre no qual todos os relacionamentos entre entidades daaplicação, sejam elas declarativas ou não, devem ser definidos explicitamente(por meio de elementos da linguagem declarativa), impedindo que entidadesimperativas sobrepujem essa hierarquia por meio de acessos diretos àestrutura do documento.3 Devemos mais uma vez enfatizar que NCL, como uma linguagem cola, não restringe nem prescrevequalquer tipo de objeto de mídia. Assim poderíamos também ter objetos de mídia com código puramentefuncional, ou em uma linguagem lógica etc. Esses novos objetos poderiam até seguir as mesmas definiçõesdadas neste capítulo. No entanto, vamos, no momento, nos restringir a objetos imperativos, ou seja, cujoconteúdo é definido por trechos de código especificados em uma linguagem seguindo o paradigmaimperativo, incluindo linguagens, como Lua, que não são puramente imperativas.361

17.1 Integrando Objetos Imperativos à <strong>NCL</strong>Como vimos no Capítulo 1,o universo das aplicações de TVD (TVDigital) pode ser particionado <strong>em</strong> um conjunto de aplicações declarativas eum conjunto de aplicações imperativas. A entidade inicial de uma aplicação,isto é, aquela que dispara a aplicação, é que define a que conjunto a aplicaçãopertence, dependendo de essa entidade ser codificada segundo uma linguag<strong>em</strong>declarativa ou imperativa. Note que aplicações declarativas pod<strong>em</strong> conterentidades imperativas e vice-versa; o que as caracteriza é apenas a entidadeinicial.Linguagens declarativas enfatizam a descrição declarativa de umatarefa, <strong>em</strong> vez de sua decomposição passo a passo, <strong>em</strong> uma definiçãoalgorítmica do fluxo de execução de uma máquina, como faz<strong>em</strong> as descriçõesimperativas. Por ser de mais alto nível de abstração, tarefas descritas deforma declarativa são mais fáceis de ser concebidas e entendidas, s<strong>em</strong> exigirum programador especialista, como é usualmente necessário nas tarefasdescritas de forma imperativa. Contudo, uma linguag<strong>em</strong> declarativa muitasvezes visa a um determinado domínio de aplicações e define um modeloespecífico para esse domínio.Linguagens imperativas de propósito geral são b<strong>em</strong> expressivas, poréma um elevado custo. Como mencionado, elas usualmente exig<strong>em</strong> umprogramador especialista, geralmente colocam <strong>em</strong> risco a portabilidade deuma aplicação, e o controle da aplicação é muito mais sujeito a erroscometidos pelo programador.A autoria de aplicações puramente declarativas usando linguagens dedomínio específico é vantajosa quando ela depende apenas de recursosprevistos no projeto da linguag<strong>em</strong>. Quando uma aplicação necessita defuncionalidades não-previstas pela linguag<strong>em</strong> declarativa, a solução pode setornar complicada ou até mesmo impossível.Uma solução para esse impasse consiste <strong>em</strong> adicionar algum suporteimperativo à linguag<strong>em</strong> declarativa de domínio específico; assim, o autor deaplicações poderá usar a forma declarativa s<strong>em</strong>pre que possível e tirarproveito da forma imperativa quando necessário. Quando uma tarefa casarcom o modelo da linguag<strong>em</strong> declarativa, o paradigma declarativo será, <strong>em</strong>geral, a melhor escolha. No entanto, nos casos <strong>em</strong> que o foco de realização deuma tarefa não casar com o foco da linguag<strong>em</strong> declarativa, o paradigmaimperativo será, <strong>em</strong> geral, a melhor escolha. De fato, a solução pode advirpela adição, à linguag<strong>em</strong> declarativa de domínio específico, de suporteproveniente do uso de linguagens de propósito geral, incluindo, além daslinguagens imperativas, as linguagens funcionais, linguagens lógicas etc.360

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!