Hi, I'm a 14-year-old aspiring developer with (what I believe) are revolutionary ideas for the iPad. I have currently completed a series of 63 videos on YouTube for learning Objective-C, 34/37 videos on iPhone Development, and 4/2~ for Cocos2D Development (all by the same author). However, after all this, I am still not "stable" with the language, meaning that I wouldn't be able to create the simplest of program. I believe it is because of memorization. Now, a few questions:
Is this normal? Have you went through the same phases?
Regardless, what did you read/watch to learn Objective-C and things like OpenGL ES?
Any suggestions on improving my "memorization" (if that is the/a problem)?
How long did it take you to learn you FIRST computer language?
P.S. How long do you think is the timeframe of learning everything I need to know to make a full 3-Dimensional RTS game for the iPad, or a 3-dimensional RP game? And, what would I need to learn (i.e. Objective-C, OpenGL, etc)?
Questions like that are hard to answer. Some find programming easier than others, some are never able to grasp it. The learning curve also depends on your prior knowledge. Knowing design patterns and architecture like MVC, delegation, target-action and familiarity of OOP concepts will be of great help. I personally read the documentation that Apple provides.
Foundation, basics and reading are very important, but you can't learn a language without coding and experience. You can expect to learn all functions, structures, classes (basically the entire SDK) by heart. It takes time. But from what you described it seems like you made a very good foundation for yourself.
Learning by example (reading code others have wrote) is a great way to learn, but in my opinion reading and learning some basics first is more important. Over the years that I have been programming I've seen a lot of aspiring people that were self taught and learned mainly by example. Unfortunately it makes it very easy to pick up very bad habits that are hard to 'unlearn' later. These include proper code indentation and structure, documentation and comments, avoiding bad practices etc.
I've worked with a lot of languages, like BASIC, Pascal, VB, Java, VB.Net, C, C++, C#... and I've recently started with Objective C and iOS SDK. I had a lot of background but I still read over 3.000 pages of the documentation Apple provides before actually attempting a Hello World. And that barely scratches the surface when it comes to what the SDK provides.
The most important thing I think for any developer is to learn how to be able to use the documentation to find answers. No one is expected to know everything about a platform, and it would be humanly impossible in todays world. The UIKit framework reference alone is over 1.000 pages. At this time I think I search the documentation at least a couple of times a day.
For example, you need to figure out how to compare two strings, you open the NSString class reference and have a quick look through the methods it provides. They are very verbose and you quickly stumble upon isEqualToString: method, read the detailed description and see that it is exactly what you were looking for.
And this becomes even more important when you notice that the framework is constantly changing. New classes are added, old ones changed, methods and properties added or removed. To keep up you need to be constantly in tune with the documentation. It should be your best friend.
Questions like that are hard to answer. Some find programming easier than others, some are never able to grasp it. The learning curve also depends on your prior knowledge. Knowing design patterns and architecture like MVC, delegation, target-action and familiarity of OOP concepts will be of great help. I personally read the documentation that Apple provides.
Foundation, basics and reading are very important, but you can't learn a language without coding and experience. You can expect to learn all functions, structures, classes (basically the entire SDK) by heart. It takes time. But from what you described it seems like you made a very good foundation for yourself.
Learning by example (reading code others have wrote) is a great way to learn, but in my opinion reading and learning some basics first is more important. Over the years that I have been programming I've seen a lot of aspiring people that were self taught and learned mainly by example. Unfortunately it makes it very easy to pick up very bad habits that are hard to 'unlearn' later. These include proper code indentation and structure, documentation and comments, avoiding bad practices etc.
I've worked with a lot of languages, like BASIC, Pascal, VB, Java, VB.Net, C, C++, C#... and I've recently started with Objective C and iOS SDK. I had a lot of background but I still read over 3.000 pages of the documentation Apple provides before actually attempting a Hello World. And that barely scratches the surface when it comes to what the SDK provides.
The most important thing I think for any developer is to learn how to be able to use the documentation to find answers. No one is expected to know everything about a platform, and it would be humanly impossible in todays world. The UIKit framework reference alone is over 1.000 pages. At this time I think I search the documentation at least a couple of times a day.
For example, you need to figure out how to compare two strings, you open the NSString class reference and have a quick look through the methods it provides. They are very verbose and you quickly stumble upon isEqualToString: method, read the detailed description and see that it is exactly what you were looking for.
And this becomes even more important when you notice that the framework is constantly changing. New classes are added, old ones changed, methods and properties added or removed. To keep up you need to be constantly in tune with the documentation. It should be your best friend.
Great answer!
It's hard to explain, but I "understand" the coding, but "remembering" is the tough part for me. I believe I had everything set up for after I learned Objective-C, but I kind-of "skipped-over" the steps to learn Objective-C.
I will be honest, I've tried to stay away from the Apple Documentation because it looks very complex, but it looks to be my last option. How long did it take you to read the 3,000 pages? Also, on what page do you think I should start reading the documentation (A link would be extremely appreciated)? I would love to have an very good grasp of the language by late January, do you think that timeframe is realistic?
It took me about a month to read that. When it comes to documentation, and I've used a lot of it on a lot of platforms, I have to say Apple provides a really good batch. You can find anything by searching on developer.apple.com
As for specific examples I suggest these two for ObjC:
A primer, quick intro: Loading…
Detailed guide: Loading…
and OOP in ObjC (if you are not familiar with Object oriented programming): Loading…
I had no Obj C experience prior and I found those documents sufficient to get me started.
After that I strongly suggest these three. Being someone who never actually used an iPhone before I found them exceptionally helpful:
iOS HIG, how your apps should be structured, look&feel and all GUI details: Loading…
Tech overview, the hardware, what the devices can do: Loading…
iOS App Programming Guide: Loading…
When you are done with those, and excellent Hello World guide: Loading…
That's a part of the steps I took. There are a lot more worthwhile guides to read like, Memory Management, Event Handling, Threading etc. After that, you read the specific guides that are of interest to you, for example if you are working on games, look up the OpenGL ES guide, if you are making an app that uses mapping, look up Location Awareness.
But when it comes to 'remembering', the best way to get to it is repetition through use. The more you use it the more it becomes second nature to you, like driving a car. You wont need to think about it a lot with many of the most common tasks, but you will still be looking at the documentation for specifics.
Oh, and a great thing about Apple docs, in the top right corner there's a PDF button to download the entire guide in a neat PDF that you can read 'offline' or on your favorite e-reader like Kindle. There's also plenty of sample code that will show you how a lot of things can be done.
1. Is this normal? Have you went through the same phases?
I've gone through big learning spurts, reading everything I could get my hands on. Us geeks love to learn, it's one of the staples of building on technology that's ever changing. And the level of passion you've got is great! You've taken in a ton of material, and clearly have an interest in programming.
However you have to be careful that you make the switch from learning to doing. I remember a time when I was your age, and I'd say 'oh I "could" play that on guitar' and while it was true because I had the head knowledge, it was false because I didn't have the finger knowledge. And code is the same way, until you start compiling all you've got is head knowledge.
Quote:
Originally Posted by ckravitz
2. Regardless, what did you read/watch to learn Objective-C and things like OpenGL ES?
And don't let the apple documentation intimidate you. I would kill to have the quality of Apple's documentation in other languages. If you don't understand a concept. Look for the answer or post a question. There are always a ton of smart people more than willing to help out.
Quote:
Originally Posted by ckravitz
3. Any suggestions on improving my "memorization" (if that is the/a problem)?
Start coding! Code lots of stuff. Start by downloading the iPhoneCoreDataReceipes example project and work through that. Change the code, remove code, add code, and try to apply what you've been watching. For me that's the best way to learn. That's how I memorize, by getting my hands dirty!
Once you have a grasp on that, start building something that you don't have code for. Start small like tic-tac-toe. That's going to give you the fundamentals of writing objective-c, managing memory, working with sprites, logic, etc.
Quote:
Originally Posted by ckravitz
4. How long did it take you to learn you FIRST computer language?
I started programming in grade 11 & 12. I started with VB6 (ewww!) and then went to university. I took courses in Java, C, C++, C#, and assembly. The big thing I picked up in university were the fundamentals of coding. Data Structures, Algorithms, Memory Management, Coding Practices, and Object Orientation.
I didn't really learn - that is get to know a language inside and out - until I started working. I thought I knew the language, but that was just ignorance. In most languages there's so much to know. Don't worry about knowing a language front to back. Learn what you need to know in order to move forward, and then start coding your project. Read other peoples code, read up on the language, and when you find new techniques, apply that to the code you've already written.
Last edited by gavingmiller; 12-07-2010 at 12:21 AM.
Just to put my two cents worth in on this topic I would really recommend watching the newest series on iTunes University Stanfords CS193p. This material is better explained than the previous course on iTunes U. The instructor does a way better job of explaining and showing how to implement all of the code.
I do not have any background in programming and I found this instructor does a great job of describing his code so you know what each line of code is doing. A lot of objective c code is described and shown in the demos for this course.
I am not comfortable with Apple's documentation yet either but instead of memorizing anything there it is important to know how to look things up there. If you are like me and most of the descriptions are confusing because you don't understand what a BOOL is or an int or coordinates are (yet) you will find it hard to use Apple's documentation. Once you start messing around with sample code you slowly pick up how these things are used or implemented There is an assumption that you know the objective c basics. A lot of the people that recommend reading and exploring the docs don't necessarily understand that it is still gibberish to alot of us noobs. Just a heads up about trying to learn from apples source code at the beginning, it is difficult because they really separate the model view and controller. This is preferred programming but it makes it difficult to learn because it is not always obvious where things are going or coming from in the code because they are in a different class or controller or delegate. The iTunes course has a good balance of this. Ideas start simple and are developed into more complex apps.
Hope this helps,
Rob
Anyhow, that iTunes instructor is the best resource I have seen over the past year that I have been sloshing around in this iOS developer realm...
hey ckravitz Im 16 and i started about a year ago so i know where you're coming from. I had a same experience beforehand mostly with c++, but it was still really different coming over to this new professional platform with anew language. I realllyy want to second the CS193P stanford classes which were absolutely phenomenal. The instructors on there do a great job of exmplaning everything. Andfor the docs... I find that I only reference them looking for specific topics, functions, etc, not a general overview of things, but you definetly need to know how to search through and use them.
Good luck! and also these forums are a fantastic resource lol
I will definitely check out those videos, thanks for the heads up!
well being very new myself, ive bought the ebooks and watched youtube videos and anything else i can get my hands on and still haven't had it stick yet. i agree about the stanford sessions, im still getting it beaten into my head cuz the structure in lines of code eludes me but im slowly picking it up.
its just like anything though, doing...hands on, practise makes perfect...any skill needs to be done over and over which im enjoying now with learning this new trade. beats my previous professions, hopefully it will pay better too lol
Watching 63 videos and expecting yourself to remember it all is kind of demanding too much of your own memory. I found this out myself when trying to learn openGL a while back with C++; I bought a huge book, and decided to read it all to get to know everything I needed to know about openGL, read it cover to cover, and by the time I was done I realized I totally forgot the basics.
The way I learned each of the languages I know is by starting small, just by learning the total basics, and attempting to build a program using what I then know. Inevitably I run into something I want to add to my program but which I have no idea how to do; that motivates me to look up the concepts involved in how to do it. And when I ran into something I didn't understand, it forced me to learn it before I could move on.
Think of it like a building. You've got to first not only get the foundations down but also solidify them, before moving on to putting things on top of the foundations. If you go too quickly (before the foundations are made solid), the building will eventually topple because the higher levels have nothing to really support them. Similarly, if you try to just cram more and more concepts onto foundations that you don't really remember well, it won't work because you need the foundations to be ideally like second nature before you can realistically and/or efficiently implement things on top of them.
Another problem might be that you're unfamiliar with how objective c relates to the iSDK. Did the videos you watch relate obj-C to how it's used in Xcode, or just in general? If the latter, you will want to watch some Xcode-specific videos, preferably those that aldcorn suggested above from Stanford. But DON'T try to watch all of them and then expect to be able to remember stuff from the first after watching the end of the last. You need to watch a few, then start making some test apps. I know you're probably very eager to get to work on those "revolutionary" ideas of yours, but even the most fantastic buildings had to start with some sort of standard foundation.
Good luck!
__________________
HEY! Was this post helpful?
If so, it would be MUCH appreciated if you'd just click on one of these apps:
MyD
Take 1 minute to set up your MyD and you'll always be able to prove you own your device!
Membrik
Test your memory by sliding tiles to match chains of increasing difficulty.
Make sure you watch the collection where the instructor is the tall guy with grey/blonde hair.
The Stanford website for the course has all of the course materials, I would have to double check which syllabus pertains to this video session.
Quote:
Originally Posted by ckravitz
Yes, I see this forum is a very useful resource
I will definitely check out those videos, thanks for the heads up!
-----EDIT-----
Is it the Stanford "Winter 2010" or "Fall 2010" course?
ummm well theyre all good i think winter is newer and covers 3.0... kinda outdated but still good. I actually liked the instructor of the fall one little better but theyre all really good
I've got windows programming background. I started to program on iOS 4 months back.
I did not have any knowledge about mac platforms at all, what I did have was an idea for a game. I'd like to share my experience with you.
I started to program it. In the process, I found myself with actions that I wanted to do, but really hadn't the knowledge to implement them yet. That's where I started to search for that specific topic. Since then, I explored the basics and some of the advanced topics as well. It was like learning on-demand.
I also bought two books: iPhone Game Development and Beginning iPhone Game Development. I found them a good reference.
When you search for how to implement a given action, is pretty common to find some great and different from each other, examples and tutorials on the net about how doing it. I always wondered:
1. What is this code doing?
2. Why is it doing like this?
3. Could I implement it in a better, more efficient way?
Always wonder how. I'm not saying that you have to reinvent the wheel, what I'm saying is that you always wonder how the wheel accomplishes its role.
I would read less and write more. That's the only way you'll learn it. It can be pretty scaring to build your first program. Your first compiling errors, but it's also challenging. It won't come quick, but when it finally does, you're going to love it.
I hope it added something to you.
Best of lucks!
Last edited by mariano_donati; 12-08-2010 at 09:19 AM.
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int one;
int two;
one = 1;
two = 2;
NSLog(@"Please work! I hope %i and %i appear on screen", one, two);
[pool drain];
return 0;
(Please work! I hope 1 and 2 appear on screen)
}
-----
Then, I moved it up to this:
-----
Quote:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
float money;
money = 2000.00;
NSLog(@"Let me try floats. I spent $%f on my iMac", money);
[pool drain];
return 0;
(Let me try out floats. I spend $2000.00000 on my iMac)
}
-----
And then:
-----
Quote:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int age, weight;
age = 25;
weight = 100;
if (age <=50) {
NSLog(@"You do not qualify, your age is %i", age);
}else{
NSLog(@"You qualify! You are %i years old!", age);
}
if (weight >=150) {
NSLog(@"You are to big! Your weight is %i", weight);
}else {
NSLog(@"You are perfect, your weight is %i. Come on in!", weight);
}
[pool drain];
return 0;
(You do not qualify, your age is 25
You are perfect, your weight is 100. Come on in!)
-----
(I got the last one on my first try, I was jumping for joy). I added this:
-----
Quote:
if (weight >=150, age <50) {
NSLog(@"You are exactly what we need. Welcome");
}else {
NSLog(@"Sorry, but you do not meet our criteria");
}
(You are exactly what we need. Welcome)
I'm taking a few minutes break. For 1 2/3 months of watching the videos I posted above, is this where I should be?
- (xxx) ... xxx is what the function/method returns (what type of value). void means it doesn't return anything.
For start, I suggest you open this tutorial up and go step by step: Loading… I started with that hello world too. It will teach you basics about Xcode, Interface Builder, view controllers etc.
And that's correct. Just reading wont make you ready to start coding anything big, but it will make your life a lot easier in the process. You will have knowledge of basic concepts and terminology which will make it a breeze to find more information and help yourself later.
I've been writing code longer than I can remember. And any significantly different language/SDK/platform you need to start small. Write Hello World, then write Hello %USER%, then write Hello %USER% and have it move around the screen. You aren't going to write the facebook app, Angry Birds, etc without a bunch of small steps inbetween. As matter of fact thats the most important concept in programming IMHO, breaking large problems into small problems.
I starting writing code after two weeks of returning to the Development world after four years. I have been too many things in my life but I have really enjoyed APP development (whenever I am not pushed to comply with impossible due dates).
Learning by example is the best way, I think! It put your entire brain to work. - For those who love listening (learn by hearing), I think videos are the best way.
- For pure observers, reading is the way. Videos work great too. Examples rehearse.
- For kinestetic people, they would rather learn by doing up front. However, there is catch: have to know the language first. Examples are the best way for these people.
But basics are basics: You must go to the primers in the apple documentation to get to know syntax, code structure, app architecture, frameworks, etc.. without reading this all the rest is pointless. YOU MUST KNOW WHAT TO DO FIRST (communicate) AND THAT IS KNOWING THE LANGUAGE (not the programming of apps).
I have been writing for a little over three weeks and I use posts as my main source to solve small issues, apple documentation to solve medium-sized issues, and on complex issues... I NEED AN ADVISOR/CONSULTANT URGENTLY... so you can actually help me if any of you has some spare time. I will pay!
Don't forget to check out the WWDC videos thru iTunes U. They are not going to teach you how to code but they will help you with some concepts that will make you and your apps better