LabVIEWForum.de
Variablen in LV - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Variablen in LV (/Thread-Variablen-in-LV)



Variablen in LV - eg - 28.03.2006 17:42

Hallo Leute,

eigentlich ist dieser Topic um den i2dx ein wenig zu ärgern Lol.

Na ja, wer kann mir sagen welche Nachteile man bei der Verwendung von Variablen hat?

Ich selber nutze sie ganz selten, aber sie sind ja da!!!
Ausserdem ist es das grundlegende Konzept jeder textbasierten Programmiersprache. Ich habe noch nie ein C-Programm ohne Variablen gesehen.

In LV dagegen kann man die Variablen vermeiden, aber es ist die leichteste Methode zwischen den Tasks zu kommunizieren, wobei ich auch hier schon auf Queues und Notifiers übergangen bin.

Gruss, Eugen


Variablen in LV - cb - 28.03.2006 18:00

lol,

mei, eigentlich ärgert mich das nicht.

das problem, dass mit lokalen variablen auftreten kann, sind die s.g. race conditions, d.h. man kann sich unter gewissen umständen nicht sicher sein, in welcher reihenfolge im Programm die Variablen gelesen bzw. geschrieben werden. ich glaub, da gibts sogar ein demo zu auf ni.com, wo man das sehr deutlich sieht.

textorientierte programmiersprace - GENAU DAS ist der punkt! in LV ist der draht die variable. Lokale variablen sind eigentlich dafür gedacht, dass man unter bestimmten voraussetzungen das datenflußprinzip umgehen kann, wenn z.B. der einsatz einer lokalen variable deutlich weniger programmieraufwand ist, als eine "korrekte" implementierung nach dem datenflussprinzip ... du versuchst ja auch nicht in C plötzlich drähte zu ziehenWink


Variablen in LV - eg - 28.03.2006 19:03

Dem Assembler ist das Datenflussprinzip egal, die Daten werden sowieso über Speicher ausgetauscht.

Übrigens, hast du schon mal kompilierte und gelinkte LV-VIs in Assembler gesehen? Würde mich interessieren wie es dort aussieht.

Und ich hatte bis jetzt keine Probleme mit race conditions, oder ich habe es nicht mitbekommen. Ausserdem verwende ich in kritischen Fällen Semaphoren, die genau das verhindern.

Gruss, Eugen


Variablen in LV - cb - 28.03.2006 22:10

naja, LV wird intern natürlich auch in Maschinencode umgewandelt, aber wer kann das lesen? Ich hab ja schon Probleme mit dem ASM-Code auf nem AVRWink

Zitat:Und ich hatte bis jetzt keine Probleme mit race conditions, oder ich habe es nicht mitbekommen. Ausserdem verwende ich in kritischen Fällen Semaphoren, die genau das verhindern.

klar geht das mit semaphoren, aber es ist halt zusätzlicher programmieraufwand. Ich sag auch nicht, dass es mit locals nicht geht. Ich sag nur, dass jede lokale variable gegen das datenflussprinzip verstößt.

Ich verwende auch locals und - man höre und staune - die oberevil stacked sequenesWink. Bei einem dialog, in dem man irgendwelche daten eintragen kann, verwende ich z.B. die locals um die controls mit dem gewünschten (!= Control default value!) default-wert zu initialisieren. Und dafür verwende ich eine stacked sequence, die initialisierung findet dann im rahmen 0 statt ...

ich bin halt der meinung, man sollte keine locals verwenden, wenn man es genausogut mit dem datenflussprinzip erledigen kann. wenn man einmal dran gewöhnt ist, passiert das auch eigentlich von selbst. Ist halt immer ein Problem erstmal umzudenken, wenn man von C kommt ...