nicksasa said:
thats the worst advice you could give, vb is totally diffrent from C. C is not hard to learn if you take enough time to learn it (i only knew some php before i started C)
When first learning to program C/C++ is a horrible starting language as it lets you do a lot of things that get you into horrible coding practices. The point of learning vb is not that it teaches you C, but that it teaches you coding practices. IMHO, you learn the most about how to write good C code by learning how to write in other languages. I honestly recommend starting with a purely functional language like scheme. Writing an AI and referee for a simple game like connect 4 is a good goal for reaching an understanding of functional programing, lambda functions, closures, and recursion (if you do it correctly). These are insanely important programming concepts that are very hard to lean, if not impossible, in C. Fully grasping the depth of Scheme could take years, but with a few months you could learn the really important concepts. You also learn to program without jump statements (THE WORST THINGS EVER (unless you are writing assembly)). Then learn a more procedural scripting language like python, pearl, or lua (probably not lua). Scripting languages are good to learn mostly because they make the transition to object oriented programming easier, but you can do a lot of stupid things in most scripting languages, and thus they should really only be used for writing small simple scripts for file conversion or code generation. Honestly, learning python can be done in a matter of hours. Then learn Java; its class constructs, type system, and general syntax are very similar to C/C++. Java gets you comfortable with object oriented programming, and (simple) abstract data types. Making GUIs is also very simple in Java, making it a great language to try and make neat little game or something, just to get familiar with the FSM logic necessary for creating a game, or any sort of program with user interaction (where all decisions about execution are not made when the program is invoked). Learning Java and all the algorithms and data structures you need (such as linked lists, array lists, BST, and hash maps to name the basic ones) for real object oriented programming would probably take another few months. Then learn the basics of C, and I really mean the basics like structs, enums, pointers (and pointer math), the stdlib/stdio functions (MALLOC), callback functions, etc. Learning make and/or cmake would also be a good idea at this point. Once you really understand pointers and c constructs (creating a doubly linked list with O(1) push/pop from both the beginning and end of the list, O(n) lookup, O(1) remove/insert before/after a given node, and O(n*log(n)) sort that uses void* to store an arbitrary data type is a good semi-challenging exercise), you can move on to C++. When learning C++ get into good habits such as using const everywhere, pass by reference, forward type declarations, using opaque data types, use of polymorphism, and good formatting (and commenting). Then tackle wii programming. I know that may seem like a long road, but a lot of advanced programming concepts and practices only come about by learning the basics of programming first. Of course you can shortcut to programming C/C++ but you will miss out on all the important programming concepts, and you almost certainly wont write the most elegant and clean code (I have seen a lot of really hacky C++ code, and it makes me want to cry). Wow that is a giant block of text, and doing all this stuff is almost certainly overkill, but doing some of it definitely wouldn't hurt, and once you learn the fundamentals of programming, learning new languages and platforms (such as programming for the Wii) is as easy as finding the right documentation and figuring out the syntax (comments are your friends).