# LabVIEW

O LabVIEW (acrónimo para Laboratory Virtual Instrument Engineering Workbench) é uma linguagem de programação gráfica originária da National Instruments. A primeira versão surgiu em 1986 para o Macintosh e atualmente existem também ambientes de desenvolvimento integrados para os sistemas operacionais Windows, Linux e Solaris.$^{:3}$
Os principais campos de aplicação do LabVIEW são a realização de medições e a automação. A programação é feita de acordo com o modelo de fluxo de dados, o que oferece a esta linguagem vantagens para a aquisição de dados e para a sua manipulação.
Os programas em LabVIEW são chamados de instrumentos virtuais ou, simplesmente, IVs. São compostos pelo painel frontal, que contém a interface, e pelo diagrama de blocos, que contém o código gráfico do programa. O programa não é processado por um interpretador, mas sim compilado. Deste modo a sua performance é comparável à exibida pelas linguagens de programação de alto nível. A linguagem gráfica do LabVIEW é chamada "G".

## Metodologia de programação

Os blocos de funções são designados por instrumentos virtuais. Isto é assim porque, em princípio, cada programa (Sub-IV) pode ser usado como sub-programa por qualquer outro ou pode, simplesmente, ser executado isoladamente. Devido à utilização do modelo do fluxo de dados, as chamadas recursivas não são possíveis, podendo-se, no entanto, conseguir esse efeito pela aplicação de algum esforço extra.$^{:1–2}$
O programador liga IVs com linhas (arames) de ligação e define, deste modo, o fluxo de dados. Cada IV pode possuir entradas e/ou saídas. A execução de um IV começa quando todas as entradas estão disponíveis; os resultados do processamento são então colocados nas saídas assim que a execução do sub-programa tenha terminado. Desta forma, a ordem pela qual as tarefas são executadas é definida em função dos dados. Uma ordem pré-definida (por exemplo, "da esquerda para a direita") não existe.
Uma importante consequência destas regras é a facilidade com que podem ser criados processos paralelos no LabVIEW. Os sub-IVs sem interdependência dos respectivos dados são processados em paralelo.
Os sub-IVs que não possuem entradas são executados no início do programa. Se o sub-IV não possuir saídas, os dados resultantes são ignorados ou, então, usados pelo exterior: são escritos para o disco rígido ou para a rede, ou enviados para impressão. Da mesma forma, um sub-IV sem entradas pode receber dados provenientes de aparelhos periféricos ou pode gerar os seus próprios dados (um exemplo é um gerador de números aleatórios).
Os sub-IVs podem estar interligados com muita complexidade. Muitas das funções próprias do LabVIEW são, por sua vez, IVs normais, que podem ser modificados pelo programador (o que não é recomendado). Todos os IVs se baseiam numa série de funções básicas, chamadas "primitivas", que não podem ser modificadas pelo programador (ao invés dos IVs).
Muitos IVs e primitivas em LabVIEW são polimorfos, ou seja, a sua funcionalidade adapta-se ao tipos de dado que recebem. Por exemplo, a função Build-Array pode ser usada para a criação de quaisquer variáveis, ou seja, de strings, de inteiros e também de arrays e de clusters. Também é possível ao programador construir os seus próprios IVs polimorfos. No fundo, consistem de uma colecção de vários IVs com diferentes tipos de dados, entradas e saídas.
Os dados podem ser ligadas ao Painel frontal através de manipuladores. Por exemplo, a inserção de números pode ser dependente de um manípulo e uma variável de saída booleana pode ser realizada por um LED colocado no painel.
O painel frontal do LabVIEW é um meio confortável para construir programas com uma boa interface gráfica. O programador não necessita de escrever qualquer linha de código. A apresentação gráfica dos processos aumenta a facilidade de leitura e de utilização. Uma grande vantagem em relação às linguagens baseadas em texto é a facilidade com que se cria componentes que se executam paralelamente. Em projetos de grande dimensão, é muito importante planejar a sua estrutura desde o início (como acontece nas outras linguagens de programação).

## Desvantagens

As desvantagens do LabVIEW face à programação por texto são, essencialmente:
* Pequenas mudanças podem ocasionar profundas reestruturações do programa, uma vez que sempre que se insere um novo bloco é necessário voltar a ligar os fios e os símbolos para restabelecer o funcionamento.
* Para evitar confusões de linhas é habitual introduzir mais variáveis do que aquelas que são estritamente necessárias, diminuindo-se assim a velocidade de programação e contrariando-se, de algum modo, o modelo de fluxo de dados.
Por um lado, é confortável programar sem código: mas não se deve esquecer que no LabVIEW é muito importante planejar muito bem o projecto antes de se passar à realização dos IVs.