Let's Make Robots!

So my kid got me into programming...

I am learning Visual Basic.

Funny story, Phoenix somehow found a tutorial on youtube for programing a rock/paper/scissors game in VB. He was pretty excited about it, which is funny, Charlie is sorta the geek around here and the game itself really was not that spectactular. At any rate, we ended up downloading the editor and running the program. Went well, actually. I think he might actually get into this stuff.

The point is: Why didn't anyone tell me VB was so awesome? Oh my God, the drag-and-drop buttons and labels with the auto-written code? Brilliant! I swear, one could build the coolest robot control panel in the world with this thing. Don't get me wrong, I love me some Processing. That said, between wrj4P5 and VB's built-in "build a gui" stuff, VB smokes processing. Hands down.

If anyone is looking to write stuff to run on the computer end, take a look at VB. Awesome.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Haven't you been here before? http://letsmakerobots.com/node/6779.

-EDIT- Sorry, stuck a SparkFun link in instead, fixed now.

 

One thing I found when working with VB and a newbie (my son) is the issue of where one should start when first learning. I stick with a car analogy. If one were to want to learn how an engine works, it would be best to start with an older engine "with all the parts showing". Newer cars still have all these parts but the manufacturer decided to cover all the complicated stuff with a plastic cover and only give you access to the oil fill. If your goal is to simply learn how to check your oil, and you are happy stopping there, the newer car, with its hidden parts, is the way to go. You are never really going to get a full grasp doing this though. If one were to rip into a 1977 Chevy truck, you are simply forced to learn what each part does and why it is there. It will always be easier to go from knowing all the parts to not NEEDING to know them all than the other way around.

I sometimes feel that there is a fine line between between hiding complication to prevent a newbie from being overwhelmed while at the same time this becoming a crutch which prevents later "full on code" learning. Case in point, Phee was able to build a nifty "control panel" and make buttons change the text of a label within minutes after watching a tutorial. To him, VB appeared as if it was a "drag and drop, build-your-own-game" sorta thing that can be found on a lot of kids websites. When he wanted to expand the gameplay of his little program, it led to statements like, "when I DON"T hit the button, I want it to do this." This led to a complicated discussion as to the flow of code, if/then's and that "not doing something" is the default until you tell it to do something, as a poor example.

To be honest, the whole act of learning code for him was a lot more interesting when building the "control panel" and much less so when teaching him to start thinking in a flow chart, logical sorta way. I guess my bottom line is that I don't know if I would suggest VB as a starting place to learn code, just as I don't know if I would suggest learning engines on a brand new, modern car.

I can say this, I do really like the fact that most of VB is event driven. There is next to no need to "keep checking everything" by hand. I like the fact that it is "OOP-light" with the best (or good) of a lot of worlds. Many will talk about speed and power and aspects of the language but for me and my "hobby robots" it is quite powerful enough. Then again, for me, 9600 baud is also "fast enough" so I guess the speed/power bar is not very high.

Bottom line for me? VB is just another tool for the programming tool bag. Arduino does some things better than Picaxe and vice versa. Same with Processing vs. VB. You're gunna love some aspects of it, other stuff will drive you nuts. Right now, with the projects I am doing now, VB is a handy fit.

For me, it is a set of tools. Besides VB.Net, I do a fair amount of VBA in MS Office applications, mostly Excel and hAccess (my pet name for it) and I still maintain some old code in VB 6. I have to do a lot of database development and am often asked to add some new relevant fields or records for some new requirement or regulation ASAP. We get to work on adding UI in the main application for managing the new data, but in the meantime I can send someone a spreadsheet (likely with a column filled in to relate it to) and have them begin entering data right away. I just write a little VBA to store it away when the database is ready.

When we code the actual main application, we use C#. That was a management decision for consistency, though many developers do have an attitude about it being better even though performance and functionality are the same. VB is actually more functional, but some of the additional functions, like runtime binding, can get you in trouble.

I had.. actually still have the box with the big beefy manuals for vb4. Then there was the api reference manual that came handy as well. Good door stoppers these days. But now it's all online and free. I just downloaded it recently because I had a nephew that keeps harping on wanting to be a programmer. Trouble is they don't want to put the effort in to learn. What do you do?

There's nothing like discovering something new and enjoying the journey to enlightenment and the power it brings. All power to you CtC.

clicked wrong reply again

When VB first came out I bought it. In those days it came with a printed manual. Sadly it was a bit harder then and I had too many other projects so I ended up giving it to a friend who had more time than me.

I'll add it to my list of things I've gotta learn someday.

VB has become a very good product and you should definitely download it and give it a try. The learning curve is much lower now than it was before and most of the ‘plumbing’ is done by Visual Studio itself. So you basically just drag controllers into your application and double-click on them to add code and functionality. If you’re only used to programming microcontrollers, this form of event driven coding might seem strange at first but it’s brilliant and there is lots of resources out there.
I’m not a desktop developer but I had no problems building the control system for Whirligig without opening a manual (ok, some Googeling for certain functions, but that’s it)

In some circles VB is regarded as an inferior programming language but under .NET it’s just as fast as C# and it’s a full blown object oriented language. The control system for Whirligig is written I the free version of Visual Studio VB. http://www.youtube.com/watch?v=Bl4Ak9QIGBY

I have had that opinion for quite a while also (yes, I am so last century :) ), though oddly I thought that it was better off being only object based instead of truly OO. For a substantial amount of development, all you really need is notification. Let the system draw the windows and buttons and worry about all the standard operations like minimizing and closing the application, displaying pictures, etc. I think a lot of VB developers got themselves in over their heads once it became OO. When you consume objects and just respond to their messages, you know the message is just for you and you do whatever you need to to respond. When you go OO and derive from a class and override a method, you have to know whether or not to call the base implementation and if so, before, after or during your implementation. You have to look inside the "black box" and not having to look inside is what makes objects so powerful IMO. I do a lot of OO stuff, but I think it was pushed further into the mainstream than it should have been.

 

"but I think it was pushed further into the mainstream than it should have been."

I think they had to do that so that the MSIL would be identical if you used C#, VB or any other language. The great thing is that you now can use a library built in C# in you VB application without the wrappers you had to use earlier.

And with the intellisense you really don’t have to know much about derived classes.