![]() |
Team with beginner programmers?
Alright, now I'm in 8th grade at the moment, and from what I've heard, our high school team isn't really that great. No one has much experience in any programming, so we need to know where to start. Since we are in 8th grade, we need to know where to get the program that works with the robot, for some practice. We were going to try to use C, so if you could recommend a guide or tutorial or something to get us started, that would be great.(We all have no experience with any languages AT ALL, and have no clue where to start.)
So, if you could point us in the right direction, it's highly appreciated. Thanks!!! |
Re: Team with beginner programmers?
We use windriver workbench for our c code, it is a little confusing and hard to talk about through text, it is something best done on video tutorials, so you might search youtube for windriver frc tutorials. Simbotics 1114 has an app for iPhone called simphone and it has many tutorials in it i know there is some programming, but I'm not sure how much or in what language. contact your team to see if you can get the windriver DVDs so you can mess around with it. I probably didn't help that much, but this is what i know.
|
Re: Team with beginner programmers?
You don't mention why you chose to program in C. You have plenty time to learn al the languages, so unless you have a good mentor or teacher, I'd suggest either LabVIEW or Java as your first FIRST language. They are much much more forgiving of mistakes, and have somewhat simpler syntax and concepts.
If you have access to the previous kit memory sticks and SW, you can get started. There are video tutorials on Ni.com/first and on frcmastery.com. Greg McKaskle |
Re: Team with beginner programmers?
Quote:
From personal experience:
Other links that might be of interest:
Notes:
There are literally hundreds if not thousands of years of combined professional programming experience on here, and most of us are constantly on the lookout for young, new programmers trying to get started. You're already off to a great start simply by asking! Once again, welcome to FIRST and FRC!! |
Re: Team with beginner programmers?
Well Fletch1373 did a good job of laying out the basics of each language. I would definitely find out what your fellow students and mentors know because if someone already has experience in a language then that is a major pro.
Personally, my team goes with LabVIEW for a variety of reasons - (Fletch covered this but I will repeat in my own words) Some languages are easy to learn but hard to master and some are hard to learn but relatively easy to master. LabVIEW is pretty easy to learn within the FRC environment. The framework provides a lot and the examples are useful. I've had to give quick LabVIEW lessons to a lot of rookie teams and its easy for me to show them how to, for example add a motor, include a solenoid, etc. The graphical element also helps out because sometimes that makes more sense and is easier to visualize. The controls system hardware is produced by NI. That means that if we have any kind of issue we have one place we can go to for all our questions (I believe Mr. McKaskle will agree that we ask plenty of questions..) If we have a problem, its NIs hardware and software, so they can help us from all angles and can debug issues faster. More teams in our area use LabVIEW. If we need help, there are more people we can turn to. Conversely, we can help more rookie in our area. It helps to have a local community. If you are interested in LabVIEW I agree FRC Mastery is a great place to start. I learned LabVIEW by spending a week of my summer a few years back watching two or three a day while working through examples. (That's right, I know how to spend my summer vacation in style..) |
Re: Team with beginner programmers?
1 Attachment(s)
Welcome to FIRST!
Like before, unless you have a good C++ Mentor on the team, I don't recommend it. Our team uses Java (although our mentor actually knows C++ instead) due to the simplicity and forgiving nature of the language. I am currently teaching other students on my Team Java (many of which have never used any Programming Language) and they are picking it up rather well. I attached a PDF that is from my Java Course. Its all links and Resources for learning Java. Good Luck to you. |
Re: Team with beginner programmers?
Thank you all this information is very helpful.
I was going to either use C or Java because once I learn these I can pursue other interests outside of FRC. I chose C over Java because more programs are written in C compared to Java.(http://www.tiobe.com/index.php/conte...pci/index.html) But, since most of you guys and people I have talked to say they use Java because it is easier, I might just go with that. Can anyone show me where to start programming in Java? Either in general or FRC based. This is my first language ever so I have no clue what an IDE is or anything like that. Sorry for the overwhelming response, but I don't have a clue what I'm talking about. Thanks! |
Re: Team with beginner programmers?
Check out Team 2851 summer school challenge on google docs.
https://docs.google.com/folder/d/0Bz...W vzBiWCDa6X0 They have opened it up to other teams. Looks like a good place to start with learning java for FIRST. Secondly, I also would suggest Java. Last year we reviewed all of the options and decided to go with java. The major reason we did this, was there was not any programming class offered at the high school, so the kids did not have any access to programmer teachers. 2nd, there was an online class offered through the High school virtual school, you may also have this option to get high school credit for learning java, along with a structured class. 3rd, there was also API test where you could test and receive collage credit for the java. 4th Java is used everywhere, and once you learn it, you will probably use it for the rest of your life. That all being said, this year we had a mentor join the team that works for NI, so we stuck with Labview. The examples in labview for FRC are done very well. I would still use Labview as a learning tool for sensors and "seeing" how they work and what the data represents. If I were in your shoes, I would learn and use java. |
Re: Team with beginner programmers?
2 Attachment(s)
We use Java, and it works fine for basic and advanced topics.
We get our new programmers on our team started with the attached documents. The first one gets you started, and the second one talks about many of the important classes. If you ever want to find more about a WPIlibJ class (while using netbeans, not sure about eclipse), just right-click and click "go to source" to see the base code. This is useful for developing your own classes to suit your needs. If you want to use Eclipse (as opposed to Netbeans), go here. Be advised, that since the platform FRC uses is based off of either jdk 1.3 or 1.4, there are several advanced features that you can't use. But shouldn't be a problem at all. Welcome to FRC! |
Re: Team with beginner programmers?
Quote:
Java will teach you how to be a good C++ programmer. The languages are so similar that it is often hard to tell the differences, but one of the main differences is that Java tends to force you into good habits, while C gives you a more free reign. This can be good and bad. For a beginner, building good habits will make everything afterwards magnitudes easier. For an expert, the limitations will slow you down. Another thing you could experiment with is Python. It is quite an exercise to use it on an FRC robot, but it is one of my favourite languages. Which brings me to my last few words of advise; learn all the languages you can! Learn you a Haskell for great good or something! Make something in Perl! |
Re: Team with beginner programmers?
I would say to steer clear of C if you have never used it before. It took me several years to get into objective C (apple forever!), and it is not a forgiving language to beginners. If you can get a hold of someone who knows pure C, then yeah, learn it, it is used for a lot of stuff, but in truth you can write 'real world' programs in anything you want!
That being said, I don't like java. I don't like it mainly because in the normal computer world (not sure about FPGA's) it is interpreted. I also don't like it because I think it is way more complex than is necessary for using FRC (yes, I know it is quite simple usage, but still, this is not what Java was really set up for, and so it has some quirks). I personally would say use LabView. I have used it for 4 years of FRC plus a years worth of side projects. I find that it is great for the setting of FRC because it is so integrated with the template files. It is a great implementation of the WPIlib, and I find imaq to be hard to beat. I also use LabVIEW for real world programs, because I can get my program built faster in it than in another language. Plus, if you are absolutely bent on it, you can call traditional code from within LabVIEW. An important note though, LabVIEW is unlike any traditional language you may have dealt with. In that, where text based languages execute code linearly, LabVIEW executes whenever the required inputs to a function are available. It takes some getting used to, but I find it to be a much better way of doing signal processing. |
Re: Team with beginner programmers?
Hi! I'm glad you're joining a FIRST team and are trying to learn stuff over the summer!
Personally I hate LabView and would NOT recommend a beginner to use it. It can be very confusing and the logic behind it is much more complicated to understand than that of C++ and Java. We used Java on my old team (I moved this summer so I have to switch teams) and I loved it. The language is nice and it's very organized. Plus there's a ton of help for it and FIRST makes it really simple to code basic robot functions. Hope this helps! |
Re: Team with beginner programmers?
Oh, I guess that we should point out that since you are in 8th grade moving into high school, you can take an AP test and get college credit if you know Java. That being said, I still say that LabVIEW is better if you want to do vision. Additionally, it is comparably just as easy as any other text based langauge. LabVIEW however, is a dataflow language, whereas the other two are structural, making LabVIEW require a different mindset.
Welcome to FIRST, and good luck! |
Re: Team with beginner programmers?
Do you have anything to practice on? Mindstorm, VEX, FTC? I think learning to program a physical robot is easier because it becomes much easier to debug and you can see the results.
If you have a LEGO Mindstorm laying around, you can learn RobotC for that, Carnage Mellon has developed some very nice lessons for that, and you can read and watch the first bits of them online for free. Same for the Cortex. Wetzel |
Re: Team with beginner programmers?
Quote:
If you need help, I definitely can help but I am going to Embry Riddle in August and I am not sure if you attend the Florida Regional in UCF. I will help any way I can! |
Re: Team with beginner programmers?
Quote:
|
Re: Team with beginner programmers?
Quote:
In my curriculum we use labview for some courses, matlab for some, and then mechatronics is in assembly/C++. My classmates that have never experienced programming before have much, much more trouble with the text based programming in terms of understanding. |
Re: Team with beginner programmers?
This book, C++ for Everyone, is very good if you want to learn C++. Our team did a full 16 week class last year using this book. If you work through this book you will lean a bunch about C++.
http://www.wiley.com/WileyCDA/WileyT...HEP001707.html -Hugh |
Re: Team with beginner programmers?
Quote:
All of them can be used to write in an object-oriented fashion, though doing so in a dataflow language may feel extremely different. |
Re: Team with beginner programmers?
Quote:
-Write your "hello, world" code : This teaches you the very basic structure of how to code in that language. -Create something that takes user input and manipulates (in a simple manner) it and gives output (ie does addition with two numbers, or capitalizes words) : This will teach you basic variable manipulation*. -Go to Project Euler and try to solve the problems. -Create a simple program that does something that you think is cool. My friends and I, to learn languages at school, wrote chose-your-own text adventures. I wrote a game of checkers and a program that solved the "chickens and cows" math problem with any number of heads/legs(I couldn't find a non Q&A example of that problem). These are good because you do something you find interesting while finding ways to use certain programming tools/techniques. These are basic steps to getting you familiar with how to write code in java without having access to a robot/any other machines. If you can, find a bored Computer Science or Computer Engineering college kid and have them teach you (other majors may know Java as well, but I wouldn't know which) (or a bored Computer Scientist or Computer Engineer)(or anyone who is bored and knows Java). If you need more help, you can private message (PM) me (and probably anyone else who responded in this thread). *A lot of programming is taking numbers/data and assigning them to variables (like how in math you have the unknown number that we are calling "x". In programming you can call this number "NumberOfBananas" or "NumberOfMonkeys" and pick what you want that number to be, and change what you want that number to be, and then use that number) and then manipulating your variables (maybe you'll divide NumberOfBananas by NumberOfMonkeys so that you can tell the user how many bananas each monkey gets). |
Re: Team with beginner programmers?
I would say that if you can get ahold of a team that uses java, see if they will send you their code. That way you can see how it is implemented. For me, starting at hello world was frustrating, but then again, my first language was assembly for apple II.
|
Re: Team with beginner programmers?
Quote:
Java: Object-oriented, as Java is probably one of the only strongly object oriented languages, EVERYTHING in Java is an object and that is enforced by the compiler. C++: Imperative (But most of the wpilib is written with OO) Labview: Functional (As in, everything is functions acting on data that passes between them. While this misses out on some of what Labview is, the difference between dataflow languages and functional ones mainly has to do with execution order, and it's not really THAT big of a difference, as many similar concepts and styles are shared) Labview can't natively be used in an OO style, by the way, as it has no concept of state. You'd have to pass around the state of the object to each method you want to call. |
Re: Team with beginner programmers?
I agree, although as a happy labview programmer, I like it's stateless nature. Admittedly, if you come from the OO, or for that matter, the text based world, it takes some getting used to.
Once you are used to it though, it works great. It also is great if you haven't ever programmed before, because it is easy to go from stateless to OO, just not the other way round. |
Re: Team with beginner programmers?
Quote:
Okay, some of you are probably going to need a little explanation. He went on to explain how a language as a whole can't be object oriented. Some languages just make it significantly easier to program that way. For example, C++ has special syntax that is needed is order to follow the OOP paradigm, whereas Java requires that syntax no matter what you're writing. Java, however, can be written in a functional way. You could easily write a (simple) program in Java with the full body of it in the main function, potentially using a few other static methods as well. Sorry to hijack the thread. If anyone cares to continue this, please PM me. I love philosophical discussions of all kinds. |
Re: Team with beginner programmers?
Quote:
I thought I'd offer a few clarifications about LV. First off, LV really isn't purely functional, nor is it purely data flow. Pure data flow tends to use fork and join operators in order to make conditions and repetition, and in the end it is tedious and practically like using gotos. The authors intentionally merged the control structures with the more pure data flow expressions to create what they believe to be a more usable hybrid. As for OO, it is true that initially LV didn't have objects or classes. About fifteen years ago an external Swedish company started adding OO to LV. They called it GOOP. There were a few others, and it was very interesting to see how each approached the extensions. Ultimately, the LV team felt that in order to do it in a way that was more true to the language, we would need to do it internally. So perhaps 8 or ten years ago, the OO features started being integrated. One of the more unique things you'll notice is that objects use by-value-semantics -- meaning that wires contain the value, rather than a reference to the value of the object. This is similar to how stack objects are done in C++. Anyway, this matches how LV does arrays, strings, and obviously scalars. It makes some OO algorithms trivial and complicates others a bit where the goal was really to create a topology of objects. In that case the user can define a reference type whose value copy can choose between a deep, shallow, counted, or other copy semantics. At this point, very little of the libraries that ship with LV are OO, but a good number of external professional SW development libs adopt it quite heavily. Greg McKaskle |
| All times are GMT -5. The time now is 20:18. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi