How Did You Learn How To Program?

So how did you learn? Especially to you LabView people, how did you learn? :rolleyes: Honestly looking at it, I can’t figure it out… I learned C++ from books I picked up from the library and it just stuck on to me, and Java came easily, I am in the AP Computer Science class at my school… But how did you learn LabView? I cant figure it out, seriously, C++ looks easier than lab view…

I stared by taking a Visual Basic Class at my school. Our robotics team needed more programers so I just played around with it for a little while (3 hours) and I had a tank drive and shooter programed last year. I thought it was easy. There were so many examples that I looked at. Have you gone through any of them?

Me, well I was given a crash course on Lab view, then had a copy of the FRC edition thrusted into my hands, was told to install it on my laptop, and repeat what I learned (this is all thanks to Todd).

From there I just started to play with it in my free time. Whenever I got really stuck (the Help File and Online Recourses wouldn’t work) I would go to my College Mentor and asked him. The only reason I did this is I sorta had to learn on the Job. We had one other programmer, and he had a stressful season as it was having to do everything but Autonomous.

Edit: While this is how I mostly learned, it was more or less the need to have to learn on the Job. If anyone happens to know of some great classes to learn more LabView (as well as C++ and Java) I would appreciate it if you posted them here.

I personally took an open university course in OOP and Java. However it got really rusty until I started taking CS in my school which gave me a lot of practical experience. I got some C++ experience from talking to our more senior members of the programming team.

Yea it was a breeze to program in Java the hard part was trying to debug it, because it might not even be your code at all, but electrical, so it took a simple problem like an hour to fix… I was trying to fix whats not broken and just messes everything up… Other than that, it was really easy, I just cant understand how people can use LabView…

Before Last Year, i have never programmed any language in my life (except for HTML in 5th grade). There was a kid starting a robotics team at my school, and i thought it would be cool to sign up and build some robots. I signed up and there was no one to program the robot. I played around with LV a little bit, and a little bit more, until i logged about 100 hours of LV. After that, i learned C++, VB and Java. But as i have learned, you are NEVER done learning how to program, every time you drag that box, or write that next line of code, there is always much much more to learn, or at least, a different way to code what you just coded.

Debugging can be difficult but my dad, one of the programing mentors, is an electrical, mechanical, and software engineer. He has experience and normally knows were to look. I learned LabView simply by being able to play with it. I didn’t find it hard to understand. I have no experience with Java, so I don’t know how hard Java is. If you just play around with it, maybe you can learn to understand it.

The last part is true, technology is evolving every day, you can even say programming is an art

Me and my dad have competitions to see who can write the best code :cool: It’s amazing to see how many different ways to code something.

No I was saying that the problem was electrical all along and I change my code (which is correct) but it becomes wrong and too much headaches… Yea I agree, programming is mostly from experience… Big companies rather have the person with 4 year experience in programming than a kid with 4 years of education but 0 years on real programming experience…

I learned how to program by emulating examples. I got good at programming by writing programs. I got very good at programming by writing programs in collaboration with other programmers, where each piece of software was treated as a contract to perform a specific task given certain conditions.

I learned LabVIEW by reading the documentation, following the examples, and going through the provided tutorials. I know a lot about how it works, I can usually make it do what I want, and I can often do a good job of explaining to others how to make it do what they want. I’m not at the level of proficiency where I can just wire things up without first doing some analysis and planning.

David, I believe you will always have trouble with LabVIEW until you set aside what you already “know” about programming. You can’t understand a dataflow language well by attempting to apply concepts from procedural programming languages; you’ll likely get stuck on the superficial similarities and fail to grok the true nature of things. Go through the online videos with an open mind and as little preconception as you can.

I found that FRC Mastery helps greatly.

I learned JAVA (my first programming language) 3 or 4 years ago alone, because my programming class was way too slow.
After two years programming in java we started our FRC team and as a very small team i was the only one on the electronics and programming.
Because we started our team two weeks after the kickoff, i didnt have the time to go to a LabView course or something like that.
I watched a “how to make a simple motor vi with joystick” video in NI’s website and understood the basic code, and then - everything is the same in LabView.
I made myself a testing enviroment - took all the electronics and connected them and tried different codes. After two weeks of this i could program the 2009’s robot.
Good luck :slight_smile:

My experience is pretty similar to Alan’s. I learned all of the text based languages from books and a lot of trial programming.

As for LabVIEW, I learned it from the LVmastery tutorial videos. Those are great. Other than those videos, it’s been looking at examples and some good old-fashioned trial and error. I’m waaaaaaaaaay far from a LabVIEW expert, but I’ve been able to make it do what I want with relatively little effort. I think I spent a total of 3 hours watching the videos and that is all it took to start doing some cool stuff. That is what makes the dataflow languages pretty nice - you don’t need big books and days of learning. They are made to be very intuitive from the start and the need to memorize the details of the syntax is mostly eliminated.

I learned C++ by looking through tutorials and Java in a class, but like most others here, I just looked through the Labview examples to learn Labview. I can program in Labivew now, but I’m not used to its format and always get confused by the mess of wires I create.

My avatar is a Commodore PET 4032. 40 character wide screen… 32 kB of RAM. Made in Canada! You could get a floppy drive for them… but they cost a fortune. Mostly our programs were saved and loaded from audio cassette tapes. Type in “load”, press “play” and wait five or ten minutes.

They cost a fair bit back in the '70’s but our local high school had one and my Dad, a teacher there, could take turns taking it home on the weekend to learn how to use it. I’m not sure how many hours I spent down in the basement with a manual and computer magazines figuring out how to write code in BASIC.

There weren’t many people around to teach programming, at least in northern BC, in those days, and there certainly was no internet to go to for advice.

But it was a fabulous time to learn programming because the expectations were so low. If you could make a COMPUTER do SOMETHING… ANYTHING… it was considered pretty impressive. If you could make it do what you wanted it to do, well… that was even better.

When Zork and Space Invaders were high tech, it wasn’t too hard for one person, working alone in their basement, to come up with an impressive game or application.

That’s why I like teaching programming using robots and microcontrollers. Most people have no preconceptions of what a robot or microcontroller should be able to do… so programming a $2.00 PIC to receive an IR remote control signal and drive a mini sumo robot is seen as “impressive”, even though it is a reasonably simple task.

But regardless of the platform or language, there is no substitute for hours upon hours of creating, troubleshooting, modifying and debugging your own code.

and constantly looking up documentation. My favorite learning technique is kind of… brute force, I set out to do something I don’t know and then consult the documentation for how to do it. Even my very first “programming” language, TI-84 BASIC, I learned from the calculator documentation and some practice. Of course you also need a certain degree of patience to do this.

I had a partner last year, both of us knew no LabVIEW and had no one to teach us, and we had to set out to program a bot using it. The other guy decided that since we didn’t know anything, we couldn’t hope to do anything. What did I do? Go straight into the VI and try to figure out what everything does, referring to documentation along the way. I learned a lot this way and we had a robot working by ship date (nothing fancy, just basic teleop and straight line autonomous - but better than nothing). The other guy gave up, mostly sat there and watched, and quit the team afterward.

(Despiteless I was still much more confortable with C++ so I had us switch this year.)

My first year with 339, I went into build season with virtually no programming experience - just a tiny bit of experimentation with VB. The first time I walked into a meeting, the programming mentor intercepted me and asked, “programming and electronics?” I said yeah, that sounds interesting, and ended up on the programming team. That season, I didn’t do much coding at all. In fact, I didn’t write anything myself; just added debug statements and changed constants in others’ code. I recommended a few algorithms for autonomous, but other members and mentors took care of the actual implementation because I didn’t have the knowledge to do it myself. That year, I picked up some of the general concepts of programming but didn’t fully understand everything I was doing; this lead to, for example, me being confused about the difference between preprocessor macros and global variables.

The next year, my second in FIRST, I was more capable. Halfway through that build season, I wrote my first complete function - in Notepad, no less - an algorithm that used a gyro sensor to keep the robot moving forward along a straight path. It didn’t work at all initially, but I kept tweaking it and working on it (without mentor assistance), and eventually made it work so well, we failed to notice when one of our CIMs burnt out because the software corrected for it perfectly.

That Summer was the last one before we switched to the new control system, and my mentor wanted us to prepare for the change, so I learned C++ and we discussed how we would design the program once the new control system became available. This is where I really made the jump to a self-teaching programmer. I loved the concept of object-oriented programming and became an expert in C++, to the point that my mentor wanted me to “dumb down” my code so that new students could better understand it. I was using templates, multiple inheritance, functors, and who knows what else. He also explained to me how compilers and programming in general work, so I began to understand the purpose of the constructs I was dealing with. We even went into optimization for a bit.

In 2009, my senior year with 339, I wrote the majority of the robot code from scratch. Looking back, it’s amazing how quickly I jumped from not knowing anything about programming to being a self-motivated expert in the subject.

about 4 hours of looking at different vis in labview. majorly tired after that.

Quite honestly, i learned coding through studying open source programs and reading half of a c manual