That's what I have realized after looking at a few threads on here. I really remember very little about BASIC or C, so it's not like I have any bad habits to forget. Shoot, I took a Cisco router programming course years later and can't remember the first thing about it.
So what I will ask is:
1) What's the best way to start with Objective-C? I found a little info at Apple's development center.
You've had some exposure to programming. So even if you remember virtually nothing then at least you still have been exposed to some of the fundamental concepts.
Honestly? The best way to start is with a good book. There are some sources out there on the net (Google is your friend), such as...
http://www.otierney.net/objective-c.html
..but they are a little short on introducing the concepts behind what they are doing and are often aimed at people who know how to program in other languages.
The best book I've found is
Programming in Objective-C - Stephen G. Kochan - ISBN 0-672-32586-1
But that will only get you into Objective-C. From there you have to use more books and/or the notes and examples provided by Apple to get a handle on Cocoa (more of that later)
2) Will Xcode allow me to develop stuff using this language? I remember needing a C compiler, and it would do both C and C++.
Just like C++, Objective-C is a Superset of C. That is you can use straight C code and get it to compile because Objective-C (or C++) are built on top of C . However, using just C is missing out many very powerful features of Objective-C, and it is just these features that you will be wanting to use when developing iPhone applications. See 3.
3) If someone wants to explain the relationship between programming languages, Xcode, and Cocoa, I'd love to hear it.
OK...
Programming Languages - These you have met before. C is a programming language. C++ and Objective-C are Supersets of C - they use C, but add some more features. In there simplest form, a programming language is a "dialect" that allows a task (or series of tasks) to be defined in logical and unambiguous form (though some of the weird code i've had to deal with is far from unambiguios
).
Xcode - This is what they call an IDE - Integrated Development Environment. While it is perfectly possible to run the gcc compiler directly from a terminal command line, the complexity of a modern programming projects and the plethora of tools with which you are expected to deal with have prompted the evolution of shell programs that consolidate things. So the IDE is the one stop shop. You can manage files, debug code, edit files with a context-aware editor. X-code (interface builder) is Apple's answer to MicroSoft's Visual Studio IDE. You use Xcode to write and debug your Objective-C code.
Cocoa - This is an API - Application Programming Interface. It essentially is a library of pre-written Objective-C that "does stuff". For example you want to select a file for your program to open. You could write the code to pop up a dialog and then add more code to navigate the file structure. Or you could use the pre-packaged Cocoa API call that gives you a standard OS X file dialogue. When you look at any application that runs on OS X's graphical interface you are looking at code that was written to use the Cocoa API.
So the three are interconnected. You use Xcode to write Objective-C programs that use the Cocoa API to give you nice fluffy OS X (or iPhone) style interfaces to your applications.
Knowing Objective-C is not enough for OS X software development. You also need to master the Cocoa APIs. Apple provide a lot of documentation, but again the best place to start is another book...
Cocoa Programming for MAC OS X - Arron Hillegass - ISBN 0-321-21314-9
... This book also has an Objective-C crash course, so it may be possible to get away without
Kochan (or other similar publications). Note that the revised third edition of
Hillegass is apparently due out soon.
May be worth checking out Podcasts. If there isn't one dedicated to Objective-C and/or the iPhone yet it is probably only a matter of time. There will be lots of general podcasts there already. Even if no Objective-C material is available, they are still going to cover some important fundamentals. Getting your head round the concepts of object-orientated programming and memory management is worth while grounding.