{"id":1684,"date":"2011-10-24T07:21:48","date_gmt":"2011-10-24T14:21:48","guid":{"rendered":"http:\/\/www.themoehrings.com\/?p=1684"},"modified":"2024-07-22T07:08:30","modified_gmt":"2024-07-22T13:08:30","slug":"accessing-objects-by-reference-in-labvoop","status":"publish","type":"post","link":"https:\/\/www.themoehrings.com\/index.php\/2011\/10\/accessing-objects-by-reference-in-labvoop","title":{"rendered":"Accessing Objects By Reference in LabVOOP"},"content":{"rendered":"<p><a title=\"External link\" href=\"https:\/\/forums.ni.com\/t5\/Phoenix-LabVIEW-User-Group-PLUG\/Using-Objects-By-Reference-111013-pdf\/td-p\/3505113\" rel=\"nofollow external\">https:\/\/decibel.ni.c&#8230;\/docs\/DOC-18320<\/a><\/p>\n<p>Motivation for this presentation:<\/p>\n<p>At the 2011 CLA Summit, National Instruments asked us what we thought was missing from LabVIEW or what needed to be improved. I already knew NI\u2019s position on this, but my feedback to NI and direct conversation with Stephen Mercer, father of LabVOOP, was that I thought LabVIEW needed to be able to invoke methods on object\u00a0references. At the time that I said this, I knew that I wasn\u2019t 100% up to speed on all the different incarnations of by-reference\u00a0architectures or messaging architectures out there, but I felt (and still feel) that this would be a powerful (if not necessary) evolution for LabVOOP in the future.<\/p>\n<p>Because I know Stephen has spent a great deal of his life pondering these issues (for which I am extremely thankful), and discussing them with scores of brilliant minds around the world (like you if you&#8217;re still reading this), I felt I needed to do some homework on these different techniques for achieving\u00a0by-reference\u00a0objects, if nothing else to improve my own skills, but also to strengthen or assuage my own position on this topic. The result is this presentation.<\/p>\n<p>Originally this presentation was merely a book report of\u00a0by-ref OOP techniques that I was aware of. I tried to document the implementation details of each technique, the common pitfalls, and the pros\/cons.<\/p>\n<p>Then I started providing justification for why\u00a0by-reference\u00a0support in any language was important, and demonstrated how problems that are simple to implement in other languages using pointers\/references are more cumbersome in LabVIEW.<\/p>\n<p>Then I provided a summary of where I think LabVOOP could improve, what I\u2019d like to see possible, and what we can do currently.<\/p>\n<p>Then I added suggestions on what methods and features\u00a0by-reference\u00a0classes might contain and how they can be implemented.<\/p>\n<p>Finally I provided recommendations for class authors to assist in the decision making of class implementation and utilization.<\/p>\n<p>I want to share this presentation with the LabVIEW community because I think there are probably very few resources like it available, a detailed discussion of object\u00a0references in LabVOOP. If you find it educational or beneficial I would appreciate hearing that so I can get some validation on this topic for myself. To be honest this discussion is a bit out of my area of expertise, but I do think it\u2019s an interesting topic and important to LabVIEW in the broader General Purpose Programming Language context.<\/p>\n<p>Thanks,<br \/>\nNate<\/p>\n","protected":false},"excerpt":{"rendered":"<p>https:\/\/decibel.ni.c&#8230;\/docs\/DOC-18320 Motivation for this presentation: At the 2011 CLA Summit, National Instruments asked us what we thought was missing from LabVIEW or what needed to be improved. I already knew NI\u2019s position on this, but my feedback to NI and direct conversation with Stephen Mercer, father of LabVOOP, was that I thought LabVIEW needed to&#8230;<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[15],"tags":[887,60,62,61],"class_list":["post-1684","post","type-post","status-publish","format-standard","hentry","category-labview","tag-labview","tag-labvoop","tag-object","tag-reference","wpcat-15-id"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p504YJ-ra","jetpack-related-posts":[{"id":10582,"url":"https:\/\/www.themoehrings.com\/index.php\/2018\/03\/labview-tortoise-or-hare","url_meta":{"origin":1684,"position":0},"title":"LabVIEW &#8211; Tortoise or Hare","author":"Nate","date":"March 4, 2018","format":false,"excerpt":"Attached are the slides presented by Nate Moehring on Sept 19th, 2017 at the Certified LabVIEW Architect Summit on best practices for managing performance risks associated with LabVIEW applications that handle large amounts of data, as well as advanced tips and tricks for writing high performance LabVIEW code. LabVIEW -\u2026","rel":"","context":"In &quot;LabVIEW&quot;","block_context":{"text":"LabVIEW","link":"https:\/\/www.themoehrings.com\/index.php\/cat\/labview"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2719,"url":"https:\/\/www.themoehrings.com\/index.php\/2013\/04\/religious-about-labview","url_meta":{"origin":1684,"position":1},"title":"Religious about LabVIEW","author":"Nate","date":"April 5, 2013","format":false,"excerpt":"I realized this week at the CLA Summit that I am religious about LabVIEW. What does this mean? It means that despite conflicting evidence and statements made by individuals about the strengths and weaknesses of LabVIEW (including key individuals within NI), I have made a choice long ago to have\u2026","rel":"","context":"In &quot;LabVIEW&quot;","block_context":{"text":"LabVIEW","link":"https:\/\/www.themoehrings.com\/index.php\/cat\/labview"},"img":{"alt_text":"CLA Logo","src":"https:\/\/i0.wp.com\/www.themoehrings.com\/wp-content\/uploads\/2010\/09\/LabVIEW_Cert_Arch-4c-300x81.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":10578,"url":"https:\/\/www.themoehrings.com\/index.php\/2018\/03\/unit-testing-in-labview","url_meta":{"origin":1684,"position":2},"title":"Unit Testing in LabVIEW","author":"Nate","date":"March 4, 2018","format":false,"excerpt":"Attached are the slides and example project presented by Nate Moehring during the March 1st, 2018 presentation at the LabVIEW Architect Forum on advanced tips and tricks for writing unit tests in LabVIEW.\u00a0 Some justification is provided for unit testing in general, but most of the presentation covers the advanced\u2026","rel":"","context":"In &quot;LabVIEW&quot;","block_context":{"text":"LabVIEW","link":"https:\/\/www.themoehrings.com\/index.php\/cat\/labview"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":954,"url":"https:\/\/www.themoehrings.com\/index.php\/2010\/12\/labview-exceptions-a-paradigm-shift-to-error-handling-in-labview","url_meta":{"origin":1684,"position":3},"title":"LabVIEW Exceptions: a paradigm shift to error handling in LabVIEW","author":"Nate","date":"December 15, 2010","format":false,"excerpt":"This is a presentation I gave to about 40 Certified LabVIEW Architects back in March 2010\u00a0at the\u00a0CLA Summit in Austin, TX.\u00a0 It presents some ideas on ways in which exception handling error techniques that are used in C++ and Java could be incorporated into LabVIEW by National Instruments, and the\u2026","rel":"","context":"In &quot;LabVIEW&quot;","block_context":{"text":"LabVIEW","link":"https:\/\/www.themoehrings.com\/index.php\/cat\/labview"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1896,"url":"https:\/\/www.themoehrings.com\/index.php\/2012\/03\/separating-user-interface-from-implementation-in-labview","url_meta":{"origin":1684,"position":4},"title":"Separating User Interface from Implementation in LabVIEW","author":"Nate","date":"March 18, 2012","format":false,"excerpt":"I had the opportunity to give the opening presentation at the 2012 Certified LabVIEW Architect on March 5th. \u00a0An expanded title \u00a0would be \"A Survey of Tools and Techniques for Separating the User Interface from Business Logic Implementation in LabVIEW\", but that doesn't fit on a slide very well. The\u2026","rel":"","context":"In &quot;LabVIEW&quot;","block_context":{"text":"LabVIEW","link":"https:\/\/www.themoehrings.com\/index.php\/cat\/labview"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":951,"url":"https:\/\/www.themoehrings.com\/index.php\/2010\/12\/new-blog-category-labview","url_meta":{"origin":1684,"position":5},"title":"New blog category: LabVIEW","author":"Nate","date":"December 15, 2010","format":false,"excerpt":"Future of LabVIEW","rel":"","context":"In &quot;LabVIEW&quot;","block_context":{"text":"LabVIEW","link":"https:\/\/www.themoehrings.com\/index.php\/cat\/labview"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.themoehrings.com\/wp-content\/uploads\/2010\/12\/68a47da47f1a03454aa98e84b3420c5f.jpeg?fit=800%2C200&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.themoehrings.com\/wp-content\/uploads\/2010\/12\/68a47da47f1a03454aa98e84b3420c5f.jpeg?fit=800%2C200&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.themoehrings.com\/wp-content\/uploads\/2010\/12\/68a47da47f1a03454aa98e84b3420c5f.jpeg?fit=800%2C200&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.themoehrings.com\/wp-content\/uploads\/2010\/12\/68a47da47f1a03454aa98e84b3420c5f.jpeg?fit=800%2C200&ssl=1&resize=700%2C400 2x"},"classes":[]}],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.themoehrings.com\/index.php\/wp-json\/wp\/v2\/posts\/1684","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.themoehrings.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.themoehrings.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.themoehrings.com\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.themoehrings.com\/index.php\/wp-json\/wp\/v2\/comments?post=1684"}],"version-history":[{"count":2,"href":"https:\/\/www.themoehrings.com\/index.php\/wp-json\/wp\/v2\/posts\/1684\/revisions"}],"predecessor-version":[{"id":27459,"href":"https:\/\/www.themoehrings.com\/index.php\/wp-json\/wp\/v2\/posts\/1684\/revisions\/27459"}],"wp:attachment":[{"href":"https:\/\/www.themoehrings.com\/index.php\/wp-json\/wp\/v2\/media?parent=1684"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.themoehrings.com\/index.php\/wp-json\/wp\/v2\/categories?post=1684"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.themoehrings.com\/index.php\/wp-json\/wp\/v2\/tags?post=1684"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}