Jump to content

Another name for "LabVIEW 2 Globals"


Jim Kring

Recommended Posts

LabVIEW 2 Globals is a term used to describe the usage of uninitialized shift registers to store data in an application. This name comes from the fact that LabVIEW 2 did not have global variables and clever developers figured out that they could use uninitialized shift registers to store data, and make it globally accessible throughout the application.

If you had to introduce this concent to a new developer, what would you call LV2G's? Obviously there is some historical significance to the name, but it doesn't do much to describe the concept. How about "Uninitialized Shift-Register Globals" or "Uninitialized Shift-Register Data Store"? Any thoughts?

Cheers,

Link to comment
LabVIEW 2 Globals is a term used to describe the usage of uninitialized shift registers to store data in an application. This name comes from the fact that LabVIEW 2 did not have global variables and clever developers figured out that they could use uninitialized shift registers to store data, and make it globally accessible throughout the application.

If you had to introduce this concent to a new developer, what would you call LV2G's? Obviously there is some historical significance to the name, but it doesn't do much to describe the concept. How about "Uninitialized Shift-Register Globals" or "Uninitialized Shift-Register Data Store"? Any thoughts?

Cheers,

I think the official name for the "LabVIEW 2 Globals" is "Functional Globals". It is certainely not easier to visualize what it mean than "LabVIEW 2 Globals".

PJM

Link to comment
If you had to introduce this concent to a new developer, what would you call LV2G's? Obviously there is some historical significance to the name, but it doesn't do much to describe the concept. How about "Uninitialized Shift-Register Globals" or "Uninitialized Shift-Register Data Store"? Any thoughts?

I usually call them 'intelligent globals'

-Franz

Link to comment

Hmmm... they are only functional or intelligent if you put some functionality inside of the case structure -- for example, by having operations besides Read Data and Write Data, such as Initialize, Do Task A, Do Task B, etc.. If there is no intelligent functionality in them, does that make them dysfunctional globals or unintelligent globals? I am, of course, being a little silly -- discussing LabVIEW should always be fun :D

I think that I am leaning towards functional globals. This term just implies that they have some functionality -- I wouldn't want to put too much pressure on beginners by making them think they have to write code that is intelligent :P

Thank you both, Philippe and Franz, for the ideas. I owe you each a frosty one :beer:

Link to comment
Hmmm... they are only functional or intelligent if you put some functionality inside of the case structure -- for example, by having operations besides Read Data and Write Data, such as Initialize, Do Task A, Do Task B, etc.. If there is no intelligent functionality in them, does that make them dysfunctional globals or unintelligent globals? I am, of course, being a little silly -- discussing LabVIEW should always be fun :D

I think that I am leaning towards functional globals. This term just implies that they have some functionality -- I wouldn't want to put too much pressure on beginners by making them think they have to write code that is intelligent :P

Thank you both, Philippe and Franz, for the ideas. I owe you each a frosty one :beer:

My functional globals almost always turn out to be intelligent globals to some degree ;-). In fact they are not really globals anymore but intelligent data storage containers.

But I think Functional Globals pretty much covers all of these aspects.

Rolf Kalbermatter

Link to comment

Intelligent Globals = Action Engine?

When I started working at my current job, all the LV'ers kept talking about Action Engines. I Googled, found little or nothing.

The first result while Googling LabVIEW "Action Engine" today ( 10 Jan 06 ) points to my own question to the LAVA Forum about Action Engines! :laugh: The only other place I've seen the term mentioned is in some NI Forum postings by "Ben". I agree that a functional global by definition should simply store and return data. Maybe in the spirit of the discussion and considering LV 8, they should be called UNshared Variables? :laugh:

:blink: Does anyone else like the term "Action Engine"?

Link to comment

What about "Implicit Global"

Seems to be more precise a term... after all, the globals in the palette are "functional" as well (unless you write poor code... :-))

That way, uninitialized shift registers are "implicit" globals, as opposed to "explicit" globals from the structures palette.

Jeffrey Travis

My functional globals almost always turn out to be intelligent globals to some degree ;-). In fact they are not really globals anymore but intelligent data storage containers.

But I think Functional Globals pretty much covers all of these aspects.

Rolf Kalbermatter

Link to comment

i know them also under the name "old style global", which refers to the point which PJM mentioned a few posts above ...

if i put a case-structure with code in it, I usually call them "Objects", because these constructs show some parallels to C++ Objects. The methods of my "Objects" are called via an enum (mostly labeled "Action" [... which would imply an "action engine" ;-)] ), the members are stored in the shift register ...

what about this point of view?

Link to comment
i know them also under the name "old style global", which refers to the point which PJM mentioned a few posts above ...

if i put a case-structure with code in it, I usually call them "Objects", because these constructs show some parallels to C++ Objects. The methods of my "Objects" are called via an enum (mostly labeled "Action" [... which would imply an "action engine" ;-)] ), the members are stored in the shift register ...

what about this point of view?

With the omnipresent OO / UML /... it seems quite logical, but you will confuse any new LV-user. :wacko:

As an "overall" subject name I like "LV-2-globals", To describe the internas I find your approach best.

Link to comment
I have created a poll. Let's find out what the consensus is.

when i was at NI, we called them "old style global", i think this is ne "inofficial official" name ;-)

i voted for "action engine" because i mostly use them to get some C++ object like functionality.

proschd,

cb

Link to comment

I was just informed by someone at NI (thanks again, Darren!), that the LabVIEW documentation calls them Functional Globals.

You can find this in the help, here:

Fundaments >> Multitasking, Multithreading, and Multiprocessing >> Concepts >> Suggestions for Using Execution Systems and Priorities

Synchronizing Access to Global and Local Variables and External Resources >> Functional Global Variables

You can also find a few references to them in the help if you search for "Functional Global" (include the quotes when you do your search).

Link to comment
I was just informed by someone at NI (thanks again, Darren!), that the LabVIEW documentation calls them Functional Globals.

You can find this in the help, here:

Fundaments >> Multitasking, Multithreading, and Multiprocessing >> Concepts >> Suggestions for Using Execution Systems and Priorities

Synchronizing Access to Global and Local Variables and External Resources >> Functional Global Variables

You can also find a few references to them in the help if you search for "Functional Global" (include the quotes when you do your search).

Well, yes, we kinda knew that already didn't we? This is also included as part of the material in the LV basics course. I think the point of asking the community for feedback on usage is to find out what real LV users do...

Don't forget that NI often changes the terminology of certain things over time to fit some new marketing goals and strategies. Don't be surprised if you will soon see the term global variable and functional global be replaced with the term "Shared Variable"... Yes, let's introduce more confusion for the new user, shall we?

Link to comment

IMHO, I like Unitialized-Shift-Register Globals, because it accurately describes what the structure is. However, this terminology is a bit long, so I'd suggest using USR Global. That's no longer than LV2 Global, and more accurately describes the concept (when the user knows what USR is).

I don't like calling them 'old globals' because it implies there's something newer and better. And while the global variable routines are certainly newer, from what I understand they're to be avoided as much as possible.

This terminology also accuretly refers to such a global, whether it's intelligent, functional, or not.

BTW - does anybody use such one USR (or LV2) global VI for several global variables, by using a variant as the shift-registered data, and with commands like "GetValue" and "SetValue", where the name of the appropriate global parameter is used as a variant attribute name, and the data is the variant attribute variant itself? I've found this to be quite powerful, and then only need one (or a handful) of globals for a large hierarchy of VI's.

Link to comment
  • 4 weeks later...
  • 7 months later...
LabVIEW 2 Globals is a term used to describe the usage of uninitialized shift registers to store data in an application. This name comes from the fact that LabVIEW 2 did not have global variables and clever developers figured out that they could use uninitialized shift registers to store data, and make it globally accessible throughout the application.

If you had to introduce this concent to a new developer, what would you call LV2G's? Obviously there is some historical significance to the name, but it doesn't do much to describe the concept. How about "Uninitialized Shift-Register Globals" or "Uninitialized Shift-Register Data Store"? Any thoughts?

Cheers,

Just a short note to say that in 1987 using LabVIEW 1.0 ( the interpreter version ) these types of Globals were made for the first time for a program I built. The program required a strip chart that ran at a clocked speed ( steady rate) while the data arrived at randon times. This use of Globals allowed a true medical like strip chart to be built in LV 1. From that original work, I expanded globals to build semaphores, Fifos etc etc all the structures now and much more, just for fun, as I imagine others are doing now with this discussion. From this original work, I started mucking with the 7400 Series TTL chip set and built using the same global technique, all the flip flops, then counters, etc etc. While living in the UK as a consultant for NI, at the first Cambridge University LabVIEW training course in 1988, a very smart student and myself almost completed the complete 7400 chip set. This work was show to all those at NI including Jeff K and his team at that time and at first was not acceptable as it did not use pure LabVIEW wiring techniques. Back then there was purist movement in the LV design group. However after some discussion it was general accepted based on the reasoning that data appears magically from DAQ, Comms, GPIB VIs without wiring and globals are just the same idea, transporting data from one realm to another invisibly. It took until LV 2 before globals appeared as primitives. I still have some of that original work. We didn't even have to wire the LV 1 while loop terminator terminal with a boolean, it was an allowed condition and the loop would run once.

Link to comment
Don't forget that NI often changes the terminology of certain things over time to fit some new marketing goals and strategies. Don't be surprised if you will soon see the term global variable and functional global be replaced with the term "Shared Variable"... Yes, let's introduce more confusion for the new user, shall we?

hmm, why do I get the *evil* idea now to write a "LAVA post obfuscator" ? :lol:

cheers,

cb

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.