Go to Post When I see stuff like that, sometimes I say, "That's BRILLIANT, why didn't I think of that?" But I never like the answer. - dtengineering [more]
Home
Go Back   Chief Delphi > Technical > Programming
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
 
 
Thread Tools Rate Thread Display Modes
Prev Previous Post   Next Post Next
  #10   Spotlight this post!  
Unread 07-09-2008, 11:25
Greg McKaskle Greg McKaskle is offline
Registered User
FRC #2468 (Team NI & Appreciate)
 
Join Date: Apr 2008
Rookie Year: 2008
Location: Austin, TX
Posts: 4,748
Greg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond repute
Re: Why to use LV/C++/C?

There are so many ways to do the comparison. Years ago I read a book on comparing languages, and I thought their system was a pretty good one.

My disclaimer -- I work for NI, on LV. That means I'm a C/C++ programmer, and I also program in LV. My opinion is that they both have their strengths, and that is as it should be. In Atlanta, the question came up, "What is the most important language for the kids to learn?" There are many answers this, but my favorite answer is that the most important computer language for you to learn is your second one.

Learning a language gives you a logic tool. You begin to look at problems from the perspective of that tool. It is the "If you are holding a hammer, everything looks like a nail" psychology. Learning a second language, especially one that is considerably different, results in having a second perspective, and learning the tradeoffs and interplay. Hopefully the second language also opens the eyes to the possibility of other language features, perhaps ones that haven't even been invented yet. To keep with my analogy, learning about other fasteners such as screws, bolts, clips, adhesives, etc. really gets started once you change your point of view and realize that the hammer and nail, while they are amazing, aren't the only tools in the modern toolbox.

The book on comparing programming languages was "Comparative Programming Languages" by Wilson and Clark. No, it doesn't cover LV, but it does break down the elements that they think are most useful to measure when looking at languages for a comparison. It is also useful to see the different ideas that languages implement, and to watch that change over time.

Inspired by their categorization, I normally condense this to, Expressive Power, Simplicity & Orthogonality, Implementation, Error Detection & Correction, Correctness and Standards.

If I were to go into each of these for both LV and C, it would be a mega-post, and besides, I think it is better for people to do it on their own and come to their own conclusions.

As an example, C++ scores better on expressive power than C does. Why? They both have the ability for the user to declare new functions, new variables, and even new types. But C++ goes further to allow for operators like + and - to be expanded for new types, and allows for the -> to be used to dispatch to class member functions. C++ also has additional keywords. This power comes at a price, however, as the sorts of errors you can receive from the compiler go way up, and the overall simplicity goes down.

Finally, while most new users initially focus on the text versus graphics difference, this is pretty superficial. There could be a graphics C. Arguably you've already seen that. There could be a textual LV, but defining parallel graphs in text is fundamentally hard and we have instead headed down the graphics road. A more fundamental difference is that C/C++ are procedural languages or imperative languages whereas LV is mostly a functional language. These terms may not mean much, but they are the more important ones to look up and think about.

I don't have a great analogy, but that won't stop me from trying one anyway. An imperative language to me is like driving a vehicle with a manual transmission. There are discrete gears, combined in various ratios to direct the engine rotation to the wheels. You control this with a clutch, a shifter, possibly more if in a semi or farm equipment where I can control other differentials. Fundamentally I'm exposed to the implementation and am expected to manipulate the system at that level. Not all settings make sense, and grinding of gears, getting stuck in neutral, and stalling the engine are all common occurrences, especially until you learn the system quite well. But once you understand the system, it is quite powerful and adaptable.

A functional language in this analogy is more like an automatic transmission system. Fundamentally the big difference is that the driver specifies what the outcome should be, but not the intermediate details. It may be as simple as F-N-R and a pedal. You still control the velocity of the vehicle, but you have traded control for simplicity. When you inspect the automatic transmission system you may find that it is really a manual with an automated shifter, or you may find a CVT or hydrostatic where it isn't even easy to compare them any longer. A CVT isn't limited to a small number of gear combinations, so is it better than a limited manual transmission? Or is it inferior because of the limits on the amount of power it can transfer?

Different approaches to the same problem. Isn't it better to focus on understanding both than to be dogmatic about it?

Greg McKaskle
 


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Why Not Use ISM band? Mr-Shutter Control System 8 06-06-2007 21:03
Why you should use Gmail Nathan Chit-Chat 5 22-02-2007 00:20
Why use the RC to control Pan/Tilt Joe Hershberger Programming 15 30-01-2007 23:41
Why would you use FIRSTwiki? Max Lobovsky FIRSTwiki 4 18-07-2004 23:59
Why can't you use 255 in PWM? Andrew Technical Discussion 4 29-05-2003 14:50


All times are GMT -5. The time now is 16:04.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi