So I got asked on advice on starting iPhone development on Twitter. I’m not an iPhone developer but you can’t just go “Hmm, I want to make an iPhone app” with no programming experience, its not that easy as most people think (And programming isn’t “just writing code”, you need to figure out shit to get your desired output, its an ART) This guide should get you STARTED with programming, and then eventually when your comfortable you can begin iPhone development (You can actually write iPhone apps in C++ too, another reason to read this post). So, anyways, let’s get into the goods.
Now, knowing what I know I definitely would NOT recommend C/C++ to a beginner. It’s much more difficult, especially if your 11 (which is when I started). After I finished the book I bought (C++ for Dummies), I studied .NET. Visual Basic is a nice beginner language if your looking to develop small, quick programs. You may not be able to do much, and that’s why you should look into other languages. I’ve heard that Python is a good beginner language, however Python is not a C based language, its got its flaws and most other languages won’t inherit what you find in Python, unlike in C. So, you should start out with a C based language like Java. It’s fairly easy (It’s huge, however, so it will take awhile to learn), and you can perform most operations quickly and easily. Making a user interface is also an easy task, especially with an IDE like netbeans.
Now, after you learn this you will be a DECENT programmer, and you can learn other programming languages, take C# for example. However, you are no expert programmer. You will be able to make fairly complex windows applications and quickly adjust to several API’s.
At this point there may be several more concepts you should know, things like linked lists, binary trees, algorithms and other data structures, how sockets work and how to program with them (socket programming IS difficult). After much practice, if you really want to become an even better programmer, you have to dive into the hardware end of things. You need to know how processors work, about caches and registers and interrupts and the various memory addressing schemes. You need to understand L1 and L2 caching to maximize performance, you need to understand how the CPU steps through code, and you need to know how the code you write in C++ or VB gets turned into machine language for the computer to understand. Before you are done you will be able to open an executable file in a hex editor and, using the target CPU’s instruction set manual, be able to turn it BACK into assembly language.
This can take years, but it’s certainly worth it. Don’t freak out, you’ll be surprised at how much you can learn in a year. I was.