06-07-2013 02:00 AM
Please rate my elapsed time VI at this board for my level analysis for CLD.
06-07-2013 09:20 AM
Hello,
You might find this forthcoming publication very helpful, Effective LabVIEW Programming.
For a preview of the contents take a look at the book's web page, http://www.ntspress.com/publications/effective-labview-programming/
and "inside the book" on the right side of the page to see,
It's expected to be published by the end of July.
Tom Robbins
06-07-2013 01:00 PM
@atomrob wrote:
Hello,
You might find this forthcoming publication very helpful, Effective LabVIEW Programming.
For a preview of the contents take a look at the book's web page, http://www.ntspress.com/publications/effective-labview-programming/
and "inside the book" on the right side of the page to see,
It's expected to be published by the end of July.
Tom Robbins
I'm less than impressed with chapter 4. Defining terms as "Well established in the LabVIEW Community" that do not appear anywhere on the forums seams to be a bit of a streach. building a state machine from scratch rather than the shipping VIT is a rather large waste of time. Using Error rings and ignoring Structure lables is folly.
06-07-2013 01:42 PM
@JÞB wrote:
@atomrob wrote:
Hello,
You might find this forthcoming publication very helpful, Effective LabVIEW Programming.
For a preview of the contents take a look at the book's web page, http://www.ntspress.com/publications/effective-labview-programming/
and "inside the book" on the right side of the page to see,
It's expected to be published by the end of July.
Tom Robbins
I'm less than impressed with chapter 4. Defining terms as "Well established in the LabVIEW Community" that do not appear anywhere on the forums seams to be a bit of a streach. building a state machine from scratch rather than the shipping VIT is a rather large waste of time. Using Error rings and ignoring Structure lables is folly.
And did you notice the Rube in Figure 4.14? Return the max between X and Y. He could have just used the Max/Min primitive instead of doing the comparion and the select function. And it also looks like he has a probelm with the event structure, which should be a very fundamental part of learning LabVIEW.
06-07-2013 03:36 PM - edited 06-07-2013 04:00 PM
I got an early copy of Effective LabVIEW Programming. I did not read the whole thing -- it's a pretty hefty book at 700 pages. I did read several portions and skimmed other parts.
In any book like this, you're going to find some author idiosyncracies, like one crossrulz mentions in section 4.14. The author had a number of folks read and feedback on the book to try to decrease such things, but it's really hard to catch all of those when you're focusing on the wider points. The goal is to get people to understand how LabVIEW works and how parts fit together. If the book ocassionally forgets a particular primitive, that's somewhat ok. Also, if you look at 14.4 in context, it is trying to show how to use the Select primitive... maybe not the best demo, but it isn't saying "use this when you want Max & Min", just "this is how Select works".
Jeff, you mention the waste of time of not using the built in templates. I totally agree -- for any real project, you should definitely use the shipping templates as much as possible. But taking time in a textbook to build one up from scratch gives the reader more insight as to why the structure works and what parts he/she can change without breaking the system. I once had a professor make me implement an Array class, even though pretty much every language has them in its libraries, because it helped to understand why that API had certain aspects, and that then helped me later when designing APIs that weren't ubiquitous. That's what this book does.
The event structure is in Chapter 10. Is that too late? Should it have been introduced earlier? It is impossible to put everything in Chapter 1, and you don't want to wait until Chapter 10 before you have students actually write programs for the first time. So, yes, some of the earlier programs include sections that are better done with an event structure. I think the tradeoff is reasonable. Personally, I would have changed the priority of several sections, but I cannot definitively say that the order I would have chosen would be more or less comprehensible to a new user. Ultimately, it comes down to the order in which a teach thinks he/she can explain a complex topic and how well that matches the ordering a student needs to absorb it.
Overall, I think this book achieves its goal of laying out the parts of LabVIEW needed for mastery, although the book is quite long -- I know some people will balk at its length. I'd give it to someone who already knows LabVIEW basics and tell them to skim past parts that they already grasp and only delve on topics that are truly foreign. Every student is going to have a different set of holes in their skill set, and I think the book covers them all, eventually.
06-08-2013 12:11 AM
Hello! I'm Tom Bress, the author of Effective LabVIEW Programming, the upcoming book under discussion here. I'm a CLA and a CPI. Thanks, everyone, for the input. In response, I'd like to give you some background information about the book and the way that it is structured. The purpose of the book is to help beginning-to-intermediate LabVIEW programmers learn to "think in LabVIEW". I wrote the book because I wished that there was something like it back when I was preparing for the CLD exam. There aren't that many LabVIEW books out there. Many of the beginner books focus on the mechanics of how to navigate the graphical interface. There are books that are exhaustive references of all LabVIEW functions. There are books about data acquisition, image processing and other specialized topics. This book is different. This book focuses on how to think in LabVIEW, how to use dataflow, and how to create state machines. The book uses only the core LabVIEW functions that are used in most VIs: loops, case structures, event structures, queues, etc.
I decided to use the published CLD exams as the basis for the book. One of the published exams is about a car wash with two user-selectable sequences, an Economy wash and a Deluxe wash. The car wash states are timed, and the timer pauses when the vehicle moves out of position. The timer picks up where it left off when the vehicle moves back into position. I use this exam throughout the book to illustrate LabVIEW concepts.
The chapters alternate in a regular pattern. In one chapter I discuss a new concept, in the next chapter I show how to use that new concept in the car wash VI. Each chapter builds on the chapters that came before it. Each version of the car wash VI presented in the book is an upgrade of the version that came before it. Eleven problem sets with full solutions to every exercise are also included in the book. The problem sets are based on all of the other published past CLD exams (traffic light, boiler, security system, a second car wash exam, sprinkler controller, and ATM controller). Here is how the book is laid out:
There are also a lot of appendices containing the functional specifications for all the CLD exams and complete solutions for every exercise in the book. All of the codes developed in the book will be downloadable from the publisher's website.
Hopefully this addresses some of the concerns raised in the previous posts. I didn't use templates because the whole point of the book is to learn how to internalize dataflow and learn to build VIs from scratch. The LV Core classes take the same approach. Event structures are indeed covered in Chapter 10, but really it is covered right after action engines and state machines, again just like in LV Core 1.
The book is long, but it is not as long as it looks. About a third of the book is dedicated to the problem sets, problem set solutions, CLD functional specifications, etc. The book is in full color and is loaded with figures (mostly screenshots of the VIs). There are so many figures that I half-jokingly refer to it as a "LabVIEW coffee table book". The first chapter on LabVIEW basics is pretty long since I wanted the book to be accessible to beginners and there is a lot of material to cover, but you can skip that and jump in wherever you want based on your LabVIEW background. The book is tightly focused, but it covers a large range of topics from LabVIEW basics and state machines to more advanced topics like LabVIEW classes and parallel loops.
Finally, as AristosQueue mentioned, any LabVIEW book that shows actual working VIs is going to be subject to the personal style quirks and idiosyncrasies of the author. That was my biggest concern while writing this book. I wanted to include a lot of code, a lot of meat, because so many LabVIEW programmers are lone wolves that work in isolation. They don't have the luxury of studying other people's code to improve their own coding skills. I wanted the book to be full of examples of working code of decent-sized projects done in good style. Of course, others will disagree with my style choices. But at least there will be something out there for the lone wolves to study. In my defense, I have had a number of people both inside and outside of NI review the book and critique my codes. My codes follow the general guidelines laid out in Blume's LabVIEW Style Book (an excellent choice for preparing for CLD exam).
I'm sure that there will be criticisms of my codes and I'm sure that I will learn much from them, but I have tried my best to ensure that my readers will not be steered off a cliff by studying the codes presented in the book. I'm sure that I will get many good suggestions from the LabVIEW community for improving the book, hopefully I will get the chance to incorporate them someday in a second edition. In the meantime, I sincerely believe that this book will help anyone preparing for the CLD exam, anyone trying to make the leap from spaghetti code to state machines, or anyone interested in learning more about using LabVIEW classes and/or parallel loop architectures.
06-08-2013 11:56 AM
Thank you for chiming in Dr. Bress. I probably owe you an appology for the brevity of my initial comments. I will also attempt to be brief in my remarks here but most likely will fail.
Please bear in mind my reaction was limited to a first pass through of chapter 4 within the context of "Preparation for Certification."
I agree the chapter presented the ideas and concepts of a classic simple state machine well. A novice LabVIEW programmer would gain a thourogh understanding of what a simple state machine is. If that was the goal of the chapter you delivered it perfectly with the exception that you indroduced terminology (clear in intent) that is unfamilliar to me. I am unaware of the source for those terms.
If the chapter's goal was to teach a LabVIEW Developer to create and use a simple state machine effectively you missed the mark by not including the simple state machine template available from File>>New... Frameworks. Or showing how to add your simple state machine to this folder. Perhaps you cover that in another chapter.
I will stand behind my remarks on developing in 2012 (Error ring is a new feature) and the comments about using free lables in each case vice integrated structure lables (another new feature in 2012.) ISLs are just too effective of an aid to developers! Perhaps you cover this elsewhere. I have expected very rapid adoption of the feature. It was well promoted.
Fig 4.14. Surprisingly I object less to the lack of Min/Max and more to the logical flaw of indroducing the tautology by using "Greater Than or Equal" vice the resolved simpler argument "Greater Than." That's pretty picky on my part and I can overlook it.
I do not object to the use of polling vice events. The intent of the chaper was clearly about the basic state machine. Again the simple state machine concepts were presented in a clear manner.
For what its worth, I will have a copy of this work in my reference library as an aid to developers and myself. I hope the margins are wide enough for notes.
Thank you for assembling this work!
06-09-2013 02:20 PM
I also reviewed a couple of chapters in Effective LabVIEW Programming. I hope I would have had the time to review more of it, but what I did see was very well outlined and always with the beginner in mind.
As a CPI, I always recommend LabVIEW for Everyone by Jeffrey Travis and Jim Kring. Unfortunately that book is becoming outdated (love the final line on the object oriented programming section saying something along the lines of there is something exciting coming, but we can not tell you what. Clearly before LVOOP was out). Effective LabVIEW Programming is going to be another book I recommend to beginners and to LabVIEW developers who want to prepare for the CLD exam. I will also recommend it to people who like to learn by reading a book and doing exercises knowing the solutions are available.
A lot of us have learned from the forums, both the NI Communities and LAVA. But there are people out there that do not learn that way and a book is the best way for them. I think this book will help them. If there are certain idiosyncrasies that they learn from the author that are not widely accepted, they will learn that with time. At least this book points them on the right direction.
Finally, I hope this book will help to transform and hopefully convert the LabVIEW Spaghetti coders out there
06-09-2013 04:45 PM
It is awsome to see all the useful comments in this topic. Thank you for sharing your favourite books with me, I have got a copy of The Labview Style Book of Blume, and now I plan to get another book, the Effective LabVIEW Programming by Dr. Bress. The summary of the book is very clear to me, and seem like it covers a lot of practical problems which I believe are very helpful for the CLD exam. The book also has color figures, and up-to-date, therefore I think I will love this book more than The Labview Style Book.
I think Effective LabVIEW Programming is not published yet, and that's why I couldn't find out anywhere to buy the book yet. Wish I could have it just now. Dr Bress, do you know any sources that I can buy the book as soon as it is published?
Thank you and love to you all.
08-02-2013 12:35 PM
When will the book be available on Amazon?