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
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
- Page 349 and 350: PARTE IIITópicos Avançados309
- Page 351 and 352: 14.1 Integrando Objetos Hipermídia
- Page 353 and 354: do vídeo de propaganda, toda a exi
- Page 355 and 356: Listagem 14.2 Âncoras de conteúdo
- Page 357 and 358: Da mesma forma, cada mudança em um
- Page 359: como especificado) do dispositivo s
- Page 362 and 363: Capítulo 15Programando paraMúltip
- Page 364 and 365: mídia. Ele deve ser capaz apenas d
- Page 366 and 367: zIndex=0. Se vários mapas/amostras
- Page 368 and 369: (que executa o documento NCL). A se
- Page 370 and 371: Devemos notar que, se no exemplo o
- Page 372 and 373: Se um elemento em exibição nessa
- Page 374 and 375: Queremos que, na nova versão do do
- Page 376 and 377: Listagem 15.6 O Primeiro João com
- Page 378 and 379: No entanto, devemos ressaltar: Não
- Page 380 and 381: Figura 15.5 Apresentação em um ú
- Page 382 and 383: 16.1 IntroduçãoO núcleo da máqu
- Page 384 and 385: elemento pode ser deixado inconsis
- Page 386 and 387: addRegion (baseId,documentId, regio
- Page 388 and 389: addInterface (baseId,documentId, no
- Page 390 and 391: 5. Adicionar uma região à base de
- Page 392 and 393: Suponha também que todos os arquiv
- Page 394 and 395: O descritor de evento terá a sinta
- Page 396 and 397: Tabela 16.11 Descritor de evento pa
- Page 398 and 399: 16.3.11 Fechar a Base Privada Abert
- Page 402 and 403: Todos os requisitos explicitados no
- Page 404 and 405: sem especificar uma de suas âncora
- Page 406 and 407: Como todo exibidor de objeto de mí
- Page 408 and 409: playerLife pode permitir o reúso d
- Page 410 and 411: 18.1 A Linguagem LuaDesde o início
- Page 412 and 413: mecanismos de integração com o do
- Page 414 and 415: event.post {class = 'ncl',type = 'p
- Page 416 and 417: arquivo NCL que contém o objeto NC
- Page 418 and 419: pInicioonBeginstartonBeginlua1onEnd
- Page 420 and 421: 380-- 2.lua:function tratador (evt)
- Page 422 and 423: • class: 'ncl'• type: 'attribut
- Page 424 and 425: mesmo. Toda vez que o botão é sel
- Page 426 and 427: local contador = 0function tratador
- Page 428 and 429: local regLarg, regAlt = canvas:attr
- Page 430 and 431: pInicioluachegouonBeginstartganhouF
- Page 432 and 433: event.post {class = 'ncl',type = 'p
- Page 434 and 435: pode, a partir de outro trecho do c
- Page 436 and 437: Os parâmetros são as posições x
- Page 438 and 439: A Figura 18.11 ilustra as visões t
- Page 440 and 441: 400Os campos de saída são represe
- Page 442 and 443: 402Apêndices
- Page 444 and 445: A.1 Informação e SinalOs seres hu
- Page 446 and 447: A.2 Conversão de SinaisPara utiliz
- Page 448 and 449: Figura A.2: Lei A e lei .A Tabela A
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