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

gnasher729

Suspended
Nov 25, 2005
17,980
5,565
Can anyone suggest where I cam get hands-on training for Objective-C at a more affordable price? I am located in Houston, Texas.

Stanford University course on iTunes U (iTunes University). 26 hours introduction to Objective-C and iPhone programming. Free.
 

mdatwood

macrumors 6502a
Mar 14, 2010
909
882
East Coast, USA
I think tackling a problem from an object-oriented perspective is very different from approaching the problem procedurally. So why learn one approach to programming first and then have to almost unlearn it after?

I agree with you here, but the problem is that new people to programming are not thinking about approaching a problem procedurally or OO, they are too busy getting stuck on functions, pointers, memory management, parameter passing, etc... Why clutter up these basic concepts with something like obj-c and OO when you can start with C and then have that knowledge transfer directly to obj-c? How can someone without any prior programming knowledge understand reference counting or pools without first understanding malloc/free and beyond that, what actually is going on in the underlying hardware?

I'm not advocating that someone needs to become an expert in C before continuing to obj-c, but that they should use C as a way to learn these base concepts so that when they do start thinking about OO they can focus on OO and not why they have a * after some type declarations and not others.
 

Sydde

macrumors 68030
Aug 17, 2009
2,552
7,050
IOKWARDI
I agree with you here, but the problem is that new people to programming are not thinking about approaching a problem procedurally or OO, they are too busy getting stuck on functions, pointers, memory management, parameter passing, etc... Why clutter up these basic concepts with something like obj-c and OO when you can start with C and then have that knowledge transfer directly to obj-c? How can someone without any prior programming knowledge understand reference counting or pools without first understanding malloc/free and beyond that, what actually is going on in the underlying hardware?

I'm not advocating that someone needs to become an expert in C before continuing to obj-c, but that they should use C as a way to learn these base concepts so that when they do start thinking about OO they can focus on OO and not why they have a * after some type declarations and not others.

How can a student possibly grasp all these concepts without some sort of preparatory study? Granted, Garbage Collection does relieve one of the memory management issues (I think, I am almost afraid to try it, especially if it makes me lazier than I already am), but it disappears if you have to move beyond Cocoa. And some things are just not practical or doable from a strictly Cocoa standpoint. Sooner or later, a programmer will have to venture into Core Foundation, Core Services or even deeper, and without an understanding of procedural C, it will be back to class or the books.

I learned obsolete machine language programming from a book in the HS Library many years ago. The great thing about that book was that I only had to read about a third of it: it was arranged with a test question at the bottom of each page with each answer pointing the reader to another page - kind of the precursor to hypertext. That would be a very fine companion to a paper text, a CD containing web pages that lead the reader through the learning experience as smoothly as possible.
 

macsmurf

macrumors 65816
Aug 3, 2007
1,200
948
I think it is a good idea to start with an object oriented language if you want to write programs in this paradigm. People have a tendency to think that OO is harder than procedural languages but those people (including myself) started out on procedural languages so its difficult to know if they're right.

That pretty much narrows it down to Java, Obj C, or Ruby. I haven't read Kochans book but a lot of people seem to like it a lot, so I think I would start there.

Anyway, all I wanted to say was: Stay away from JavaScript. It's a weird language that a lot of people write really terrible code in and post on the net. The scoping is strange and non-standard and it also has some rather advanced features, such as closures, that may not be the best thing to start out with. Closures are cool but may not be easy to grasp.
 

BollywooD

macrumors 6502
Apr 27, 2005
369
46
Hamburg
Just d/l a simple open source project, start digging around in the code - change things, and see what happens. Learn by doing.
;)
 

macsmurf

macrumors 65816
Aug 3, 2007
1,200
948
Just d/l a simple open source project, start digging around in the code - change things, and see what happens. Learn by doing.
;)

Well, there's a novel approach. Did you learn to program this way? Personally, I think I would learn more by putting a book under my pillow and extract knowledge from it by osmosis.
 

lee1210

macrumors 68040
Jan 10, 2005
3,182
3
Dallas, TX
Guys... hudsonr resurrected/hijacked a year-old thread. You're responding to, in Internet time, ancient posts.

-Lee
 

macsmurf

macrumors 65816
Aug 3, 2007
1,200
948
Stanford University course on iTunes U (iTunes University). 26 hours introduction to Objective-C and iPhone programming. Free.

Although the thread was hijacked I wanted to thank you for this pointer. I've been looking for an excuse to learn Obj C and this is a lot of fun, although probably not very useful for people without any OOP experience.

So without further ado I'll try a little hijack of my own.

Impressions so far:

XCode isn't bad but having used IntelliJ Idea I'm not too impressed.

Why introduce dot notation when it cannot be used with more than one parameter? Confusing sugar is confusing.

Closures! Nice! Now all we need is Cocoa support.
 

DWmFrancis

macrumors newbie
Nov 3, 2011
2
0
Frustrated Beginners

Although the original post for this was written over four years ago, it's still a relevant question. I'm going to give what I think is a short, current (April 2013) answer and then expand on it a bit.

Today, I would suggest RunRev's LiveCode. After many years of development and a recent successful Kickstarter funding, LiveCode is poised to make a real impact on how hard it is to learn to program for iOS.

My situation was similar to the original poster - I wanted to do cool stuff with the iPhone but was struggling with all the nuances of objective C and the iPhone environment. The closest thing I can compare it to is learning a very foreign language. It can take years to become conversationally fluent and unfortunately, computers are real sticklers for grammar, syntax and spelling let along style and content. Objective C takes that to new heights by introducing another layer of abstraction. It's no wonder newbies run from the building screaming.

I worked for Apple for ten years, but not as a programmer. During that time we released a neat little programming environment called HyperCard. It was really exciting because it was built on common metaphors, file cards, buttons, text fields, etc., which made sense, at least in English. To that was added a simple, mostly plain text scripting capability which made it easy to hook things together and respond to user actions. My "real" programmer friends, who were using Pascal at the time, thought HyperCard was a toy for sissies who didn't have the guts to become "real" programmers. Steve killed HyperCard and went on to develop the NextStep programming environment and Objective C (with a lot of help from some really good programmers). Today that is what we are getting in the xCode Integrated Development Environment.

Fast forward 30 years or so...

I'm old enough to remember when we programmed the first computers in binary, with switches. That gave way to machine languages and punch cards and languages like ALGOL, and FORTRAN. Then came Pascal and C. But along the way something else happened. As the layers of abstraction got deeper the art of programming became the arena of "experts". You needed a four year degree and 10,000 hours of coding to be considered functional - and from an entirely practical perspective that is still true. However, there is a shift going on in the industry which I don't think we should ignore.

Macintosh was supposed to be "the computer for the rest of us". It did that by making difficult, complex tasks, easy for the average consumer. It launched a revolution in desktop publishing, personal productivity, and individual creative expression. Today, that continues, even outside the Apple ecosystem. There is one area which hasn't been "userized" yet and that is writing software to run on "the computer/cell phone/tablet.

Now, some if you old school, hard core programmers may think I'm crazy. Let me ask you a question; would you like to go back to writing code in machine language? In another context, would you like to build your own car from a pile of iron and aluminum ore and crude oil? Some of you might, and you'd have the right to be very proud of your accomplishment. However, for the rest if us who want to be able to get from home to the store, or work, or grandma's in minutes, today, we'll be grateful to the Henry Fords and Clausings and Demings who developed steel mills and car factories so others could build cars for us.

But what about those of us who want something that hasn't been put into mass production yet? Those ordinary folks who don't want to have to go to school for four years to be able to take advantage of all the capabilities in their iPhones that someone else hasn't written the code to do? They (we) are out here and we don't want to pay $20,000 to develop and market an app, probably because its just for our own personal use. What about "the rest of us"? Why should we have to spend two to ten years and hundreds to thousands of dollars to be able to a know where a single frame of a home movie was shot or the temperature and humidity where we are currently standing?

There is a shift occurring in the world around user centered design and the democratization of creativity. It's happening in 3D printing and fabrication. The Maker Movement is gathering steam. It started in the fabrication of plastics and metals. It's also got a toe hold in electronics with FPGAs and fully customizable hybrid chips and SOMs. Every step brings us closer to empowering anyone with an idea to be able to more easily express it in form and function. That should be really exciting as it holds the promise to solve some very complex, global problems, and even daily, personal needs, which effect all of us.

What if programming your iPhone was as easy as using it? Why can't there be a "natural language" development environment for iOS with an understandable GUI? From what I've seen so far, LiveCode is a big step in that direction.

Sorry for the long rant. I just think its time to democratize programming too.

-df
 
Last edited:
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.