Jim Kring Posted January 10, 2006 Report Share Posted January 10, 2006 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, Quote Link to comment
PJM_labview Posted January 10, 2006 Report Share Posted January 10, 2006 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 Quote Link to comment
ahlers01 Posted January 10, 2006 Report Share Posted January 10, 2006 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 Quote Link to comment
Jim Kring Posted January 10, 2006 Author Report Share Posted January 10, 2006 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 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 Thank you both, Philippe and Franz, for the ideas. I owe you each a frosty one :beer: Quote Link to comment
Michael Aivaliotis Posted January 10, 2006 Report Share Posted January 10, 2006 How about LabVIEW Advanced Virtual Architect Globals? LAVA Globals? Quote Link to comment
Rolf Kalbermatter Posted January 10, 2006 Report Share Posted January 10, 2006 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 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 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 Quote Link to comment
Phillip Brooks Posted January 10, 2006 Report Share Posted January 10, 2006 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: Does anyone else like the term "Action Engine"? Quote Link to comment
altarama Posted January 10, 2006 Report Share Posted January 10, 2006 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 Quote Link to comment
i2dx Posted January 10, 2006 Report Share Posted January 10, 2006 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? Quote Link to comment
didierj Posted January 10, 2006 Report Share Posted January 10, 2006 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. As an "overall" subject name I like "LV-2-globals", To describe the internas I find your approach best. Quote Link to comment
Jim Kring Posted January 11, 2006 Author Report Share Posted January 11, 2006 I have created a poll. Let's find out what the consensus is. Quote Link to comment
didierj Posted January 11, 2006 Report Share Posted January 11, 2006 I have created a poll. Let's find out what the consensus is. You have forgotten the most obvious "LabVIEW 2 Globals", for every one who prefers the actual status. Quote Link to comment
i2dx Posted January 11, 2006 Report Share Posted January 11, 2006 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 Quote Link to comment
Jim Kring Posted January 12, 2006 Author Report Share Posted January 12, 2006 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). Quote Link to comment
Michael Aivaliotis Posted January 12, 2006 Report Share Posted January 12, 2006 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? Quote Link to comment
Ed Dickens Posted January 12, 2006 Report Share Posted January 12, 2006 I usually call them, "Those uninitialized shift register data trasfer subVI things". But, Functional Globals is probably easier to remember. Ed Quote Link to comment
crelf Posted January 12, 2006 Report Share Posted January 12, 2006 Another fairly common term that I've come across is "VI Global" or "VIG" Quote Link to comment
Jim Kring Posted January 12, 2006 Author Report Share Posted January 12, 2006 Another fairly common term that I've come across is "VI Global" or "VIG" Chris, it might be a little late, but I have added VI Global to the poll. Quote Link to comment
jeffwass Posted January 15, 2006 Report Share Posted January 15, 2006 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. Quote Link to comment
Jim Kring Posted February 11, 2006 Author Report Share Posted February 11, 2006 The poll is now closed. Thank you to all who voted and for your feedback. The winners: Functional Globals Uninitialized Shift Register (USR) Globals :thumbup: Quote Link to comment
Rob Maskell Posted September 14, 2006 Report Share Posted September 14, 2006 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. Quote Link to comment
Albert Geven Posted September 15, 2006 Report Share Posted September 15, 2006 Rob Thanks for this history, I really like it. It also shows that users can influence NI, especially in the early days. Has someone a more recent implementation of these 7400 chips in LabVIEW I would like to show it to some teachers that did an awful implementation of a flipflop. Quote Link to comment
AnalogKid2DigitalMan Posted September 15, 2006 Report Share Posted September 15, 2006 Rob: Pretty cool! :thumbup: It would be neat to wire up logic to simulate TTL circuits, flip flops, counters, timers, display decoders, muxes. A good learning tool too. Quote Link to comment
i2dx Posted September 15, 2006 Report Share Posted September 15, 2006 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" ? cheers, cb Quote Link to comment
Aristos Queue Posted September 16, 2006 Report Share Posted September 16, 2006 hmm, why do I get the *evil* idea now to write a "LAVA post obfuscator" ? For possibly the same reason that I sometimes get the *evil* idea to implement if (username="xyz") { integer wires are orange; double wires are blue; } We all have temptations that we have to supress. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.