LabVIEW
LabVIEW (съкратено от Laboratory Virtual Instrumentation Engineering Workbench) е графичната програмна среда на National Instruments. В дистрибуцията на LabVIEW се съдържа пълноценна развойна среда с много библиотеки и инструменти. Графичният програмен език се нарича G. Първата версия е пусната през 1986 г. за компютри от типа Apple Macintosh. Текущата версия е 2012. LabVIEW се използва за извличане на данни, управление на инструменти и индустриална автоматизация върху множество платформи, включително Microsoft Windows, GNU/Linux, Solaris и MacOS.

Програмите и подпрограмите на LabVIEW се наричат виртуални инструменти (virtual instrument – VI). Всяко VI има два компонента – „блокова диаграма“ и „преден панел“. „Контроли“ и „индикатори“ върху предния панел позволяват на оператора да въвежда и получава данни в/от работещия виртуален инструмент.

G е програмен език базиран на потоци от данни. За разлика от традиционните езици, работата на програмата не се определя от последователното изпълнение на инструкции. Вместо това изпълнението започва, когато всички входни данни за даден модул са налични. Тъй като това може да се случи за няколко модула едновременно, G е по природа приспособен за паралелно изпълнение. Многопроцесорните системи, многоядрените и многонишковите процесори, които напоследък навлизат и в по-ниските ценови сегменти, автоматично се възползват от вградения разпределител на задачите. Той мултиплексира множество ОС-нишки към модулите, готови за изпълнение. Както при всяка друга система за паралелно програмиране недостатъкът на LabVIEW се състои в това, че съществуват предпоставки за състезание на сигналите/резултатите. Също така последователността на изпълнение е по-трудно да бъде обхваната и обмислена за разлика от традиционните последователно-изпълняващи езици като C, Visual Basic и др.

Основното предимство на потока от данни е това, че той може да се представи чрез графична метафора: модулите са графични икони, данните преминават по линии от един модул към следващия. Докато диаграмите се събират на един екран, двуизмерното графично представяне позволява по-ефикасно използване на пропускателния капацитет на човешкото зрение.

LabVIEW отива още по-далеч като обединява изработката на потребителския интерфейс („преден панел“) и писането на програмния код. Потребителските интерфейси изпълняват две функции. Първо тази на виртуален инструмент, който може да се стартира като програма, при който предния панел играе ролята на потребителски интерфейс. Второ, когато виртуалният инструмент се постави като модул в блокова диаграма, елементите на предния панел играят ролята на входове и изходи за модула. По този начин VI могат лесно да се тестват като малки програми, преди да бъдат вградени като подфункция в голямото приложение.

Графичният подход позволява не-програмисти да конструират неголеми програми като просто влачат и пускат (drag’n’drop) виртуалните образи на лабораторни инструменти, с които вече са свикнали. Графичното програмиране заедно с включените примери и документация прави възможна бързата изработка на малки програми. Все пак за сложни алгоритми или по-мащабен код ограничените възможности за абстракция и статичността на езика (G е еквивалентен на C с управление на паметта, но без указатели) бързо се превръщат в пречки. Директната връзка между потребителски интерфейс и изпълним код породена от развойната среда също допринася за някои проблеми със скалируемостта.

Основното предимство на LabVIEW спрямо другите среди за разработка е богатата поддръжка на инструментална техника. Достъпни или дори включени в основния пакет са драйвери и абстракционни слоеве за множество видове инструменти и шини. Те представляват лесни за използване графични модули. Абстракционните слоеве предоставят изолация между конкретната хардуерна реализация и софтуерното решение. Без тези предоставени софтуерни драйвери и интерфейси това би струвало неимоверно много време и усилия. Една от целевите групи на National Instruments са хората с малко или никакъв опит в програмирането, които ще могат да пишат програми и да внедряват тестващи системи за по-малко време в сравнение с обикновените или конкурентните продукти. Като основен конкурент за контрол на измервателна техника и инструменти може да се приеме Agilent VEE. Алтернативна драйверна библиотека за GNU/Linux е Comedi.

LabVIEW съдържа и същински компилатор, който произвежда специфичния код за конкретната CPU платформа (PC, Mac или Sun). Графичният код не се интерпретира, а компилира. Компилацията се осъществява непрекъснато (on-the-fly compiling) докато графичният код на виртуалните инструменти се редактира. Генерираният код е малко по-бавен от еквивалентен компилиран C код, но това е ниска цена за увеличената продуктивност предоставена от уникалната патентована система за разработка чрез графичен код.

Външни препратки 
 Официална страница на LabVIEW
 Учебни ресурси за LabVIEW 
 Официален сайт на National Instruments
 National Instruments в България 
 OpenG  – Общност за разработка на отворени LabVIEW приложения 
 Форум за LabVIEW 
 LAVA – LabVIEW Advanced Virtual Architects (news and discussion forums) .
 LAVA Code Repository – Community Supported LabVIEW Downloads 
 The LabVIEW FAQ 

Научен софтуер
Езици за програмиране
Автоматизация