Perché le persone non usano LabVIEW per scopi diversi dall'acquisizione e dalla virtualizzazione dei dati? [chiuso]

StackOverflow https://stackoverflow.com/questions/1225542

Domanda

Questo è contrassegnato come una domanda soggettiva, spero di non ottenere troppi voti negativi.

LV sembra offrire una piacevole alternativa grafica alla tradizionale programmazione basata su testo. A quanto ho capito, non è un linguaggio di programmazione di virtualizzazione / acquisizione dati. Tuttavia, sembra che quel paradigma sia ancorato al nome del suo creatore.

La mia domanda sorge perché non sembra essere ampiamente utilizzata per applicazioni multiuso. Non sono un esperto di LV di alcun tipo, sono più come uno studente. Mi sto ancora abituando a LV.

È stato utile?

Soluzione

Labview è fantastico se si dispone di hardware National Instruments e si desidera fare qualcosa come acquisire, tracciare e registrare i dati.

Quando inizi a interfacciarsi con dispositivi personalizzati, il cablaggio tra i moduli diventa complicato dovendo fare tutto il lavoro di manipolazione delle stringhe per l'input e l'output su un dispositivo.

Nel mio posto di lavoro, abbiamo scoperto che eravamo infastiditi dal dover creare VI complessi e complessi per interfacciarli con i dispositivi e abbiamo iniziato a scriverli in .NET e interfacciarli con Labview.

Alla fine abbiamo finito per demolire Labview tutti insieme e usare NI Measurement Studio per Visual Studio per darci tutti i controlli NI dall'aspetto gradevole (grafico delle forme d'onda, serbatoio, calibri, interruttori ecc.) con la flessibilità di C #.

In sintesi, anche con un paio di 24 " schermi, a volte il cablaggio per il codice Labview può diventare troppo complesso e diventa impossibile commentare, eseguire il debug e rendere estensibile per eventuali modifiche future. Suggerisco di dare un'occhiata a Measurement Studio per Visual Studio e usare il tuo linguaggio .NET preferito con i graziosi controlli NI.

Altri suggerimenti

Le mie due esperienze con " alternative grafiche [s] alla tradizionale programmazione testuale " sono stati terribili. Trovo che tali lingue siano lente da usare, difficili da modificare e inespressive. Il debug è un incubo. E non offrono vantaggi reali.

A dire il vero, è passato molto tempo da quando ne ho guardato uno, ma le opinioni degli altri che ho chiesto su di loro sono state solo tiepide, quindi non ho mai avuto il tempo di guardare di nuovo. I motivi per rivedere sono i benvenuti e saranno presi in considerazione ...

Labview può essere utilizzato per creare progetti software complessi e di grandi dimensioni. Labview è senza dubbio molto più divertente da usare rispetto a un linguaggio basato sulla sintassi. Ho programmato simulazioni matematicamente dense e dinamiche usando labview. Le versioni più recenti di Labview includono molte funzionalità interessanti, in particolare per l'utilizzo di più processori. Mi piace molto Labview. Ma non lo consiglio a nessuno.

Sfortunatamente, è un vero incubo per qualcosa di diverso dalla semplice acquisizione e visualizzazione. Un giorno potrebbe essere sufficientemente sviluppato per essere considerato una valida alternativa alle lingue basate sul testo. Tuttavia, gli sviluppatori di NI hanno costantemente deciso di ignorare i tre problemi fondamentali che affliggono labview.

1) È instabile e pieno di bug. Esistono migliaia di bug che sono stati pubblicati nei forum di supporto di labview e che non sono ancora stati corretti. Alcuni di questi sono piuttosto seri, come perdite di memoria o errori matematici nelle funzioni di base.

2) La documentazione è atroce. Il più delle volte, quando cerchi aiuto con una funzione labview nel file di aiuto locale troverai una frase che semplicemente riafferma il nome dell'elemento su cui stai cercando di trovare qualche dettaglio. per esempio. Un utente cerca il file della guida sull'impostazione della modalità filtro trama e l'unica cosa scritta nel file della guida è "Modalità filtro trama": seleziona la modalità utilizzata per il filtro trama. & Quot; Wow, grazie. Questo chiarisce le cose, vero? Il problema si approfondisce molto in questo; abbastanza spesso, quando chiedi a un rappresentante tecnico di strumenti nazionali di fornire dettagli critici sulla funzionalità di labview o sul comportamento specifico delle funzioni matematiche, semplicemente non sanno come funzionano le funzioni nella loro biblioteca. Può sembrare un'esagerazione, ma fidati, non lo è.

3) Sebbene non sia impossibile mantenere pulito e ben documentato il codice grafico, Labview è progettato per rendere queste attività sia difficili che inefficienti. Al fine di evitare che il codice diventi un pasticcio intricato e confuso, è necessario sistematicamente (ogni poche operazioni) utilizzare strutture come cluster e controlli definiti da sub e visivi di tipo gigante (che possono estendersi su più schermi in un grande progetto). Queste strutture consumano memoria e distruggono le prestazioni forzando labview a fare più copie dei dati in memoria ed eseguire operazioni gratuite, tutto per evitare che il diagramma grafico assomigli a spaghetti color arcobaleno senza commenti o testo da nessuna parte in vista. Programmare in labview è come giocare a pictionary con il diavolo. Immagina il tuo gigantesco progetto software scritto come un diagramma di flusso a parete senza parole su di esso. Ora immagina che tutte le linee si incrociano mille volte in modo che tracciare il flusso di dati sia completamente impossibile. Hai appena immaginato il modo più naturale ed efficiente per programmare in labview.

Labview è bello. Labview sta migliorando con ogni nuova versione. Se National Instruments continua a migliorarlo, un giorno sarà fantastico come linguaggio di programmazione generale. In questo momento, è una scelta estremamente negativa come piattaforma di sviluppo software per progetti di grandi dimensioni o logicamente complessi.

I ** scrivo in LabVIEW da quasi 20 anni. Sviluppo sistemi di test automatizzati. Ho sviluppato RF, Vison, digitale ad alta velocità e molti tipi diversi di sistemi di test di segnali misti. Ero un "C" programmatore prima di passare a LabVIEW.

È vero che puoi creare rapidamente alcuni programmi in LabVIEW, ma proprio come qualsiasi altra lingua, ci vuole un sacco di formazione per imparare a costruire un'applicazione di grandi dimensioni che sia pulita e facile da gestire con codice riutilizzabile. In 20 anni non ho mai avuto un bug LabVIEW che mi ha impedito di finire un progetto.

In passato, NIWEEK avrebbe avuto una sparatoria di software ogni anno. I programmatori LabVIEW e LabWINDOWS (versione NI di "C") avrebbero entrambi avuto lo stesso problema e avrebbero avuto una gara per vedere quale gruppo avesse terminato per primo. Ogni anno tutti i programmatori LabVIEW sono stati fatti molto prima che finisse la prima persona LabWINDOWs. Ho sfidato molti dei miei amici di programmazione testuale dedicati a sparatorie e tutti ammettono di non avere alcuna possibilità, anche se permetto loro di definire il problema del software.

Quindi, penso che LabVIEW sia un ottimo strumento di programmazione. È sicuramente la strada da percorrere se si interfaccia con qualsiasi tipo di hardware NI. Non è la risposta a tutto ma sono sicuro che ci sono molte persone che non lo usano solo perché non considerano LabVIEW un "vero linguaggio di programmazione". Dopotutto, colleghiamo solo un mucchio di blocchi, giusto? Trovo divertente quanti programmatori basati su testo ci nascondano il naso perché sono così orgogliosi del disordine del codice di testo che hanno creato che solo loro possono capire. Un buon programmatore in qualsiasi lingua dovrebbe scrivere un codice che gli altri possano leggere facilmente. Scrivere un codice troppo complesso che è impossibile seguire non rende il programmatore un genio. Significa che il programmatore è un "compliator" (qualcuno che può prendere un semplice problema e complicarlo). Credo nel principio KISS (KEEP IT SIMPLE STUPID).

Ad ogni modo, vale i miei due centesimi! **

Pensavo che LabVIEW fosse un sogno per la programmazione FPGA. I blocchi eseguibili indipendenti ... funzionano. In generale, utilizzo LabVIEW per varie attività che si interfacciano con il mio hardware DAQ e FPGA, ma questo è tutto. Mi sembra (ancora una volta) che questo sia il punto di forza di LabVIEW e il motivo per cui è stato costruito, ma al di fuori di quell'arena sembra "ingombrante". Per quanto riguarda il fare le cose, è come qualsiasi altra lingua con una curva di apprendimento - una volta che lo capisci non è male per fare il lavoro. Ho visto diverse persone rinunciare prima di pensare che la curva di apprendimento fosse permanente o qualcosa del genere.

Raccogliendo un 30 " il monitor ha fatto una differenza enorme.

So che una cosa non piace alle persone è l'integrazione del controllo della versione.

Modifica: LabVIEW / hardware è hella costoso per " solo per divertimento " uso. Ho lasciato cadere $ 10.000 sul loro hardware (i prezzi degli studenti) e ho ottenuto il software gratuitamente da scuola per fare giocattoli in casa.

La nostra azienda utilizza LabVIEW da 10 anni per misurare, monitorare e riferire il nostro argomento (treni).
Di recente abbiamo iniziato a utilizzare LabVIEW come GUI per database con molti dati, i poteri di LabVIEW con le nuove funzionalità recenti (Classi, XControls) consente di creare questo tipo di GUI per una frazione dei costi di sviluppo su altre piattaforme. Anche se non abbiamo bisogno di programmatori esterni al tasso di consulenza.

Ton

Ho iniziato a usare Labview in un laboratorio di fisica del college. Inizialmente, ho pensato che fosse lento e ingombrante rispetto ad altre lingue testuali. Era troppo difficile creare una logica complessa e il codice è diventato sciatto molto velocemente (fili ovunque).

Poi, qualche anno dopo, ho imparato a usare sub-vi e bundle. Che differenza! A questo punto, stavo usando labview per funzioni di altissimo livello. Stavo prendendo l'input non elaborato da una telecamera, utilizzando tutti i tipi di filtri di immagine e l'elaborazione per analizzare le linee in una strada in modo che un veicolo potesse guidare su questa strada senza conducente - era per la SFIDA URBANA DARPA. Stavo anche generando mappe dai dati dei waypoint di testo, creando funzioni di analisi di alto livello e una serie di altre applicazioni che non avevano nulla a che fare con l'elaborazione dei dati dai dispositivi di input. È stato davvero molto divertente. e VELOCE.

Dopo aver lasciato il college, ora sono tornato a utilizzare le lingue testuali. Sto usando: PHP, Javascript, VBA, C #, VBscript, VB.net, Matlab, Epson RC +, Codeigniter, varie API e ne sono sicuro alcuni altri. Spesso mi sento molto frustrato dalla quantità di sintassi che devo memorizzare per programmare con una velocità significativa. Trovo fastidioso dover cambiare scuola di pensiero in base al linguaggio che sto usando ... quando essenzialmente tutti i linguaggi di programmazione fanno la stessa cosa! Ho bisogno di un secondo monitor solo per avere l'aiuto in ogni momento in modo da poter trovare la sintassi per le stesse funzioni in diverse lingue. Mi manca molto Labview, è un peccato che sia così costoso, altrimenti lo userei per tutto.

La programmazione grafica basata credo che abbia un enorme potenziale. Non essendo vincolato dalla sintassi, puoi concentrarti sulla logica anziché sul codice. Labview stesso potrebbe essere ancora agli inizi in termini di supporto e debugging, ma credo che concettualmente superi la concorrenza. È semplice un modo più intuitivo per programmare.

Utilizziamo LabVIEW per il funzionamento delle nostre apparecchiature di test di fine linea ed è ideale per l'acquisizione e il controllo dei dati. Tipicamente, misurando da 15 a 80 tensioni differenziali e controllando camere ambientali, regolatori di flusso di massa e vari dispositivi seriali LabVIEW è più che capace.

L'interfaccia con i dispositivi personalizzati può essere notevolmente semplificata utilizzando la procedura guidata del driver dello strumento NI per creare VI riutilizzabili, se necessario interfacciarsi con le DLL personalizzate. Su una serie di progetti abbiamo creato tali driver per hardware personalizzato e, una volta creati, sono riutilizzabili in progetti futuri senza modifiche.

L'uso delle strutture guidate dagli eventi le interfacce utente sono reattive e usiamo regolarmente le applicazioni LabVIEW per interfacciarsi con un database.

Qualunque sia l'ambiente di programmazione scelto, è il processo di progettazione dell'applicazione che conta di più. Sono d'accordo che puoi creare alcuni diagrammi a blocchi davvero orribili e illeggibili in LabVIEW, ma puoi anche creare codice illeggibile in Visual Studio. Con solo una piccola riflessione e pianificazione, è possibile realizzare uno schema a blocchi LabVIEW per adattarsi a un singolo 24 '' monitorare con molto spazio per aggiungere commenti.

Userei LabVIEW su Visual Studio per la maggior parte dei progetti.

Ma le persone usano LabView per scopi diversi dall'acquisizione e dalla virtualizzazione dei dati. Naturalmente LabVIEW è utilizzato principalmente nei laboratori e negli ambienti di produzione perché è (o è stato) uno dei principali target di clienti della NI.

Tuttavia, con LabVIEW puoi fare molte cose, come programmare un robot che esegua molte analisi delle immagini, e poi tweet i risultati. Guarda i video della NI Week 2009 su you-tube e vedrai quanto è potente questo strumento. Ad esempio, esiste la possibilità di scrivere codice e distribuirlo su MCU ARM (consultare Articolo Dev Monkey del 2009.08.10).

E infine controlla questo LabVIEW DIY group

Sto pensando a questa domanda da decenni (sì, dal 1989 ...)

Come tutti i linguaggi di programmazione, LabVIEW è uno strumento di alto livello utilizzato per manipolare il flusso di elettroni. A meno che tu non sia un purista e rifiuti di usare qualcosa di diverso da una breadboard e fili; transistor, circuiti integrati e linguaggi di programmazione sono probabilmente una buona cosa se si desidera costruire qualcosa di conseguenza.

Ma come tutti gli strumenti di alto livello, maneggiarne uno non ti rende un artigiano professionista. Ai tempi dei saldatori, degli amplificatori operazionali e degli UART, era necessario uno studio accurato prima di poter creare un sistema che funzionasse effettivamente. Il regno moderno dei linguaggi basati su testo è così eccessivamente dominato dalla sintassi che il programmatore deve ottenerlo proprio prima che venga compilato ed eseguito. Per scrivere il codice che funziona, il programmatore deve aumentare il proprio livello di abilità per creare sistemi molto più grandi di " Hello World " ;.

LabVIEW non è dominato dalla sintassi, ma dal flusso di dati. In passato, raggiungere il modello di diagramma di flusso e sviluppare il diagramma di un sistema informativo ben bilanciato era la parte dell'arte e della bellezza del lavoro. Solo dopo aver tenuto a portata di mano il diagramma di flusso riveduto, prenderesti in considerazione la possibilità di frugare nella fatica di sottrarre il codice. (sì ... schede perforate)

LabVIEW è un sistema di sviluppo che consente al programmatore di utilizzare strumenti per la creazione di diagrammi di flusso per rappresentare l'intero sistema informativo e premere "esegui" ..... LabVIEW "esegue il punch out del codice" e lo compila per te. Non è necessario combattere attraverso la sintassi della lingua del testo A o della lingua B.

Con uno strumento così potente, i principianti possono costruire rapidamente programmi di lavoro di grandi dimensioni, il che implica un certo livello di abilità professionale dal momento che funziona. Tuttavia, se il sistema non funziona in modo elegante o il diagramma del codice sorgente è un casino, non è colpa di LabVIEW.

Le persone spesso indicano "LabVIEW è utile solo per lo sviluppo di grandi sistemi di acquisizione dati." Forse quelle persone dovrebbero considerare la professionalità degli scienziati e degli ingegneri che lavorano nell'acquisizione dei dati. Se sanno abbastanza per ottenere i cavi corretti per i sensori e i trasduttori, può essere una buona scommessa essere esperti nello sviluppo di schemi elettrici LabVIEW.

Uso uso LabView a casa , poiché fa parte di Lego Mindstorms, che mio figlio ama. E mi piace molto il modo di comporre sistemi come questo.

Tuttavia, nel mio lavoro (sistemi integrati), è generalmente restrittivo. Ma anche qui, sto provando a salire in astrazione: - controllo e comportamento dello stato: progettazione basata su modello (es. Rhapsody) - algoritmi di dati ecc. Simulink

A volte un modello grafico può richiedere più clic di un pezzo di codice. Ma questo include anche il lavoro che un buon programmatore deve fare in design & amp; documentazione; non solo la digitazione del codice. La notazione grafica toglie molte seccature ed è generalmente molto più veloce se lo strumento è abbastanza potente per la complessità a portata di mano. Quindi mi aspetto che questo tipo di strumenti acquisirà maggiore popolarità nei prossimi anni man mano che maturano e le persone ne acquisiscono familiarità.

Uso LabVIEW da circa due anni per lo sviluppo dell'automazione. Se ci prendiamo la dovuta cura e un design adeguato, possiamo sicuramente sviluppare applicazioni sostenibili e di bell'aspetto in LabVIEW. Penso che questo sia lo stesso per tutte le altre lingue là fuori. Ho visto un codice altrettanto negativo in LabVIEW principalmente da persone che lo usano solo per sviluppare automazioni di lavoro veloci e sporche. La programmazione grafica IMHO è molto più semplice da programmare e comprendere se eseguita correttamente. Detto questo, sento che la programmazione basata su testo "sembra" più potente! LabVIEW è principalmente commercializzato per l'automazione industriale, ha il supporto intrinseco per molti hardware NI e puoi far sì che i software di terze parti lavorino con esso abbastanza rapidamente. Penso che sia la ragione per cui lo vedi solo nel campo dell'automazione. Inoltre è piuttosto costoso e sei bloccato con NI perché non puoi nemmeno aprire il tuo codice se non acquisti il ??software da loro!

Ho usato LabView per circa 10 anni. È geniale per il prorgamming scientifico, come Matlab o Simulink, ma 10 volte meglio. Se riscontri problemi, stai facendo qualcosa di sbagliato. Ci vuole tempo per imparare come qualsiasi lingua. Per quanto riguarda invece l'uso di .Net - queste persone sono anche sullo stesso pianeta? Perché dovresti preoccuparti di scrivere tutto da zero quando puoi dire di tirare su una FFT ecc. E usare il codice scritto alread. .NET va bene per programmi semplici ma non così buono per l'elaborazione scientifica. sì, puoi farlo, ma non senza una gran quantità di componenti aggiuntivi per la grafica, ecc. La preimpostazione in G è molto più semplice del testo basato su problemi scientifici. Puoi ovviamente programmare in c se stai interfaccia e usi la dll. Ora ci sono cose per le quali non vorrei usare LabView - il riconoscimento vocale, ad esempio, potrebbe essere un po 'confuso al momento. Più precisamente, però, perché alla gente piace programmare in formato di testo obsoleto quando esiste un'alternativa semplice. È come se le persone volessero complicare le cose in modo da giustificare il loro lavoro in qualche modo. Semplifica Semplifica!

Qualcuno ha affermato che LabView è stato citato in giudizio solo nel campo dell'automazione. Semplicemente non scrivere affatto. Ha applicazioni in Digital Signal Processing, Control Systems, Communications, Web Based, Mathematics, Image Processing e così via. È iniziato come un metodo di acquisizione dei dati e hanno inventato il nome di Virtual Instrumentation, ma ora è andato ben oltre. È un linguaggio di programmazione scientifica con un'interfaccia grafica che non è seconda a nessuno. È molto al di là di Simulink e se ti piace Matlab, allora ha un tipo di script Matlab integrato per coloro a cui piacciono tali modi di programmare. Si sta evolvendo continuamente. L'unica cosa che ho trovato difficile è stata scrivere il codice per la Compact Rio - complicato ma molto più semplice dell'alternativa. È costoso ma ottieni un prodotto di qualità. Personalmente non ho trovato alcun bug nella programmazione ordinaria. È un linguaggio ingegneristico ma chiunque potrebbe usarlo per programmare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top