Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

alchemistmuffin

macrumors 6502a
Original poster
Dec 28, 2007
852
903
Hi there.

I am learning how to program iPhone apps, but I have no programming skills.

Do you know any iPhone programming tutorials for people with no programming skills?

If know, what part of programming do I have to know?
 
If know, what part of programming do I have to know?

All of them. If you only know bits and pieces of programming, you will have flawed, buggy, bulky, memory leaking programs. If you have 0 knowledge at all in any language, I'd suggest starting with a simple language, and learn how to think like a programmer. Once you have that mindset move on to learning the iPhone SDK.
 
All of them. If you only know bits and pieces of programming, you will have flawed, buggy, bulky, memory leaking programs. If you have 0 knowledge at all in any language, I'd suggest starting with a simple language, and learn how to think like a programmer. Once you have that mindset move on to learning the iPhone SDK.

Do you know any sites that does basic programming for Mac? Or do I have to start with Windows C++ programming? (via Bootcamp?)
 
Learn C, not C++ first. Learning Windows programming won't help at all. Once you have a good, solid understanding of C including memory management, pointers, functions etc then learn Objective-C (not C++). Once you have a good grasp of the language you can start to explore the Cocoa Touch API.
 
Let me tell you a story.

I downloaded the SDK last August in a fit of excitement. I had only a passing experience of C, but lots of experience in a number of other programming types, such as VB and Javascript. There were no books, because of Apple's NDA, so for the first month or two I created little rubbish apps that didn't really work. I set myself a simple navigation app structure and worked through each bit. How to load a view. How to set up an outlet. How to make and assign a button. How to use SQLite. And all of the little things in between. I did these over and over again until I understood what I was doing and why. Let me just say I didn't have more than a few hours at a time, and not every day.

By the end of October I created, from scratch, my first navigation app with no reference to a book, tutorial or Apple's reference library. So proud! [My wife said: 'Well done, dear!'] It was basic, but it all worked. Then I discovered these wonderful things called 'leaks'.

By the end of January I had the beginnings of my first two apps I intended to sell. I will be submitting one in the next few days.

I'm about to start my first game, and I fully expect it to be bloody hard work.
 
Let me tell you a story.

I downloaded the SDK last August in a fit of excitement. I had only a passing experience of C, but lots of experience in a number of other programming types, such as VB and Javascript. There were no books, because of Apple's NDA, so for the first month or two I created little rubbish apps that didn't really work. I set myself a simple navigation app structure and worked through each bit. How to load a view. How to set up an outlet. How to make and assign a button. How to use SQLite. And all of the little things in between. I did these over and over again until I understood what I was doing and why. Let me just say I didn't have more than a few hours at a time, and not every day.

By the end of October I created, from scratch, my first navigation app with no reference to a book, tutorial or Apple's reference library. So proud! [My wife said: 'Well done, dear!'] It was basic, but it all worked. Then I discovered these wonderful things called 'leaks'.

By the end of January I had the beginnings of my first two apps I intended to sell. I will be submitting one in the next few days.

I'm about to start my first game, and I fully expect it to be bloody hard work.

You also had a big advantage of having experience with other languages. The concept of programming is the same language to language, only the syntax changes.
 
You also had a big advantage of having experience with other languages. The concept of programming is the same language to language, only the syntax changes.

I can't say I agree with you there, syntax is a very big hill to climb. I speak French, but that doesn't mean I will find it easy to speak German too. You could say I had an understanding of languages, but didn't know the words to use. Well that's gonna get you far, isn't it?

Learning the building blocks used in Xcode was partly a visual thing for me, which IB helps a lot with, and then working hard at learning the code, which you need to make things do special things. You try making a game in IB. You wouldn't get very far.

My experience is that you have to put some effort in to learn to code. I read so many threads asking for an easy way in, but I don't think there is one.
 
All of them. If you only know bits and pieces of programming, you will have flawed, buggy, bulky, memory leaking programs. If you have 0 knowledge at all in any language, I'd suggest starting with a simple language, and learn how to think like a programmer. Once you have that mindset move on to learning the iPhone SDK.

For me this is big.... I am just learning how to program. Not for iPhone stuff but for work. And some of the concepts that I have come up against are hard to imagine or thing, unless you thinking like a programmer. So I have had to go back and re-start what I am doing, trying to learn some of the reasons on why "X" does that or why "Y" did that and why it was put there......

It is very interesting to learn and see...... Using classes, functions, modules etc..... I don't know if these idea's apply to iPhone programming, but man,,,,,,,, Good luck. As others have said, there really is no easy way to do this. You have to get down and dirty and do the work.
 
I can't say I agree with you there, syntax is a very big hill to climb. I speak French, but that doesn't mean I will find it easy to speak German too. You could say I had an understanding of languages, but didn't know the words to use. Well that's gonna get you far, isn't it?

But imagine if you didn't even understand the concept of a noun, verb, sentence, etc. and how much harder it would be to learn a French or German then. Since you already know how to think about forming thoughts and communicating using your native language, learning a new one is much easier than if you had no concept at all of how modern languages work (say if you were a caveman who was used to grunting and drawing on walls for communication).

The same is true for programming languages. Once you learn how to think like a programmer and express an algorithm using the idioms that are common across all languages (looping, conditionals, etc.), it is much easier to pick up a new one.
 
Learn to program first, any computer language. Try the beginning to program books in the children's section of your local library. Or take a class. Move up to more complicated programming books when that seems way too easy.
 
Yup, I highly recommend this as well. Fantastic resource!

Here's the thing:

I don't know anything about programming, language wise, or understanding the code, or how the code works, or what it does

Does the book cover through that? For people with no programming knowledge at all?
 
I don't know anything about programming, language wise, or understanding the code, or how the code works, or what it does

Pick up any beginner's book on C- I think Sam's makes a good series. You could also pick up "The C Programming Language" by Kernighan and Ritchie- widely regarded as "the" book for C.
 
As an Amazon Associate, MacRumors earns a commission from qualifying purchases made through links in this post.
Here's the thing:

I don't know anything about programming, language wise, or understanding the code, or how the code works, or what it does

Does the book cover through that? For people with no programming knowledge at all?

Look up the children's intro to programming sites on Squeak:
http://www.squeak.org/
http://scratch.mit.edu/

You could also check out sites on beginning Logo or Basic.
Neither C nor Obj-C were designed for teaching programming to absolute beginners.
 
Web frameworks are excellent places to start IMHO. You can pick up a lot from Mac and iPhone programming books, but MVC really gets explained well in large tutorials for Rails, Symfony, Cake, etc. Once you understand that, Cocoa Programming for Mac OS X is great, but make sure you pay attention to notifications, categories, etc. These are easy to overlook and you can build applications without an understanding of these things, but you code will probably be much harder to manage without them. Regardless of the approach, make sure you follow learning resources from start to finish. Abandoning books when you think you learned enough will hurt you in the end.

Best of luck

Luke
 
I am not going to lie, I am in the same boat dude. I just bought my membership thing to develop for the iPhone. I have no experience with coding, and I thought that this would be a great challenge and a great introduction into...all this. I am about to buy the suggested Apress books on this, but I just want to be certain which ones I should buy (Objective-C right?). My plan is to create a better weather/marine app for the store, so hopefully this all works out. Any other suggestions? I am not familiar with any of this, but I am very willing to learn it.

How about the iPhone Application Development for Dummies? Seen a lot of good reviews so far. I am about to pull the trigger on that and the Programming in Objective -C 2.0. Or something else?
 
alchemistmuffin -- I may be wrong but I sense that you've caught a glimmering of how cutting edge (and lucrative) iPhone apps can be and want to get in on the buzz -- but please be patient: you have a long journey ahead of you. If, as your handle suggests, you have some knowledge of alchemy, the dictum "Ora, lege, lege, lege, relege, labora et invenies" ("Pray, read, read, read, re-read, work and you will discover it") applies here in spades. There is much sulphur and salt to separate before you discover the mercury of the programmer's spirit.

All programming languages share essentially the same basic concepts:

* Storage and retrieval of variables. (e.g,, x=10)
* Branches based on logical tests. (e.g., if (x = 10) { do this } else { do that })
* Iterative looping until test conditions are met. (e.g., while(x<10) { do this and that; x=x+1; })

Most also have:

* Key words that act as the verbs and adjectives of the language.
* The ability to define constants and more complex data structures.
* Functions that accept variables (as arguments), perform specific transformations and return results. (e.g., function addUp (a, b) { return a + b })

In languages like C, you'll also have to deal with specific data types (e.g., integers, floating point, character, boolean, etc.) and pointers (memory address locations of variables, etc.). There's also the concept of declaring functions and initializing variables before you use them and the world of compiling source code into object code and linking the result into executable code.

Objective-C is an Object Oriented Programing (OOP) language, and for this you must understand the concept of encapsulation -- class structures that become objects containing methods (a specialized case of functions) and properties. There are also terms and concepts specific to Objective-C such as selectors (generally identical to "methods"), accessors, delegates, categories, etc.

All this may seem pretty daunting when you are starting out but the essential message here is get yourself a good grounding in programming first and the road will be much easier. As I say this, though, it's with the realization that even with more than 25 years of programming experience at the professional level, I still struggle to learn the basics with each new language I take up. Give yourself time and don't become attached to any outcomes for a while. If you stick with it, a passion for the discipline may grow within you and the discovery of new territory will become your guiding light.

-- Mark
 
One thing you have to realize is that you have to have the basics down first or else you wont truly understand how things work behind the scene and why things work the way it does.

Be patient and take baby steps in learning the language. If you invest bit more time up front, you will have an easier time understanding other languages as you move forward.

Good luck and be sure to check back and let us know how your doing.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.