LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Question about classifying LabVIEW ( or any language) as a "general purpose" language...

I don't have a formal CS background, I just picked up labview because it "stuck" better than other previous attempts. I've seen the question about whether labview is a "general purpose" computer programming language. Usually it's being asked by someone with no direct Labview experience, and the answer usually depends on the answerer's level of experience/exposure to LabVIEW.

 

From what I can tell, it seems the main criteria is for a language to be Turing complete. Which, from my reading, can be summed up as being capable of performing all the tasks that a computer is capable of performing (I'm avoiding the details here of a Turing machine).

 

However, my main question about all this originates in a few scenarios that I, and many others from my reading this forum, have run into, where there is seemingly a limitation.

 

For instance, why can't a datagrid (like in .NET) be a native labview data structure or UI element? Even if not provided by NI, shouldn't it be possible for people to make such a thing with a general purpose language?

 

What about a 3D game? I'm not aware of any way to code something like that in labview.

 

Forget 3D, what about just drawing directly to the monitor, making some crazy custom ui? 

 

What about the need for the NI DB toolkit in order to communicate to a DB through ADO? Shouldn't a general purpose language be capable of allowing people to write their own low level drivers for things like that? Maybe it's possible, again I'm far from an expert.

 

I'm wondering if I'm simply not aware of certain tools or if I'm confusing limitations of an IDE (LabVIEW) vs a language (G). Is that the case? In my mind, "general purpose" translates to being able implement anything that would be possible if one were to directly code in 1's and 0's, and I'm not sure if that is a correct assumption or whether that is true for labview.

 

I'd be interested to hear from those of you that are both more experienced and possibly with formal CS backgrounds.

 

Also, because I have read responses to this basic question that "sound" defensive, sometimes rightfully so in response to the way this topic is brought up, I want to make it clear I'm asking out of genuine curiosity and... Well... I really like labview like the rest of you.

0 Kudos
Message 1 of 3
(2,040 Views)

You might have seen it, but here's a perspective from the father of LabVIEW.

 

(It is a bit stale, because we do have recursion now. Also not many young users even know what a VCR is ;). Still an excellent read!)

 

You might have seen it, but LabVIEW NXG does have a datagrid.

 

(Also note that security concerns have limited what you can do directly, for example "in/out port" tools once existed but are no longer possible. Remember when browsers allowed writing directly over the address bar, making you think you are on a legitimate site.)

0 Kudos
Message 2 of 3
(2,024 Views)

LabVIEW has a 3D Control (based on OpenGL) and you can do a lot with it. I recently saw on a local user group meeting a formula 1 race simulation where you could drive your own car together with others. Looked not quite as Grand Tourismo but still impressive. So your argument that you can not do 3D programming in LabVIEW is moot. If you should want to do that is another question of course but it's possible.

 

As to your question about general purpose or not, that is an entirely different story. Generally there is not a clear official ISO or whatever sanctioned definition of what would make a programming language general purpose. Does this mean you need to be able to write measurement applications? Or do you have to be able to write a Word Processor or a Spreadsheet application, since we still don't have the ultimate one, with it? Or how about an Operating System? Or a 3D super duper killer game? And is it enough to be theoretically able to do it, or does it also have to be efficient and performant and maintainable?

If all of these are taken into account there is basically no language that would satisfy all of these criteria. Write an OS in Java or .Net C#? Sure technically possible but not the best choice out there by far. Write a complex application like a Spreadsheet or Word Processor in C? Absolutely possible but the chance that you would ever write an application that will not only work well but also be maintainable in the long run is basically non existent. What about assembly? Perfect low level language and if you can't do something in assembly you can't do it in any other language for sure. But efficient in development effort? Reliable? Useful for any of the above examples? Absolutely not!

 

So what do you really want to know?

Rolf Kalbermatter
My Blog
0 Kudos
Message 3 of 3
(1,977 Views)