 |
 |
Beginner Programmer
|
 |
|
 |
|
Mac Elite
Join Date: Mar 2007
Location: WI, United States
Status:
Offline
|
|
I'm thinking of starting off with my first application, and I'm just asking for any helpful sites someone could point me to. As simple as they get, starting from ground zero, basically.
And then a couple questions of my own.
To make an application totally compliant with Mac, you've got to use Cocoa or something like that right?
Do you need an Intel Mac to make the application work with Intel Macs?
Thanks a lot!
|
|
|
| |
|
|
|
 |
|
 |
|
Fresh-Faced Recruit
Join Date: Aug 2005
Status:
Offline
|
|
The first thing you have to do is learn a programming language. The language to learn depends on the types of applications you want to write. If you want to write Mac applications, learn C because the Cocoa framework is written in Objective C, which is based on C. Most Cocoa programming books assume you know C. There are lots of C tutorials on the Internet. Do a Google search for "C tutorials" or "C programming tutorials".
To make an application totally compliant with Mac, you've got to use Cocoa or something like that right?
You don't have to use Cocoa, but Cocoa is the easiest way to write Mac GUI applications.
Do you need an Intel Mac to make the application work with Intel Macs?
No. Xcode lets you create universal binaries that run on both Intel and PowerPC Macs. If you have a PowerPC Mac, you can create an application that will run on an Intel Mac.
|
|
|
| |
|
|
|
 |
|
 |
|
Mac Elite
Join Date: Mar 2007
Location: WI, United States
Status:
Offline
|
|
Alright, thanks for all the great answers!
|
|
|
| |
|
|
|
 |
|
 |
|
Mac Elite
Join Date: Oct 1999
Location: San Jose, Ca
Status:
Offline
|
|
Do note that you might want to have one of each platform, as there are a few issues that crop up going between the platforms. I have run into this mostly in the non-Objective-C areas (so the bad neighborhoods).
|
|
|
| |
|
|
|
 |
|
 |
|
Clinically Insane
Join Date: Mar 2001
Location: yes
Status:
Offline
|
|
Would you programmers suggest that C is a good language to start out in? I always thought it had a very steep learning curve?
|
|
|
| |
|
|
|
 |
|
 |
|
Professional Poster
Join Date: Nov 2000
Location: Tasmania, Australia
Status:
Offline
|
|
C is a good structured language. It is easy to create C programs that are exceedingly difficult to read (by humans), but a well written (structurally) C program is very easy to follow. I think the basics of C are very easy to learn, and the more complex parts can simply be left until the basics are mastered (eg, pointers, structs).
In fact, basic C is very similar to Pascal which is highly regarded as a good learning language. The main difference (to me) is that Pascal uses more english-type words (eg, "begin" and "end", and C uses more symbols (eg "{" and "}").
|
|
|
| |
|
|
|
 |
|
 |
|
Mac Elite
Join Date: Oct 1999
Location: San Jose, Ca
Status:
Offline
|
|
I would advise something interpreted like JavaScript, Perl, Python, or Ruby. They are a lot more forgiving of mistakes, and you can start to get an idea of objects (very helpful to have if you are going to work on larger projects). Eventually you should go back and get an understanding of a language that involves pointers (C, Obj-C, etc), but pointers and memory management is something you can put off for a while.
|
|
|
| |
|
|
|
 |
|
 |
|
Junior Member
Join Date: Mar 2000
Location: Salem, OR, USA
Status:
Offline
|
|
I'd like to add my 2 cents. I've seen these kinds of posts before and it kind of bothers me that people suggest a language and not a learning path. While it is true that good programmers are masters of a programming language or languages, they are, above all, great problem solvers. I suggest you develop the ability to solve problems and let those lessons expose you to the gritty details of a language or cross-processor gotchas.
When you are studying on your own (as opposed to taking a class) the biggest obstacle is in loosing interest. I've found the best way to keep interest is to make tangible progress. To a beginning programmer this means having small functional applications. Make things that you might even use in your daily life.
One place to start on the Mac is with AppleScript or Automator. The Automator route gives you less actual coding experience, but it will give you opportunities to debug. You can make simple work-flows that do moderately complex work in a short while. Showing your friends how you can take hi-res images and make thumbnail and mail them to your Mom with the push of a button is a lot more interesting than a command line based program that sorts the numbers that they type in.
AppleScript is a text based beast as compared to Automator. You can learn a little bit of programming structure here. How to use subroutines and how to use loops and counters. You can still create useful items in a short amount of time.
The next step I would take is to RealBasic. Here you will get into declaring variables before you use them. You will run into variable scope and type. I believe RB does the indenting for you so you will be forced into good formatting practices. I like RB because the GUI is easier to create than with X-Code/IB. RB is object oriented with lots of functionality built into the provided interface elements. It is very actively developed with between 2 and 4 updates per year.
After RB you may want to move to Java. This will give you experience with a language that is widely used. Java has lots of classes to explore. Hopefully this will get you interested in good object oriented design. It's been a while since I've had to do any GUI work in Java, but last I checked it was a nightmare (as compared with RB and IB). Maybe you will want to skip the Java part or maybe come back to it at some point.
Now you are ready for C and all of its uglies. Learn the difference between the heap and the stack. Be able to declare a pointer and then reference its data. Learn to handle strings and know what a segmentation fault is.
After you have a moderate understanding (not expert) then you can move to Obj-C. It's a beautiful language and Cocoa is a great API. You can put together all that you know about UI elements' actions and events, variables, data structures and design.
While I guess it is possible to learn all of this stuff on your own, I can't stress enough the advantages of a good university program. They provide the structure for your learning. It is invaluable to have an expert to ask questions of. You will develop friendships with classmates that may carry over into your professional life. I went to school when I was in my 30's. Three years after graudating I am making $28K more than what I was making before going to school. That was a fast ROI!
You may make the full journey or find your niche somewhere along this path. No matter where you end up, I still say that you should practice solving problems. People who are good at a language, but who only take specs and code them will end up with their job outsourced.
I wish you well and hope you can stay motivated and interested in your projects.
-numero
|
|
|
| |
|
|
|
 |
|
 |
|
Clinically Insane
Join Date: Oct 2001
Location: San Diego, CA, USA
Status:
Offline
|
|
I don't mean this as an attack, numero, but your recommendation strikes me as really indirect without actually introducing any real benefits. Going Automator->AppleScript->RealBasic->Java->C just introduces a mishmash of mostly poor environments and confusingly conflicting methodologies and sounds a lot harder than just starting with a good, easy language like Ruby or Python.
I agree that learning how to program well is more important than learning any particular language, but I don't think increasing the language load is the right way to encourage this. I think it will be easier to learn the principals of good programming when you aren't struggling at five more difficult languages at the same time.
|
|
Chuck
___
"Instead of either 'multi-talented' or 'multitalented' use 'bisexual'."
|
| |
|
|
|
 |
|
 |
|
Clinically Insane
Join Date: Oct 2001
Location: San Diego, CA, USA
Status:
Offline
|
|
Oh, and my recommendation: Why's (Poignant) Guide to Ruby. It's not as technical or to-the-point as a lot of texts, but it does a great job of teaching you how to program in Ruby and is just plain entertaining. Most people love it.
|
|
Chuck
___
"Instead of either 'multi-talented' or 'multitalented' use 'bisexual'."
|
| |
|
|
|
 |
|
 |
|
Mac Elite
Join Date: Mar 2007
Location: WI, United States
Status:
Offline
|
|
Originally Posted by larkost
Do note that you might want to have one of each platform, as there are a few issues that crop up going between the platforms. I have run into this mostly in the non-Objective-C areas (so the bad neighborhoods).
Didn't really understand all of that, but I don't plan on making anything for Windows. My first idea is something that already exists for Windows.
|
|
|
| |
|
|
|
 |
|
 |
|
Mac Elite
Join Date: Mar 2007
Location: WI, United States
Status:
Offline
|
|
Thanks, Chuckit. I'll look in to Ruby.
|
|
|
| |
|
|
|
 |
|
 |
|
Clinically Insane
Join Date: Oct 2001
Location: San Diego, CA, USA
Status:
Offline
|
|
Originally Posted by Mac User #001
Didn't really understand all of that, but I don't plan on making anything for Windows. My first idea is something that already exists for Windows.
I think by "platforms" he means Intel and PowerPC Macs.
|
|
Chuck
___
"Instead of either 'multi-talented' or 'multitalented' use 'bisexual'."
|
| |
|
|
|
 |
|
 |
|
Junior Member
Join Date: May 2000
Location: USA
Status:
Offline
|
|
For learning Obj-C/Cocoa, I would suggest Aaron Hillegass' book Cocoa Programming for Mac OS X.
I had some C/C++/Java experience (all self-taught) and had unsuccessfully tried to learn Obj-C a few times before, but that book helped me finally get a grasp on things. Within a couple of weeks, I was writing full-fledged, rather complex programs.
I've found that Obj-C has quite a steep learning curve, but if you have a grasp of basic C concepts it helps a lot. So, what I would suggest is to get a good grasp on C, then grab this book to dive into Obj-C.
|
|
When birds fly in the right formation, they need only exert half the effort. Even in nature, teamwork results in collective laziness.
|
| |
|
|
|
 |
|
 |
|
Professional Poster
Join Date: Jan 2001
Location: Salt Lake City, UT USA
Status:
Offline
|
|
While I've been programming for a couple years now, I've just been taking my first real programming class, and I've learned something which in my opinion is really indispensable: Flowcharting.
When I first was learning it, I thought it was a bit of a waste of time, but the brief exercises I've done have shown me how valuable it can be. Once you know how to accomplish what you're trying to accomplish, programming it, in any language, is a snap. Learn to flow chart. Designing makes a HUGE difference in your final product, Especially if it's a larger project...
|
|
2008 iMac 3.06 Ghz, 2GB Memory, GeForce 8800, 500GB HD, SuperDrive
8gb iPhone on Tmobile
|
| |
|
|
|
 |
 |
|
 |
|
|
|
|
|

|
|
 |
Forum Rules
|
 |
 |
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
|
HTML code is Off
|
|
|
|
|
|
 |
 |
 |
 |
|
 |
|