Today’s blog post was inspired by two search phrases that brought readers to this blog, which are “vgl programming” and “vgl programming syntax”. Strangely, these search phrases were popular on the day I posted about the LabWare LIMS, for some reason.

What is VGL?

VGL is the proprietary language for the Thermo Fisher Scientific SampleManager LIMS/LES. It stands for “Vacuum Generator Language.” That is because SampleManager was originally created by a company called “VG” for “Vacuum Generator” and, through acquisitions, is currently owned by Thermo Fisher Scientific Informatics.

For those of you programming other LIMS, the nearest likeness would be something like the LabWare LIMS LIMS Basic. Or, some might claim that both these languages look a bit like a type of Basic.

For the programmers out there, and the rest of you can hum and stare off into space for the rest of this paragraph, but the bottom line to this is that it’s not a heavily-typed language nor heavily syntaxed. There are no semicolons to worry about, for example. It does offer object-oriented tools so that you can create screens and such that are powerful. In addition, it has many functions that are specific to working with a LIMS, as well as the usual stuff, like mathematical functions.

While there has been a movement to begin to replace VGL with languages such as C#, there is still a multitude of VGL in the world.

Programming and Syntax

VGL is an easier language to learn than, say, C#, but it is still complex. There are things in it that require true programming knowledge. For example, the concept of creating and/or using libraries of code or that of declaration statements.

Learning the syntax requires deeply studying someone else’s code, and there’s plenty to look at if you open up the SampleManager program files. Or, there are probably courses given by Thermo Fisher Scientific but, be warned, no software vendor offers a lot of programming classes. Only a relatively small number of people take them and they’re just not offered nearly as often as the basic “how to use the system” courses, which lots of people need.

But if you look at the syntax, you’ll see that, at the top, there’s usually a standard header telling about what you’re looking at, followed sometimes by a main routine (if it’s not merely a library of routines, that is), then probably followed by more routines that are used. Statements use pretty simple formats, but the complexity comes in knowing what to put in those statements.

Even getting data from the database has been somewhat simplified. Search for the word “SELECT” and you’ll see that VGL allows you to directly look for database data. You’ll have to create the loop to traverse the cursor, but you’ll find plenty of examples around for that, too.

Comparing Languages

People always tell me that VGL is a fairly difficult language to learn, for a proprietary language. They compare it to LabWare LIMS Basic, claiming that LIMS Basic is really easy to learn, in comparison.

That might be so but the issue isn’t merely in learning what’s available but in learning how to use it. And, in that, all these “big” LIMS are complex. I’ve seen plenty of situations where people completely mess-up their LabWare LIMS with the idea that it all looks so easy. And it’s not easy in any of these cases. But, I’ll admit that VGL all by itself is more complicated to learn because it is also more powerful.

With that said, though, and I know I’m repeating myself, but I want to stress that the real issue with these systems is understanding the consequences of the programming and this is true whether we’re talking about using VGL, LIMS Basic, C#, Java, Javascript, or any other programming tool (not all of these can or should be used with any system and are just examples).

Who Should Use VGL?

I would say that any person who has worked with a “regular” programming language and knows a LIMS, well, should be able to learn VGL. In fact, if a person has programmed several LIMS, they can probably learn to program another LIMS, regardless the language being used and whether or not it’s a proprietary language.

Here’s an example from my own experience – when I was working with the Labvantage LIMS, I could easily read the Javascript, even though I didn’t actually know that particular programming language. Also, the way the different triggers, scripts and settings figured-in, while it physically looked different than other systems I’d used, it actually was about the same thing. It was easy to understand what was happening because I have experience from several other systems to help me understand what I’m looking at. And, in fact, I was able to debug issues without touching the code, at least for some of the more minor issues (let’s face it – for the really serious bugs, you really need to learn how to use the debugger and step through the code).

But even more casual users can learn some VGL to make small changes or add small items. From there, some of those people will get interested in learning more of it and becoming VGL experts.

So, if you’re switching from a LabWare LIMS or an LVS system to SampleManager, for example, retraining the people who are already doing quite a lot of programming is probably a good start. Most of those people should be able to be converted. Although, maybe the LVS folks using Java and Javascript are the better candidates since the languages are stricter than LIMS Basic. However, learning to understand the logic of how to do all this is going to come from knowing any of these systems. A good developer with strong system understanding should be able to be converted from one system to another.

Gloria Metrick
GeoMetrick Enterprises
http://www.GeoMetrick.com/

One Thought to “VGL Programming”

  1. Paul Kemp

    Having spent a lot of years developing solutions in VGL for SampleManager and then moving onto Labware, there are certainly noticeable differences.

    One of the main differences is that VGL can be used to build bespoke complex interfaces, that are class based to extend reusability. Labware while it offers a large number of functions has limited interface building tools and is not as reusable.

    However that said, Labware does offer a lot of out of the box functionality and will the inclusion of easy to configure visual workflows it does make presenting data to the users easy.

Do you agree? Disagree? Have something to Add? Here's your chance - make a comment!