O documento discute o desenvolvimento de uma linguagem de programação para bioinformática que forneça alto desempenho, robustez e facilidade. A bioinformática combina várias áreas para processar dados biológicos usando softwares. Lua é uma linguagem leve usada em jogos e sistemas embarcados, mas C/C++ é mais rápida que Java para bioinformática. O objetivo é uma linguagem específica para a área, aproveitando as vantagens de Lua e C/C++.
2. Índice
• O que é Bioinformática?
• O que é a linguagem de programação LUA?
• O que é o projeto Linux?
• Problema.
• Objetivo geral.
• Objetivos específicos.
• Referências
3. Bioinformática
• A Bioinformática combina conhecimentos de química,
física, biologia, ciência da computação, informática e
matemática/estatística para processar dados biológicos
ou biomédicos.
• Buscando tratar os dados, é necessário desenvolver
softwares para, por exemplo: identificar genes, prever a
configuração tridimensional de proteínas, identificar
inibidores de enzimas, organizar e relacionar informação
biológica, simular células, agrupar proteínas homólogas,
montar árvores filogenéticas, comparar múltiplas
comunidades microbianas por construção de bibliotecas
genômicas, analisar experimentos de expressão gênica
entre outras inúmeras aplicações.
5. Linguagem de programação LUA
• Lua é uma linguagem de programação poderosa, rápida e
leve, projetada para estender aplicações.
• Lua combina sintaxe simples para programação
procedural com poderosas construções para descrição de
dados baseadas em tabelas associativas e semântica
extensível. Lua é tipada dinamicamente, é interpretada a
partir de bytecodes para uma máquina virtual baseada
em registradores, e tem gerenciamento automático de
memória com coleta de lixo incremental. Essas
características fazem de Lua uma linguagem ideal para
configuração, automação (scripting) e prototipagem
rápida.
6. Linguagem de programação LUA.
• Lua é usada em muitas aplicações industriais (e.g.,
Adobe's Photoshop Lightroom), com ênfase em sistemas
embutidos (e.g., o middleware Ginga para TV digital) e
jogos (e.g., World of Warcraft). Lua é atualmente a
linguagem de script mais usada em jogos.
7. Linux
• O linux é o termo utilizado para designar qualquer
sistema operacional que utilize núcleo Linux.
• Construído sobre GPL, permite uma maior liberdade para
a pessoa utilizar, estudar, modificar e distribuir softwares
baseados nesse tipo de licença.
• O Linux utiliza núcleo monolítico, o que permite uma
maior velocidade de execução das tarefas, apesar da
desvantagem de qualquer erro no núcleo ser geralmente
fatal para todo o sistema.
• Sistemas Linux são famosos por sua robustez e
segurança, devido a sua arquitetura.
8. Problema
• Os softwares para bioinformática necessitam de um
rápido processamento e um alto grau de robustez.
• A linguagem de programação C/C++, cumpre seu papel
de alto desempenho na maior parte das funções de
software necessárias a área de bioinformática, porém
não provê uma boa robustez como a linguagem Java,
devido a filosófia adotada de não existir uma melhor
maneira para se resolver tudo, então o programador é
quem deve cuidar de certas particularidades, como por
exemplo o gerenciamento de memória, ao contrário de
Java que por sua vez perde em desempenho para a
linguagem C/C++ na maior parte das funções de software
necessárias a área de bioinformática, devido a sua
arquitetura, mas permite um alto grau de robustez como
por exemplo o gerenciamento automático de memória.
9. Problema
• Como podemos ver no benchmark abaixo:
Speed Neighbor-Joining in seconds:
This program reads DNA sequences from a FASTA file and infers an NJ
tree. The tree is printed to the standard output in the newick format.
10. Problema
• O problema é a falta de uma tecnologia ou um conjunto
de tecnologias (Sistema) voltada especifícamente ao
desenvolvimento de software de bioinformática,
buscando potencializar ao máximo a capacidade de
construção e execução sem erros do referido tipo de
software, o que se aproxima da idéia de linguagem de
domínio específico, ou seja, linguagem que tem como
propósito a solução de problemas específicos.
Exemplo de softwares de domínio específico:
• Linguagem de programação “Logo” para
desenvolvimento de software para crianças.
• Linguagens de programação “Verilog”, “R” e “S” para
desenvolvimento de softwares de estatística.
• Linguagem de programação “Mata” para programação de
matrizes.
11. Objetivo Geral
• Propor o desenvolvimento de uma tecnologia que
possiblite a programação de software para
bioinformática que ofereça alto grau de robustez,
facilidade, flexibilidade e alto desempenho no
desenvolvimento, teste e execução de software para
bioinformática.
12. Objetivos Específicos
• Implementar paradigma de orientação a objetos.
• Possuir suporte nativo a linguagem de programação Lua,
para facilitar a integração do software com outras
tecnologias.
• Gerenciamento automático de memória e desalocação
manual.
• Reduzir número de bugs e tempo de desenvolvimento.
• Ser compatível com API C/C++.
• Reduzir o tempo de criação de documentação.
• Ter alto desempenho.
• Ser fácil.
• Possuir sintaxe semelhante a linguagem Lua.
13. Justificativa
• O presente trabalho se mostra relevante, diante do
crescimento da área de bioinformática no mundo e o
crescimento do Brasil como um centro de ciência e
pesquisa.
• O trabalho e seu resultado deve ser utilizador por
estudantes, pesquisadores e profissionais para o
desenvolvimento de tecnologia em bioinformática, que
se beneficiarão das qualidades do projeto proposto para
ajudar a implementar suas idéias, assim como a
economia da região que deve se beneficiar do avanço
promovido pela tecnologia proposta por esse trabalho.
14. Referências
• Vogt, Carlos, Bioinformática, genes e inovação, Revista
ComCiência 08/2003.
• Fontoura Costa, Luciono, Bioinformatics: perspectives for
the future, Genet. Mol. Res. 3 (4): 564-574 (2004).
• Language Benchmarks. Disponível em <
http://www.bioinformatics.org/benchmark/results.html>
. Acesso em: 11/09/2010.
• Linguagem de programação LUA. Disponível em <
http://www.lua.org/ >. Acesso em: 11/09/2010.