Подтвердить что ты не робот

Какие особенности LabVIEW вам неприятны?

Пожалуйста, несите меня: это не дискуссия на языке или пламя. Это реальная просьба о мнении.

Иногда мне приходится помогать обучать традиционный текстовый кодер в том, как думать в LabVIEW (LV). Часто во время этого процесса я узнаю, как LV отстой. Редко это понимание сопровождается рациональными наблюдениями, отличными от "Язык X, это намного лучше!". Хотя это утверждение удовлетворяет их, это не помогает мне понять, что их расстраивает.

Итак, для тех из вас, у кого есть опыт LabVIEW и текстового языка, какие конкретные вещи о LV приводят вас в норму?

------ Резюме -------

Спасибо за ответы! Некоторые из вопросов отвечают в комментариях ниже, некоторые существуют на других сайтах, а некоторые из них являются только подлинными проблемами с LV. В духе оригинального вопроса я не буду пытаться ответить на все это здесь: check LAVA или NI, и вы будете приятно удивлены, сколько из этих вещей можно преодолеть.

  • Непреднамеренный concurrency
  • Отсутствие доступа к инструментам обработки текста традиций.
  • Управление исходным кодом только двоичного кода
  • Затрудняюсь к вводу и объединению
  • Слишком много открытых окон
  • Текст имеет более чистый/четкий/более выразительный синтаксис.
  • Чистое кодирование требует большого количества времени и манипуляций.
  • Большой, труднодоступный интерфейс API/палитры
  • Требуется мышь
  • Путь к именам файлов: дублировать файлы с тем же именем в памяти
  • Объекты LV являются только исходными значениями
  • Требуется среда просмотра для просмотра кода
  • Отсутствие масштабирования
  • Медленный запуск
  • Порошок памяти
  • "Гигантский" код трудно работать с
  • Блокировка пользовательского интерфейса легко сделать
  • Трекпады и LV не смешиваются хорошо
  • Обработка строк графически раздута.
  • Ограниченная настройка пользовательского интерфейса
  • "Скрытые" примитивы (да, они существуют)
  • Отсутствие официальной возможности метапрограммирования (но не намного дольше)
  • Отсутствие поддержки юникода.
4b9b3361

Ответ 1

LabVIEW упрощает реализацию concurrency/параллельного программирования. Тем не менее, это не облегчает отладку, тестирование или размышление о concurrency/parallelism. Вы все еще можете писать багги, параллельный код в LabVIEW и (как и на любом языке, платформе или наборе инструментов), нет серебряной пули или волшебной палочки, которая делает concurrency "просто работать".

Во всяком случае, вам нужно быть более осторожным в отношении concurrency, потому что, если вы не задумываетесь (и объявляете) его явно, LabVIEW может сделать что-то параллельное, чего вы не ожидали.

Другие говядины: это не текст. Представление потока данных таким образом, что имеет смысл, означает графический язык, а это означает, что вы не можете использовать инструменты, которые у нас были в течение десятилетий, чтобы манипулировать текстом, от sed до emacs. Это также означает, что приложения для управления исходным кодом должны обрабатывать ваш код как непрозрачные двоичные файлы, а не как... исходный код. Это, в свою очередь, делает разветвление и слияние упражнений с болью.

Ответ 2

Я ценю LabView по-разному, особенно способность легко управлять аппаратным обеспечением (ну, конечно, аппаратное обеспечение National Instruments) и параллельными функциями программирования. Но это отстой в отношении текстовых языков программирования при навигации по коду:

  • когда вы просматриваете код, вы получаете массу открытых окон, так как вы снова и снова открываете subVis
  • потому что слова более выразительны, чем значки, вы видите меньше инструкций на одном экране по сравнению с текстовыми языками, особенно в выразительных синтаксисах, таких как python
  • нет обработки исключений, поскольку мы знаем это на других языках; ошибки выражаются в структурах, переносимых с одного VI на другой, и для каждого ВП вы должны добавить код if error return; else do stuff.
  • Во время отладки не должно останавливаться при возникновении ошибки.

Ответ 3

Labview отлично подходит для управления оборудованием. Я написал несколько приложений Labview для сбора данных (аналоговое напряжение от разных датчиков) и контрольного оборудования (в основном пьезоэлектрические двигатели). Labview позволяет довольно легко выполнять несколько задач параллельно.

Теперь, чтобы ответить на ваш вопрос. Что мне не нравится в Labview.

  • Проведенная организационная блок-схема

    • движущиеся провода вокруг
    • организация узлов

    Возможно, поскольку я сам преподаю, я трачу слишком много времени, пытаясь очистить провода и попытаться следовать им, пытаясь расшифровать, какие данные они переносят и куда они идут.

  • Наведите указатель мыши на объект панели инструментов и найдите функцию node/, которую я хочу разместить на блок-диаграмме или на передней панели.

Мне нужно просто ввести имя функции/метода, которое мне нужно, с параметрами и перейти к...

"hmmm... Мне нужен расчет RMS vi теперь, где это будет? теперь мне нужно И операция. OK вернуться наверх уровень, логические функции, которые из них есть И о, это правильно, что один. На диаграмме проведите его вверх и контрольная работа! Ну, только 15 минут!".

Но, возможно, более эффективный способ работы с Labview, я просто этого не знаю!

Ответ 4

Объекты 1.LabVIEW не передаются по ссылке.
2. Нет другого зрителя (особенно свободного) для просмотра блок-диаграмм.
3. Необходимо открыть большое количество окон для просмотра проекта. Хотелось бы, чтобы это было MDI, чтобы уменьшить количество окон.

Ответ 5

То, что я больше всего расстраивал, было то, что он снял мои руки с клавиатуры. Я машинка для прикосновений и могу писать довольно быстро на текстовом языке. LabVIEW заставляет вас использовать мышь для выбора ВП и программных узлов из своих меню и для соединения узлов вместе. Хотя это действительно быстро и удобно, если вы инженер-электрик, используемый для проектирования схем в графической среде, это боль, если вы привыкли вводить свой код.


Раскрытие информации: Прошло около двух лет с тех пор, как я последний раз использовал LabVIEW, поэтому эти следующие два могут быть исправлены к настоящему времени.

Следующее раздражение было контролем источника. Одна из вещей, которые вы чаще всего используете в своем репозитории управления версиями, - это развернуть текущую версию с предыдущей версией, чтобы найти изменения. Вы не можете сделать это с помощью графического языка, такого как LabVIEW. Популярные системы управления версиями, такие как CVS и SVN, используют текстовые инструменты сравнения за кулисами. Я надеюсь, что National Instruments разработала собственное решение для контроля версий для всех вас, ребята, которые все еще используют LabVIEW.

Последнее раздражение, которое у меня было, было отсутствие реальных объектно-ориентированных языковых функций. LabVIEW 6i, последняя версия, которую я использовал, была в лучшем случае основана на объектах. Никто не мог действительно утверждать, что он объектно-ориентирован. Я не мог создать настоящую иерархию классов с использованием наследования, а полиморфизм был зарезервирован только для нескольких встроенных типов. Я понимаю, что 6i было две версии назад, поэтому я действительно надеюсь, что это исправлено.

Ответ 7

  • Десятки открытых окон - это определенные боль.
  • vi, которые были отредактированы кем-то с больший монитор должен быть изменен.
  • Пользовательский интерфейс временно блокируется при обработке других (может быть, я не понял многопоточный потенциал labview пока)
  • редактирование на ноутбуке с трекпадом ужасно, (не забывайте о маленьком монитор проблема).
  • выполняется сложная манипуляция строк акров пространства (есть функция node для уравнений, почему не регулярное выражение node для обработки строк?)
  • Иногда я нахожу примитивный vi в код других народов, который я не могу найти где угодно в меню.
  • Пользовательский интерфейс может быть настроен только на точку.

Я хотел бы добавить, что я считаю, что labview замечательно мощный и хорошо разработан. очень редко я сталкиваюсь с чем-то, что заставляет меня хотеть, чтобы у меня был другой язык.

Ответ 8

Отсутствие Diff и Merge (за исключением "профессиональной" лицензии)

Мы используем SVN и TortoiseSVN на работе. Я расстроен тем, что не могу сделать diff, чтобы увидеть, что изменилось в файле. Выполнение "diff" является частью ежедневного рабочего процесса при использовании SVN, поэтому разочарование в том, что файл изменился, но не имеет представления, было ли это что-то тривиальное или существенное. Выполнение различий также позволяет систематически просматривать изменения.

Я слышал, что у "профессионала" есть свой инструмент сравнения. У меня возникнут проблемы с убеждением руководства в том, что нам нужна профессиональная функция "diff". И я не смог окончательно прочесть, что он действительно плавно интегрируется с TortoiseSVN.

Использование источника контроля считается одним из лучших в отрасли, поэтому было бы здорово, если NI будет полностью поддерживать его, а не только в "профессиональной" лицензии, чтобы NI не препятствовало внедрению передовых методов.

Ответ 9

Лично я считаю, что LabView - отличная программа для того, для чего она предназначена. Помимо наследования ужасного кода, который является проблемой на любом языке, с хорошей практикой он очень эффективен и быстр для создания всех видов систем управления процессом, автоматизации, тестирования и измерения. Подобно текстовому кодированию, хорошая практика с LabView существует также - если у вас есть скремблированный, беспорядочный VI, то это действительно ошибка кодера, а не языка. Текстовые языки также могут быть очень скремблированы - бремя на программиста не создает излишне грязный или запутанный код.

Если вы начнете писать свой код с учетом будущего расширения, тогда совсем не сложно создавать ВП, которые могут расти с потребностями программы, не становясь громоздкими. Точно так же, как плохой текстовый код может быстро стать беспорядком, если вы взломаете его с помощью краткосрочного обзора, только чтобы он перерастал сам и стал неподъемным. Это означает, однако, что вам нужно потратить время на изучение LabView, точно так же, как вам нужно потратить время на изучение любого языка или среды IDE.

Скорее всего, если LabView разочарует ваши усилия, вы, вероятно, должны использовать что-то еще для создания своей программы или, по крайней мере, что-то еще для тех компонентов программы.

Например, если вам нужно выполнить большую обработку строк - это больше, чем удобно выполнять с помощью строковых функций LabView, но вам действительно нужно или нужно использовать LabView для мяса вашего приложения, тогда есть много вариантов открыт для вас. Вы можете легко закодировать библиотеки DLL в чем-то вроде C или независимо от вашего любимого языка, а затем получить доступ к этим функциям через интерфейс DLL LabView. Это относится к любым типам высокоуровневых или абстрактных функций, которые неудобно реализовать с помощью основных инструментов LabView.

Это имеет два больших преимущества: сначала вы можете сосредоточить свое текстовое кодирование на простом написании функций или процедур. Задача создания приложения вокруг ваших функций не существует. Смешивая его с LabView, вы получаете второе преимущество быстрого и мощного создания пользовательского интерфейса LabView и инструментальной совместимости.

С точки зрения управления версиями, самое главное, что вы можете сделать, - это гибкость присущей LabView возможности модульности. Хотя у вас нет текстовых инструментов, которые помогут вам, например, при попытке отсортировать неизвестный унаследованный код, у него есть другие очень мощные функции, которые абстрактным образом могут выполнять многие из одних и тех же вещей. Вероятно, это самый простой язык для рефакторинга, а это значит, что, в общем, рефакторинг унаследованного кода может быть выполнен, пока вы изучаете, что он делает.

Если вы перейдете к источнику данных и сломаете провод, вы сразу увидите все, к чему оно было подключено, например. Список ошибок даст вам полный список всего, что сломалось из-за зависимости от этого источника данных, и вы можете сразу отработать при создании пучков и кластеров для очистки спам файлов LabView. Это даже подчеркивает сломанные соединения данных на задней панели, чтобы вы могли отслеживать, где все идет. Вы можете быстро инкапсулировать вещи в ВПП, если они очистят, они засоряют основной процесс беспорядком и т.д. К тому времени, когда вы выяснили, что делает ваш код, он аккуратный и чистый и внезапно восстанавливаемый.

Большим исключением из этого является то, что в программе использовалось много ненужных глобальных переменных. Сюрприз - глобалы тоже усложняют ситуацию в LabView. В этом случае нечего делать, кроме проклятия шмака, который оставил вам беспорядок. Тем не менее, это не конец света.

Я полагаю, короче говоря, я пытаюсь сказать, что LabView - это совсем другой язык. Если это кажется разочаровывающим, это не потому, что инструменты не существуют, чтобы делать то, к чему вы привыкли в текстовом кодировании, но просто потому, что они часто реализуются радикально по-разному. Например, код Греппинга - это не конец для себя, а только средство для достижения цели - это поиск ссылок и ссылок во всей программе. Хотя вы не можете grep LabView код, вы можете найти ссылки и ссылки - это просто сделано совершенно по-другому. Навыки обучения.

Ответ 10

Я написал программу (на С++) для управления устройством rs232 с компьютера, но мне было предложено предоставить драйвер или Vi или что-то другое для labview. Я скачал labview с полной уверенностью в том, что я могу что-то избить в короткие сроки. (Я окончил школу плющ, программировал на С++ в течение 15 лет, изучал и использовал C, Scheme, С#, Java и т.д. - это должно быть без проблем)

Я также загрузил пример приложения и документацию для labview.

Я был в ужасе от результата. Labview является ОГРОМНЫМ, МЕДЛЕННЫМ и неинтуитивным. Он не следует ни одной из парадигм, с которыми я привык, либо с MFC, либо с Visio или Rational Rose, либо с VB и т.д. Попытка найти нужную документацию также была сложной. Там просто так много, что нужно иметь понимание Labview, чтобы знать, с чего начать.

Это огромная программа, которая делает так много. Без кого-то, чтобы показать вам, как его использовать, очень сложно. Я сам себя многому научил, но до сих пор лабораторное исследование ускользало от меня. (если я не потратил на это столько времени, сколько должен, но до сих пор это был неудачный опыт)

Подводя итог - это огромный, медленный и неинтуитивный. Документы подавляющие.

(У меня все еще есть большие надежды, чтобы закончить проект)

Ответ 11

Невозможно увеличить или уменьшить масштаб диаграммы. Да, проекты должны храниться на одном экране или прокручиваться только в одном направлении, но я получил код от сторонних поставщиков, которым нужно использовать 50-дюймовые мониторы для разработки - код продолжается вечно в любом направлении!

(23 января 2009 г.): используйте Вид- > Окно навигации, чтобы увидеть вид с высоты птичьего полета всей диаграммы (панели спереди и диаграммы). Это может быть полезно, когда LabVIEW решает поместить новый элемент управления, созданный на блок-диаграмме, в случайном месте на передней панели.

Ответ 12

Один пункт выше всех остальных:

Отсутствие инструментов для разработки, управляемой тестированием

Если я, может быть, покачусь на мгновение, это довольно серьезное дело, через несколько дней, так как я не попал в ванную, не написав тест.

EDIT:: Я все это верну, проверьте http://forums.jkisoft.com/index.php?showtopic=973. Пока это отлично работает!

Ответ 13

Функциональное отверстие: там нет средств метапрограммирования, IIRC. Это здорово для создания вещей, поскольку все, что вы строите, находится на том же уровне абстракции, который, как думали дизайнеры LV, вам нужно.

За последние 20 лет я переместился (как правило) на более высокие и более высокие уровни абстракции. Примерно через год LV был аккуратным, потому что он был немного выше, чем я использовал. Затем я пронесся мимо него, и LV выглядит более устаревшим каждый год.

Ответ 14

Азим,

вы будете довольны версией 8.6, которая имеет две функции, которые атакуют ваше разочарование:

  • Автоматическая очистка диаграммы
    Инструмент для очистки загроможденного кода.
    Однако следует отметить, что этот инструмент не должен использоваться для чистого кода (LAVA и Форумы NI).
  • Quick Drop
    Инструмент для выбора узлов и ВП с помощью сочетаний клавиш, видео на Youtube показывает быстрое падение в действии. После 1:07 вы увидите инструмент Auto Clean Up.

Тим, Что вы подразумеваете под

Labview является ОГРОМНЫМ, МЕДЛЕННЫМ и неинтуитивным

Если у вас есть примеры и улучшения, пожалуйста, сообщите об этом.
Если у вас возникли проблемы с построением драйвера, посмотрите на отгруженные драйверы (например, для мультиметра). Попробуйте найти подобный инструмент с драйвером и при необходимости отрегулируйте его, я точно знаю, что NI готов помочь вам или другим людям. Приходите со своими вопросами к LAVA или Форумы NI.
Другая парадигма, которую LabVIEW использует (поток данных), может быть решением параллельного программирования (по крайней мере, это говорит нам NI), Visio - это не программирование, извините за нарушение новостей. Использование книги для новичков (LabVIEW для всех) - очень хорошее начало.

Тон

Ответ 15

Пояснение к LabVIEW "графические различия":

LabVIEW не может одновременно иметь несколько копий ВП с тем же именем в памяти.

До версии 8.5 это означало, что если бы я захотел изменить версию VI VIIvi против версии 1, мне пришлось (вручную) создать ее копию с другим именем, откройте это, а затем скажите LabVIEW сравнить это с моим оригиналом.

Я понимаю, что они несколько автоматизировали этот процесс в 8.5, чтобы дать вам трехсторонний инструмент слияния.

Ответ 16

Labview может использоваться для создания крупных сложных программных проектов. Labview, безусловно, гораздо больше удовольствия, чем язык на основе синтаксиса. Я запрограммировал математически плотное динамическое моделирование с использованием labview. Новые версии Labview включают множество интересных функций, особенно для использования нескольких процессоров. Мне очень нравится Labview. Но я никому не рекомендую.

К сожалению, это абсолютный кошмар для чего угодно, кроме простого приобретения и отображения. В один прекрасный день он может быть достаточно развит, чтобы считаться жизнеспособной альтернативой текстовым языкам. Тем не менее, разработчики в NI последовательно решили игнорировать три фундаментальные проблемы, которые наносят ущерб лабораторному рассмотрению.

1) Он неустойчив и пронизан ошибками. Есть тысячи ошибок, которые были опубликованы на форумах поддержки labview, которые еще не исправлены. Некоторые из них довольно серьезны, например утечки памяти или математические ошибки в основных функциях.

2) Документация ужасна. Чаще всего, когда вы ищете помощь в функции labview в локальном файле справки, вы найдете одинокое предложение, которое просто повторяет имя элемента, который вы пытаетесь найти. например Пользователь просматривает файл справки по настройке режима фильтра текстуры, и единственное, что записано в файле справки, - "Режим фильтра текстуры" - выбирает режим, используемый для фильтрации текстур ". Благодарю. Это все исправляет, не так ли? Проблема идет гораздо глубже, чем это; довольно часто, когда вы обращаетесь к техническому представителю из национальных инструментов с просьбой предоставить критические сведения о функциональности labview или конкретном поведении математических функций, они просто не знают, как работают функции в их собственной библиотеке. Это может показаться преувеличением, но поверьте мне, это не так.

3) Хотя это не невозможно, чтобы графический код был чистым и хорошо документированным, Labview призван сделать эти задачи трудными и неэффективными. Чтобы ваш код не становился запутанным, путаным беспорядком, вы должны регулярно (каждые несколько операций) использовать такие структуры, как кластеры, субвизы и элементы управления, определенные гигантским типом (которые могут растягиваться на нескольких экранах в большом проекте). Эти структуры питают память и разрушают производительность, заставляя labview делать несколько копий данных в памяти и выполнять бесплатные операции - все это ради того, чтобы графическая диаграмма выглядела как радужные спагетти без комментариев или текста в любом месте. Программирование в лабвью - это похоже на игру с дьяволом. Представьте, что ваш гигантский программный проект написан как блок-схема с размером стены без каких-либо слов. Теперь представьте, что все линии пересекают друг друга тысячу раз, так что отслеживание потока данных совершенно невозможно. Вы только что представили наиболее естественный и эффективный способ программирования в лабораторных условиях.

Labview - классный. Labview улучшается с каждым новым выпуском. Если National Instruments продолжит совершенствовать его, это будет здорово в один прекрасный день в качестве общего языка программирования. В настоящий момент это очень плохой выбор в качестве платформы разработки программного обеспечения для крупных или логически сложных проектов.

Ответ 17

Я новичок в LabVIEW. Функция Photoshop-like (прокрутка пробела, левого клика и перетаскивания) будет очень интуитивной.

Ответ 18

Сложно разветвляться и сливаться: diff не делает хорошую работу в изоляции изменений, небольшое изменение в одном случае в структуре случая может дать вам много "различий". Насколько мне известно, слияние должно выполняться вручную.

Время, затрачиваемое на создание простых логик: я нахожу, что простые логики могут занять много проводки и чертежа, как только вы захотите его изменить, вам нужно перерисовать все.

Ответ 19

В Labview я не могу найти вызывающих абонентов VI, если они не открыты сначала.